數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)飛機(jī)訂票系統(tǒng)27頁(yè)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)飛機(jī)訂票系統(tǒng)27頁(yè)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)飛機(jī)訂票系統(tǒng)27頁(yè)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)飛機(jī)訂票系統(tǒng)27頁(yè)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)飛機(jī)訂票系統(tǒng)27頁(yè)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(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、訂票系統(tǒng)1.需求分析任務(wù):通過(guò)此系統(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à)折扣,確定航班是否滿倉(cāng));可以輸入起飛抵達(dá)城市,查詢飛機(jī)航班情況;訂票:(訂票情況可以存在一個(gè)數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂票,如果該航班已經(jīng)無(wú)票,可以提供相關(guān)可選擇航班;退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有姓名,證件號(hào),訂票數(shù)量及航班情況,訂單要有編號(hào)。修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件要求:根據(jù)以上功能說(shuō)明,設(shè)計(jì)航班信息,訂票信息的存儲(chǔ)結(jié)構(gòu),設(shè)

2、計(jì)程序完成功能;2.概要設(shè)計(jì)在此說(shuō)明每個(gè)部分的算法設(shè)計(jì)說(shuō)明(可以是描述算法的流程圖),每個(gè)程序中使用的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)說(shuō)明(如果指定存儲(chǔ)結(jié)構(gòu)請(qǐng)寫(xiě)出該存儲(chǔ)結(jié)構(gòu)的定義)。主菜單0123456789輸入航班的信息列出航班的信息按航班號(hào)查詢航班信息按城市來(lái)查詢航班訂票程序退票系統(tǒng)修改飛機(jī)航班的信息保存文件讀取文件 、下載文件退出0.輸入航班的信息航班號(hào)起飛城市降落城市出發(fā)時(shí)間降落時(shí)間剩下的座位價(jià)格折扣1.列出航班的信息繼續(xù) y退出 n2.按航班號(hào)查詢航班信息輸入所需要查詢的航班號(hào)顯示這個(gè)航班的的信息3.按城市來(lái)查詢航班輸入起飛城市輸入降落城市顯示這個(gè)航班的信息4.訂票程序輸入號(hào)碼輸入名字輸入ID需要定的票

3、數(shù)航班號(hào)5.退票系統(tǒng)輸入航班號(hào)輸入你ID確定退票 1否定 06.修改飛機(jī)航班的信息輸入要修改的航班號(hào)重新輸入新的航班信息7.保存文件顯示保存成功詳細(xì)設(shè)計(jì)3.源程序/*頭文件(.h)*/#include <stdio.h> /*I/O函數(shù)*/#include <stdlib.h> /*其它說(shuō)明*/#include <string.h> /*字符串函數(shù)*/#include <conio.h> /*屏幕操作函數(shù)*/#include <ctype.h> /*字符操作函數(shù)*/#define N 20#define Q 40 /*定義常數(shù)表示記錄

4、數(shù)*/ /*定義數(shù)據(jù)結(jié)構(gòu)*/*乘客信息*/typedef struct char number10;/*編號(hào)*/ char name10; /*姓名*/ char id20; /*證件號(hào)*/ int count; /*訂票數(shù)*/ char flightname10;/*乘坐航班號(hào)*/GUEST; /*航班信息*/typedef structchar planenumber10;/*航班號(hào)*/ char city120; /*起飛城市*/ char city220; /*抵達(dá)城市*/ char time120; /*起飛時(shí)間*/ char time220; /*降落時(shí)間*/ int room;

5、/*艙位數(shù)*/ char price5; /*票價(jià)*/ char discount5; /*折扣*/ GUEST guest25; int sit;FLY;/*菜單函數(shù),函數(shù)返回值為整數(shù),代表所選的菜單項(xiàng)*/menu_select() char s80; int c; gotoxy(1,25);/*將光標(biāo)定為在第25行,第1列*/ printf("press any key enter menu.n");/*提示壓任意鍵繼續(xù)*/ getch(); /*讀入任意字符*/ clrscr(); /*清屏*/ gotoxy(1,1); printf(" Welcome t

6、onn"); printf(" Tickets Booking Systemnn"); printf(" *MENU*nn"); printf(" 0. Enter flight recordn"); printf(" 1. List the flight informationn"); printf(" 2. Search flightnumbern"); printf(" 3. Search cityn"); printf(" 4. Book the

7、ticketn"); printf(" 5. Quit the ticketn"); printf(" 6. Channge the flight informationn"); printf(" 7. Save the filen"); printf(" 8. Load the filen"); printf(" 9. exitn"); printf(" *n"); do printf("n Enter you choice(09):"); /

8、*提示輸入選項(xiàng)*/ scanf("%s",s); /*輸入選擇項(xiàng)*/ c=atoi(s); /*將輸入的字符串轉(zhuǎn)化為整型數(shù)*/ while(c<0|c>9); /*選擇項(xiàng)不在09之間重輸*/ return c; /*返回選擇項(xiàng),主程序根據(jù)該數(shù)調(diào)用相應(yīng)的函數(shù)*/*輸入函數(shù)*/int enter(FLY t) int i,k,n,m,w,j; char *s; clrscr(); /*清屏*/ printf("input the flight's count(n<=40):");/*輸入航線總數(shù)*/ scanf("%d&q

9、uot;,&n); while(n>40|n<0) clrscr(); printf("input error!input again(0<n<=40):");/*輸入航線總數(shù)*/ scanf("%d",&n); printf(" input the flight's informationnn");/*提示信息*/ printf("flightname start-city end-city start-time end-time room price discountn&q

10、uot;); printf("-n"); for(i=0;i<n;i+) scanf("%s",ti.planenumber);/*輸入姓名*/ gotoxy(13,6+i);/*光標(biāo)跳到地址欄*/ scanf("%s",ti.city1);/*輸入起飛城市*/ gotoxy(25,6+i); scanf("%s",ti.city2);/*輸入降落城市*/ gotoxy(36,6+i); scanf("%s",ti.time1);/*輸入起飛時(shí)間*/ gotoxy(47,6+i); sca

11、nf("%s",ti.time2);/*輸入降落時(shí)間*/ gotoxy(57,6+i); scanf("%d",&ti.room);/*輸入艙位數(shù)*/ gotoxy(64,6+i); scanf("%s",ti.price);/*輸入票價(jià)*/ gotoxy(73,6+i); scanf("%s",ti.discount);/*輸入折扣*/ printf("-n"); for(i=0;i<n;i+)ti.sit=0; return n; /*返回記錄條數(shù)*/*顯示記錄,參數(shù)為記錄數(shù)組

12、和記錄條數(shù)*/void list(FLY t,int n) int i; clrscr(); printf("flightname start-city end-city start-time end-time room price discountn"); printf("-n"); for(i=0;i<n;i+) printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7sn",ti.planenumber,ti.city1,ti.city2,ti.time1,ti.time2,ti.room,

13、ti.price,ti.discount); printf(" *end*n");/*按航班號(hào)查找記錄*/void search1(FLY t,int n) char s20; /*保存待查找航班名字符串*/ int i; clrscr(); /*清屏*/ printf("please input the flightname that you want to search:"); scanf("%s",s); /*輸入待查找航班名*/ for(i=0;i<n;i+)/*從第一條記錄開(kāi)始,直到最后一條*/ if(strcmp(s

14、,ti.planenumber)=0) /*記錄中的航班名和待比較的是否相等*/ break; /*相等,則返回該記錄的下標(biāo)號(hào),程序提前結(jié)結(jié)束*/ if(i>n-1) /*如果整數(shù)i值大于n-1,說(shuō)明沒(méi)找到*/ printf("not foundn"); else printf("flightname start-city end-city start-time end-time room price discountn"); /*顯示記錄*/ printf("-n"); printf("%-12s%-12s%-10s

15、%-12s%-10s%-7d%-7s%-7sn",ti.planenumber,ti.city1,ti.city2,ti.time1,ti.time2,ti.room,ti.price,ti.discount); /*按起降城市查找記錄*/void search2(FLY t,int n) char s120; char s220; int i; clrscr(); /*清屏*/ printf("please input the start-city:"); scanf("%s",s1); /*輸入起飛城市名*/ printf("pl

16、ease input the end-city:"); scanf("%s",s2); /*輸入降落城市名*/ for(i=0;i<n;i+)/*從第一條記錄開(kāi)始,直到最后一條*/ if(strcmp(s1,ti.city1)=0)&&(strcmp(s2,ti.city2)=0) /*記錄中的城市和待比較的是否相等*/ break; /*相等,則返回該記錄的下標(biāo)號(hào),程序提前結(jié)結(jié)束*/ if(i>n-1) /*如果整數(shù)i值大于n-1,說(shuō)明沒(méi)找到*/ printf("not foundn"); else printf(

17、"flightname start-city end-city start-time end-time room price discountn"); /*找到,顯示記錄*/ printf("-n"); printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7sn",ti.planenumber,ti.city1,ti.city2,ti.time1,ti.time2,ti.room,ti.price,ti.discount); /*訂票*/void book(FLY t,int n) char s20,

18、number110,name110,id120,flightname110; int i,j=0,m,k,count1; clrscr(); /*清屏*/ printf("How many tickets do you want to book:"); scanf("%d",&m); printf("number name ID book-count flightnamen"); /*提示信息*/ printf("-n"); for(k=0;k<m;k+) scanf("%s",n

19、umber1); gotoxy(13,4+k);/*光標(biāo)跳到地址欄*/ scanf("%s",name1);/*輸入訂票客戶姓名*/ gotoxy(25,4+k); scanf("%s",id1);/*輸入證件號(hào)*/ gotoxy(43,4+k); scanf("%d",&count1);/*輸入訂票票數(shù)*/ gotoxy(53,4+k); scanf("%s",flightname1);/*輸入航班號(hào)*/ for(i=0;i<n;i+)/*從第一條記錄開(kāi)始,直到最后一條*/ if(strcmp(fl

20、ightname1,ti.planenumber)=0) /*記錄中的航班名和待比較的是否相等*/ j=ti.sit; strcpy(ti.guestj.number,number1); strcpy(,name1); strcpy(ti.guestj.id,id1); ti.guestj.count=count1; strcpy(ti.guestj.flightname,flightname1); ti.room=ti.room-count1; ti.sit+; break; /*相等,則返回該記錄的下標(biāo)號(hào),程序提前結(jié)結(jié)束*/ if(i>n-1) /*如果整

21、數(shù)i值大于n-1,說(shuō)明沒(méi)找到*/ printf("Sorry!No this flightn"); m=m+2; k+; /*退票*/void quit(FLY t,int n) char s120,s220; /*保存待查找航班名和證件號(hào)字符串*/ int i,k,j,h,l,ch; clrscr(); /*清屏*/ printf("please input the flightname that you want to quit:"); scanf("%s",s1); /*輸入待查找航標(biāo)名*/ printf("pleas

22、e input the your id:"); scanf("%s",s2); /*輸入待查找證件號(hào)*/ printf("number name ID book-count flightnamen"); /*顯示提示*/ printf("-n"); for(i=0;i<n;i+)/*從第一條記錄開(kāi)始,直到最后一條*/ for(j=0;j<ti.sit;j+) if(strcmp(s1,ti.guestj.flightname)=0)&&(strcmp(s2,ti.guestj.id)=0) pri

23、ntf("%-11s%-16s%-16s%-14d%-10sn",ti.guestj.number,,ti.guestj.id,ti.guestj.count,ti.guestj.flightname); ti.room=ti.room+ti.guestj.count; l=j; h=i; break; i=h; if(i>n-1) /*如果整數(shù)i值大于n-1,說(shuō)明沒(méi)找到*/ printf("not foundn"); else printf("Are you sure delete it(1/0)n"

24、;); /*確認(rèn)是否要?jiǎng)h除*/ scanf("%d",&ch); /*輸入一個(gè)整數(shù)0或1*/ if(ch=1) /*如果確認(rèn)刪除整數(shù)為1*/ for(k=l+1;k<ti.sit;k+) strcpy(ti.guestk-1.number,ti.guestk.number); /*將后一條記錄的姓名拷貝到前一條*/ strcpy(,); strcpy(ti.guestk-1.id,ti.guestk.id); ti.guestk-1.count=ti.guestk.count; strcpy(ti.g

25、uestk-1.flightname,ti.guestk.flightname); ti.sit-; printf("quit success!n");/*提示退票成功*/ /*修改航班信息*/void channge(FLY t,int n) char s20; /*要?jiǎng)h除記錄的姓名*/ int i,j; clrscr(); /*清屏*/ printf("please input the flightname that you want to channge:"); /*提示信息*/ scanf("%s",s);/*輸入航班名*/

26、for(i=0;i<n;i+)/*從第一條記錄開(kāi)始,直到最后一條*/ if(strcmp(s,ti.planenumber)=0) /*記錄中的航班名和待比較的是否相等*/ break; /*相等,則返回該記錄的下標(biāo)號(hào),程序提前結(jié)結(jié)束*/ if(i>n-1) /*如果整數(shù)i值大于n-1,說(shuō)明沒(méi)找到*/ printf("not foundn"); else printf("flightname start-city end-city start-time end-time room price discountn"); /*找到,顯示原先記錄*

27、/ printf("-n"); printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7sn",ti.planenumber,ti.city1,ti.city2,ti.time1,ti.time2,ti.room,ti.price,ti.discount); printf("please input the new information:n"); scanf("%s",ti.planenumber);/*輸入航班名*/ gotoxy(13,6+i);/*光標(biāo)跳到地址欄*/ scan

28、f("%s",ti.city1);/*輸入起始城市*/ gotoxy(25,6+i); scanf("%s",ti.city2);/*輸入終點(diǎn)城市*/ gotoxy(35,6+i); scanf("%s",ti.time1);/*輸入起飛時(shí)間*/ gotoxy(47,6+i); scanf("%s",ti.time2);/*輸入降落時(shí)間*/ gotoxy(57,6+i); scanf("%d",ti.room);/*輸入座位號(hào)*/ gotoxy(64,6+i); scanf("%s&q

29、uot;,ti.price);/*輸入票價(jià)*/ gotoxy(71,6+i); scanf("%s",ti.discount);/*輸入折扣*/ /*保存資料*/void save(FLY t,int n) int i,j; FILE *fp; /*指向文件的指針*/ if(fp=fopen("record1.txt","wb")=NULL) /*打開(kāi)文件,并判斷打開(kāi)是否正常*/ printf("can not open filen");/*沒(méi)打開(kāi)*/ exit(1); /*退出*/ printf("nS

30、aving filen"); /*輸出提示信息*/ fprintf(fp,"%d",n); /*將記錄數(shù)寫(xiě)入文件*/ fprintf(fp,"rn"); /*將換行符號(hào)寫(xiě)入文件*/ for(i=0;i<n;i+) fprintf(fp,"%s %s %s %s %s %d %s %s",ti.planenumber,ti.city1,ti.city2,ti.time1,ti.time2,ti.room,ti.price,ti.discount); fprintf(fp,"rn"); /*將換行符號(hào)寫(xiě)

31、入文件*/ fprintf(fp,"%d",ti.sit); /*將記錄數(shù)寫(xiě)入文件*/ fprintf(fp,"rn"); /*將換行符號(hào)寫(xiě)入文件*/ for(j=0;j<ti.sit;j+) fprintf(fp,"%s %s %s %d %s",ti.guestj.number,,ti.guestj.id,ti.guestj.count,ti.guestj.flightname);/*格式寫(xiě)入記錄*/ fprintf(fp,"rn"); /*將換行符號(hào)寫(xiě)入文件*/ fclose

32、(fp);/*關(guān)閉文件*/ printf("*save success*n"); /*顯示保存成功*/*讀入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組*/int load(FLY t) int i,n,j; FILE *fp; /*指向文件的指針*/ if(fp=fopen("record1.txt","rb")=NULL)/*打開(kāi)文件*/ printf("can not open filen"); /*不能打開(kāi)*/ exit(1); /*退出*/ fscanf(fp,"%d",&n); /*讀入記錄數(shù)*/ for(i=0;i<n;i+) fscanf(fp,"%s %s %s %s %s %d %s %s",ti.planenumber,ti.city1,ti.city2,ti.time1,ti.time

溫馨提示

  • 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)論