課程設計報告車票管理系統(tǒng)_第1頁
課程設計報告車票管理系統(tǒng)_第2頁
課程設計報告車票管理系統(tǒng)_第3頁
課程設計報告車票管理系統(tǒng)_第4頁
課程設計報告車票管理系統(tǒng)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設計報告(C語言程序設計)題目車票信息管理系統(tǒng)的設計與實現(xiàn)二級學院數(shù)學與統(tǒng)計專業(yè)信息與計算科學班級112010102學生姓名郭雙紅學號11201010209指導教師陳媛時間201306191 需求分析1.1 課程設計題目要求設計并實現(xiàn)一個車票銷售管理系統(tǒng),系統(tǒng)實現(xiàn)以下功能。( 1 ) 系統(tǒng)以菜單方式工作:要求界面清晰,友好,美觀,易用。( 2) 車次信息導入功能:要求可從磁盤文件導入車次信息。( 3) 查詢功能:可按班車號、起點站或終點站查找班車信息,并將查詢結(jié)果輸出。( 4) 售票功能:只有當某班車已定票人數(shù)小于額定載量,且當前系統(tǒng)時間小于發(fā)車時間才能售票。售票顯示收費信息;售票后更新已

2、定票人數(shù),并實現(xiàn)信息存盤。( 5) 退票功能:輸入退票的班次,當本班車未發(fā)出時才能退票。退票后自動更新已定票人數(shù),并實現(xiàn)信息存盤。( 6) 信息瀏覽功能:能輸出所有班車的信息;要求輸出格式清晰、美觀。( 7) 信息修改:要求能修改某一指定班次的信息,并在修改后將信息存盤。1.2 系統(tǒng)功能需求( 1 ) 系統(tǒng)以菜單方式工作:要求界面清晰,友好,美觀,易用。( 2) 車次信息導入功能:要求可從磁盤文件導入車次信息。( 3) 查詢功能:可按班車號、起點站或終點站查找班車信息,并將查詢結(jié)果輸出。( 4) 售票功能:只有當某班車已定票人數(shù)小于額定載量,且當前系統(tǒng)時間小于發(fā)車時間才能售票。售票顯示收費信息

3、;售票后更新已定票人數(shù),并實現(xiàn)信息存盤。( 5) 退票功能:輸入退票的班次,當本班車未發(fā)出時才能退票。退票后自動更新已定票人數(shù),并實現(xiàn)信息存盤。( 6) 信息瀏覽功能:能輸出所有班車的信息;要求輸出格式清晰、美觀。( 7) 信息修改:要求能修改某一指定班次的信息,并在修改后將信息存盤。2 系統(tǒng)設計2.1 功能模塊圖本系統(tǒng)的功能模塊圖如圖2-1 所示。車票管理系統(tǒng)修 改 版 此 信 息查詢菜單進 入 班 次 查 詢進 入 起 點 站 查 詢進入終點站查詢圖2-1系統(tǒng)功能模塊圖2.2 數(shù)據(jù)定義本系統(tǒng)的數(shù)據(jù)可采用結(jié)構(gòu)數(shù)組來處理??杀匾脑O置全局變量。因此本系統(tǒng)的主要數(shù)據(jù)定義如下:struct Tra

4、in_Ticketchar cn15; 車量班次char lp15;/left place 起點char ap15; /arrive place 終點char lt15;/left time 發(fā)車時間char rt15;/running time 行車時間float price; / 票價int rl;/Rated load 額定載量int bn;/booking number 已定票人數(shù)TN;int n=0,i=0;/ 全局變量2.3 關(guān)鍵技術(shù)分析 在程序開始運行時,應調(diào)用自定義的INPUT() 函數(shù),將所有需要的數(shù)據(jù)導入到結(jié)構(gòu)數(shù)組中,然后保存。調(diào)用load()函數(shù),從磁盤導入車票信息。由于

5、第一次應用INPUT()函數(shù)磁盤中已有數(shù)據(jù),因此不必要再進行重新導入,所以在INPUT() 函數(shù)中先詢問是否重新導入,然后再進入主菜單,或者在調(diào)用一次后,以后運行時不再調(diào)用。. 買票和退票都涉及到時間的問題,這源于要比較發(fā)車時間與當前的時間,判斷這班車到底有沒有發(fā)車,和能不能訂票與退票,這時用了一個時間函數(shù),輸出了當前的時間,但那邊有年月日,不好進行提取和比較,于是采用輸出了時間,然后看著那個時間手動的提取。(4)系統(tǒng)中應編寫存盤函數(shù)save(),在進行買票或者退票功能后都需要調(diào)用save()函數(shù)進行數(shù)據(jù)的更新。 采用循環(huán)結(jié)構(gòu)生成主菜單,在數(shù)據(jù)輸入時應該有清晰的提示信息,以方便用戶的操 作,對

6、輸出數(shù)據(jù)進行格式控制,以使界面更加美觀,清晰。3 系統(tǒng)實現(xiàn)3.1 功能模塊設計根據(jù)系統(tǒng)分析的結(jié)論,將本系統(tǒng)需完成的功能模塊劃分如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<time.h>#define N 4void main_menu();/主菜單模塊void load();/導入信息void INPUT();/輸入模塊void scan();/瀏覽模塊void tuipiao();/退票void buy();/買票

7、void change();/修改函數(shù)void save();void prna(int pos);void searchmenu();int s_cn();int s_lp();int s_ap();struct Train_Ticketchar cn15;char lp15;char ap15;char lt15;char rt15;/保存函數(shù)/打印記錄/查詢菜單函數(shù)/按班次查詢/按起點站查詢/按終點站查詢/車量班次/left place 起點/arrive place 終點/left time 發(fā)車時間/running time 行車時間int price; / 票價int rl;/Ra

8、ted load 額定載量int bn;/booking number 已定票人數(shù)TN;int n=0,i=0;/ 全局變量3.2 源代碼/*/ 主菜單/* void main_menu()system("cls");system("color E");printf("*n");I*歡迎來到車票查詢系統(tǒng)printf("* *");printf("n");printf("|1:進入班次瀏覽|n");printf("|2:進入查詢班次|n");printf(&

9、quot;|3:售票|n");printf("|4:退票|n");printf("|5:班次信息修改|n");printf("|0:退出|n");printf("*n");printf("n 請選擇 (0-5): ");void load() / 從磁盤文件導入班次信息int i;FILE *fp;if(fp=fopen("c:車票管理系統(tǒng).dat","rb")=NULL)printf(" 文件打開錯誤n");exit(0);

10、for(i=0;i<N;i+)fread(&Ti,sizeof(struct Train_Ticket),1,fp);fclose(fp);system("cls");void save() / 將班次信息保存到磁盤文件FILE *fp;車票管理系統(tǒng).dat","wb")=NULL)if(fp=fopen("c: (printf(" 無法創(chuàng)建文件!nn");exit(0);for(i=0;i<N;i+)fwrite(&Ti,sizeof(struct Train_Ticket),1,fp

11、); fclose(fp);int time() /當前系統(tǒng)時間(struct tm *f;time_t now;now=time(NULL);time(&now);f=gmtime(&now);printf(ctime(&now);return 0;void scan()(system("cls"); /*清屏*/printf("n=n");printf(" 車次 額定載量 起點 終點 開車時間行 車時間 票價已定票人數(shù)n");for(i=0;i<N;i+)printf( " %s%13d%1

12、0s%10s%12s%8s%f%6dn",T,Ti.rl,Ti.lp ,Ti.ap,Ti.lt,Ti.rt,Ti.price,Ti.bn);printf("=n");printf("請按任意鍵返回主菜單n");getch();)void INPUT() /鍵入所有信息(char ch;do(system("cls");錄入汽車時刻信息printf("nn =歡迎進入界面=n");do(printf("n新建汽車信息?(y/n)");scanf("%c",&a

13、mp;ch);if(ch!='y'&&ch!='n')printf("輸入錯誤,請重新輸入!");while(ch!='y'&&ch!='n');if(ch='n')break;printf("");printf("n 錄入第d趟列車信息n",n+1);printf(" 車次 ");fflush(stdin);gets(T);printf("額定載量");fflush(stdi

14、n);scanf("%d",&Ti.rl);printf(" 起點 ");fflush(stdin);gets(Ti.lp);printf("終點 ");fflush(stdin);gets(Ti.ap);printf("開車時間 ");fflush(stdin);gets(Ti.lt);printf("行車時間 ");fflush(stdin);gets(Ti.rt);printf("票價 ");fflush(stdin);scanf("%f",

15、&Ti.price);printf("已定票人數(shù) ");fflush(stdin);scanf("%d",&Ti.bn);n+;i+;while(i<N);save();system("cls");void prna(int pos)/打印條記錄printf("n=n");起點printf("車次額定載量開車時間 行車時間 票價 已定票人數(shù)n");printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,Tpos.rl

16、,Tpos.lp,Tpos.ap,Tpos.lt,Tpos.rt,Tpos.price,Tpos.bn);printf("=n");)void searchmenu()/system("cls");printf("nn = 界面=n");printf("n+nn");printf("|n");printf("|n");printf("|n");printf("|n");查詢主菜單=歡迎進入查詢汽車時刻信息+請選擇查 找方式1:接班次查詢

17、2:按起點站查詢3:進終點站查詢4:返回主菜單printf("* *n");printf("n 請選擇(1-4): ");)int s_cn()/按班次查詢char name115;int j;system("cls");printf("請輸入要查詢的班次號:n ");fflush(stdin);gets(name1);for(j=0;j<N;j+)if(strcmp(T,name1)=0)printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,T

18、j.rl,Tj.lp ,Tj.ap,Tj.lt,Tj.rt,Tj.price,Tj.bn);continue;return 0;return 1;int s_lp()/按起點站查詢char name215;int j;system("cls");printf(" 請輸入要查詢的起點站名: n");fflush(stdin);gets(name2);for(j=0;j<N;j+)if(strcmp(Tj.lp,name2)=0)printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,Tj.rl,T

19、j.lp ,Tj.ap,Tj.lt,Tj.rt,Tj.price,Tj.bn);continue;return 0;return 1;int s_ap()/按終點站查詢char name315;int j;system("cls");printf(" 請輸入要查詢的終點站名: n");fflush(stdin);gets(name3);for(j=0;j<N;j+)if(strcmp(Tj.ap,name3)=0)printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,Tj.rl,Tj.lp,T

20、j .ap,Tj.lt,Tj.rt,Tj.price,Tj.bn);continue;return 0;return 1;void search()/查詢函數(shù)int select;int n;while(1)searchmenu();scanf("%d",&select);switch(select)case 1: n=s_cn();if(n)printf(" 沒 找 到 相 關(guān) 記 錄 n");printf(" 按 任 意 鍵 返 回 n");getch();break;case 2: n=s_lp();if(n)print

21、f(" 沒有找到相關(guān)記錄n");printf(" 按任意鍵返回n");getch();break;case 3: n=s_ap();if(n)printf(" 沒有找到相關(guān)記錄n");printf(" 按任意鍵返回 n");getch();break;if(select=4) break;main_menu();void buy()/買票system("cls");int m,log;char t10;printf("請輸入您需要購買票的班次(1-4):n");scanf(&

22、quot;%d",&m);load();printf("n=n");printf(" 車次額定載量起點 終點開車時間行車時間 票價 已定票人數(shù)n");printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,Tm-1.rl,Tm-1.lp,Tm-1.ap,Tm-1.lt,Tm-1.rt,Tm-1.price,Tm-1.bn);printf("=n");if(Tm-1.bn>=Tm-1.rl) (printf("該班次票已滿!請選擇其他班次n&qu

23、ot;);printf("按任意鍵返回n");if(Tm-1.bn<Tm-1.rl) (printf(" 當前時間為:n");time();printf("n");printf(" 請再手動輸入上述時間,只需要輸入時辰與分鐘(例如 08:00):n");scanf("%s",t);printf("n");if(strcmp(t,Tm-1.lt)>0)printf("該班次已發(fā)車,請選擇其他班次n");else if(Tm-1.bn=Tm-1.r

24、l)printf("該班次未發(fā)車但是該班次票已售完n");if(Tm-1.bn!=Tm-1.rl&&strcmp(t,Tm-1.lt)<0&&Tm-1.bn<Tm-1.rl) (printf("該班次還可訂 d 票n",(Tm-1.rl-Tm-1.bn); printf("請輸入您要訂票數(shù)量");scanf("%d”,&log); printf("n");while(log>(Tm-1.rl-Tm-1.bn)printf("訂票錯誤,數(shù)量

25、不能超過余票數(shù)!n"); printf("請重新輸入:");scanf("%d",&log); ) if(log<=(Tm-1.rl-Tm-1.bn)printf(" 一共需要機n",log*Tm-1.price);printf("訂票成功,祝您旅途愉快!n");) Tm-1.bn+=log; printf("按任意鍵返回主菜單n");getchar(); save(); void tuipiao()/ 退票 system("cls"); int x,

26、log; char t10; printf("請輸入您要退票的班次:n");scanf("%d",&x); i=x;int m=i; load(); printf("n=n");printf(" 車次 額定載量 起點 終點開車時間行車時間 票價 已定票人數(shù)n");printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,Tm-1.rl,Tm-1.lp,Tm-1.ap,Tm-1.lt,Tm-1.rt,Tm-1.price,Tm-1.bn);printf(

27、"=n");printf("當前時間為:n");time();printf("n");printf(" 請再手動輸入上述時間,只需要輸入時辰與分鐘( 例如 08:00):n");scanf("%s",t);if(strcmp(Ti-1.lt,t)>0)printf(" 可以退票n");printf(" 請問你真的要退票嗎?n");printf(" 確認退票請按1, 否則返回主菜單n");scanf("%d",&

28、amp;log);if(log=1)printf(" 退票成功!n");Ti-1.bn-;save();printf(" 按任意鍵返回主菜單n");getch();elseprintf(" 您 選 擇 不 退 票 n");printf(" 按 任 意 鍵 返 回 主 菜 單 n");getch();if(strcmp(Ti-1.lt,t)<0)printf(" 此班次已發(fā)車不能退票!n");printf(" 按任意鍵返回主菜單n");getch();void chang

29、e()system("cls");int k,select;char banci100;char mima10;/假設密碼為 aaaprintf("這個是工作人員所進,請輸入密碼:n");scanf("%s”,mima);while(strcmp(mima,"aaa")!=0)printf("密碼錯誤!n");printf("請重新輸入:n");scanf("%s",mima);printf("進入成功!n");printf("輸入所要

30、修改班次號:n");scanf("%s",banci);for(k=0;k<N;k+)if(strcmp(T,banci)=0) break;printf("n=n");printf(" 車次額定載量起點 終點開車時間行車時間票價已定票人數(shù)n");printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,Tk.rl,Tk.lp,Tk.ap,Tk.lt,Tk.rt,Tk.price,Tk.bn);printf(":=n");printf(&q

31、uot;修改時間請按1n");printf("修改終點站請按2n");printf("修改票價請按3n");scanf("%d",&select);switch(select)(case 1:for(k=0;k<N;k+)if(strcmp(T,banci)=0)break;printf(" 請輸入修改后的時間(例如08:00)n");scanf("%s",Tk.lt);printf("修改成功!n");printf("n=n&quo

32、t;);printf(" 車次額定載量起點 終點開車時間行車時間票價已定票人數(shù)n");printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,Tk.rl,Tk.lp,Tk.ap,Tk.lt,Tk.rt,Tk.price,Tk.bn);printf("=n");printf("按任意鍵返回n");save();getch();break;case 2:for(k=0;k<N;k+)if(strcmp(T,banci)=0)break;printf("請輸入修改

33、后的終點站n");scanf("%s",Tk.ap);printf("修改成功!n");printf("n=n");printf(" 車次額定載量起點 終點開車時間行車時間票價已定票人數(shù)n");printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,Tk.rl,Tk.lp ,Tk.ap,Tk.lt,Tk.rt,Tk.price,Tk.bn);printf("=n");printf("按任意鍵返回n");save(

34、);getch();break;case 3:for(k=0;k<N;k+)if(strcmp(T,banci)=0)break;printf(" 請輸入修改后的票價n");scanf("%d",&Tk.price);printf("修改成功!n");printf("n=n");printf(" 車次額定載量起點 終點開車時間行車時間票價 已定票人數(shù)n");printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,Tk.r

35、l,Tk.lp ,Tk.ap,Tk.lt,Tk.rt,Tk.price,Tk.bn);printf("=n");printf("按任意鍵返回n");save();getch();default:printf("選擇錯誤!");printf("按任意鍵返回主菜單n");getch();break;void main()int select;load();while(1)main_menu();scanf("%d”,&select);switch(select)case 1:scan();getcha

36、r();break;case 2:search();getchar();break;case 3:buy();getch();break;case 4:tuipiao();getchar();break;case 5:change();getchar();break;if(select=0) printf("按任意鍵退出 n");printf("n");break;4系統(tǒng)測試4.1主界面系統(tǒng)主界面如圖4-1所示:"GU5er5guoDe5ktopda5Debugd,exe"卅相田曰坤相問*料歸目羽球相日e|*n忙料*|*|e(*|a|

37、*|*|n*f*|*|e|o|e|D|e|a|e+3|E杷t*忖*白小曰*曰*t*t*f*t*|0c歡j卬來至11車覃杳詢 系交齊*sf*f*!*料*=|*!*f*|用*|e1:進入新瀏覽2:進入查理E欠 3: 售票 m4:退票m5:班次信息修改M=+=1=+=+o|=+o+=lcM=M=+=t=+=<=+=<=+=M=+ol=+eM=lcM=M=+=<=+=t=N=+=1ol=+ol=WcM=+=<=t=<=+=4=+=4ol=lol=+ol=1cM=M=+=<=+=4=t=<=+=We系統(tǒng)運行主窗口4.2 車次信息瀏覽模塊在主菜單的提示下選擇1,可

38、顯示所有車次信息。f1 'C:U se rsg uoDes ktopda sDebugd ,exe"車次0001000200030004額定載量45404040縣縣縣縣K,.J Tj卑卑卑卑點東都慶慶終廣成重重開車時間行車時間票價已定票人額s:oo2.040.0450:300. 525.0327:000.525.02010:002.540.025清按任意鍵返回主菜單4.3 查詢車次信息在主菜單的提示下選擇 2, 接著按提示進行各項查 C:UsersguoDRsktopdasDubugd.exe'1 C:UsersguoDesktopdasDebugd.exe11=歡迎

39、進入查詢汽車時刻信息界面=二=選擇查找方式Hi1:按班次查詢2:按起點站查詢3:進終點站查詢4:返回主菜單請輸入要查詢的班次號:0001000145 郵縣 廣東 8:002.040.045*C:UsersguoDesktopdasDebugd.exe*請誦/要查詞的起點站名:鄲縣000145000240000340000440東都慶慶縣縣縣縣8:0C2.040.0456:3C0.525.0327:0C0.525.02010:0C2.540.025按任意鍵返回1 C:UsersguoDesktopdasDebugd.exe*情溢人要查詢的終點站名:重慶0003如郵縣重慶 7:000.525.020000440麻縣重慶10:002.540.025按任意鍵返回C:UsersguoDesktopdasDebugd.exe*請愉入要查詢的班次號:6沒找到相關(guān)記錄按任意鍵返回

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論