下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)題目:訂票系統(tǒng)實(shí)驗(yàn)?zāi)康模?了解并掌握數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法,具備初步的獨(dú)立分析和設(shè)計(jì)能力;2. 初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;3. 提高綜合運(yùn)用所學(xué)的理論知識(shí)和方法獨(dú)立分析和解決問題的能力;4. 訓(xùn)練用系統(tǒng)的觀點(diǎn)和軟件開發(fā)一般規(guī)范進(jìn)行軟件開發(fā),培養(yǎng)軟件工作者所應(yīng)具備的科學(xué) 的工作方法和作風(fēng)。實(shí)驗(yàn)要求:任務(wù):通過此系統(tǒng)可以實(shí)現(xiàn)如下功能:錄入:可以錄入航班情況(數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定) 查詢:可以查詢某個(gè)航線的情況(如,輸入航班號(hào),查詢起降時(shí)間,起飛抵達(dá)城市,航班 票價(jià),票價(jià)折扣,確定航班是否滿倉);可以輸入起飛抵達(dá)城市,查
2、詢飛機(jī)航班情況;訂票:(訂票情況可以存在一個(gè)數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定) 可以訂票,如果該航班已經(jīng)無票,可以提供相關(guān)可選擇航班;退票:可退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有姓名,證件號(hào),訂票數(shù)量及航班情況,訂單要有編號(hào)。修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件實(shí)驗(yàn)主要步驟:增加航班信息信息查找航班信息3信息廠 A按起終點(diǎn)查找丿飛機(jī)訂票I系統(tǒng)丿退票業(yè)務(wù)訂票業(yè)務(wù)修改航班信息退出并保存刪除客戶信息航班端輸入航班信息,add()增加航班信息,并保存到save().修改信息,在xiugaiO函數(shù)里,輸入要修改的航班號(hào),選擇修改的內(nèi)容,如修改時(shí) 間,地點(diǎn)并保存。客戶端輸入起始站和終點(diǎn)站,在兩者都
3、符合的條件下在search ()函數(shù)里查找,并輸出航班信息。訂票:用search。,判斷是否有符合的航班,有則輸出并進(jìn)行訂票,還有輸入客戶信息。退票:調(diào)用searchO用它的返回值判斷是否有符合的航班,有則輸入,并刪除客戶信息。1)2)3)4)在主函數(shù)里先了調(diào)用chushihua(),確定有hangban.dat文件,并讓客戶或航班端選擇相應(yīng)的模塊。定義訂票業(yè)務(wù)函數(shù),在這個(gè)函數(shù)中首先調(diào)用了search函數(shù)查找需要訂票的航班,用search函數(shù)的返回值判斷是否有該航班。運(yùn)用if語句實(shí)現(xiàn)訂票時(shí)的多種情況:訂票數(shù)輸入不正確、飛機(jī)票數(shù)不足等情況。訂票成功時(shí)運(yùn)用Pi.count=pi.count-n;將
4、已被訂的機(jī)票數(shù)減去,以顯示新的即時(shí)航班信息 定義退票業(yè)務(wù)函數(shù): 與訂票函數(shù)相類似,只做稍稍修改就行退票成功是用 剩余票數(shù)加上去以顯示即時(shí)航班信息。pi.cou nt=p i.cou nt+ n;將航班的標(biāo)準(zhǔn)輸入、輸出頭文件/包含字符串函數(shù)處理頭文件/包含access函數(shù)的頭文件/定義最多的航班數(shù)struct air int num; char start20; char des20; char time10;/定義結(jié)構(gòu)體數(shù)組/定義航班號(hào)/航班起始站/終點(diǎn)站/飛行時(shí)間5)模塊功能:設(shè)立一個(gè)初始化函數(shù)來得到航班信息。具體設(shè)計(jì)是第一次運(yùn)行程序時(shí)自動(dòng)生 成保存航班信息的文件,并輸入初始航班信息,待第二
5、次開始就可 以直接讀取該文件獲得已有的航班信息并可直 接使用。運(yùn)用了access函數(shù)判斷文件是否存 在。實(shí)驗(yàn)結(jié)果: 實(shí)驗(yàn)源程序:#include<stdio.h> #include<string.h> #include vp rocess.h #define M 1000 #define E 1000int count; 機(jī)票數(shù)量 int price; /機(jī)票價(jià)格 pM;struct clientlong id; /身份證char name20; /客戶姓名 int count ; /客戶訂票量 int num;航班號(hào)cE;int i,m=0,e=0; char ii1
6、0;II定義全局變量void add(); void p rint(); int search();void ding piao(); I訂票業(yè)務(wù) void tuipi ao();void read(); void save(); void out pu t();函數(shù)聲明增加航班信息函數(shù) 顯示航班信息查找航班信息void chushihua(); void build();void del(); void xiugai();退票讀取文件保存文件輸出格式系統(tǒng)初始化建立數(shù)據(jù)文件void main()int j;II chushihua();p rintf("系統(tǒng)初始化判斷是否存在原始數(shù)據(jù)
7、文件-您好,歡迎進(jìn)入飛機(jī)訂票系統(tǒng)!- n");printf(":n ");p rintf("-1.增加航班信息nn"II2.瀏覽航班信息nn"II3查找航班信息 -nn"II4訂票業(yè)務(wù) -nn"II5退票業(yè)務(wù) -nn"II6.修改航班信息nn"II0.退出nn");do printf("=n");printf("請(qǐng)?jiān)?-6中選擇以回車鍵結(jié)束:nn"); scanf("%d",&j);switch(j)case 1: a
8、dd();break;case 2:p rint();break;II調(diào)用增加航班函數(shù)II調(diào)用顯示模塊case 3:search();II調(diào)用查找模塊 break;case 4:dingpiao(); II調(diào)用訂票模塊 break;case 5:tui piao(); /調(diào)用退票模塊 break;case 6:xiugai();case 0:II退出系統(tǒng)save();printf("謝謝使用,再見!"); break; while(j!=0);判斷是否調(diào)用其他函數(shù)void chushihuaOif( access("hangban.dat",0) bui
9、ld();elseread();II定義系統(tǒng)初始化函數(shù)void build()定義建立數(shù)據(jù)文件函數(shù)FILE *fp; 定義文件指針if(fp=fo pen("hangban.dat","wb")=NULL)出錯(cuò)II打開文件并判定是否printf("創(chuàng)建文件失敗!"); getchar();return;II打印出錯(cuò)提示printf("請(qǐng)依次輸入航班信息(以回車鍵結(jié)束):n");Printf("for(i=0;i<M;i+)打印提示信息- n");printf("請(qǐng)輸入航班號(hào):&q
10、uot;); scanf("%d",&p i.num); printf("請(qǐng)輸入起始站:"); scanf("%s", pi.start); printf("請(qǐng)輸入終點(diǎn)站:"); scanf("%s", pi.des);輸入航班號(hào)II輸入起始站II輸入終點(diǎn)站printf("請(qǐng)輸入時(shí)間(星期幾):"); scanf("%s", pi.time); II 輸入時(shí)間 printf("請(qǐng)輸入機(jī)票數(shù):");scanf("%d&q
11、uot;,&p i.count);輸入機(jī)票數(shù)printf("%d",&p i. price);fwrite(&p i,sizeof(struct air),1,fp); m+;printf("添加完畢,是否繼續(xù)添加?請(qǐng)鍵入y或n以回車鍵結(jié)束:"); scanf("%s",ii);if(strcm p(ii,"y")!=0)fclose(f p); return;判斷是否繼續(xù)添加航班信息關(guān)閉文件void read()FILE *fp;if(fp=fo pen("hangban.dat
12、","r")=NULL) printf("創(chuàng)建文件失敗!"); getchar(); return;i=0;while(!feof(fp)fread(&p i,sizeof(struct air),1,fp); i+;m+;m-;fclose(f p);定義讀取文件函數(shù)計(jì)算存在航班數(shù)II逐塊讀取數(shù)據(jù)void save()定義保存函數(shù)FILE *fp;if(fp=fo pen("hangban.dat","wb")=NULL) printf("創(chuàng)建文件失敗!");getchar(
13、); return;for(i=0;i<m;i+)逐塊保存數(shù)據(jù)fwrite(&p i,sizeof(struct air),1,fp); fclose(f p);void add() doprintf("請(qǐng)依次輸入您要增加的航班信息(以回車鍵結(jié)束):n"); 打印提示信息Printf("printf("請(qǐng)輸入航班號(hào):"); scanf("%d",&p m.num); printf("請(qǐng)輸入起始站:"); scanf("%s", pm.start); printf(
14、"請(qǐng)輸入終點(diǎn)站:"); scanf("%s", pm.des); printf("請(qǐng)輸入時(shí)間:"); scanf("%s", pm.time); printf("請(qǐng)輸入機(jī)票數(shù):");定義增加航班信息函數(shù)n ");/讀取航班號(hào)II讀取起始站/讀取終點(diǎn)站II讀取時(shí)間scanf("%d",&pm.count); 讀取機(jī)票數(shù) printf("請(qǐng)輸入價(jià)格:"); scanf("%d",&pm.price); II 讀取機(jī)
15、票價(jià)格 m+;printf("添加完畢,是否繼續(xù)添加?請(qǐng)鍵入y或n以回車鍵結(jié)束:"); scanf("%s",ii);while(!strcm p(ii,"y");判斷是否繼續(xù)添加定義輸出格式函數(shù)void out pu t() printf("航班號(hào)t起始站t終點(diǎn)站tt時(shí)間tt機(jī)票數(shù)tt價(jià)格n"); II信息 標(biāo)題for(i=0;i<m;i+)P rintf("%dt%st%stt星期 %stt %dtt %dn", pi.num, pi.start, pi.des, pi.time, p
16、i.count ,p i. pri ce);/打印出信息void p rint() 定義顯示航班信息函數(shù)printf("n out pu t(); printf("n getchar(); getchar();目前我們有如下航班:n");/調(diào)用輸出格式函數(shù) 請(qǐng)按回車鍵返回上層菜單");int search()定義查詢函數(shù)int h=0;char a20;char b20;doprintf("n請(qǐng)輸入航班起點(diǎn)站:"); scanf("%s",a);輸入查詢的航班起點(diǎn)printf("n請(qǐng)輸入航班終點(diǎn)站:&qu
17、ot;); scanf("%s",b);for(i=0;i<m;i+)if(strcmp(pi.start,a)=0&&strcmp(pi.des,b)=0) /按航班起點(diǎn)和 終點(diǎn)站判定輸出條件Printf("n您所查找的航班信息為:n ");printf("航班號(hào)tt起始站tt終點(diǎn)站tt時(shí)間t機(jī)票數(shù)t機(jī)票價(jià)格n ");%st%dt%dn/顯示信息p rintf("%dtt%stt%stt星 期",p i.num ,p i.start ,p i.des ,p i.time ,p i.count
18、 ,p i. price); printf("n查詢完畢,按回車鍵繼續(xù)"); h=1;getchar();getchar(); return h;printf("n對(duì)不起,沒有您需要的信息!n ");printf("是否重新查找?請(qǐng)鍵入y或n以回車鍵結(jié)束"); scanf("%s",ii);while(!strcm p(ii,"y"); 判定是否重新查找void ding piao()定義訂票業(yè)務(wù)函數(shù)int h;int n;char a10="y"doh=search();
19、調(diào)用查詢模塊if(h=0)printf("對(duì)不起!沒有找到您所需要的航班,所以不能訂票。n");/未查找到所需航班printf("n請(qǐng)按回車鍵返回上層菜單");getchar();getchar();break; do");printf("請(qǐng)輸入您要訂的機(jī)票數(shù)(以回車鍵結(jié)束)scanf("%d",&n);輸入所訂機(jī)票數(shù)if(n<=0)判定機(jī)票數(shù)是否出錯(cuò)Printf("輸入錯(cuò)誤!至少需訂1張機(jī)票。n");else if(p i.count=0)/判定機(jī)票是否售完P(guān) rintf(&qu
20、ot;對(duì)不起,你所選擇的航班的機(jī)票已售完!n");break;else if(p i.count!=0&&p i.count>=n)/ 判定機(jī)票數(shù)是否大于等于訂票數(shù)Printf("請(qǐng)輸入您的姓名:"); scanf("%s",);Printf("請(qǐng)輸入您的身份證:"); scanf("%d", &ce.id); ce.num=pi.num;ce.count=n;n+;p i.count=p i.count-n; printf("訂票成功!")
21、; break;else if(p i.countvn)/判定機(jī)票數(shù)是否小于訂票數(shù)P rintf("對(duì)不起,你所選擇的航班只剩 %d張機(jī)票n", P i.count);printf("是否需要重新輸入機(jī)票數(shù)?請(qǐng)輸入y或n以回車鍵結(jié)束: ");/判定是否重新輸入訂票數(shù)scanf("%s",a);while(!strcm p(a,"y");printf("是否需要訂其他航班的機(jī)票?請(qǐng)輸入y或n以回車鍵結(jié)束:"); scanf("%s",a);while(!strcm p( a,&
22、quot;y");判定是否繼續(xù)訂票定義退票函數(shù)void tui piaoOint h;int n;char a10;do h=search(); /調(diào)用查詢函數(shù) if(h=0) printf("對(duì)不起!沒有找到您所需要的航班,所以不能退票。n");printf("n請(qǐng)按回車鍵返回上層菜單");getchar();getchar(); break;printf("請(qǐng)輸入您要退的機(jī)票數(shù)目:");scanf("%d",&n);輸入所退票數(shù)if(n<=0)判定票數(shù)是否有效printf("輸
23、入錯(cuò)誤!至少需退1張機(jī)票。");elsedel();p i.count=p i.count+n; printf("退票成功!");II判定是否printf("是否繼續(xù)? 請(qǐng)鍵入y或n以回車鍵結(jié)束:"); 繼續(xù)退票scanf("%s",a);while(!strcm p( a,"y");判定并跳出循環(huán) void del()int a,j,n;printf("請(qǐng)輸入您退票的航班號(hào)n"); scanf("%d",&n);for(a=0;a<e;a+)if(c
24、a. nu m=m) for(j=a;j<e-1;a+) cj=cj+1;Printf("刪除成功! n"); e-; void xiugai()int a,b,j,w,q;char h20,g20;printf("請(qǐng)輸入要修改的航班的航班號(hào)n");scanf("%d",&b);for(i=0;i<M;i+)if(p i. num=b)printf("n請(qǐng)選擇,1.修改城市,2修改時(shí)間,3價(jià)格,4,航班號(hào),0退出n"); scanf("%d", &a);if(a=1)
25、printf("請(qǐng)選擇修改的是:1起始站,2.終點(diǎn)站n"); scanf("%d",&j);if(j=1)printf("請(qǐng)輸入修改后的起始站:n"); scanf("%s",h);strc py(p i.start,h);printf("修改成功");else if(j=2)printf("請(qǐng)輸入修改后的終點(diǎn)站:n"); scanf("%s",h);strc py(p i.des,h);printf("修改成功");if(a=2) n ");printf("請(qǐng)輸入修改后的時(shí)間scanf("%s",g);strc py(p i.time,g);printf(&q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 航運(yùn)服務(wù)招投標(biāo)專用合同條款
- 體育館消防工程合同
- 木材銷售顧問招聘合同
- 水利工程隧道改造合同
- 污水處理廠道路施工合同
- 食品安全健康知識(shí)培訓(xùn)
- 郭曉惠老年人糖尿病治療
- 遺傳性多發(fā)性骨軟骨瘤病
- 遠(yuǎn)紅外線治療儀
- 畜產(chǎn)品質(zhì)量安全事件
- 2023年北京市重點(diǎn)校初三(上)期末歷史試題匯編:第一次工業(yè)革命
- 《最后一片葉子》課件
- 2024年小轎車買賣合同標(biāo)準(zhǔn)版本(三篇)
- 八年級(jí)生物中考備考計(jì)劃
- 2024-2030年全球及中國(guó)濕巾和衛(wèi)生紙行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃可行性分析研究報(bào)告
- 公務(wù)員2019年國(guó)考《申論》真題及答案(省級(jí))
- 2024年會(huì)計(jì)專業(yè)考試初級(jí)會(huì)計(jì)實(shí)務(wù)試卷與參考答案
- 職業(yè)技術(shù)學(xué)院材料工程技術(shù)專業(yè)調(diào)研報(bào)告
- 五年級(jí)閱讀《概括題專項(xiàng)訓(xùn)練》
- 《算法設(shè)計(jì)與分析基礎(chǔ)》(Python語言描述) 課件 第9章NP完全問題
- 2024-2030年中國(guó)輻照加速器行業(yè)運(yùn)營(yíng)態(tài)勢(shì)及未來前景預(yù)測(cè)研究報(bào)告
評(píng)論
0/150
提交評(píng)論