Word版可編輯-火車票管理系統(tǒng)——C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告精心整理.docx_第1頁(yè)
Word版可編輯-火車票管理系統(tǒng)——C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告精心整理.docx_第2頁(yè)
Word版可編輯-火車票管理系統(tǒng)——C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告精心整理.docx_第3頁(yè)
Word版可編輯-火車票管理系統(tǒng)——C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告精心整理.docx_第4頁(yè)
Word版可編輯-火車票管理系統(tǒng)——C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告精心整理.docx_第5頁(yè)
已閱讀5頁(yè),還剩22頁(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)介

桂林電子科技大學(xué)信息科技學(xué)院實(shí)訓(xùn)報(bào)告C語(yǔ)言程序設(shè)計(jì)題 目: 學(xué)生成績(jī)管理系統(tǒng)院 系: 信息科技學(xué)院專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)姓 名: 何榮榮學(xué) 號(hào): 1751200204指導(dǎo)教師: 王小瓊?cè)?期: 2018年6月28日 桂林電子科技大學(xué)信息科技學(xué)院前 言課程設(shè)計(jì)環(huán)節(jié)是應(yīng)用型本科院校非常重要的一個(gè)教學(xué)環(huán)節(jié),是學(xué)完一門課后應(yīng)用本課知識(shí)及以前的知識(shí)積累而進(jìn)行的綜合性、開放性的訓(xùn)練。通過(guò)課程設(shè)計(jì),不僅能夠使學(xué)生得到系統(tǒng)的技能訓(xùn)練,鞏固和加強(qiáng)所學(xué)得專業(yè)理論知識(shí),而且能夠培養(yǎng)學(xué)生工程意識(shí)、創(chuàng)新能力、團(tuán)隊(duì)精神等綜合素質(zhì),培養(yǎng)學(xué)生的設(shè)計(jì)能力和解決實(shí)際問題的能力。C語(yǔ)言由于其強(qiáng)大的功能,豐富的表達(dá)能力,高效的代碼,良好的移植性和靈活性,自1972年問世以來(lái),經(jīng)久不衰,即使現(xiàn)在出現(xiàn)了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法和開發(fā)工具,但它仍然是人們學(xué)習(xí)程序設(shè)計(jì)的首選語(yǔ)言,用它訓(xùn)練和提高編程技術(shù),以及開發(fā)應(yīng)用程序等。我們通過(guò)C語(yǔ)言程序設(shè)計(jì)這門課程的學(xué)習(xí),已經(jīng)能編寫解決小問題的程序,對(duì)程序的開發(fā)也有了初步的認(rèn)識(shí),還掌握了C 語(yǔ)言的基本語(yǔ)法,這一過(guò)程確確實(shí)實(shí)令我們感到欣喜,有點(diǎn)計(jì)算機(jī)可以完成自我任務(wù)的成就感。但是,對(duì)于程序設(shè)計(jì)而言,學(xué)習(xí)C 的步伐不應(yīng)該停留于此。我們最終的目的應(yīng)該是掌握開發(fā)大型綜合程序的方法,即遵循軟件工程的開發(fā)步驟和結(jié)構(gòu)化程序設(shè)計(jì)思想,用C 語(yǔ)言開發(fā)出解決復(fù)雜問題的大型綜合程序??墒菍?duì)于多數(shù)學(xué)生來(lái)說(shuō),學(xué)習(xí)了C語(yǔ)言后,除了應(yīng)付各種考試之外,別無(wú)它用,對(duì)Turbo C語(yǔ)言豐富的函數(shù)知之甚少,加上DOS環(huán)境所限,因而對(duì)C語(yǔ)言興趣不大,也感到C語(yǔ)言比較難以掌握。本實(shí)訓(xùn)就是為了讓學(xué)生在學(xué)完C語(yǔ)言后進(jìn)一步了解C語(yǔ)言的知識(shí),掌握C語(yǔ)言在軟件開發(fā)方面的使用方法,希望通過(guò)此次實(shí)訓(xùn),不僅能提高學(xué)生學(xué)習(xí)C語(yǔ)言的興趣,更為今后學(xué)習(xí)其它專業(yè)知識(shí)及開發(fā)程序打下堅(jiān)實(shí)的基礎(chǔ)。本指導(dǎo)書中有些內(nèi)容借鑒了互聯(lián)網(wǎng)上相關(guān)程序的設(shè)計(jì)思想,在此對(duì)相關(guān)者表示衷心的感謝。由于時(shí)間、經(jīng)驗(yàn)及水平的原因,不當(dāng)、不足之處,請(qǐng)大家提出寶貴意見。編者目錄1、問題定義42、系統(tǒng)設(shè)計(jì)421 總體設(shè)計(jì)422 詳細(xì)設(shè)計(jì)73、程序測(cè)試84、詳細(xì)程序145、歸納總結(jié)2651 開發(fā)經(jīng)驗(yàn)2652 實(shí)訓(xùn)中遇到的問題及解決方法2653 感想和心得體會(huì)276、參考資料27火車票管理系統(tǒng)本題目設(shè)計(jì)目的是訓(xùn)練學(xué)生的基本編程能力,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C語(yǔ)言的文件和單鏈表的各種基本操作。本程序中涉及字符數(shù)組的使用、字符指針的使用、數(shù)據(jù)庫(kù)的設(shè)計(jì)和文件使用等方面的知識(shí)。通過(guò)本程序的訓(xùn)練,使學(xué)生能對(duì)C語(yǔ)言的文件操作有一個(gè)更深刻的了解,掌握利用單鏈表存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)對(duì)學(xué)生成績(jī)管理的原理,為進(jìn)一步開發(fā)出高質(zhì)量的管理信息系統(tǒng)打下堅(jiān)實(shí)的基礎(chǔ)。1、問題定義該系統(tǒng)要求實(shí)現(xiàn)一個(gè)簡(jiǎn)單、實(shí)用的火車票管理程序,主要功能包括火車票數(shù)據(jù)的錄入、查找、刪除、顯示、售票、退票等。所有火車票數(shù)據(jù)都要利用文件系統(tǒng)保存,以備系統(tǒng)下次運(yùn)行時(shí)使用。通過(guò)此課題,熟練掌握文件、數(shù)組、指針的各種操作,以及一些基本算法思想的應(yīng)用。本火車票管理系統(tǒng)應(yīng)該具備如下功能:1) 錄入班次:車次信息包括:班次、發(fā)車時(shí)間、起點(diǎn)站、終點(diǎn)站、行車時(shí)間、額定載量、已售票)2) 顯示所有班次3) 查詢班次4) 增加班次5) 售票6) 退票7) 修改班次8) (退票)刪除班次9) 退出2、系統(tǒng)設(shè)計(jì)21 總體設(shè)計(jì)采用模塊化的程序設(shè)計(jì)方法,即將較大的任務(wù)按照一定的原則分為一個(gè)個(gè)較小的任務(wù),然后分別設(shè)計(jì)各個(gè)小任務(wù)。需要注意的是劃分出來(lái)的模塊應(yīng)該相對(duì)獨(dú)立但又相關(guān),且容易理解??梢杂媚K化層次結(jié)構(gòu)圖(即模塊圖)來(lái)分析其任務(wù)的劃分,一般從上到下進(jìn)行,最上面一層是主模塊,下面各層是其上一層模塊的逐步細(xì)化描述。1調(diào)用錄入班次6調(diào)用退票5調(diào)用售票4調(diào)用增加班次2調(diào)用顯示所有班次3調(diào)用查詢班次9調(diào)用退出8調(diào)用刪除班次7調(diào)用修改班次火車票信息管理系統(tǒng)調(diào)用主菜單選項(xiàng)完成功能后返回主菜單車票管理系統(tǒng)軟件的功能模塊有:(1)提供菜單界面,方便用戶對(duì)程序個(gè)功能進(jìn)行選擇,選擇要實(shí)現(xiàn)的功能按enter鍵進(jìn)入該功能。(2)接受用戶輸入的功能項(xiàng),按enter鍵結(jié)束輸入并將進(jìn)入該系統(tǒng),其需要的結(jié)果顯示出來(lái),方便用戶查看。(3)完成每次功能,可保存用戶的修改的信息,及時(shí)更新文件信息。下次查詢時(shí)內(nèi)容為最新信息。實(shí)時(shí)的信息更新對(duì)比等。一個(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ù)void ShowTable1() void ShowTable2(int i) 線框調(diào)用1和2不用每次輸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ù)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)0”中。最后定義main()函數(shù),利用函數(shù)調(diào)用,實(shí)現(xiàn)程序的各種功能。將其放在系統(tǒng)文件d: ”車票管理系統(tǒng)0”中。程序分為多個(gè)小模塊,通過(guò)調(diào)用實(shí)現(xiàn)各種功能,增強(qiáng)了程序的可建設(shè)性。程序把每種功能分開實(shí)現(xiàn),更簡(jiǎn)單,實(shí)用程序更易理解。22 詳細(xì)設(shè)計(jì)主控main()函數(shù)執(zhí)行流程判斷鍵值,調(diào)用相應(yīng)函數(shù),完成相應(yīng)功能開始登錄,確定訪問權(quán)限輸入09中的一個(gè)數(shù)值,選擇相應(yīng)操作,并選擇判斷輸入值結(jié)束否是登錄框主界面選擇窗口圖2.2 主控函數(shù)執(zhí)行流程圖3、程序測(cè)試3.0菜單界面圖3-0 菜單界面如上圖所示,該程序?yàn)橛脩籼峁┎藛谓缑?,用戶可以?duì)程序的各種功能進(jìn)行選擇,方便用戶使用。選擇1-9并按enter鍵進(jìn)行操作。如選擇出錯(cuò),系統(tǒng)將提出警告,并提醒用戶重新進(jìn)行選擇。3.1 錄入班次功能圖3-1輸入時(shí)的界面如上圖所示,該功能實(shí)現(xiàn)錄入班次信息。選擇1按enter鍵進(jìn)入該功能,程序提醒用戶輸入車次.發(fā)車時(shí)間.起始站.終點(diǎn)站.行車時(shí)間.額定載量.已售票數(shù),輸入完畢后按enter鍵將完成錄入班次結(jié)果,同時(shí)程序?qū)⒃俅翁嵝延脩暨M(jìn)行新的選擇。3.2顯示所有班次圖3-2查詢班次界面可以顯示所有錄入的信息。3.3查詢所有班次功能圖3-3選擇查詢方式的界面該功能將實(shí)現(xiàn)程序運(yùn)行班次的查詢。選擇3并按enter鍵將實(shí)現(xiàn)該功能。分班次和終點(diǎn)站兩種方式查詢。3.4增加班次功能圖3-4增加班次界面該功能將增加班次信息,幫助用戶更新班次信息。選擇4并按enter鍵將實(shí)現(xiàn)該功能,再按提示輸入就行。按任意鍵返回主菜單。3.5售票功能圖3-5-1選擇售票功能界面圖3-3-2訂票的界面選擇5按enter鍵實(shí)現(xiàn)該功能,按任意鍵關(guān)閉程序。買票程序可提示買票成功否,且自動(dòng)判斷是否可賣。3.6退票功能圖3-6退票界面選擇6按enter鍵實(shí)現(xiàn)該功能,按任意鍵關(guān)閉程序。退票程序可提示退票成功否,且自動(dòng)判斷是否可退。3.7 修改班次功能圖3-7修改界面選擇7按enter鍵實(shí)現(xiàn)該功能,按任意鍵關(guān)閉程序。按提示操作修改班次。3.8 刪除班次功能圖3-8刪除界面3.9 退出功能圖3-9退出界面該功能可退出系統(tǒng),選擇9按enter鍵實(shí)現(xiàn)該功能4、詳細(xì)程序#include /宏定義函數(shù)#include /字符串操作及內(nèi)存操作函數(shù)#include /調(diào)用系統(tǒng)函數(shù)#include /時(shí)間庫(kù)函數(shù) #include /輸入輸出函數(shù)#define N 1000 /宏定義多條記錄typedef struct TICKET /定義新結(jié)構(gòu)體TICKETchar num10; /車次編號(hào)char hour3; /時(shí)間:小時(shí)char min3; /時(shí)間:分鐘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(); /新紀(jì)錄*錄入函數(shù)*void ShowTable1(); /線框調(diào)用1,不用每次輸 void ShowTable2(int i); /線框調(diào)用2,不用每次輸 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(); /菜單函數(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*1751200204 何榮榮*,n*MENU功能菜單*,n 1. 錄入班次 ,n 2. 顯示所有班次 ,n 3. 查詢班次 ,n 4. 增加班次 ,n 5. 售票 ,n 6. 退票 ,n 7. 修改班次 ,n 8. 刪除班次 ,n 9. 退出 ;/*主函數(shù)*/void main()while(1) /菜單函數(shù)循環(huán)switch(menu_select() /菜單函數(shù)*case 1: NewMessage();break; /新紀(jì)錄*錄入函數(shù)*case 2: Display();break; /顯示函數(shù)*case 3: search();break; /查找函數(shù)*case 4: add();break; /增加記錄*case 5: Ticketorder();break; /*售票函數(shù)*case 6: Ticketdelete();break; /(退票)刪除函數(shù)*case 7: change();break; /修改函數(shù)*case 8: deletemessage();break; /選擇調(diào)用刪除函數(shù)case 9: quit();break; /退出函數(shù)*/*菜單函數(shù)*/int menu_select() /菜單函數(shù)*char s5; /定義要輸入的數(shù)字功能int c,i; 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):);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; /定義文件型指針變量if(fp=fopen(d:車票管理系統(tǒng)0.dat,rb)!=NULL) /fopen打開文件 printf(車票信息已經(jīng)存在請(qǐng)選擇4增加功能!n);printf(任意輸入則返回菜單n);scanf(%s,s);i=1; /通過(guò)是1if(i=0) printf(請(qǐng)輸入要錄入班次總數(shù):n);scanf(%d,&class_num); /指向班次指針for(i=0;iclass_num;i+) 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ò)誤!該班次已存在!n);break; /返回get(i,j); /修改及增加班次*j=5;save(); /調(diào)用保存函數(shù)/*顯示所有函數(shù)*/void Display() /顯示所有函數(shù)int i,j;load(); / 調(diào)用按班次查詢函數(shù)ShowTable1(); /線框調(diào)用1,不用每次輸 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.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)用2printf(n按任意鍵繼續(xù).n);getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上/*打印表頭*/void ShowTable1() /線框調(diào)用1,不用每次輸int i=2;printf(*MESSAGE車程信息*n);printf(n|-|-|-|-|-|-|-|n); printf(n| 班次 | 發(fā)車時(shí)間 | 起點(diǎn)站 | 終點(diǎn)站 |行車時(shí)間|額定載量| 已售票 |n);/*打印表尾*/void ShowTable2(int i) /線框調(diào)用2,不用每次輸。printf(n|-|-|-|-|-|-|-|n);/*查找函數(shù)11*/void search() /查詢調(diào)用int i;char s110=0,s210=0;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);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)用線框1if(s20=0)m=1; /1為無(wú)條件執(zhí)行else m=0;for(i=0;iclass_num;i+)if(strcmp(s1,recordsi.num)=0|strcmp(s2,recordsi.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)用線框2if(h=0)printf(要查找的班次不存在!n);/*增加函數(shù)*/void add() / /增加記錄int i,j=5;load(); / 調(diào)用按班次查詢函數(shù)printf(1. 增加班次n);printf(2. 返回n);printf(請(qǐng)選擇(1-2)n);scanf(%d,&i);if(i=1)printf(1. 請(qǐng)輸入要增加的班次:n);scanf(%s,recordsclass_num.num);for(i=0;iclass_num;i+)if(strcmp(recordsclass_num.num,recordsi.num)=0)/判斷字符串比較是否相等, 待比較的字符串 判斷車次沒重復(fù) printf(輸入錯(cuò)誤!n);getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上break;if(i=class_num) get(i,j); /修改及增加班次*class_num+; /使班次數(shù)加1save(); /調(diào)用保存函數(shù)/*售票函數(shù)*/void Ticketorder() /*售票函數(shù)*int i;char num10;printf(1. 售票n);printf(2. 返回n);printf(請(qǐng)選擇(1-2):n);scanf(%d,&i);if(i=1)load(); / 調(diào)用按班次查詢函數(shù)search(); /查找函數(shù)*printf(請(qǐng)輸入要訂票的班次(若無(wú)請(qǐng)輸入0):n);scanf(%s,num);for(i=0;irecordsi.now&whether(i)=1) /判斷時(shí)間是否超出函數(shù)*并且*沒超出最大客量recordsi.now+; /使已售的printf(通向%s班次為%s的票訂票成功!n,recordsi.to,recordsi.num);save(); /調(diào)用保存函數(shù)getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上break;elseprintf(該班次已滿或已發(fā)出!n);getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上/*退票刪除函數(shù)*/void Ticketdelete() /刪除函數(shù)*int i;char num10;printf(1. 退票n);printf(2. 返回n);printf(請(qǐng)選擇(1-2)n:);scanf(%d,&i);if(i=1)load(); / 調(diào)用按班次查詢函數(shù)printf(請(qǐng)輸入要退票的班次:n);scanf(%s,num);i=findnum(num); /調(diào)用班次查詢函數(shù)if(strcmp(num,recordsi.num)=0) /判斷字符串比較是否相等 待比較的字符串 if(whether(i) /判斷時(shí)間是否超出函數(shù)*printf(確定(Y/N)?);scanf(%s,num);if(num0=y|num0=Y) recordsi.now-; /使已售票加1printf(退票成功!n);save(); /調(diào)用保存函數(shù)getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上elseprintf(該班車已發(fā)出,無(wú)法退票!n);getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上if(i=class_num)printf(輸入錯(cuò)誤!n);getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上/*修改函數(shù)*/void change() /修改函數(shù)*char num10,s10;int h=0,j=13,i;load(); / 調(diào)用按班次查詢函數(shù)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è)字符,但不顯示在屏幕上elseprintf(確定修改(Y/N)?n);scanf(%s,s);if(s0=y|s0=Y)get(i,j); /修改及增加班次*save(); /調(diào)用保存函數(shù)/*刪除函數(shù)*/void deletemessage() /刪除班次信息int i,h=0;char num10;printf(1. 刪除班次n);printf(2. 返回n);printf(請(qǐng)選擇(1-2):n);scanf(%d,&i);if(i=1)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è)字符,但不顯示在屏幕上elseprintf(確定?(y/n)n);scanf(%s,num);if(num0=y|num0=Y)for(;iclass_num-1;i+) recordsi=recordsi+1;class_num-; /班次總數(shù)減1save(); /調(diào)用保存函數(shù)printf(刪除成功!n);getch();/*按班次查詢函數(shù)*/int findnum(char s1) /查找班次 int i,h=0;ShowTable1(); /線框調(diào)用1,不用每次輸 for(i=0;iclass_num;i+)if(strcmp(s1,recordsi.num)=0) /判斷字符串比較是否相等,如果符合則輸出車次等信息 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)用框架2return i;/*保存函數(shù)*/void save() /保存函數(shù)FILE *fp1,*fp2; /文件行指針if(fp1=fopen(d:車票管理系統(tǒng).dat,wb)=NULL) /打開文件、為輸出打開一個(gè)二進(jìn)制文件printf(文件打開錯(cuò)誤!n);exit(0); /程序正常退出if(fp2=fopen(d:車票管理系統(tǒng)0.dat,wb)=NULL) /打開文件、為輸出打開一個(gè)二進(jìn)制文件printf(文件打開錯(cuò)誤!n);exit(0); /程序正常退出fwrite(&class_num,sizeof(int),1,fp2); /寫入文件信息fwrite(records,sizeof(CLASS),class_num,fp1);fclose(fp1);fclose(fp2); /關(guān)閉文件/*按班次查詢函數(shù)*/void load() /按班次查詢函數(shù)FILE *fp1,*fp2;if(fp1=fopen(d:車票管理系統(tǒng).dat,rb)=NULL)printf(文件打開錯(cuò)誤!n);getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上 exit(0); /程序正常退出if(fp2=fopen(d:車票管理系統(tǒng)0.dat,rb)=NULL)printf(文件打開錯(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)閉/*修改及增加班次*/void get(int i,int j) / 修改及增加班次* for(;)printf(請(qǐng)輸入發(fā)車時(shí)間(xx xx)n);scanf(%s%s,recordsi.hour,recordsi.min);if(atoi(recordsi.hour)=0)&(atoi(recordsi.min)=0)break;elseprintf(輸入錯(cuò)誤!n);getch(); /從控制臺(tái)讀取一個(gè)字符,但不顯示在屏幕上printf(請(qǐng)輸入起點(diǎn)站:n);scanf(%s,recordsi.from);printf(請(qǐng)輸入終點(diǎn)站:n);scanf(%s,recordsi.to);printf(請(qǐng)輸入行車時(shí)間:n);scanf(%f,&recordsi.hours);printf(請(qǐng)輸入額定載量:n);scanf(%d,&recordsi.max);for(;)printf(請(qǐng)輸入已售票數(shù):n);scanf(%d,&recordsi.now);if(recordsi.nowtm_hourtm_hour=atoi(recordsi.hour)&local-tm_minatoi(recordsi.min) /atoi將字符串轉(zhuǎn)換成一個(gè)整數(shù)值return 1; else return 0;/*退出函數(shù)*/void quit() /退出函數(shù)*char s5; printf(確認(rèn)退出?(Y/N)n);scanf(%s,s);if(s0=y|s0=Y)exit(0); /程序中止執(zhí)行,返回調(diào)用過(guò)程.

溫馨提示

  • 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ù)覽,若沒有圖紙預(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)論