




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、. .PAGE21 / NUMPAGES25C+程序設計課程設計說明書題 目長途客運售票管理系統的設計學 號姓 名指導教師日 期科技大學課程設計任務書課程名稱面向對象程序設計A課程設計設計題目長途客運售票管理系統的設計指導教師時間一、教學要求1. 鞏固和加深學生對C+語言課程的基本知識的理解和掌握2. 掌握C+語言編程和程序調試的基本技能3. 利用C+語言進行基本的軟件設計4. 掌握書寫程序設計說明文檔的能力5. 提高運用C+語言解決實際問題的能力二、設計資料與參數用C+設計一個系統,能提供下列服務:(1)錄入車次信息,格式為:車次開車時間起始終點票價剩余座位22120:3031087可不定時
2、地增加車次數據。(2)瀏覽車次信息,可顯示出所有車次,如果當前系統時間超過了某車次的發車時間,則顯示“此班車已發出”的提示信息。(3)查詢路線:可按車次編號查詢,可按起始站,終點站查詢(4)售票和退票功能A:查詢車次編號或站點。當剩余座位數大于0,并且當前系統時間小于開車時間時才能售票,售票后自動更新剩余座位數。B:退票時,輸入退票的車次,當本班車未發出時才能退票,退票后自動更新剩余座位數。三、設計要求與成果根據系統功能要求,可以將問題解決分為以下步驟:(1)分析系統中的各個實體之間的關系與其屬性和行為;(2)根據問題描述,設計系統的類層次;(3)完成類層次中各個類的描述(包括屬性和方法);(
3、4)完成類中各個成員函數的定義;(5)完成系統的應用模塊;(6)功能調試;(7)提交課程設計報告:完成系統總結報告以與系統使用說明書目錄 TOC o 1-3 h z u HYPERLINK l _Toc326918403第1章 需求分析 PAGEREF _Toc326918403 h 3HYPERLINK l _Toc326918404第2章 總體設計 PAGEREF _Toc326918404 h 3HYPERLINK l _Toc326918405第3章 類的設計 PAGEREF _Toc326918405 h 3HYPERLINK l _Toc3269184063.1 類的設計 PAGE
4、REF _Toc326918406 h 3HYPERLINK l _Toc3269184073.2 類的設計 PAGEREF _Toc326918407 h 4HYPERLINK l _Toc326918408第4章 詳細設計 PAGEREF _Toc326918408 h 4HYPERLINK l _Toc3269184094.1 工程視圖 PAGEREF _Toc326918409 h 4HYPERLINK l _Toc3269184104.2 類圖視圖 PAGEREF _Toc326918410 h 4HYPERLINK l _Toc3269184114.3 函數的調用關系 PAGERE
5、F _Toc326918411 h 5HYPERLINK l _Toc3269184124.4 主程序流程圖 PAGEREF _Toc326918412 h 5HYPERLINK l _Toc3269184134.5 主要算法的流程圖 PAGEREF _Toc326918413 h 5HYPERLINK l _Toc326918414第5章 測試 PAGEREF _Toc326918414 h 5HYPERLINK l _Toc326918415第6章 總結 PAGEREF _Toc326918415 h 5HYPERLINK l _Toc326918416附錄:程序代碼 PAGEREF _T
6、oc326918416 h 6需求分析1.1設計資料與參數用C+設計一個系統,能提供下列服務:(1)錄入車次信息,格式為:車次發車時間起始終點硬座票價剩余座位k26420:30110200可不定時地增加車次數據。(2)瀏覽車次信息,可顯示出所有車次,如果當前系統時間超過了某車次的發車時間,則顯示“此班列車已發出”的提示信息。(3)查詢路線:可按車次編號查詢,可按起始站,終點站查詢(4)售票和退票功能A:查詢車次或站點。當剩余座位數大于0,并且當前系統時間小于發車時間時才能售票,售票后自動更新剩余座位數。B:退票時,輸入退票的車次,當本班列車未發出時才能退票,退票后自動更新剩余座位數。總體設計2
7、.1用結構框圖表示各個功能之間的關系2.2將框圖中系統的各個功能用文字詳細的描述。1.鐵路售票管理系統理解:系統中必須有車次信息,車次信息應該是由管理員錄入,可由管理員或者乘客查看,定退票與其他操作。其中要注意的是錄入信息必須是由管理員完成的,所以我會創建一個乘客類,然后創建管理員類繼承乘客類,進而繼承乘客的所有功能,并添加錄入信息的功能。信息的載體可以使鏈表,也可以是數組,因為我更加熟悉數組,所以我用對象數組。(為了熟悉鏈表,課下自己還建立了以鏈表存放數據的系統)系統錄入信息的操作非常枯燥,所以我創建了一個文件,把每次錄入的信息保存入文件,在下一次進入系統是,它會默認讀取文件原有的信息,當然
8、也可以隨時添加錄入車次信息。然后系統的各個功能僅僅是通過查詢找到具體對象的具體數據進行操作。 2.基本功能:錄入次、始發站、終點站、開車時間(小時、分鐘)、票價、剩余票數等信息。瀏覽車次查看所有的錄入車次其中開車時間小于當前時間的車次則輸出車次已發出。查詢車次通過搜索車次或站點來快速的查看車輛的信息。定退票車時間大于當前系統時間的前提下才可退票并且在票數大于零的前提下才可定票,票數更新。文件的存儲存儲錄入的車次信息以便下次訪問。文件的讀取讀取文件的信息方便操作以上的各項功能;。類的設計service類的設計(第一個類)1.畫出類圖2.對類的函數成員的說明定義了一個service 類,類中包括以
9、下幾部分:公有繼承了user類私有段:定義車輛的車次、開車時間(小時、分鐘)、始發站、終點站、票價、票數。公有段依次為輸入函數、輸出函數、定票函數、退票函數。添加設定信息函數。友元函數查詢函數、瀏覽函數、文件存儲函數、文件讀取函數。添加輸入函數。user類的設計(第二個類)1.畫出類圖2.對類的函數成員的說明定義了一個user 類,類中包括以下幾部分:私有段:定義車輛的車次、開車時間(小時、分鐘)、始發站、終點站、票價、票數。公有段依次為輸出函數、定票函數、退票函數。友元函數查詢函數、瀏覽函數、文件存儲函數、文件讀取函數。3.3全局變量,重要形式參數、局部變量等等,它們的命名與用途解釋g-nu
10、m:確定數組對象的個數,也是控制循環的條件。ticketj:代表具體的某個對象。A: bool型,判斷使用者身份。B: bool型,判斷是否退出程序。t: long型,獲得當前距1970年秒數。pt: tm 指向類的對象的指針,指向當前時間。Functionnumber:整型,選擇功能。詳細設計工程視圖說明有幾個源代碼文件,可以截取工程文件視圖表示類圖視圖主程序流程圖主要算法的流程圖測試5.1驗證身份后登陸5.2錄入信息并保存5.3驗證身份5.4查詢車次5.5查詢子菜單5.6退、訂票總結課程設計旨在鍛煉學生的實際動手能力和解決真實問題的能力。并在其中掌握和熟練所學的知識,并能夠運用所學知識解決
11、比較簡單的現實模擬問題。在為期兩周的C+課程設計中,我體會頗多,學到了很多東西。我加強了對C+程序設計這門課程的認識,并且復習了以前學到的知識。這些都使得我對計算機語言的學習有了更深入的認識!總之,通過這次課程設計,我收獲頗豐,相信會為自己以后的學習和工作帶來很大的好處。課程設計,有些問題并不是只靠課本的哪些知識就可以輕易解決的。所以,它不僅鍛煉了我們挑戰自己的決心,學會用已掌握的知識去解決我們看似不能解決的問題,同時進一步培養了我們獨立思考問題和解決問題的能力。特別是在C+中如何調試程序的方法。當然,老師的指導以與同學的幫助是不可忽視的,他們給了我提示和幫助,教會了我編譯復雜程序的方法。雖然
12、這次課程設計是在參考程序的基礎之上進行的,但是我覺得不管咋樣來說,對我們學生都是一個挑戰和鍛煉。我很欣賞自己能在程序中加入自己的想法和有關程序的容,將它進行一番改進,感覺收獲很大。總之,這次的C+課程設計讓我有了一些新的收獲,讓我對計算機語言有了更深體會,祝自己在以后的學習中更上一層樓。附錄:程序代碼#include #include #include #include#include #include using namespace std;const int N=10;bool A=false,B=true;long t = time(0);tm * pt = localtime(&t);
13、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_station20;int ticket_price;int
14、remaind_seats;public:void display()couttraint setfill(0)setw(2)time.hour:setw(2)time.minutett start_stationt end_stationt ticket_pricet remaind_seatst;t = :time(NULL); tm * pt = localtime(&t);if(time.hourtm_hour)couttm_hour&time.minutetm_min)cout 此班列車已發出;else coutt正常;coutendl;void order()if(time.hou
15、rtm_hour)couttm_hour&time.minutetm_min)cout 此班列車已發出,不能訂票,退出!;else if ( remaind_seats = 0 )cout 此班列車已沒票,不能訂票,退出! endl;elseremaind_seats = remaind_seats - 1;cout train次列車 售票一次,現存票量為: remaind_seats endl;void Delete()if(time.hourtm_hour)couttm_hour&time.minutetm_min)cout 此班列車已發出,不能退票,退出!;else remaind_se
16、ats = remaind_seats + 1;cout train次列車 退票一次,現存票量為: 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
17、_seats=s;service ticketN;static int g_num=-1;void save ()ofstream file(數據.txt,ios:out);for(int j=0;j=g_num;j+)fileticketj.train ;fileticketj.time.hour ;fileticketj.time.minute ;fileticketj.start_station ;fileticketj.end_station ;fileticketj.ticket_price ;fileticketj.remaind_seats endl;file.close();c
18、out信息已存入文件endl;void input()g_num+;char c10;int h;int m;char q20;char z20;int p;int s;coutc;couth;coutm;coutq;coutz;coutp;couts;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)tm_hour:;coutsetw(2)tm_min:;coutsetw(2
19、)tm_secendlendl;cout現存車次信息如下:endlendl;cout車次t開車時間t起始t終點t票價t剩余座位t狀態tendl;for( j=0;j=g_num;j+)ticketj.display();void search_train()char train10;couttrain;coutendlendl;for(int j=0;j=g_num;j+)if(strcmp(train,ticketj.train)=0)cout查詢結果:endl;cout車次t開車時間t起始t終點t票價t剩余座位t狀態tg_num)cout對不起,沒有這趟車次信息!;void search_
20、station()char station20;coutstation;coutendlendl;for(int j=0;j=g_num;j+)if(strcmp(station,ticketj.start_station)=0)|(strcmp(station,ticketj.end_station)=0)cout查詢結果:endl;cout車次t開車時間t起始t終點t票價t剩余座位t狀態tg_num)cout對不起,沒有有關此站點的車次信息!;void ticketmenu()long t = time(0);tm * pt = localtime(&t);int functionNumb
21、er;int j;cout 票務菜單 n;char train10;char station20;cout可按站點或車次查詢訂票(1.按站點,2.按車次)endl;coutfunctionNumber;getchar();for(;functionNumber!=1&functionNumber!=2;)cout指令錯誤!請重新輸入!functionNumber;coutendlendl;if (functionNumber=1)coutstation;coutendlendl;for( j=0;j=g_num;j+)if(strcmp(station,ticketj.start_statio
22、n)=0)|(strcmp(station,ticketj.end_station)=0)cout本車次現存信息:endl;cout車次t開車時間t起始t終點t票價t剩余座位t狀態tg_num)cout對不起,沒有這趟車次信息!,無法訂退票!;if (functionNumber=2)couttrain;coutendlendl;for( j=0;j=g_num;j+)if(strcmp(train,ticketj.train)=0)cout本車次現存信息:endl;cout車次t開車時間t起始t終點t票價t剩余座位t狀態tg_num)cout對不起,沒有有關此站點的車次信息!無法訂退票!;i
23、f(ticketj.time.hourtm_hour)couttm_hour&ticketj.time.minutetm_min)cout此班列車已發出,不能訂退票!;elsecoutn;cout 1.訂票 n;cout 2.退票 n;cout 3.返回主菜單 n;coutn;coutfunctionNumber;for(;functionNumber!=1&functionNumber!=2&functionNumber!=3;)cout指令錯誤!請重新輸入!functionNumber;coutendlendl;switch(functionNumber)case 1:ticketj.or
24、der();save ();break;case 2:ticketj.Delete();save ();break;case 3:mainmenu();break;/switch endsvoid search_menu()int functionNumber;cout 查詢子菜單 n;coutendl;cout 1.按班次查詢 n;cout 2.按站點查詢 n;cout 3.返回主菜單 n;coutendl;coutfunctionNumber;coutendlendl;for(;functionNumber!=1&functionNumber!=2&functionNumber!=3;)c
25、out指令錯誤!請重新輸入!functionNumber;coutendlendl;switch(functionNumber)case 1:search_train();break;case 2:search_station();break;case 3:system(cls);mainmenu();void mainmenu()int functionNumber;cout 歡迎使用車票管理系統 n;coutendl;cout 1.錄入班次信息 n;cout 2.瀏覽班次信息 n;cout 3.查詢行車路線 n;cout 4.售票與退票系統 n;cout 5.退出系統 n;coutendl
26、;coutfunctionNumber;coutendlendl;switch(functionNumber)case 1: char c;if (A)doinput();cout已錄入g_num+1條航班信息(包括已從文件中讀取的),想繼續錄入嗎(y/n)c;for(;c!=y&c!=n;)cout指令錯誤!請重新輸入!c; while (c=y);else cout對不起,您不是管理員不能進行這項操作!;coutendl按任意鍵回主菜單.endl;getchar();getchar();system(cls);break;case 2:browse();coutendlendlendl按任意鍵回主菜單.endl;getchar();getchar();system(cls);break;case 3:search_menu();coutendl按任意鍵回主菜單.endl;getchar();getchar();system(cls);break;case 4:ticketmenu();coutendl按任意鍵回主菜單.endl;getchar();getchar();system(cls);break;case 5:t = time(NULL);tm* pt = localtime(&t);system(cls);c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 清潔公司培訓課件
- 2025春晚觀后感心得體會怎么寫(17篇)
- 新學期開學典禮演講稿集錦(16篇)
- 弘揚民族精神演講稿(15篇)
- 大學生勵志英語演講稿(9篇)
- 員工自我鑒定1000字(20篇)
- 浙教版九年級數學下冊《第二章直線與圓的位置關系》單元測試卷(附答案)
- 班級寒假生活總結范文(7篇)
- 與感恩演講的演講稿錦集(6篇)
- 教師考核自我鑒定(7篇)
- 【MOOC】量子信息原理與應用-南京大學 中國大學慕課MOOC答案
- 壓接端子檢驗標準
- 一年級語文下冊in-ing拼音練習2018(部編版)
- 幼兒園 家具玩具類 設備采購相關參數(僅供參考)
- 新質生產力賦能銀發經濟高質量發展的內在邏輯與實踐路徑
- 風機混塔產業基地項目可行性研究報告寫作模板-拿地申報
- 2022年江蘇省普通高中學業水平選擇性考試地理試題(解析卷)
- 《心理健康教育主題班會》主題
- DB13(J) 148-2012 建筑地基基礎檢測技術規程
- 《義務教育語文課程標準》2022年修訂版原版
- 廣播劇編劇合同范本
評論
0/150
提交評論