已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
程序設(shè)計(jì)報(bào)告(2014/2015學(xué)年 第 一 學(xué)期)題 目:票務(wù)管理系統(tǒng) 專 業(yè) 理工科強(qiáng)化班 組長(zhǎng) 學(xué)號(hào)姓名 組員 學(xué)號(hào)姓名 指 導(dǎo) 教 師 指 導(dǎo) 單 位 計(jì)算機(jī)學(xué)院軟件教學(xué)中心日 期 2014 年 10月 23日 成員分工組長(zhǎng)() 主要負(fù)責(zé)類的建立、車票類鏈表及鏈表相關(guān)功能的實(shí)現(xiàn)和主函數(shù)主題的構(gòu)建,擴(kuò)展功能的實(shí)現(xiàn),撰寫(xiě)設(shè)計(jì)報(bào)告。組員() 主要負(fù)責(zé)輸入輸出流的控制以及文件流的實(shí)現(xiàn),及相關(guān)資料的查找與收集,撰寫(xiě)設(shè)計(jì)報(bào)告。組員() 主要負(fù)責(zé)購(gòu)票、售票、及改簽功能的實(shí)現(xiàn),及對(duì)應(yīng)數(shù)據(jù)的讀寫(xiě),撰寫(xiě)設(shè)計(jì)報(bào)告。評(píng)分細(xì)則評(píng)分項(xiàng)優(yōu)秀良好中等差遵守機(jī)房規(guī)章制度上機(jī)時(shí)的表現(xiàn)學(xué)習(xí)態(tài)度程序準(zhǔn)備情況程序設(shè)計(jì)能力團(tuán)隊(duì)合作精神課題功能實(shí)現(xiàn)情況算法設(shè)計(jì)合理性用戶界面設(shè)計(jì)報(bào)告書(shū)寫(xiě)認(rèn)真程度內(nèi)容詳實(shí)程度文字表達(dá)熟練程度回答問(wèn)題準(zhǔn)確度 簡(jiǎn)短評(píng)語(yǔ) 教師簽名: 年 月 日評(píng)分等級(jí)備注評(píng)分等級(jí)共五種:優(yōu)秀、良好、中等、及格、不及格票務(wù)管理系統(tǒng)的實(shí)現(xiàn)一、 課題容和要求票務(wù)管理系統(tǒng)一 課題內(nèi)容和要求(1)錄入班次信息(信息用文件保存number.dat),可隨時(shí)增加新車次數(shù)據(jù)(2)瀏覽班次信息,可顯示出所有車次當(dāng)前狀況(顯示車輛是否發(fā)出的提示信息)。(3)查詢路線:可按班次號(hào)、終點(diǎn)站查詢售票情況。(4)根據(jù)發(fā)車時(shí)間給出順序的發(fā)車時(shí)間表,存入文件保存(sort.dat)。(5)售票和退票功能當(dāng)查詢出已定票人數(shù)小于額定載量且當(dāng)前系統(tǒng)時(shí)間小于發(fā)車時(shí)間時(shí)才能售票,自動(dòng)更新余票數(shù)量。退票時(shí),輸入退票的班次,當(dāng)本車次發(fā)出前半小時(shí)才可以退票,自動(dòng)更新已售票人數(shù)。(6)改簽功能改簽時(shí),輸入改簽?zāi)繕?biāo)班次,退原來(lái)的票,功能實(shí)現(xiàn)見(jiàn)上。2、擴(kuò)展功能要求(1)角色區(qū)分:以上的功能(1)只有管理員憑密碼才能操作;其余所有的功能管理員和普通訪客均可操作。(2)管理員提供密碼找回服務(wù)。(3)每人限購(gòu)買(mǎi)一張。二、需求分析票管理系統(tǒng)的功能框架圖如圖1、2所示。( 1 )提供一個(gè)入口,針對(duì)用戶和管理員,可分別選擇登錄方式并進(jìn)行操作。( 2 )通過(guò)數(shù)據(jù)庫(kù)文件對(duì)車票信息與提示信息進(jìn)行管理、儲(chǔ)存、輸入和輸出;車票管理系統(tǒng)(用戶)主菜單瀏覽總班次信息按發(fā)車時(shí)間和目的地查詢班次按發(fā)車時(shí)間順序顯示班次購(gòu)票、退票、改簽按目的地查詢班次圖1功能框架圖車票管理系統(tǒng)(管理員)主菜單增加班次信息圖2功能框架圖三、概要設(shè)計(jì) 1 主要的類內(nèi)變量的定義和函數(shù)的聲明:class chepiaopublic: string CC,QD,ZD; /車票類的數(shù)據(jù)成員車次,起點(diǎn)站,終點(diǎn)站 int FCSJh,FCSJm,XCSJ,EDZL,YPSL;/車票類的數(shù)據(jù)成員發(fā)車時(shí)間(小時(shí))、(分鐘)、行車時(shí)間、額定載量、余票數(shù)量chepiao* left; /鏈表的指針 chepiao(string A,int AA,int AA2,string AAA,string AAAA,int AAAAA,int AAAAAA,int AAAAAAA) CC=A;FCSJh=AA;FCSJm=AA2;QD=AAA;ZD=AAAA;XCSJ=AAAAA;EDZL=AAAAAA;YPSL=AAAAAAA;left=NULL; chepiao()left=NULL;函數(shù):void Output(); /輸出number.dat內(nèi)容void Output2(); /輸出sort.dat內(nèi)容void Write(chepiao *start); /把內(nèi)存中的車票信息寫(xiě)入number.datvoid Write2(chepiao *start); /把內(nèi)存中的車票信息寫(xiě)入sort.datvoid Find(chepiao *start); /按目的地和車次查詢車票信息void Sort(chepiao *start); /按發(fā)車時(shí)間排序車票信息void Buy(chepiao *start); /購(gòu)票操作void Buy2(chepiao *start); /改簽中的購(gòu)票操作void Refund(chepiao *start); /退票操作void Refund2(chepiao *start); /改簽中退票操作void Delete(chepiao *start); /釋放內(nèi)存中車票所占空間void Show1(); /輸出歡迎的選擇界面void Show2(); /輸出用戶的選擇界面void Shout(); /防“熊孩子”設(shè)定void Getpassword(); /讀入文件中的密碼void Resetpassword(); /將修改的密碼重新讀入文件儲(chǔ)存bool Check(); /是否買(mǎi)過(guò)票檢查void Setnumber(); /記錄買(mǎi)過(guò)票的身份證號(hào)碼string innumber; /記錄身份證號(hào)bool mp=false; /判斷是否能購(gòu)買(mǎi)string password; /臨時(shí)儲(chǔ)存讀入的密碼和修改的新密碼int sj; /當(dāng)前的小時(shí)數(shù)*60+分鐘數(shù),用于時(shí)間比較int sj2; /車票的發(fā)車時(shí)間的小時(shí)數(shù)*60+分鐘數(shù),用于時(shí)間比較bool gq=false; /用于傳遞改簽過(guò)程中第一步購(gòu)票是否成功的信息string name=admin; /默認(rèn)的管理員賬號(hào)string Q1=中國(guó)江蘇找南郵; /默認(rèn)的管理員密保問(wèn)題2 主要函數(shù)流程圖四、源程序代碼 /車票類.h#include #include using namespace std;int sum=0;class chepiaopublic: string CC,QD,ZD; /車票類的數(shù)據(jù)成員車次,起點(diǎn)站,終點(diǎn)站 int FCSJh,FCSJm,XCSJ,EDZL,YPSL;/車票類的數(shù)據(jù)成員發(fā)車時(shí)間(小時(shí))、(分鐘)、行車時(shí)間、額定載量、余票數(shù)量chepiao* left; /鏈表的指針 chepiao(string A,int AA,int AA2,string AAA,string AAAA,int AAAAA,int AAAAAA,int AAAAAAA) CC=A;FCSJh=AA;FCSJm=AA2;QD=AAA;ZD=AAAA;XCSJ=AAAAA;EDZL=AAAAAA;YPSL=AAAAAAA;left=NULL; chepiao()left=NULL;#include 車票類.h#include #include using namespace std;void Output(); /輸出number.dat內(nèi)容void Output2(); /輸出sort.dat內(nèi)容void Write(chepiao *start) ; /把內(nèi)存中的車票信息寫(xiě)入number.datvoid Write2(chepiao *start); /把內(nèi)存中的車票信息寫(xiě)入sort.datvoid Find(chepiao *start); /按目的地和車次查詢車票信息void Sort(chepiao *start); /按發(fā)車時(shí)間排序車票信息void Buy(chepiao *start); /購(gòu)票操作void Buy2(chepiao *start) ; /改簽中的購(gòu)票操作void Refund(chepiao *start); /退票操作void Refund2(chepiao *start); /改簽中退票操作void Delete(chepiao *start); /釋放內(nèi)存中車票所占空間void Show1(); /輸出歡迎的選擇界面void Show2(); /輸出用戶的選擇界面void Shout(); /防“熊孩子”設(shè)定void Getpassword(); /讀入文件中的密碼void Resetpassword(); /將修改的密碼重新讀入文件儲(chǔ)存bool Check(); /是否買(mǎi)過(guò)票檢查void Setnumber(); /記錄買(mǎi)過(guò)票的身份證號(hào)碼string innumber; /記錄身份證號(hào)bool mp=false; /判斷是否能購(gòu)買(mǎi)string password; /臨時(shí)儲(chǔ)存讀入的密碼和修改的新密碼int sj; /當(dāng)前的小時(shí)數(shù)*60+分鐘數(shù),用于時(shí)間比較int sj2; /車票的發(fā)車時(shí)間的小時(shí)數(shù)*60+分鐘數(shù),用于時(shí)間比較bool gq=false; /用于傳遞改簽過(guò)程中第一步購(gòu)票是否成功的信息string name=admin; /默認(rèn)的管理員賬號(hào)string Q1=中國(guó)江蘇找南郵;/默認(rèn)的管理員密保問(wèn)題int main()Getpassword();int ways;/登陸方式Show1();cinways;if(ways=1) string inname; /鍵盤(pán)輸入的管理員賬號(hào)string inpassword; /用于鍵盤(pán)輸入管理員密碼string inQ1; /用于鍵盤(pán)輸入管理員密保問(wèn)題char bbb=N; /用于鍵盤(pán)輸入是否使用密保問(wèn)題int aaa=1; /用于循環(huán),每三次密碼錯(cuò)誤,提示一次是否使用密保問(wèn)題bool judge=false; /用于判斷是否輸入正確coutinname;if (inname=name)judge=true;elsewhile(!judge)coutinname;if (inname=name)judge=true;judge=false;coutinpassword;if (inpassword=password)judge=true;elsewhile(!judge)if(aaa%3=0)coutbbb;if(bbb=Y|bbb=y)cout編程技術(shù)哪家牛?inQ1;if(inQ1=Q1)cout回答正確!請(qǐng)輸入新密碼password;Resetpassword();cout請(qǐng)牢記密碼endl;break;elsecout密保問(wèn)題驗(yàn)證失敗。endl;coutinpassword;aaa+;/*分割線*/*分割線*ofstream fout(number.dat,ios:out|ios_base:app);/定義輸出數(shù)據(jù)流,以輸出方式打開(kāi),打開(kāi)位于文件尾 if(!fout) cerropen error!endl; exit(1); /*分割線*/*分割線*string a,b,c; /用于儲(chǔ)存即將輸入的車票的車次、起點(diǎn)和重點(diǎn)int d1,d2,e,f,g; /用于儲(chǔ)存即將輸入的發(fā)車時(shí)間小時(shí)、分鐘、行車時(shí)間、額定載量、余票數(shù)量cout請(qǐng)輸入需要增加的車票數(shù)i;cout請(qǐng)逐個(gè)輸入車票的如下信息endl;cout車次發(fā)車時(shí)間(小時(shí))發(fā)車時(shí)間(分鐘)起點(diǎn)站終點(diǎn)站行車時(shí)間額定載量余票數(shù)量endl;for(x=0;xad1d2b;cincefg;fouta;fout;foutd1;fout;foutd2;fout;foutb;fout;foutc;fout;foute;fout;foutf;fout;foutg;fout;cout錄入成功tm_hour;/得到當(dāng)前時(shí)間的小時(shí)int m = newtime-tm_min;/得到當(dāng)前時(shí)間的分鐘 sj=60*h+m;/*分割線*/*分割線*ifstream infile(number.dat,ios:out);/定義輸入數(shù)據(jù)流,以輸入方式打開(kāi)if(!infile)cerropen error!y)break;elseq-left=new chepiao 1;sum+;q=q-left;q-CC=y;switch(num%8)case 2:infileq-FCSJh;break;case 3:infileq-FCSJm;break;case 4:infileq-QD;break;case 5:infileq-ZD;break;case 6:infileq-XCSJ;break;case 7:infileq-EDZL;break;case 0:infileq-YPSL;break;infile.close();/關(guān)閉文件/*分割線*/*分割線*int yh;/用于讀入用戶需要的操作的序號(hào)while(1)Show2();cinyh;switch (yh)case 1:Output();break;case 2:Find(start);break;case 3:;Sort(start);Write2(start);Output2();break;case 4:if(Check()Buy(start);if(mp)Setnumber();Write(start);break;case 5:Refund(start);Write(start);break;case 6:Buy2(start);if(gq)Refund2(start);Write(start);gq=false;break;case 7:break;default:Shout();system(pause);return 0;if(yh=7)Delete(start);break; return 0;elseShout();system(pause);return 0;/*分割線*/*分割線*void Write(chepiao *start)chepiao *p=start-left; /用于對(duì)鏈表進(jìn)行操作ofstream fout(number.dat,ios:out|ios:trunc); /定義輸出數(shù)據(jù)流,清空并打開(kāi)if(!fout)cerropen error!endl;exit(1);while(p!=NULL)foutCCFCSJhFCSJmQDZDXCSJEDZLYPSLleft; fout.close();/關(guān)閉文件/*分割線*/*分割線*void Write2(chepiao *start) /本函數(shù)內(nèi)各變量作用同前chepiao *p=start-left;ofstream fout(sort.dat,ios:out|ios:trunc);/定義輸入數(shù)據(jù)流,清空并打開(kāi)if(!fout)cerropen error!endl;exit(1);while(p!=NULL)foutCCFCSJhFCSJmQDZDXCSJEDZLYPSLleft; fout.close();/關(guān)閉文件/*分割線*/*分割線*void Sort(chepiao *start)chepiao* L; /用于鏈表排序的交換步驟chepiao* M; /用于chepiao* N; /用于int i,j; /用于排序L=start;M=start-left;N=M-left;for(i=0;isum-2;i+)for(j=0;jFCSJh*60)+M-FCSJm)(N-FCSJh*60)+N-FCSJm)if(N-left!=NULL)L-left=N;M-left=N-left;N-left=M;L=N;M=L-left;N=M-left;elseL-left=N;N-left=M;M-left=NULL;continue;elseif(N-left!=NULL)L=M;M=L-left;N=M-left;elsecontinue;L=start;M=L-left;N=M-left;/*分割線*/*分割線*void Output()int j=1,a,b; /j用于記錄輸出的是第幾個(gè)數(shù)據(jù),用于判斷類型;a,b為時(shí)間的小時(shí)數(shù)和分鐘數(shù)string temp; /用于逐個(gè)讀出數(shù)據(jù)ifstream infile(number.dat,ios:out); /定義輸入數(shù)據(jù)流,以輸入方式打開(kāi)if(!infile)cerropen error!temp)break;if(j%8=2)infilea;infileb;j+;couta:;if(b10)cout0;coutb;if(a*60+bsj)cout(此車已發(fā)出);elsecout(此車未發(fā)出);elsecouttemp;/輸出顯示if(j%8=0)coutendl;j+;infile.close(); /關(guān)閉文件/*分割線*/*分割線*void Find(chepiao *start)chepiao *o;/用于對(duì)車票鏈表操作bool c=false;/用于記錄是否找到相應(yīng)車次string Cc;/用于輸入需要尋找的車次或終點(diǎn)站cout請(qǐng)輸入車次或終點(diǎn)站:Cc;o=start;o=o-left;while(o)if(o-CC=Cc|o-ZD=Cc)coutCCFCSJhFCSJm10)cout0;coutFCSJm;if(o-FCSJh*60+o-FCSJm)sj)cout(此車已發(fā)出);elsecout(此車未發(fā)出);coutQDZDXCSJEDZLYPSLleft;if(!c)cout未找到目標(biāo)車次或終點(diǎn)站。endl;/*分割線*/*分割線*void Output2()/同Output();int j=1,a,b;string temp;ifstream infile(sort.dat,ios:out); /定義輸入數(shù)據(jù)流,以輸入方式打開(kāi)if(!infile)cerropen error!temp)break;if(j%8=2)infilea;infileb;j+;couta:;if(b10)cout0;coutb;if(a*60+bsj)cout(此車已發(fā)出);elsecout(此車未發(fā)出);elsecouttemp; /輸出顯示if(j%8=0)coutendl;j+;infile.close(); /關(guān)閉文件/*分割線*/*分割線*void Buy(chepiao *start)chepiao *o;/用于對(duì)車票鏈表進(jìn)行操作string Cc;/用于輸入車次bool c=false;/用于記錄購(gòu)買(mǎi)是否成功cout請(qǐng)輸入需要買(mǎi)票的車次 Cc;o=start;o=o-left;while(o)if(o-CC=Cc)if(o-FCSJh*60+o-FCSJm)sj)cout發(fā)車時(shí)間已過(guò),購(gòu)買(mǎi)失敗YPSL=0)cout票已售空,購(gòu)買(mǎi)失敗YPSL=o-YPSL-1;cout購(gòu)買(mǎi)成功left;if(!c)mp=false;cout未找到目標(biāo)車次,購(gòu)買(mǎi)失敗endl;/*分割線*/*分割線*void Buy2(chepiao *start)chepiao *o;/用于對(duì)車票鏈表進(jìn)行操作bool c=false;/用于記錄購(gòu)買(mǎi)是否成功string Cc;/用于輸入車次cout請(qǐng)輸入需要改簽的目標(biāo)車次 Cc;o=start;o=o-left;while(o)if(o-CC=Cc)if(o-FCSJh*60+o-FCSJm)sj)cout發(fā)車時(shí)間已過(guò),無(wú)法改簽YPSL=0)cout目標(biāo)車次票已售空,無(wú)法改簽YPSL=o-YPSL-1;cout改簽成功,請(qǐng)退原車次車票left;if(!c)cout未找到目標(biāo)車次tm_hour; /得到當(dāng)前時(shí)間的小時(shí)int m = newtime-tm_min; /得到當(dāng)前時(shí)間的分鐘int sj=60*h+m; /記錄時(shí)間的小時(shí)數(shù)*60+分鐘數(shù),用于比較chepiao *o; /用于對(duì)車票類鏈表的操作string Cc; /用于輸入退票的車次cout請(qǐng)輸入需要退票的車次 Cc;o=start;o=o-left;while(o)if(o-CC=Cc)if(o-FCSJh*60+o-FCSJm)sj+30)cout需要提前半小時(shí)辦理退票,本次退票失敗YPSL=o-YPSL+1;cout退票成功left;/*分割線*/*分割線*void Refund2(chepiao *start)/同Refund()struct tm *newtime;time_t long_time;time( &long_time ); /Get time as long integernewtime = localtime( &long_time ); int h = newtime-tm_hour; /得到當(dāng)前時(shí)間的小時(shí)int m = newtime-tm_min; /得到當(dāng)前時(shí)間的分鐘int sj=60*h+m;chepiao *o;string Cc;cout請(qǐng)輸入需要改簽的原車票車次 Cc;o=start;o=o-left;while(o)if(o-CC=Cc)if(o-FCSJh*60+o-FCSJm)sj+30)cout需要提前半小時(shí)辦理退票,本次退票失敗,購(gòu)票金額無(wú)法退還,請(qǐng)使用新車次車票乘車YPSL=o-YPSL+1;cout退票成功left;/*分割線*/*分割線*void Delete(chepiao *start)chepiao *a1;/用于對(duì)車票類鏈表的逐個(gè)釋放a1=start;for(;start-left=NULL;)for(a1=start;a1-left-left=NULL;)if(a1-left-left!=NULL)a1=a1-left;delete a1-left;/*分割線*/*分割線*void Show1()cout*endl;cout*endl;cout*| 歡迎使用車票管理系統(tǒng) |*endl;cout*| |*endl;cout*| 請(qǐng)輸入登錄方式對(duì)應(yīng)的序號(hào): |*endl;cout*| |*endl;cout*| 管理員登陸 |*endl;cout*| |*endl;cout*| 用戶登
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年阿片類中毒解毒藥項(xiàng)目建議書(shū)
- 2025年多導(dǎo)生理記錄儀(8導(dǎo)以上)項(xiàng)目發(fā)展計(jì)劃
- 遼寧省2025秋九年級(jí)英語(yǔ)全冊(cè)Unit10You'resupposedtoshakehands課時(shí)3SectionA(GrammarFocus-4c)課件新版人教新目標(biāo)版
- 2025年透皮吸收材料合作協(xié)議書(shū)
- 2025年速釋制劑材料項(xiàng)目發(fā)展計(jì)劃
- 2025年軟泡聚醚項(xiàng)目建議書(shū)
- 老年常見(jiàn)疾病的護(hù)理與預(yù)防
- 如何塑造白嫩肌膚
- 先心病患兒常見(jiàn)癥狀護(hù)理
- 機(jī)器人基礎(chǔ)與實(shí)踐 課件 第7、8章 機(jī)器人環(huán)境識(shí)別理論與實(shí)踐、機(jī)器人定位及地圖構(gòu)建理論與實(shí)踐
- 財(cái)務(wù)安全生產(chǎn)費(fèi)培訓(xùn)課件
- 鋼結(jié)構(gòu)施工臨時(shí)支撐方案
- 鋼結(jié)構(gòu)樓梯安裝施工方案
- 趣味運(yùn)動(dòng)會(huì)元旦活動(dòng)方案
- ??稻W(wǎng)絡(luò)監(jiān)控系統(tǒng)的技術(shù)方案
- 村書(shū)記就職發(fā)言稿
- 2025北京市通州區(qū)不動(dòng)產(chǎn)登記中心協(xié)辦員招聘1人模擬試卷及答案詳解(典優(yōu))
- 木工加工區(qū)施工方案
- 農(nóng)村勞務(wù)經(jīng)紀(jì)人培訓(xùn)課件
- 郵儲(chǔ)銀行二級(jí)支行長(zhǎng)面試題庫(kù)及答案
- 數(shù)據(jù)中心制冷機(jī)組維護(hù)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論