C語(yǔ)言程序設(shè)計(jì)綜合實(shí)習(xí)報(bào)告(車票管理系統(tǒng))_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)綜合實(shí)習(xí)報(bào)告(車票管理系統(tǒng))_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)綜合實(shí)習(xí)報(bào)告(車票管理系統(tǒng))_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)綜合實(shí)習(xí)報(bào)告(車票管理系統(tǒng))_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)綜合實(shí)習(xí)報(bào)告(車票管理系統(tǒng))_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 “程序設(shè)計(jì)綜合實(shí)習(xí)【軟】”報(bào)告題目:車票管理系統(tǒng) 姓 名:學(xué) 號(hào):學(xué) 院:專 業(yè):班 級(jí): 完成時(shí)間:課程設(shè)計(jì)任務(wù)書(shū)題目車票管理系統(tǒng)課程設(shè)計(jì)內(nèi)容簡(jiǎn)介:一個(gè)車票管理系統(tǒng),可以實(shí)現(xiàn):1. 錄入班次2. 顯示所有班次3. 查詢班次4. 增加班次 5. 售票6. 退票7. 修改班次8. 刪除班次9. 退出設(shè)計(jì)者姓名指導(dǎo)教師意見(jiàn): 指導(dǎo)教師簽名: 目錄一、可行性研究報(bào)告 1.項(xiàng)目由來(lái): 2.可行性:3.結(jié)論: 二、需求規(guī)格說(shuō)明1.功能需求(各功能點(diǎn)的文字描述+ipo圖)2數(shù)據(jù)需求(數(shù)據(jù)字典)三、總體設(shè)計(jì)軟件結(jié)構(gòu)(軟件結(jié)構(gòu)圖四、詳細(xì)社計(jì)個(gè)模塊算法五、程序源代碼六、程序測(cè)試1.測(cè)試內(nèi)容和結(jié)果表+運(yùn)行效果抓

2、圖2.測(cè)試分析七、總結(jié)1.項(xiàng)目評(píng)價(jià)2.不足之處3.心得體會(huì)一、可行性研究報(bào)告項(xiàng)目由來(lái):由于車票的管理比較麻煩又比較消耗人力,所以需要開(kāi)發(fā)一個(gè)軟件,能夠讓車票的管理變得有序,這樣既可以實(shí)現(xiàn)人力的節(jié)約,又能高效的管理車票售出和了解車票的使用情況??尚行裕很嚻钡氖燮鼻闆r以及車次的記錄情況在任何車站都是很有價(jià)值的東西,廣大的群眾可以根據(jù)車站的提示信息及時(shí)的了解自己的出行的時(shí)間,這樣可以避免不必要的麻煩,同時(shí),車站運(yùn)用這種軟件,可以很好的對(duì)車票進(jìn)行管理,還可以隨時(shí)更改車次的發(fā)車信息,這樣可以讓群眾第一時(shí)間了解車次的變化,及時(shí)對(duì)自己的計(jì)劃進(jìn)行更改,避免發(fā)生較大的損失。開(kāi)發(fā)一個(gè)車票管理系統(tǒng)很必要。二、需求規(guī)

3、格說(shuō)明1.功能需求(1)錄入班次信息(信息用文件保存),可不定時(shí)地增加班次數(shù)據(jù)(2)瀏覽班次信息,可顯示出所有班次當(dāng)前狀總(如果當(dāng)前系統(tǒng)時(shí)間超過(guò)了某班次的發(fā)車時(shí)間,則顯示“此班已發(fā)出”的提示信息)。(3)查詢路線(起點(diǎn)、終點(diǎn)):可按班次號(hào)查詢 ,可按終點(diǎn)站查詢(4)增加及修改班次和刪除班次信息(5)售票和退票功能 當(dāng)查詢出已定票人數(shù)小于額定載量且當(dāng)前系統(tǒng)時(shí)間小于發(fā)車時(shí)間時(shí)才能售票,自動(dòng)更新已售票人數(shù)退票時(shí),輸入退票的班次,當(dāng)本班車未發(fā)出時(shí)才能退票,自動(dòng)更新已售票人數(shù)2.數(shù)據(jù)需求(1)提供菜單界面,方便用戶對(duì)程序個(gè)功能進(jìn)行選擇,選擇要實(shí)現(xiàn)的功能按enter鍵進(jìn)入該功能。(2)接受用戶輸入的功能項(xiàng)

4、,按enter鍵結(jié)束輸入并將進(jìn)入該系統(tǒng),其需要的結(jié)果顯示出來(lái),方便用戶查看。(3)完成每次功能,可保存用戶的修改的信息,及時(shí)更新文件信息。下次查詢時(shí)內(nèi)容為最新信息。實(shí)時(shí)的信息更新對(duì)比等。三、總體設(shè)計(jì)車票管理系統(tǒng)車票處理退票菜單處理班次處理初始化顯示所有班次輸入班次查詢按班次按終點(diǎn)增加修改售票四、詳細(xì)設(shè)計(jì)車票管理系統(tǒng)軟件詳細(xì)設(shè)計(jì)一個(gè)名ticket的結(jié)構(gòu)體進(jìn)行定義,包括num10 hour3; min3 from10; to10; hours max; now;等結(jié)構(gòu)體成員。然后對(duì)調(diào)用函數(shù)進(jìn)行定義。int system_time() 系統(tǒng)時(shí)間,void newmessage() 新紀(jì)錄錄入函數(shù),v

5、oid showtable1() void showtable2(int i) 線框調(diào)用1和2不用沒(méi)次輸,void display() 顯示所有函數(shù),void add() 增加記錄,void save() 保存函數(shù),void save() 保存函數(shù),void load() 按班次查詢函數(shù),void search() 查詢函數(shù),void change() 修改函數(shù),void quit() 退出函數(shù),void ticketorder() 售票函數(shù),void ticketdelete() 刪除函數(shù),int menu_select() 菜單函數(shù), int whether(int) 判斷時(shí)間是否超出函數(shù)

6、,void find(char s1,char s2) 查詢函數(shù)/s1為班次/s2為終點(diǎn)站,void deletemessage() 刪除函數(shù),int findnum(char s1) 班次查詢函數(shù),void get(int,int) 修改及增加班次,char *menu 菜單函數(shù)。該系統(tǒng)將這些信息均放在文件d:車票管理系統(tǒng) 中。最后定義main()函數(shù),利用函數(shù)調(diào)用,實(shí)現(xiàn)程序的各種功能。將其放在系統(tǒng)文件d:車票管理系統(tǒng) 中。五、程序源代碼#include /宏定義函數(shù)#include /串操作及內(nèi)存操作函數(shù)#include /調(diào)用系統(tǒng)函數(shù)#include /時(shí)間庫(kù)函數(shù) #include /輸

7、入輸出函數(shù)#define n 1000 /宏定義多條記錄typedef struct ticket /定義新結(jié)構(gòu)體ticket char num10; /車次編號(hào) char hour3; /時(shí)間,小時(shí) char min3; /分鐘 char from10; /起始站 char to10; /終點(diǎn)站 float hours; /車程實(shí)際時(shí)間 int max; /最大車載容量 int now; /已售票數(shù)class;int class_num=0; /初始班次總數(shù)為0 class recordsn; / 多條記錄int system_time(); /系統(tǒng)時(shí)間void newmessage();

8、/新紀(jì)錄*錄入函數(shù)*void showtable1(); /線框調(diào)用1,不用次輸 void showtable2(int i); /線框調(diào)用2,不用沒(méi)次輸 void display(); /顯示所有函數(shù)void add(); /增加記錄void save(); / 保存函數(shù)void load(); / 按班次查詢函數(shù)void search(); /查詢函數(shù)void change(); /修改函數(shù)* void quit(); / /退出函數(shù)*void ticketorder(); / /*售票函數(shù)* void ticketdelete(); /刪除函數(shù)*int menu_select(); /菜

9、單函數(shù)*int whether(int); /判斷時(shí)間是否超出函數(shù)*void find(char s1,char s2); /查詢函數(shù)/s1為班次/s2為終點(diǎn)站void deletemessage(); /刪除函數(shù)int findnum(char s1); /班次查詢函數(shù)void get(int,int); /修改及增加班次*char *menu=*歡迎使用車票查詢系統(tǒng)*,n*menu功能菜單*,n 1. 錄入班次 ,n 2. 顯示所有班次 ,n 3. 查詢班次 ,n 4. 增加班次 ,n 5. 售票 ,n 6. 退票 ,n 7. 修改班次 ,n 8. 刪除班次 ,n 9. 退出 ; /*主函

10、數(shù)*/void main() system(cls); /刷屏 while(1) /菜單函數(shù)循環(huán) switch(menu_select() /菜單函數(shù)* case 1: newmessage();break; /新紀(jì)錄*錄入函數(shù)* case 2: display();break; / /顯示 case 3: search();break; /查找函數(shù)* case 4: add();break; / /增加記錄 case 5: ticketorder();break; /*售票函數(shù)* case 6: ticketdelete();break; /刪除函數(shù)* case 7: change();br

11、eak; /修改函數(shù)* case 8: deletemessage();break; /選擇調(diào)用刪除函數(shù) case 9: quit();break; /退出函數(shù)* /*菜單函數(shù)*/int menu_select() /菜單函數(shù)* char s5; /定義要輸入的數(shù)字功能 int c,i; system(cls); /刷屏 system(color 09);/改變顏色 for(i=0;i11;i+) printf(%s,menui); /輸出菜單各項(xiàng)) i=0; while(c9) /判斷是否是1到9的命令 printf(n); /輸出換行 printf(*); printf(n請(qǐng)選擇(1-9)

12、:); scanf(%s,s); c=atoi(s); /atoi將字符串轉(zhuǎn)換成一個(gè)整數(shù)值 /輸出菜單面 return c; /返回請(qǐng)求 /*錄入函數(shù)*/void newmessage() /*錄入函數(shù)* int i=0,j=5,h; / char s5; file *fp; /定義文件型指針變量 system(cls); /刷屏 if(fp=fopen(d:車票管理系統(tǒng)0.dat,rb)!=null) /fopen打開(kāi)文件 printf(車票信息已經(jīng)存在請(qǐng)選擇增加功能!n); printf(任意輸入則返回菜單n); scanf(%s,s); i=1; /通過(guò)是1 if(i=0) system

13、(cls); /刷屏 printf(請(qǐng)輸入要錄入班次總數(shù):n); scanf(%d,&class_num); /指向班次指針 system(cls); /刷屏 for(i=0;iclass_num;i+) system(cls); /刷屏 printf(請(qǐng)輸入第%d個(gè)班次信息:n,i+1); h=-1; for(;h!=i;) /循環(huán)輸出 printf(請(qǐng)輸入班次:n); scanf(%s,recordsi.num); for(h=0;hi;h+) if(strcmp(recordsh.num,recordsi.num)=0) /判斷字符串比較是否相等, 待比較的字符串 printf(輸入錯(cuò)誤

14、!該班次已存在!n); break; /返回 get(i,j); /修改及增加班次* j=5; save(); /調(diào)用保存函數(shù) /*顯示所有函數(shù)*/void display() /顯示所有函數(shù) int i,j; system(cls); /刷屏 load(); / 調(diào)用按班次查詢函數(shù) showtable1(); /線框調(diào)用1,不用沒(méi)次輸 for(i=0,j=0;iclass_num;i+,j+=2) /按班次順序輸出 printf(n|-|-|-|-|-|-|-|n); if(whether(i) /判斷時(shí)間是否超出函數(shù)* printf(|%10s|%5s:%-4s|%10s|%10s|%8.

15、1f|%8d|%8d|,recordsi.num,recordsi.hour, recordsi.min, recordsi.from,recordsi.to,recordsi.hours, recordsi.max,recordsi.now); else printf(|%10s| 已發(fā)車 |%10s|%10s|%8.1f|%8d|%8d|,recordsi.num, recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now); showtable2(j); /線框調(diào)用2 printf(n按任意鍵繼續(xù).n); get

16、ch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上/*打印表頭*/void showtable1() /線框調(diào)用1,不用沒(méi)次輸 int i=2; system(cls); /刷屏 printf(*message車程信息*n); printf(n|-|-|-|-|-|-|-|n); printf(n| 班次 | 發(fā)車時(shí)間 | 起點(diǎn)站 | 終點(diǎn)站 |行車時(shí)間|額定載量| 已售票 |n);/*打印表尾*/void showtable2(int i) /線框調(diào)用2。不用沒(méi)次輸。 printf(n|-|-|-|-|-|-|-|n);/*查找函數(shù)11*/void search() /查詢調(diào)用 int i

17、; char s110=0,s210=0; system(cls); /刷屏 printf(1. 按班次查詢n); printf(2. 按終點(diǎn)站查詢n); printf(3. 退出n); printf(請(qǐng)選擇(1-3):n); scanf(%d,&i); load(); / 調(diào)用按班次查詢函數(shù) switch(i) /多分枝選擇語(yǔ)句 case 1: printf(請(qǐng)輸入要查詢的班次:n); /s1為班次 scanf(%s,s1); find(s1,s2); /調(diào)用查找函數(shù)222 2 break; case 2: printf(請(qǐng)輸入要查詢終點(diǎn)站:n); /s2為終點(diǎn)站 scanf(%s,s2);

18、 find(s1,s2); /調(diào)用查找函數(shù)222 2 break; case 3: break; default : printf(輸入錯(cuò)誤!n); break; printf(按任意鍵繼續(xù).n); getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上/*查詢函數(shù)22*/void find(char s1,char s2) int i,h=0,m; showtable1(); /調(diào)用線框1 if(s20=0) m=1; /1為無(wú)條件執(zhí)行 else m=0; for(i=0;iclass_num;i+) if(strcmp(s1,recordsi.num)=0|strcmp(s2,reco

19、rdsi.to)=0) /判斷字符串比較是否相等, 待比較的字符串 printf(n|-|-|-|-|-|-|-|n); printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,recordsi.min, recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now); h+=2; if(m=1) break; showtable2(h); /調(diào)用線框2 if(h=0) printf(要查找的班次不存在!n); /*增加函數(shù)*/vo

20、id add() / /增加記錄 int i,j=5; load(); / 調(diào)用按班次查詢函數(shù) system(cls); /刷屏 printf(1. 增加班次n); printf(2. 返回n); printf(請(qǐng)選擇(1-2)n); scanf(%d,&i); if(i=1) system(cls); /刷屏 printf(1. 請(qǐng)輸入要增加的班次:n); scanf(%s,recordsclass_num.num); for(i=0;iclass_num;i+) if(strcmp(recordsclass_num.num,recordsi.num)=0) /判斷字符串比較是否相等, 待比

21、較的字符串 判斷車次沒(méi)重復(fù) printf(輸入錯(cuò)誤!n); getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上 break; if(i=class_num) get(i,j); /修改及增加班次* class_num+; /使班次數(shù)加1 save(); /調(diào)用保存函數(shù) /*售票函數(shù)*/void ticketorder() /*售票函數(shù)* int i; char num10; system(cls); /刷屏 printf(1. 售票n); printf(2. 返回n); printf(請(qǐng)選擇(1-2):n); scanf(%d,&i); if(i=1) load(); / 調(diào)用按班次查

22、詢函數(shù) search(); /查找函數(shù)* printf(請(qǐng)輸入要訂票的班次(若無(wú)請(qǐng)輸入0):n); scanf(%s,num); for(i=0;irecordsi.now&whether(i)=1) /判斷時(shí)間是否超出函數(shù)*并且*沒(méi)超出最大客量 recordsi.now+; /使已售的暑假1 printf(通向%s班次為%s的票訂票成功!n,recordsi.to,recordsi.num); save(); /調(diào)用保存函數(shù) getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上 break; else printf(該班次已滿或已發(fā)出!n); getch(); /從控制臺(tái)讀取一個(gè)字符,

23、但不顯示在屏幕上 /*退票刪除函數(shù)*/void ticketdelete() /刪除函數(shù)* int i; char num10; system(cls); /刷屏 printf(1. 退票n); printf(2. 返回n); printf(請(qǐng)選擇(1-2)n:); scanf(%d,&i); if(i=1) system(cls); /刷屏 load(); / 調(diào)用按班次查詢函數(shù) printf(請(qǐng)輸入要退票的班次:n); scanf(%s,num); i=findnum(num); /調(diào)用班次查詢函數(shù) if(strcmp(num,recordsi.num)=0) /判斷字符串比較是否相等 待

24、比較的字符串 if(whether(i) /判斷時(shí)間是否超出函數(shù)* printf(確定(y/n)?); scanf(%s,num); if(num0=y|num0=y) recordsi.now-; /使已售票加1 printf(退票成功!n); save(); /調(diào)用保存函數(shù) getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上 else printf(該班車已發(fā)出,無(wú)法退票!n); getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上 if(i=class_num) printf(輸入錯(cuò)誤!n); getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上 /*修改函數(shù)*/vo

25、id change() /修改函數(shù)* char num10,s10; int h=0,j=13,i; load(); / 調(diào)用按班次查詢函數(shù) system(cls); /刷屏 printf(請(qǐng)輸入要修改的班次:n); scanf(%s,num); i=findnum(num); /調(diào)用班次查詢函數(shù) if(i=class_num) printf(輸入錯(cuò)誤,無(wú)此班次!n); getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上 else printf(確定修改(y/n)?n); scanf(%s,s); if(s0=y|s0=y) get(i,j); /修改及增加班次* save(); /調(diào)

26、用保存函數(shù) /*刪除函數(shù)*/void deletemessage() /刪除班次信息 int i,h=0; char num10; system(cls); /刷屏 printf(1. 刪除班次n); printf(2. 返回n); printf(請(qǐng)選擇(1-2):n); scanf(%d,&i); if(i=1) system(cls); /刷屏 printf(請(qǐng)輸入要?jiǎng)h除的班次:n); scanf(%s,num); i=findnum(num); /調(diào)用班次查詢函數(shù) if(i=class_num) printf(輸入錯(cuò)誤,無(wú)此班次!n); getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示

27、在屏幕上 else printf(確定?(y/n)n); scanf(%s,num); if(num0=y|num0=y) for(;iclass_num-1;i+) recordsi=recordsi+1; class_num-; /班次總數(shù)減1 save(); /調(diào)用保存函數(shù) printf(刪除成功!n); getch(); /*按班次查詢函數(shù)*/int findnum(char s1) /查找班次 int i,h=0; showtable1(); /線框調(diào)用1,不用沒(méi)次輸 for(i=0;iclass_num;i+) if(strcmp(s1,recordsi.num)=0) /判斷字符

28、串比較是否相等,如果符合則輸出車次等信息 printf(|-|-|-|-|-|-|-|n); printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour, recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now); h+=2; /加2使輸出的框架合適 break; showtable2(h); /調(diào)用框架2 return i;/*保存函數(shù)*/void save() /保存函數(shù) file *fp1,*fp2

29、; /文件行指針 if(fp1=fopen(d:車票管理系統(tǒng).dat,wb)=null) /打開(kāi)文件、為輸出打開(kāi)一個(gè)二進(jìn)制文件 printf(文件打開(kāi)錯(cuò)誤!n); exit(0); if(fp2=fopen(d:車票管理系統(tǒng)0.dat,wb)=null) /打開(kāi)文件、為輸出打開(kāi)一個(gè)二進(jìn)制文件 printf(文件打開(kāi)錯(cuò)誤!n); exit(0); fwrite(&class_num,sizeof(int),1,fp2); /寫(xiě)入文件信息 fwrite(records,sizeof(class),class_num,fp1); fclose(fp1);fclose(fp2); /關(guān)閉文件/*按班次

30、查詢函數(shù)*/void load() /按班次查詢函數(shù) file *fp1,*fp2; if(fp1=fopen(d:車票管理系統(tǒng).dat,rb)=null) system(cls); /刷屏 printf(文件打開(kāi)錯(cuò)誤!n); getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上 exit(0); if(fp2=fopen(d:車票管理系統(tǒng)0.dat,rb)=null) system(cls); /刷屏 printf(文件打開(kāi)錯(cuò)誤!n); getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上 exit(0); /退出 fread(&class_num,sizeof(int),1,fp2); /讀入信息 fread(records,sizeof(class),class_num,fp1);/讀入信息 fclose(fp1);fclose(fp2); /文件關(guān)閉/*退出函數(shù)*/void quit() /退出函數(shù)* char s5; printf(確認(rèn)退出?(y/n)n); scanf

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論