




版權(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、信息,可顯示出所有車次,如果當前系統(tǒng)時間超過了某車次的發(fā)車時間,則顯示“此班車已發(fā)出"的提示信息.(3)查詢路線:可按車次編號查詢,可按起始站,終點站查詢(4)售票和退票功能A:查詢車次編號或站點。當剩余座位數(shù)大于0,并且當前系統(tǒng)時間小于開車時間時才能售票,售票后自動更新剩余座位數(shù).B:退票時,輸入退票的車次,當本班車未發(fā)出時才能退票,退票后自動更新剩余座位數(shù).三、設(shè)計要求及成果根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:(1)分析系統(tǒng)中的各個實體之間的關(guān)系及其屬性和行為;(2)根據(jù)問題描述,設(shè)計系統(tǒng)的類層次;(3)完成類層次中各個類的描述(包括屬性和方法);(4)完成類中各個成員
3、函數(shù)的定義;(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附錄:程序代碼6I第1章 需求分析1。1設(shè)計資料及參數(shù)用C+設(shè)計一個系統(tǒng),能提供下列服務(wù):(1)錄入車次信息,格式為:車次發(fā)車時間起始終點硬座票價剩余座位k26420:
4、30包頭北京110200可不定時地增加車次數(shù)據(jù)。(2)瀏覽車次信息,可顯示出所有車次,如果當前系統(tǒng)時間超過了某車次的發(fā)車時間,則顯示“此班列車已發(fā)出”的提示信息。(3)查詢路線:可按車次編號查詢,可按起始站,終點站查詢(4)售票和退票功能A:查詢車次或站點。當剩余座位數(shù)大于0,并且當前系統(tǒng)時間小于發(fā)車時間時才能售票,售票后自動更新剩余座位數(shù)。B:退票時,輸入退票的車次,當本班列車未發(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)是,它會默認讀取文件原有的信息,當然也可以隨時添加錄入車次信息。然后系統(tǒng)的各個功能僅僅是通過查詢找到具體對象的具體數(shù)據(jù)進行操作。 2.基本功能:錄入-次、始發(fā)站、終點站、開車時間(小時、分鐘)
6、、票價、剩余票數(shù)等信息。瀏覽車次查看所有的錄入車次其中開車時間小于當前時間的車次則輸出車次已發(fā)出。查詢車次-通過搜索車次或站點來快速的查看車輛的信息。定退票-車時間大于當前系統(tǒng)時間的前提下才可退票并且在票數(shù)大于零的前提下才可定票,票數(shù)更新。文件的存儲-存儲錄入的車次信息以便下次訪問。文件的讀取讀取文件內(nèi)的信息方便操作以上的各項功能;。第3章 類的設(shè)計3.1 service類的設(shè)計(第一個類)1。畫出類圖2。對類的函數(shù)成員的說明定義了一個service 類,類中包括以下幾部分:公有繼承了user類私有段:定義車輛的車次、開車時間(小時、分鐘)、始發(fā)站、終點站、票價、票數(shù)。公有段依次為輸入函數(shù)、輸
7、出函數(shù)、定票函數(shù)、退票函數(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ù)、局部變量等等,它們的命名及用途解釋gnum:確定數(shù)組對象的個數(shù),也是控制循環(huán)的條件.ticketj:代表具體的某個對象。A: bool型,判斷使用者身份。B: bo
8、ol型,判斷是否退出程序.t: long型,獲得當前距1970年秒數(shù).pt: tm 指向類的對象的指針,指向當前時間.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ǎo)以及同學(xué)的幫助是不可忽視的,他們給了我提示和幫助,教會了我編譯復(fù)雜程序的方法。雖然這次課程設(shè)計是在參考程序的基礎(chǔ)之上進行的,但是我覺得不管咋樣來說,對
10、我們學(xué)生都是一個挑戰(zhàn)和鍛煉.我很欣賞自己能在程序中加入自己的想法和有關(guān)程序的內(nèi)容,將它進行一番改進,感覺收獲很大??傊@次的C+課程設(shè)計讓我有了一些新的收獲,讓我對計算機語言有了更深體會,祝自己在以后的學(xué)習(xí)中更上一層樓.附錄:程序代碼#include <iostream#include <iomanip>include <stdlib.hincludestring.h>include <fstreaminclude <ctimeusing namespace std;const int N=10;bool A=false,B=true;long t
11、= 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 start_station20;char end_
12、station20;int ticket_price;int remaind_seats;public:void display()cout<train"t"<<” ”<<setfill(0)<<setw(2)<time.hour<”:"<setw(2)<time.minute<"tt”" "<<start_station<"t”<<” "<end_station<"t"” &quo
13、t;ticket_price<”t”<<" "<remaind_seats<”t"t = :time(NULL); tm * pt = localtime(t);if(time.hourpt-tm_hour)cout<<” 此班列車已發(fā)出”;else if(time.hour=pttm_hour&&time.minute<=pt>tm_min)cout<" 此班列車已發(fā)出";else cout<”t正?!?coutendl;void order()if(time。
14、hourpttm_hour)cout<" 此班列車已發(fā)出,不能訂票,退出!”;else if(time。hour=pt->tm_hour&time。minute<=pttm_min)cout<" 此班列車已發(fā)出,不能訂票,退出!"else if ( remaind_seats = 0 )cout << ”此班列車已沒票,不能訂票,退出!” < endl;elseremaind_seats = remaind_seats - 1;cout <train<"次列車 ”<< "
15、售票一次,現(xiàn)存票量為:" < remaind_seats endl;void Delete()if(time。hour<pttm_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<"次列車 "< &quo
16、t;退票一次,現(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;remaind_seats=s;service ticket
17、N;static int g_num=1;void save ()ofstream file(”數(shù)據(jù)。txt",ios::out);for(int j=0;j=g_num;j+)fileticketj。train<<" "file<<ticketj.time。hour <<" ";file<ticketj。time。minute<<" ";file<ticketj。start_station <" ”;file<<ticketj。end_
18、station <” "file<ticketj.ticket_price" "fileticketj。remaind_seats <endl;file。close();cout<<”信息已存入文件"endl;void input()g_num+;char c10;int h;int m;char q20;char z20;int p;int s;cout<”車次:”;cin>>c;cout<<”開車時間hour:”;cinh;cout”開車時間minute:”;cin>m;cout<
19、;<”起始:”;cinq;cout"終點:”;cin>>z;cout<"票價:”;cin>p;cout"剩余座位:";cins;ticketg_num。setinfo (c, h, m, q, z, p, s);save ();void browse()int j;t = time(NULL); tm pt = localtime(t);cout<<"當前時間:"<setfill('0')<setw(2)<pt->tm_hour<':;co
20、utsetw(2)pttm_min':';cout<setw(2)<pt>tm_sec<endl<endl;cout<"現(xiàn)存車次信息如下:"endl<<endl;cout<"車次t”"開車時間t""起始t"<<”終點t”<"票價t"<<"剩余座位t”"狀態(tài)t”<<endl;for( j=0;j=g_num;j+)ticketj.display();void search_tr
21、ain()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"<”開車時間t”起始t”<<"終點t"<"票價t”<”剩余座位t"<”狀態(tài)t"<endl;ticketj.display();break;i
22、f(j>g_num)cout<”對不起,沒有這趟車次信息!”;void search_station()char station20;cout"輸入你要查詢的站點:";cin>>station;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”開車
23、時間t"<”起始t"<”終點t”票價t""剩余座位t"<<”狀態(tài)t"<endl;ticketj.display();break;if(jg_num)cout<<”對不起,沒有有關(guān)此站點的車次信息!"void ticketmenu()long t = time(0);tm * pt = localtime(&t);int functionNumber;int j;cout<” >>> 票務(wù)菜單 <<<< n”;char train
24、10;char station20;cout<<"可按站點或車次查詢訂票(1.按站點,2。按車次)"<<endl;cout<”選擇你需要的功能:"cinfunctionNumber;getchar();for(;functionNumber!=1&&functionNumber!=2;)cout<<"指令錯誤!請重新輸入!"<<endl;cin>functionNumber;cout<<endl<endl;if (functionNumber=1)co
25、ut<"輸入你要訂票或退票的站點:";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<<"車次t”"開車時間t”<<”起始t”<”終點t”<”票價t"”剩余座位t”<”狀態(tài)t”endl;ticketj。display();
26、break;if(j>g_num)cout<"對不起,沒有這趟車次信息!,無法訂退票!”;if (functionNumber=2)cout<”輸入你要訂票或退票的車次:”;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”"剩余座位
27、t”<”狀態(tài)t"endl;ticketj。display();break;if(jg_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<<"此班列車已發(fā)出,不能訂退票!”;elsecout<"n”;cout"
28、1.訂票 n”;cout<<" 2。退票 n";cout” 3.返回主菜單 n”;cout<”n"cout<”選擇你需要的功能:";cin>functionNumber;for(;functionNumber!=1&functionNumber!=2&&functionNumber!=3;)cout<”指令錯誤!請重新輸入!"<endl;cin>functionNumber;cout<<endlendl;switch(functionNumber)case 1:
29、ticketj。order();save ();break;case 2:ticketj。Delete();save ();break;case 3:mainmenu();break;/switch endsvoid search_menu()int functionNumber;cout<<” 查詢子菜單 < n”;cout<endl;cout<" 1。按班次查詢 n”;cout<<" 2。按站點查詢 n"cout<" 3.返回主菜單 n"cout<<endl;cout”請選擇你所需
30、要的功能:”;cinfunctionNumber;cout<endl<endl;for(;functionNumber!=1functionNumber!=2functionNumber!=3;)cout<”指令錯誤!請重新輸入!”<<endl;cinfunctionNumber;cout<<endl<endl;switch(functionNumber)case 1:search_train();break;case 2:search_station();break;case 3:system("cls");mainmenu
31、();void mainmenu()int functionNumber;cout<<" >> 歡迎使用車票管理系統(tǒng) <<<< n"coutendl;cout<<" 1.錄入班次信息 n”;cout<" 2.瀏覽班次信息 n”;cout<<" 3。查詢行車路線 n”;cout” 4。售票與退票系統(tǒng) n”;cout<<" 5.退出系統(tǒng) n”;cout<<endl;cout<”請選擇你所需要的功能:";cin>fun
32、ctionNumber;cout<<endl<endl;switch(functionNumber)case 1: char c;if (A)doinput();cout<"已錄入"g_num+1<"條航班信息(包括已從文件中讀取的),想繼續(xù)錄入嗎(y/n)"<endl;cinc;for(;c!=y'&c!='n';)cout"指令錯誤!請重新輸入!"endl;cinc; while (c='y');else cout<<”對不起,您不是管
33、理員不能進行這項操作!”;cout<endl<<”按任意鍵回主菜單.。.。."<<endl;getchar();getchar();system("cls”);break;case 2:browse();cout<endl<endl<endl<<"按任意鍵回主菜單。.?!眅ndl;getchar();getchar();system(”cls”);break;case 3:search_menu();cout<endl”按任意鍵回主菜單.。."<endl;getchar();getc
34、har();system("cls”);break;case 4:ticketmenu();coutendl<<”按任意鍵回主菜單.。."endl;getchar();getchar();system(”cls");break;case 5:t = time(NULL);tm pt = localtime(&t);system(”cls”);coutendl<endl<<endl<endlendl<endlendl;cout" >>> 謝謝使用車票管理系統(tǒng) <<< n"B=false;break;default:cout<<”輸入錯誤,請確保你的輸入為15”<<endl;cout<"按任意鍵回主菜單。.。.”<<endl;getc
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年-福建省建筑安全員知識題庫附答案
- 2025-2030品牌女裝行業(yè)市場深度分析及競爭格局與投資價值研究報告
- 2025年逆變式電焊機合作協(xié)議書
- 2025-2030雙接口卡行業(yè)市場現(xiàn)狀供需分析及重點企業(yè)投資評估規(guī)劃分析研究報告
- 2024年知識型組織與馬工學(xué)管理試題及答案
- 2025-2030化學(xué)肥料行業(yè)市場發(fā)展分析及競爭格局與投資戰(zhàn)略研究報告
- 監(jiān)理工程師考試內(nèi)容界定分析試題及答案
- 2024年度北京市護師類之兒科護理主管護師每日一練試卷A卷含答案
- 2024年度北京市護師類之主管護師能力測試試卷A卷附答案
- 2024年育嬰師基礎(chǔ)知識試題及答案
- 路燈安全培訓(xùn)
- DLDS-1214F電氣裝置技術(shù)方案(世賽KNX版)
- 電力行業(yè)電氣工程師求職簡歷
- (完整)3.1輔助角公式及應(yīng)用的公開課比賽課件
- 2024中智集團總部公開招聘筆試參考題庫附帶答案詳解
- 2025年吉林鐵道職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫帶答案
- 《以哪吒精神照亮成長之路》開學(xué)家長會課件
- 全國公安移動警務(wù)視頻應(yīng)用建設(shè)指南(征求意見稿)-正式-來源廣東
- 中國大唐集團公司基建工程質(zhì)量標準及工藝要求(安裝部分)
- 中國近現(xiàn)代史綱要學(xué)習(xí)心得體會與社會責(zé)任
- 圖解《弘揚教育家精神》全文課件
評論
0/150
提交評論