




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C+程序設(shè)計課程設(shè)計說明書題 目長途客運售票管理系統(tǒng)的設(shè)計學(xué) 號姓 名指導(dǎo)教師日 期內(nèi)蒙古科技大學(xué)課程設(shè)計任務(wù)書課程名稱面向?qū)ο蟪绦蛟O(shè)計A課程設(shè)計設(shè)計題目長途客運售票管理系統(tǒng)的設(shè)計指導(dǎo)教師時間一、教學(xué)要求1. 鞏固和加深學(xué)生對C+語言課程的基本知識的理解和掌握2. 掌握C+語言編程和程序調(diào)試的基本技能3. 利用C+語言進行基本的軟件設(shè)計4. 掌握書寫程序設(shè)計說明文檔的能力5. 提高運用C+語言解決實際問題的能力二、設(shè)計資料及參數(shù)用C+設(shè)計一個系統(tǒng),能提供下列服務(wù):(1)錄入車次信息,格式為:車次開車時間起始終點票價剩余座位22120:30包頭北京31087可不定時地增加車次數(shù)據(jù)。(2)瀏覽車次
2、信息,可顯示出所有車次,如果當(dāng)前系統(tǒng)時間超過了某車次的發(fā)車時間,則顯示“此班車已發(fā)出”的提示信息。(3)查詢路線:可按車次編號查詢,可按起始站,終點站查詢(4)售票和退票功能A:查詢車次編號或站點。當(dāng)剩余座位數(shù)大于0,并且當(dāng)前系統(tǒng)時間小于開車時間時才能售票,售票后自動更新剩余座位數(shù)。B:退票時,輸入退票的車次,當(dāng)本班車未發(fā)出時才能退票,退票后自動更新剩余座位數(shù)。三、設(shè)計要求及成果根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:(1)分析系統(tǒng)中的各個實體之間的關(guān)系及其屬性和行為;(2)根據(jù)問題描述,設(shè)計系統(tǒng)的類層次;(3)完成類層次中各個類的描述(包括屬性和方法);(4)完成類中各個成員函數(shù)的定義
3、;(5)完成系統(tǒng)的應(yīng)用模塊;(6)功能調(diào)試;(7)提交課程設(shè)計報告:完成系統(tǒng)總結(jié)報告以及系統(tǒng)使用說明書目錄第1章 需求分析3第2章 總體設(shè)計3第3章 類的設(shè)計33.1 ×××類的設(shè)計33.2 ×××類的設(shè)計4第4章 詳細設(shè)計44.1 工程視圖44.2 類圖視圖44.3 函數(shù)的調(diào)用關(guān)系54.4 主程序流程圖54.5 主要算法的流程圖5第5章 測試5第6章 總結(jié)5附錄:程序代碼6第1章 需求分析1.1設(shè)計資料及參數(shù)用C+設(shè)計一個系統(tǒng),能提供下列服務(wù):(1)錄入車次信息,格式為:車次發(fā)車時間起始終點硬座票價剩余座位k26420:30包頭北京
4、110200可不定時地增加車次數(shù)據(jù)。(2)瀏覽車次信息,可顯示出所有車次,如果當(dāng)前系統(tǒng)時間超過了某車次的發(fā)車時間,則顯示“此班列車已發(fā)出”的提示信息。(3)查詢路線:可按車次編號查詢,可按起始站,終點站查詢(4)售票和退票功能A:查詢車次或站點。當(dāng)剩余座位數(shù)大于0,并且當(dāng)前系統(tǒng)時間小于發(fā)車時間時才能售票,售票后自動更新剩余座位數(shù)。B:退票時,輸入退票的車次,當(dāng)本班列車未發(fā)出時才能退票,退票后自動更新剩余座位數(shù)。第2章 總體設(shè)計2.1用結(jié)構(gòu)框圖表示各個功能之間的關(guān)系2.2將框圖中系統(tǒng)的各個功能用文字詳細的描述。1.鐵路售票管理系統(tǒng)理解:系統(tǒng)中必須有車次信息,車次信息應(yīng)該是由管理員錄入,可由管理員
5、或者乘客查看,定退票及其他操作。其中要注意的是錄入信息必須是由管理員完成的,所以我會創(chuàng)建一個乘客類,然后創(chuàng)建管理員類繼承乘客類,進而繼承乘客的所有功能,并添加錄入信息的功能。信息的載體可以使鏈表,也可以是數(shù)組,因為我更加熟悉數(shù)組,所以我用對象數(shù)組。(為了熟悉鏈表,課下自己還建立了以鏈表存放數(shù)據(jù)的系統(tǒng))系統(tǒng)錄入信息的操作非常枯燥,所以我創(chuàng)建了一個文件,把每次錄入的信息保存入文件,在下一次進入系統(tǒng)是,它會默認讀取文件原有的信息,當(dāng)然也可以隨時添加錄入車次信息。然后系統(tǒng)的各個功能僅僅是通過查詢找到具體對象的具體數(shù)據(jù)進行操作。 2.基本功能:錄入次、始發(fā)站、終點站、開車時間(小時、分鐘)、票價、剩余票
6、數(shù)等信息。瀏覽車次查看所有的錄入車次其中開車時間小于當(dāng)前時間的車次則輸出車次已發(fā)出。查詢車次通過搜索車次或站點來快速的查看車輛的信息。定退票車時間大于當(dāng)前系統(tǒng)時間的前提下才可退票并且在票數(shù)大于零的前提下才可定票,票數(shù)更新。文件的存儲存儲錄入的車次信息以便下次訪問。文件的讀取讀取文件內(nèi)的信息方便操作以上的各項功能;。第3章 類的設(shè)計3.1 service類的設(shè)計(第一個類)1.畫出類圖2.對類的函數(shù)成員的說明定義了一個service 類,類中包括以下幾部分:公有繼承了user類私有段:定義車輛的車次、開車時間(小時、分鐘)、始發(fā)站、終點站、票價、票數(shù)。公有段依次為輸入函數(shù)、輸出函數(shù)、定票函數(shù)、退
7、票函數(shù)。添加設(shè)定信息函數(shù)。友元函數(shù)查詢函數(shù)、瀏覽函數(shù)、文件存儲函數(shù)、文件讀取函數(shù)。添加輸入函數(shù)。3.2 user類的設(shè)計(第二個類)1.畫出類圖2.對類的函數(shù)成員的說明定義了一個user 類,類中包括以下幾部分:私有段:定義車輛的車次、開車時間(小時、分鐘)、始發(fā)站、終點站、票價、票數(shù)。公有段依次為輸出函數(shù)、定票函數(shù)、退票函數(shù)。友元函數(shù)查詢函數(shù)、瀏覽函數(shù)、文件存儲函數(shù)、文件讀取函數(shù)。3.3全局變量,重要形式參數(shù)、局部變量等等,它們的命名及用途解釋g-num:確定數(shù)組對象的個數(shù),也是控制循環(huán)的條件。ticketj:代表具體的某個對象。A: bool型,判斷使用者身份。B: bool型,判斷是否退
8、出程序。t: long型,獲得當(dāng)前距1970年秒數(shù)。pt: tm 指向類的對象的指針,指向當(dāng)前時間。Functionnumber:整型,選擇功能。第4章 詳細設(shè)計4.1 工程視圖說明有幾個源代碼文件,可以截取工程文件視圖表示 4.2 類圖視圖4.3 主程序流程圖4.4 主要算法的流程圖第5章 測試5.1驗證身份后登陸5.2錄入信息并保存5.3驗證身份5.4查詢車次5.5查詢子菜單5.6退、訂票第6章 總結(jié)課程設(shè)計旨在鍛煉學(xué)生的實際動手能力和解決真實問題的能力。并在其中掌握和熟練所學(xué)的知識,并能夠運用所學(xué)知識解決比較簡單的現(xiàn)實模擬問題。在為期兩周的C+課程設(shè)計中,我體會頗多,學(xué)到了很多東西。我加
9、強了對C+程序設(shè)計這門課程的認識,并且復(fù)習(xí)了以前學(xué)到的知識。這些都使得我對計算機語言的學(xué)習(xí)有了更深入的認識!總之,通過這次課程設(shè)計,我收獲頗豐,相信會為自己以后的學(xué)習(xí)和工作帶來很大的好處。課程設(shè)計,有些問題并不是只靠課本的哪些知識就可以輕易解決的。所以,它不僅鍛煉了我們挑戰(zhàn)自己的決心,學(xué)會用已掌握的知識去解決我們看似不能解決的問題,同時進一步培養(yǎng)了我們獨立思考問題和解決問題的能力。特別是在C+中如何調(diào)試程序的方法。當(dāng)然,老師的指導(dǎo)以及同學(xué)的幫助是不可忽視的,他們給了我提示和幫助,教會了我編譯復(fù)雜程序的方法。雖然這次課程設(shè)計是在參考程序的基礎(chǔ)之上進行的,但是我覺得不管咋樣來說,對我們學(xué)生都是一個
10、挑戰(zhàn)和鍛煉。我很欣賞自己能在程序中加入自己的想法和有關(guān)程序的內(nèi)容,將它進行一番改進,感覺收獲很大。總之,這次的C+課程設(shè)計讓我有了一些新的收獲,讓我對計算機語言有了更深體會,祝自己在以后的學(xué)習(xí)中更上一層樓。附錄:程序代碼#include <iostream>#include <iomanip>#include <stdlib.h>#include<string.h>#include <fstream>#include <ctime>using namespace std;const int N=10;bool A=fals
11、e,B=true;long t = time(0);tm * pt = localtime(&t);void mainmenu();struct Timeint hour;int minute;class userfriend void save ();friend void sure_message();friend void browse();friend void ticketmenu();friend void search_train();friend void search_station();protected:char train10;Time time;char st
12、art_station20;char end_station20;int ticket_price;int remaind_seats;public:void display()cout<<train<<"t"<<" "<<setfill('0')<<setw(2)<<time.hour<<":"<<setw(2)<<time.minute<<"tt"<<"
13、"<<start_station<<"t"<<" "<<end_station<<"t"<<" "<<ticket_price<<"t"<<" "<<remaind_seats<<"t"t = :time(NULL); tm * pt = localtime(&t);if(time.hour<pt-&g
14、t;tm_hour)cout<<" 此班列車已發(fā)出"else if(time.hour=pt->tm_hour&&time.minute<=pt->tm_min)cout<<" 此班列車已發(fā)出"else cout<<"t正常"cout<<endl;void order()if(time.hour<pt->tm_hour)cout<<" 此班列車已發(fā)出,不能訂票,退出!"else if(time.hour=pt-
15、>tm_hour&&time.minute<=pt->tm_min)cout<<" 此班列車已發(fā)出,不能訂票,退出!"else if ( remaind_seats = 0 )cout << "此班列車已沒票,不能訂票,退出!" << endl;elseremaind_seats = remaind_seats - 1;cout <<train<<"次列車 "<< "售票一次,現(xiàn)存票量為:" <<
16、remaind_seats << endl;void Delete()if(time.hour<pt->tm_hour)cout<<" 此班列車已發(fā)出,不能退票,退出!"else if(time.hour=pt->tm_hour&&time.minute<=pt->tm_min)cout<<" 此班列車已發(fā)出,不能退票,退出!"else remaind_seats = remaind_seats + 1;cout <<train<<"次列車
17、 "<< "退票一次,現(xiàn)存票量為:" << remaind_seats << endl;class service :public userfriend void input();public:void setinfo (char* c, int h, int m, char* q, char* z, int p, int s)strcpy(train,c);time.hour=h;time.minute=m;strcpy(start_station,q);strcpy(end_station,z);ticket_price=p
18、;remaind_seats=s;service ticketN;static int g_num=-1;void save ()ofstream file("數(shù)據(jù).txt",ios:out);for(int j=0;j<=g_num;j+)file<<ticketj.train<<" "file<<ticketj.time.hour <<" "file<<ticketj.time.minute<<" "file<<ticke
19、tj.start_station <<" "file<<ticketj.end_station <<" "file<<ticketj.ticket_price<<" "file<<ticketj.remaind_seats <<endl;file.close();cout<<"信息已存入文件"<<endl;void input()g_num+;char c10;int h;int m;char q20;cha
20、r z20;int p;int s;cout<<"車次:"cin>>c;cout<<"開車時間hour:"cin>>h;cout<<"開車時間minute:"cin>>m;cout<<"起始:"cin>>q;cout<<"終點:"cin>>z;cout<<"票價:"cin>>p;cout<<"剩余座位:"
21、;cin>>s;ticketg_num.setinfo (c, h, m, q, z, p, s);save ();void browse()int j;t = time(NULL); tm * pt = localtime(&t);cout<<"當(dāng)前時間:"<<setfill('0')<<setw(2)<<pt->tm_hour<<':'cout<<setw(2)<<pt->tm_min<<':'c
22、out<<setw(2)<<pt->tm_sec<<endl<<endl;cout<<"現(xiàn)存車次信息如下:"<<endl<<endl;cout<<"車次t"<<"開車時間t"<<"起始t"<<"終點t"<<"票價t"<<"剩余座位t"<<"狀態(tài)t"<<e
23、ndl;for( j=0;j<=g_num;j+)ticketj.display();void search_train()char train10;cout<<"輸入你要查詢的車次:"cin>>train;cout<<endl<<endl;for(int j=0;j<=g_num;j+)if(strcmp(train,ticketj.train)=0)cout<<"查詢結(jié)果:"<<endl;cout<<"車次t"<<"
24、;開車時間t"<<"起始t"<<"終點t"<<"票價t"<<"剩余座位t"<<"狀態(tài)t"<<endl;ticketj.display();break;if(j>g_num)cout<<"對不起,沒有這趟車次信息!"void search_station()char station20;cout<<"輸入你要查詢的站點:"cin>>st
25、ation;cout<<endl<<endl;for(int j=0;j<=g_num;j+)if(strcmp(station,ticketj.start_station)=0)|(strcmp(station,ticketj.end_station)=0)cout<<"查詢結(jié)果:"<<endl;cout<<"車次t"<<"開車時間t"<<"起始t"<<"終點t"<<"票
26、價t"<<"剩余座位t"<<"狀態(tài)t"<<endl;ticketj.display();break;if(j>g_num)cout<<"對不起,沒有有關(guān)此站點的車次信息!"void ticketmenu()long t = time(0);tm * pt = localtime(&t);int functionNumber;int j;cout<<" >>>>>> 票務(wù)菜單 <<<<
27、<< n"char train10;char station20;cout<<"可按站點或車次查詢訂票(1.按站點,2.按車次)"<<endl;cout<<"選擇你需要的功能:"cin>>functionNumber;getchar();for(;functionNumber!=1&&functionNumber!=2;)cout<<"指令錯誤!請重新輸入!"<<endl;cin>>functionNumber;c
28、out<<endl<<endl;if (functionNumber=1)cout<<"輸入你要訂票或退票的站點:"cin>>station;cout<<endl<<endl;for( j=0;j<=g_num;j+)if(strcmp(station,ticketj.start_station)=0)|(strcmp(station,ticketj.end_station)=0)cout<<"本車次現(xiàn)存信息:"<<endl;cout<<&q
29、uot;車次t"<<"開車時間t"<<"起始t"<<"終點t"<<"票價t"<<"剩余座位t"<<"狀態(tài)t"<<endl;ticketj.display();break;if(j>g_num)cout<<"對不起,沒有這趟車次信息!,無法訂退票!"if (functionNumber=2)cout<<"輸入你要訂票或退票的車
30、次:"cin>>train;cout<<endl<<endl;for( j=0;j<=g_num;j+)if(strcmp(train,ticketj.train)=0)cout<<"本車次現(xiàn)存信息:"<<endl;cout<<"車次t"<<"開車時間t"<<"起始t"<<"終點t"<<"票價t"<<"剩余座位t&quo
31、t;<<"狀態(tài)t"<<endl;ticketj.display();break;if(j>g_num)cout<<"對不起,沒有有關(guān)此站點的車次信息!無法訂退票!"if(ticketj.time.hour<pt->tm_hour)cout<<"此班列車已發(fā)出,不能訂退票!"else if(ticketj.time.hour=pt->tm_hour&&ticketj.time.minute<=pt->tm_min)cout<<
32、"此班列車已發(fā)出,不能訂退票!"elsecout<<"n"cout<<" 1.訂票 n"cout<<" 2.退票 n"cout<<" 3.返回主菜單 n"cout<<"n"cout<<"選擇你需要的功能:"cin>>functionNumber;for(;functionNumber!=1&&functionNumber!=2&&functi
33、onNumber!=3;)cout<<"指令錯誤!請重新輸入!"<<endl;cin>>functionNumber;cout<<endl<<endl;switch(functionNumber)case 1:ticketj.order();save ();break;case 2:ticketj.Delete();save ();break;case 3:mainmenu();break;/switch endsvoid search_menu()int functionNumber;cout<<&q
34、uot; >>>>>> 查詢子菜單 <<<<<< n"cout<<endl;cout<<" 1.按班次查詢 n"cout<<" 2.按站點查詢 n"cout<<" 3.返回主菜單 n"cout<<endl;cout<<"請選擇你所需要的功能:"cin>>functionNumber;cout<<endl<<endl;for(;f
35、unctionNumber!=1&&functionNumber!=2&&functionNumber!=3;)cout<<"指令錯誤!請重新輸入!"<<endl;cin>>functionNumber;cout<<endl<<endl;switch(functionNumber)case 1:search_train();break;case 2:search_station();break;case 3:system("cls");mainmenu();voi
36、d mainmenu()int functionNumber;cout<<" >>>>>> 歡迎使用車票管理系統(tǒng) <<<<<< n"cout<<endl;cout<<" 1.錄入班次信息 n"cout<<" 2.瀏覽班次信息 n"cout<<" 3.查詢行車路線 n"cout<<" 4.售票與退票系統(tǒng) n"cout<<" 5.退出系
37、統(tǒng) n"cout<<endl;cout<<"請選擇你所需要的功能:"cin>>functionNumber;cout<<endl<<endl;switch(functionNumber)case 1: char c;if (A)doinput();cout<<"已錄入"<<g_num+1<<"條航班信息(包括已從文件中讀取的),想繼續(xù)錄入嗎(y/n)"<<endl;cin>>c;for(;c!='y
38、'&&c!='n')cout<<"指令錯誤!請重新輸入!"<<endl;cin>>c; while (c='y');else cout<<"對不起,您不是管理員不能進行這項操作!"cout<<endl<<"按任意鍵回主菜單."<<endl;getchar();getchar();system("cls");break;case 2:browse();cout<<en
39、dl<<endl<<endl<<"按任意鍵回主菜單."<<endl;getchar();getchar();system("cls");break;case 3:search_menu();cout<<endl<<"按任意鍵回主菜單."<<endl;getchar();getchar();system("cls");break;case 4:ticketmenu();cout<<endl<<"按任意
40、鍵回主菜單."<<endl;getchar();getchar();system("cls");break;case 5:t = time(NULL);tm* pt = localtime(&t);system("cls");cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl;cout<<" >>>>>> 謝謝使用車票管理系統(tǒng) <<<<<< n"B=false;break;default:cout<<"輸入錯誤,請確保你的輸入為1-5"<<endl;cout<<"按任意鍵回主菜單."<<endl;getchar();system
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年智能家居產(chǎn)品在智能家居產(chǎn)品專賣店銷售渠道的渠道管理路徑研究報告
- 無土栽培蔬菜產(chǎn)業(yè)化項目在2025年農(nóng)業(yè)品牌國際化中的應(yīng)用報告
- 2025年房地產(chǎn)中介行業(yè)服務(wù)質(zhì)量提升與行業(yè)規(guī)范研究報告
- 工業(yè)互聯(lián)網(wǎng)平臺網(wǎng)絡(luò)安全態(tài)勢感知技術(shù)大數(shù)據(jù)安全分析與預(yù)測報告
- 數(shù)字化教材在智能教育系統(tǒng)中的應(yīng)用與集成報告
- 新型金融衍生品在2025年的市場應(yīng)用與風(fēng)險防控策略報告
- 老字號餐飲品牌如何提升餐飲服務(wù)質(zhì)量與顧客滿意度研究報告
- 聽評課優(yōu)缺點及建議16篇
- 公司工程部工具管理制度
- 化工企業(yè)知識庫管理制度
- 福建省龍巖市名校中考數(shù)學(xué)模擬預(yù)測題及答案解析
- 會所會員管理制度
- DZ/T 0462.8-2023 礦產(chǎn)資源“三率”指標(biāo)要求 第8部分:硫鐵礦、磷、硼、天然堿、鈉硝石(正式版)
- 生計船管理方案
- 湖南省長沙市芙蓉區(qū)2022-2023學(xué)年一年級下學(xué)期期末測試數(shù)學(xué)試卷
- GB/T 43650-2024野生動物及其制品DNA物種鑒定技術(shù)規(guī)程
- GB/T 748-2023抗硫酸鹽硅酸鹽水泥
- 改革開放與新時代智慧樹知到期末考試答案2024年
- CorelDRAW實例教程(CorelDRAW 2020)全套教學(xué)課件
- 心肌梗死護理教學(xué)查房
- 蒸氣管道安全知識1
評論
0/150
提交評論