版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 信息科學(xué)與技術(shù)學(xué)院</b></p><p> 《程序設(shè)計基礎(chǔ)》課程設(shè)計報告</p><p> 目 錄</p><p> 1 課程設(shè)計綜述————————————————— 3</p><p> 1.1 課程設(shè)計的目的——————————————— 3</p>
2、<p> 1.2 課程設(shè)計的題目——————————————— 3</p><p> 1.3 題目要求—————————————————— 3</p><p> 2 概要設(shè)計——————————————————— 3</p><p> 3 詳細設(shè)計——————————————————— 4</p><p> 3.1 流
3、程圖——————————————————— 4</p><p> 3.2 源程序——————————————————4</p><p> 4 測試——————————————————— 5</p><p> 5 課程設(shè)計總結(jié)—————————————————5</p><p><b> 1.課程設(shè)計綜述<
4、/b></p><p> 1.1 課程設(shè)計的目的</p><p> 讓我們更加深入的了解C++的,使我們一學(xué)期學(xué)習(xí)到的東西得到實踐.</p><p> 1.2 課程設(shè)計的題目</p><p><b> 火車票管理系統(tǒng)</b></p><p><b> 1.3 題目要求&l
5、t;/b></p><p> 用c++設(shè)計一個系統(tǒng),能提供下列服務(wù):(1)錄入班次信息(信息用文件保存),可不定時地增加班次數(shù)據(jù)</p><p> ?。?)瀏覽班次信息,可顯示出所有班次當(dāng)前狀態(tài)(如果當(dāng)前系統(tǒng)時間超過了某班次的發(fā)車時間,則顯示“此班已發(fā)出”的提示信息)。</p><p> (3)查詢路線:可按班次號查詢 ,可按終點站查詢</p>
6、;<p> (4)售票和退票功能</p><p> A:當(dāng)查詢出已定票人數(shù)小于額定載量且當(dāng)前系統(tǒng)時間小于發(fā)車時間時才能售票,自動更新已售票人數(shù)</p><p> B:退票時,輸入退票的班次,當(dāng)本班車未發(fā)出時才能退票,自動更新已售票人數(shù)</p><p><b> 2 方案選擇</b></p><p>
7、;<b> 1)算法設(shè)計說明</b></p><p> 由主函數(shù)進入,彈出主菜單界面,通過Switch語句選擇需要的功能,可以選擇班次錄入,瀏覽班次信息,查詢班次信息,購票和退票以及退出系統(tǒng),以完成不同的操作.其中查詢班次信息中還可以由班次查詢或者終點站查詢.整個系統(tǒng)的文件載入用一個文件載入函數(shù)承當(dāng).</p><p><b> 3 詳細設(shè)計</
8、b></p><p><b> 3.1 流程圖</b></p><p><b> 3.2 源程序</b></p><p> #include <iostream></p><p> #include <fstream></p><p>
9、; #include <string></p><p> #include<time.h></p><p> using namespace std;</p><p> void welcome(); //歡迎子函數(shù)</p><p> void choose(
10、); //選擇子函數(shù)</p><p> void banciluru(); //班次錄入子函數(shù)</p><p> void liulanbancixinxi(); //瀏覽班次信息子函數(shù)</p><p> void shoupiao
11、(); //售票子函數(shù)</p><p> void tuipiao(); //退票子函數(shù)</p><p> void quit(); //退出子函數(shù)</p><p> void chaxun();
12、 //查詢子函數(shù)</p><p> int loading(); //文件載入子函數(shù)</p><p> const int MAX=20; //使數(shù)組最大值可調(diào)</p><p> const int N=50;</p&
13、gt;<p> struct time //時間結(jié)構(gòu)體,為了與系統(tǒng)時間做比較.</p><p><b> {</b></p><p><b> int hour;</b></p><p> int minutes;</p><
14、;p><b> };</b></p><p> struct ticket //車票結(jié)構(gòu)體,包含車次,時間結(jié)構(gòu)體,起點,終點,行車時間,額定載客量,已訂票人數(shù)</p><p><b> {</b></p><p> int Number;</p>
15、;<p> struct time Setout;</p><p> char Qidian[MAX];</p><p> char Zhongdian[MAX];</p><p> float Lasttime; </p><p> int Fixnumber;</p><p> int F
16、ixednumber;</p><p><b> }car[N];</b></p><p><b> //主函數(shù)</b></p><p> int main()</p><p><b> {</b></p><p> welcome();&
17、lt;/p><p><b> return 0;</b></p><p><b> }</b></p><p><b> //歡迎子函數(shù)</b></p><p> void welcome()</p><p><b> {</b&g
18、t;</p><p> cout<<"________________________________________________________"<<endl;</p><p> cout<<"| 歡 * 迎 * 使 * 用 * 火 * 車 * 票 * 管 * 理 * 系 * 統(tǒng) |"<<en
19、dl;</p><p> cout<<"| |"<<endl;</p><p> cout<<"| 本管理系統(tǒng)有以下功能: |"<<
20、endl;</p><p> cout<<"| |"<<endl;</p><p> cout<<"| 1 班次錄入 |"
21、<<endl;</p><p> cout<<"| 2 瀏覽班次信息 |"<<endl;</p><p> cout<<"| 3 查詢火車信息 |"
22、<<endl;</p><p> cout<<"| 4 購買火車票 |"<<endl;</p><p> cout<<"| 5 退訂火車票 |&quo
23、t;<<endl;</p><p> cout<<"| 6 退出系統(tǒng) |"<<endl;</p><p> cout<<"|___________________________________________________
24、___|"<<endl;</p><p> cout<<"請輸入所要執(zhí)行功能前的數(shù)字: "<<endl;</p><p><b> choose();</b></p><p><b> }</b></p><p><b&g
25、t; //選擇子函數(shù)</b></p><p> void choose()</p><p><b> {</b></p><p><b> string i;</b></p><p><b> cin>>i;</b></p>&l
26、t;p> if(i=="1")</p><p> banciluru();</p><p> if(i=="2")</p><p> liulanbancixinxi();</p><p> if(i=="3")</p><p><b&g
27、t; chaxun();</b></p><p> if(i=="4")</p><p> shoupiao();</p><p> if(i=="5")</p><p> tuipiao();</p><p> if(i=="6")&
28、lt;/p><p><b> quit();</b></p><p><b> else</b></p><p><b> {</b></p><p> cout<<"輸入有誤!請在數(shù)字1-5之間重新您的輸入選擇!"<<endl;
29、</p><p><b> choose();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> //班次錄入子函數(shù)</b></p><p> void banc
30、iluru()</p><p><b> {</b></p><p> string t="1";</p><p> ofstream outfile;</p><p> outfile.open("班次信息.txt",ios::app);</p><p
31、> for(int i=0;t=="1";i++)</p><p><b> {</b></p><p> cout<<"請輸入需要添加的火車班次:"<<endl;</p><p> cin>>car[i].Number;</p><p
32、> cout<<"請輸入此班次發(fā)車時間(格式:先輸入小時,回車,再輸入分鐘):"<<endl;</p><p> cin>>car[i].Setout.hour;</p><p> cin>>car[i].Setout.minutes;</p><p> cout<<&qu
33、ot;請輸入出發(fā)站:"<<endl;</p><p> cin>>car[i].Qidian;</p><p> cout<<"請輸入終點站:"<<endl;</p><p> cin>>car[i].Zhongdian;</p><p> co
34、ut<<"請輸入行車時間:"<<endl;</p><p> cin>>car[i].Lasttime;</p><p> cout<<"請輸入額定載客量:"<<endl;</p><p> cin>>car[i].Fixnumber;</p&
35、gt;<p> cout<<"請輸入已訂票人數(shù):"<<endl;</p><p> cin>>car[i].Fixednumber;</p><p> outfile<<car[i].Number<<" "<<car[i].Setout.hour<<
36、;" "<<car[i].Setout.minutes<<" "<<car[i].Qidian<<" "<<car[i].Zhongdian<<" "<<car[i].Lasttime<<" "<<car[i].Fixnumber&
37、lt;<" "<<car[i].Fixednumber<<endl;</p><p> cout<<"是否繼續(xù)錄入?(是請輸1,否請輸任意鍵返回主菜單)"<<endl;</p><p><b> cin>>t;</b></p><p>
38、 if(t!="1")</p><p><b> {</b></p><p> welcome();</p><p><b> }</b></p><p><b> }</b></p><p> outfile.close
39、();</p><p> cout<<"輸入回車鍵返回"<<endl;</p><p> getchar();</p><p> getchar();</p><p> welcome();</p><p><b> }</b></p&g
40、t;<p><b> //瀏覽班次子函數(shù)</b></p><p> void liulanbancixinxi()</p><p><b> {</b></p><p><b> int c;</b></p><p> c=loading();</
41、p><p> cout<<"班次"<<" "<<"發(fā)車時間"<<" "<<"起點站"<<" "<<"終點站"<<" "<<"行車時間&quo
42、t;<<" "<<"額定載客量"<<" "<<"已訂票人數(shù)"<<endl;</p><p> for(int i=0;i<c;i++)</p><p><b> {</b></p><p> c
43、out<<car[i].Number<<" "<<car[i].Setout.hour<<":"<<car[i].Setout.minutes<<" "<<car[i].Qidian<<" "<<car[i].Zhongdian&l
44、t;<" "<<car[i].Lasttime<<" "<<car[i].Fixnumber<<" "<<car[i].Fixednumber<<endl;</p><p> time_t tval;</p><p>
45、struct tm *now;</p><p> tval = time(NULL);</p><p> now = localtime(&tval);</p><p> if((now->tm_hour==car[i].Setout.hour&&now->tm_min>car[i].Setout.minutes)||
46、(now->tm_hour>car[i].Setout.hour))</p><p> cout<<"此車已發(fā)出"<<endl;</p><p><b> }</b></p><p> cout<<"輸入回車鍵返回"<<endl;</
47、p><p> getchar();</p><p> getchar();</p><p> welcome();</p><p><b> }</b></p><p><b> //車次查詢子函數(shù)</b></p><p> void Numb
48、ersearch();</p><p> void Finalsearch();</p><p> void chaxun()</p><p><b> {</b></p><p><b> string t;</b></p><p> cout<<&q
49、uot;1.按班次查詢"<<endl;</p><p> cout<<"2.按終點站查詢"<<endl;</p><p> cout<<"請輸入您想選擇的查詢方法前的數(shù)字:"<<endl;</p><p><b> cin>>t;
50、</b></p><p> if(t=="1")</p><p> Numbersearch();</p><p> if(t=="2")</p><p> Finalsearch();</p><p> if(t!="1"||t!=&q
51、uot;2")</p><p><b> {</b></p><p> cout<<"輸入有誤,請重新輸入"<<endl;</p><p><b> chaxun();</b></p><p><b> }</b>&
52、lt;/p><p><b> }</b></p><p><b> //班次查詢子函數(shù)</b></p><p> void Numbersearch()</p><p><b> {</b></p><p> loading();</p>
53、;<p> int SearchNumber;</p><p> cout<<"請輸入您需要查找的班次號:"<<endl;</p><p> cin>>SearchNumber;</p><p> cout<<"班次"<<" "
54、;<<"發(fā)車時間"<<" "<<"起點站"<<" "<<"終點站"<<" "<<"行車時間"<<" "<<"額定載客量"<<" &
55、quot;<<"已訂票人數(shù)"<<endl;</p><p> cout<<car[SearchNumber-1].Number<<" "<<car[SearchNumber-1].Setout.hour<<":"<<car[SearchNumber-1].Seto
56、ut.minutes<<" "<<car[SearchNumber-1].Qidian<<" "<<car[SearchNumber-1].Zhongdian<<" "<<car[SearchNumber-1].Lasttime<<" "<&
57、lt;car[SearchNumber-1].Fixnumber<<" "<<car[SearchNumber-1].Fixednumber<<endl;</p><p> cout<<"輸入回車鍵返回"<<endl;</p><p> getchar();</p&g
58、t;<p> getchar();</p><p> welcome();</p><p><b> }</b></p><p> //終點站查詢子函數(shù)</p><p> void Finalsearch()</p><p><b> {</b>&l
59、t;/p><p><b> int R;</b></p><p> R=loading();</p><p><b> int i;</b></p><p> char Address[MAX];</p><p> cout<<"請輸入終點站名稱:
60、"<<endl;</p><p> cin>>Address;</p><p> cout<<"班次"<<" "<<"發(fā)車時間"<<" "<<"起點站"<<" "
61、<<"終點站"<<" "<<"行車時間"<<" "<<"額定載客量"<<" "<<"已訂票人數(shù)"<<endl;</p><p> for(i=0;i<R;i++)</
62、p><p><b> {</b></p><p> if((strcmp(Address,car[i].Zhongdian))==0)</p><p> cout<<car[i].Number<<" "<<car[i].Setout.hour<<":"
63、;<<car[i].Setout.minutes<<" "<<car[i].Qidian<<" "<<car[i].Zhongdian<<" "<<car[i].Lasttime<<" "<<car[i].Fixnumber
64、<<" "<<car[i].Fixednumber<<endl;</p><p><b> }</b></p><p> cout<<"輸入回車鍵返回"<<endl;</p><p> getchar();</p&g
65、t;<p> getchar();</p><p> welcome();</p><p><b> }</b></p><p> //購買火車票子函數(shù)</p><p> void shoupiao()</p><p><b> {</b></
66、p><p><b> int R;</b></p><p> R=loading();</p><p><b> int i;</b></p><p> cout<<"請輸入要訂購的車票的班次:"<<endl;</p><p>
67、<b> cin>>i;</b></p><p> if(i<=0||i>R)</p><p><b> {</b></p><p> cout<<"對不起,今天沒有這趟車,請明天再來,謝謝使用!"<<endl;</p><p&
68、gt; cout<<"輸入回車鍵返回"<<endl;</p><p> getchar();</p><p> getchar();</p><p> welcome();</p><p><b> }</b></p><p> time_t
69、 tval;</p><p> struct tm *now;</p><p> tval = time(NULL);</p><p> now = localtime(&tval);</p><p> if((now->tm_hour==car[i-1].Setout.hour&&now->tm_
70、min<car[i-1].Setout.minutes)||(now->tm_hour<car[i-1].Setout.hour))</p><p><b> {</b></p><p> if(car[i-1].Fixednumber<car[i-1].Fixnumber)</p><p><b> {
71、</b></p><p> (car[i-1].Fixednumber)++;</p><p> ofstream outfile;</p><p> outfile.open("班次信息.txt",ios::out);</p><p> for(i=0;i<R;i++)</p>&
72、lt;p><b> {</b></p><p> outfile<<car[i].Number<<" "<<car[i].Setout.hour<<" "<<car[i].Setout.minutes<<" "<<car[i].Qidian
73、<<" "<<car[i].Zhongdian<<" "<<car[i].Lasttime<<" "<<car[i].Fixnumber<<" "<<car[i].Fixednumber<<endl;</p><p><b
74、> }</b></p><p> outfile.close();</p><p> cout<<"你的訂票成功,請按時上車,謝謝使用!"<<endl;</p><p><b> }</b></p><p> else cout<<&qu
75、ot;對不起,今天的這趟車的票已賣完,請明天再來,謝謝合作"<<endl;</p><p><b> }</b></p><p> else cout<<"對不起,今天的這趟車已發(fā)出,請明天再來,謝謝合作"<<endl;</p><p> cout<<"
76、;輸入回車鍵返回"<<endl;</p><p> getchar();</p><p> getchar();</p><p> welcome();</p><p><b> }</b></p><p> //退訂火車票子函數(shù)</p><p&
77、gt; void tuipiao()</p><p><b> {</b></p><p><b> int R;</b></p><p> R=loading();</p><p><b> int i;</b></p><p> cout
78、<<"請輸入要退購的車票的班次:"<<endl;</p><p><b> cin>>i;</b></p><p> if(i<=0||i>R)</p><p><b> {</b></p><p> cout<<
79、;"對不起,今天沒有這趟車,無法完成退票.謝謝使用!"<<endl;</p><p> cout<<"輸入回車鍵返回"<<endl;</p><p> getchar();</p><p> getchar();</p><p> welcome();<
80、/p><p><b> }</b></p><p> time_t tval;</p><p> struct tm *now;</p><p> tval = time(NULL);</p><p> now = localtime(&tval);</p><p
81、> if((now->tm_hour==car[i-1].Setout.hour&&now->tm_min<car[i-1].Setout.minutes)||(now->tm_hour<car[i-1].Setout.hour))</p><p><b> {</b></p><p> if(car[i-1]
82、.Fixednumber>=1)</p><p><b> {</b></p><p> car[i-1].Fixednumber-=1;</p><p> ofstream outfile;</p><p> outfile.open("班次信息.txt",ios::out);<
83、/p><p> for(i=0;i<R;i++)</p><p><b> {</b></p><p> outfile<<car[i].Number<<" "<<car[i].Setout.hour<<" "<<car[i].Setou
84、t.minutes<<" "<<car[i].Qidian<<" "<<car[i].Zhongdian<<" "<<car[i].Lasttime<<" "<<car[i].Fixnumber<<" "<<car[i]
85、.Fixednumber<<endl;</p><p><b> }</b></p><p> outfile.close();</p><p> cout<<"退訂車票成功,謝謝使用!"<<endl;</p><p><b> }</b&g
86、t;</p><p> else cout<<"對不起,今天的這趟車的票尚未賣出,無法完成退票!"<<endl;</p><p><b> }</b></p><p> else cout<<"對不起,今天的這趟車已發(fā)出,無法完成退票!"<<endl;
87、</p><p> cout<<"輸入回車鍵返回"<<endl;</p><p> getchar();</p><p> getchar();</p><p> welcome();</p><p><b> }</b></p>
88、<p><b> //退出子函數(shù)</b></p><p> void quit()</p><p><b> {</b></p><p> cout<<"*********************謝謝使用本系統(tǒng),歡迎下次繼續(xù)使用***********************&quo
89、t;<<endl;</p><p><b> } </b></p><p><b> //文件載入子函數(shù)</b></p><p> int loading()</p><p><b> {</b></p><p><b>
90、 int i;</b></p><p> ifstream infile;</p><p> infile.open("班次信息.txt",ios::in);</p><p> if(!infile)</p><p><b> {</b></p><p>
91、 cout<<"請查看原文件是否存在!"<<endl;</p><p> cout<<"按任意鍵返回";</p><p> getchar();</p><p> getchar();</p><p> welcome();</p><p&
92、gt;<b> }</b></p><p> for(i=0;!infile.eof();i++)</p><p><b> {</b></p><p> infile>>car[i].Number>>car[i].Setout.hour>>car[i].Setout.minut
93、es>>car[i].Qidian>>car[i].Zhongdian>>car[i].Lasttime>>car[i].Fixnumber>>car[i].Fixednumber;</p><p><b> }</b></p><p> return i-1;</p><p>&
94、lt;b> }</b></p><p><b> 4 測試</b></p><p><b> 主菜單:</b></p><p><b> 班次錄入:</b></p><p><b> 瀏覽班次信息:</b></p>
95、<p><b> 查詢火車信息:</b></p><p> 測試中發(fā)現(xiàn)訂購和退訂車票后,雖然已訂購車票數(shù)實際上有增減,但不能存入到文件中及時保存.后來通過以文件覆蓋的方法重新錄入一次文件得以解決.測試中還發(fā)現(xiàn)若時間是整點的話,分鐘的0只能是一個0,因為分鐘定義的格式是int.,但若果改成char格式之后和系統(tǒng)時間比較的函數(shù)將不成立.所以這個程序仍然存在這樣的一個問題.<
96、;/p><p><b> 5 課程設(shè)計總結(jié)</b></p><p> 通過這次的課程設(shè)計,我發(fā)現(xiàn)我還有好多的不足之處,還有好多知識不能很好的運用,而且題目中的一個要求沒有正常的完成.我覺得我們應(yīng)該花更多的時間去查找資料,因為僅憑自己已學(xué)的知識是無法完成這些內(nèi)容的.</p><p> 這次課程設(shè)計我用了9個子函數(shù)去完成,分開完成各個函數(shù)并驗證
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計--火車票信息管理系統(tǒng)
- 火車票管理系統(tǒng)課程設(shè)計
- c++酒店管理系統(tǒng)課程設(shè)計
- java課程設(shè)計--火車票管理系統(tǒng)
- c++酒店管理系統(tǒng)課程設(shè)計
- 銷售管理系統(tǒng)c++課程設(shè)計
- 《c++》課程設(shè)計倉庫管理系統(tǒng)
- c++課程設(shè)計-學(xué)生管理系統(tǒng)
- c++學(xué)生管理系統(tǒng)課程設(shè)計
- c++課程設(shè)計--酒店管理系統(tǒng)
- c++課程設(shè)計--c++程序設(shè)計語言
- c++課程設(shè)計---商場管理
- c++課程設(shè)計--圖書管理系統(tǒng)
- 人事考勤管理系統(tǒng)c++課程設(shè)計
- c++課程設(shè)計-學(xué)生考勤管理系統(tǒng)
- 圖書管理系統(tǒng)c++課程設(shè)計
- c++課程設(shè)計學(xué)生通訊管理系統(tǒng)
- c++圖書管理系統(tǒng)課程設(shè)計
- c++課程設(shè)計報告-- 學(xué)籍管理系統(tǒng)
- c++課程設(shè)計---學(xué)生學(xué)籍管理系統(tǒng)
評論
0/150
提交評論