2836.車票管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁(yè)
2836.車票管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁(yè)
2836.車票管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁(yè)
2836.車票管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁(yè)
2836.車票管理系統(tǒng)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、車票管理系統(tǒng) 09.11車票管理系統(tǒng)本文源碼索取,請(qǐng)聯(lián)系qq:68661508一 車票管理系統(tǒng)功能描述(1)錄入班次信息(信息用文件保存),可不定時(shí)地增加班次數(shù)據(jù)(2)瀏覽班次信息,可顯示出所有班次當(dāng)前狀總(如果當(dāng)前系統(tǒng)時(shí)間超過了某班次的發(fā)車時(shí)間,則顯示“此班已發(fā)出”的提示信息)。(3)查詢路線(起點(diǎn)、終點(diǎn)):可按班次號(hào)查詢 ,可按終點(diǎn)站查詢(4)售票和退票功能 當(dāng)查詢出已定票人數(shù)小于額定載量且當(dāng)前系統(tǒng)時(shí)間小于發(fā)車時(shí)間時(shí)才能售票,自動(dòng)更新已售票人數(shù)退票時(shí),輸入退票的班次,當(dāng)本班車未發(fā)出時(shí)才能退票,自動(dòng)更新已售票人數(shù)二 結(jié)構(gòu)圖開始車票管理系統(tǒng)按任意鍵從文本錄入班次信息輸入選擇買賣票系統(tǒng)查詢班次信

2、息瀏覽班次信息查詢方法選擇買賣票選擇買 賣 票查詢主菜單結(jié) 束三模塊設(shè)計(jì): 1.頭文件,定義所需結(jié)構(gòu)體,全局變量 #includestdio.h#includestring.h#includemalloc.h#includewindows.hstruct time /定義記錄時(shí)間的結(jié)構(gòu)體 int hour; /包含小時(shí) int minute; /分鐘 ;struct ticket /定義記錄車票信息的結(jié)構(gòu)體 int number; /定義車次struct time ft ; /記錄發(fā)車時(shí)間char origin_station20; /起始站名稱數(shù)組char last_station20; /

3、終點(diǎn)站名稱數(shù)組float last_time; /持續(xù)時(shí)間int max_number; /車次最大運(yùn)載量int sold_ticket; /已售車票train100; int i; int syshour; /記錄系統(tǒng)時(shí)間小時(shí) int sysminute; /記錄系統(tǒng)時(shí)間分鐘 char filename50; /文件名數(shù)組 int record; /記錄條數(shù)記錄 2.開始菜單printf(*歡迎使用車票管理系統(tǒng)*n);顯示開始菜單,歡迎使用系統(tǒng);3.主菜單顯示(mainmenu): void mainmenu() system(cls); printf(當(dāng)前時(shí)間:); system_time

4、(); printf(*主菜單*n); printf(* 1.錄入班次信息 *n); printf(* 2.瀏覽班次信息 *n); printf(* 3.查詢班次信息 *n); printf(* 4.售票 *n); printf(* 5.退票 *n); printf(* 0.退出系統(tǒng) *n); printf(*n);其中加入顯示系統(tǒng)時(shí)間函數(shù)(system_time())int system_time() systemtime sys; getlocaltime( &sys ); /調(diào)用系統(tǒng)時(shí)間 printf( %4d /%02d/%02d %02d:%02d:%02d 星期%1dn, sys.

5、wyear, sys.wmonth, sys.wday, sys.whour, sys.wminute, sys.wsecond, sys.wdayofweek); syshour=sys.whour; sysminute=sys.wminute; return 0;主菜單運(yùn)行結(jié)果: 其中第一行調(diào)用時(shí)間函數(shù)顯示當(dāng)前時(shí)間4主菜單選擇函數(shù)(chose()) void chose() int n; printf( 請(qǐng)輸入您想做的操作: );scanf(%d,&n);switch(n)case 1:load(); system(cls); /每次進(jìn)入主菜單清空 mainmenu(); break; c

6、ase 2:show();break; case 3:searsh();break; case 4:buy_system();break; case 5:back_ticket();break; case 0:exit(0); /調(diào)用系統(tǒng)函數(shù)退出程序主菜單選擇模塊要求輸入0-5選擇用戶想做操作。5輸入數(shù)據(jù)模塊(load())void load(void) /載入文件 char n; /定義變量記錄輸入字符 file *fp; int i; sin : printf(請(qǐng)輸入文件名或者文件路徑名:); /標(biāo)記當(dāng)前位置 scanf(%s,filename); getchar(); printf(您確

7、定您輸入的文件路徑(y/n):); /確定文件輸入正確 scanf(%c,&n); if(n=y) if(fp=fopen(filename,r)=null) /判斷文件的存在,是否可讀 printf(文件%s不可讀,請(qǐng)確認(rèn)文件%s存在或者文件路徑正確.nn,filename,filename); system(pause); /暫停顯示文件狀態(tài) else /文件載入成功 printf(!錄入成功!n); system(pause); for(i=0; !feof(fp)&!ferror(fp);i+) /*將文件數(shù)據(jù)讀出,數(shù)據(jù)給數(shù)組,一直到文件中數(shù)據(jù)結(jié)尾*/ fscanf(fp,%03d,&

8、traini.number); if(traini.number=0)i-;continue; fscanf(fp,%d%02d,&traini.ft.hour,&traini.ft.minute); fscanf(fp,%s%s%f,&traini.origin_station,&traini.last_station,&traini .last_time); fscanf(fp,%d%d,&traini.max_number,&traini.sold_ticket); /*數(shù)據(jù)按格式化到數(shù)組*/ record=i; /將數(shù)據(jù)條數(shù)給record 記錄 fclose(fp); /關(guān)閉文件 el

9、se goto sin; /當(dāng)文件名輸入錯(cuò)誤時(shí),選擇n可返回標(biāo)記處6瀏覽數(shù)據(jù)模塊(show()) void show() int i; printf(班次t發(fā)車時(shí)間t起點(diǎn)t終點(diǎn)t行車時(shí)間(小時(shí))t額定載量t已定票人數(shù)t狀態(tài)n); for(i=0;itraini.ft.hour)|(syshour=traini.ft.hour) &(sysminutetraini.ft.minute) /判斷發(fā)車時(shí)間與當(dāng)前時(shí)間前后關(guān)系 printf( 車已開出); else printf( );/*當(dāng)發(fā)車時(shí)間沒有超過當(dāng)前時(shí)間,打印空格,當(dāng)發(fā)車時(shí)間超過當(dāng)前時(shí)間時(shí),打印車已開出*/ printf(n); syste

10、m(pause);7.查詢模塊 a顯示查詢菜單(searsh()) void searsh() system(cls); /顯示菜單時(shí)清空 int s; printf(*查詢菜單*n); printf(* 1.按車次查詢 *n); printf(* 2.精確查詢 *n); printf(* 3.粗略查詢 *n); printf(* 0.返回主菜單 *n); printf(*n); /打印查詢菜單 printf(請(qǐng)選擇: n); scanf(%d,&s); /選擇數(shù)字輸入 if(s=1)searsh1(); else if(s=2) searsh2(); else if(s=3)searsh3(

11、); else mainmenu() ;查詢菜單包括4個(gè)選項(xiàng),0-3,用戶按需要輸入數(shù)字b(按車次查詢)模塊(searsh1()) void searsh1() int m; /定義變量記錄輸入班次bool f=false; printf(請(qǐng)您輸入你的班次: n);scanf(%d,&m);int flag = 1;for(int i=0;itraini.ft.hour)|(syshour=traini.ft.hour)&(sysminutetraini.ft.minute) printf( 車已開出); else printf( ); printf(n); system(pause); f=

12、true; else continue; /*從數(shù)組起始處比較,找到與用戶輸入車次相同的打印出來*/ if(!f) printf( 沒有此條車次記錄!n); system(pause); searsh();/*輸入車次,打印 沒有此條車次記錄!n*按車次查詢要求用戶輸入要查詢車次,查詢成功打印車次的各種信息,同時(shí)可以打印車次是否出發(fā)。c(精確查詢)模塊(searsh2()) void searsh2() char b20; /定義輸入起始站名稱字符串?dāng)?shù)組char c20; /定義輸入起終點(diǎn)站名稱字符串?dāng)?shù)組bool f=false; printf(請(qǐng)您輸入你的起始站,終點(diǎn)站: n);scanf(

13、%s,&b);scanf(%s,&c);int flag = 1;for(int i=0;itraini.ft.hour)|(syshour=traini.ft.hour)&(sysminutetraini.ft.minute) printf( 車已開出); else printf( ); printf(n); f=true; else continue;/*找到條件符合的車次打印其信息*/system(pause); if(!f) printf( 沒有此條車次記錄!n); system(pause); searsh(); /*循環(huán)結(jié)束沒找到,打印 沒有此條車次記錄!n*/ 精確查詢要求用戶輸

14、入起始站,終點(diǎn)站,同樣打印符合條件車次的全部信息 d(粗略查詢)模塊(searsh3()) void searsh3() char b20; /定義字符串?dāng)?shù)組bool f=false; printf(請(qǐng)您輸入你的起始站或終點(diǎn)站: n);scanf(%s,&b); int flag = 1;for(int i=0;itraini.ft.hour)|(syshour=traini.ft.hour)&(sysminutetraini.ft.minute) printf( 車已開出); else printf( ); printf(n); f=true; else continue; /*打印滿足條件

15、車次信息*/system(pause); if(!f) printf( 沒有此條車次記錄!n); system(pause);searsh();/*找不到打印 沒有此條車次記錄!*/ 粗略查詢要求用戶輸入起始站或終點(diǎn)站,而查詢到的是起始站或終點(diǎn)站為所輸入相同的車次的全部信息。8售票系統(tǒng)模塊(buy_system())void buy_system() int a; /定義記錄輸入班次號(hào)碼 char n; printf(請(qǐng)輸入您想買車票的班次: ); scanf(%d,&a); getchar(); bool f=false; for(i=0;irecord;i+) /又?jǐn)?shù)組起始開始查找 if(

16、a=traini.number)&(traini.max_numbertraini.sold_ticket)&(canpan() printf( 此車已開 );f=true; break; /*輸入班次與數(shù)組中的班次相同,已買票小于最大人數(shù),但函數(shù)canpan()返回1,即發(fā)車時(shí)間大于當(dāng)前時(shí)間時(shí)打印此車已開*/ else if(a=traini.number)&(traini.max_numbertraini.sold_ticket)&(!canpan() printf(“您確定要買%d:%02d由%s到%s的車票(y/n):,traini.ft.hour,traini.ft.minute,

17、traini.origin_station,traini.last_station); /*給出確認(rèn)信息,包括發(fā)車時(shí)間,起始站終點(diǎn)站,讓用戶確認(rèn)*/ scanf(%c,&n); if(n=y) printf( 購(gòu)買成功,請(qǐng)按時(shí)乘車! ); system(pause); traini.sold_ticket=traini.sold_ticket+1; /購(gòu)買成功已買票加一f=true; else printf(售票失敗!n); system(pause); return ; break; if(!f)printf( 沒有此車次信息,請(qǐng)確認(rèn)! );/沒有輸入車次打印 save(); /將要修改的信

18、息保存到文件中 system(pause);當(dāng)滿足輸入車次與已有車次號(hào)碼相同,當(dāng)前時(shí)間大于發(fā)車時(shí)間,且已售車票小于最大人數(shù)時(shí),進(jìn)入確認(rèn)信息,當(dāng)用戶看完確認(rèn)信息同意后,購(gòu)買成功,購(gòu)買成功后,已售車票加一,并記錄到文件中,答應(yīng)購(gòu)買成功信息。不滿足時(shí)打印相應(yīng)提示信息。此模塊調(diào)用save(),canpan()兩個(gè)函數(shù),在退票模塊中同樣包含9.退票系統(tǒng)模塊(back_ticket())void back_ticket() int a; /記錄輸入數(shù)字 char n; /記錄輸入字符 bool f=false; printf(請(qǐng)輸入您要退的班次: ); scanf(%d,&a); getchar(); f

19、or(i=0;itraini.ft.hour)|(syshour=traini.ft.hour)&(sysminutetraini.ft.minute)/*分別比較小時(shí),分鐘*/ return 1; else return 0;當(dāng)系統(tǒng)時(shí)間小時(shí)大于發(fā)車時(shí)間小時(shí)返回1,既系統(tǒng)時(shí)間大于發(fā)車時(shí)間當(dāng)系統(tǒng)時(shí)間小時(shí)等于發(fā)車時(shí)間小時(shí),且系統(tǒng)時(shí)間分鐘大于發(fā)車時(shí)間分鐘返回1其他返回011.存儲(chǔ)模塊(save())void save() file *fp; if(fp=fopen(filename,w)=null) /判斷文件存在和是否可寫printf(%s 文件不可寫); for(i=0;irecord-1;i+

20、) fprintf(fp,%d %d %2d ,traini.number,traini.ft.hour,traini.ft.minute); fprintf(fp,%s %s %.1ft %d %dn,traini.origin_station,traini.last_station,traini.last_time, traini.max_number,traini.sold_ticket);fprintf(fp,%d %d %2d ,traini.number,traini.ft.hour,traini.ft.minute); fprintf(fp,%s %s %.1ft %d %d,t

21、raini.origin_station,traini.last_station,traini.last_time, traini.max_number,traini.sold_ticket);/*將數(shù)組中的數(shù)據(jù)按格式化寫入文件中*/fclose(fp); /關(guān)閉文件存儲(chǔ)模塊將已更改數(shù)據(jù),一般是買賣票信息存儲(chǔ)到文件中,這樣就使文件中的信息是最新的。12.主函數(shù)(main()void main() printf(*歡迎使用車票管理系統(tǒng)*n); system(pause); while(1) mainmenu(); chose(); 四.系統(tǒng)測(cè)試測(cè)試數(shù)據(jù)1 6 00 郫縣 廣漢 2 45 302 6 30 郫縣 成都 0.5 40 403 7 00 郫縣 成都 0.5 40 204 10 00 郫縣 成都 0.5 40 205 12 20 長(zhǎng)沙 北京 10 40 106 15 00 長(zhǎng)沙 南京 5 40 4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論