![](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/0c44f5cf-92c8-4d21-835e-3aac7816f98d/0c44f5cf-92c8-4d21-835e-3aac7816f98dpic.jpg)
![航班售票系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計_第1頁](https://static.zsdocx.com/FlexPaper/FileRoot/2019-6/5/22/0c44f5cf-92c8-4d21-835e-3aac7816f98d/0c44f5cf-92c8-4d21-835e-3aac7816f98d1.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計實驗報告</p><p><b> 二、應(yīng)用題 </b></p><p> 航班信息的查詢與檢索</p><p> 該設(shè)計要求對飛機航班信息進行排序和查找??砂春桨嗟暮桨嗵?、起點站、終點站、起飛時間以及到達時間等信息進行查詢。</p><p> 對于本設(shè)計,先按關(guān)鍵字對航
2、班記錄進行排序,然后利用二分查找法對排好序的航班記錄按關(guān)鍵字實現(xiàn)快速查找,注意,滿足條件的記錄可能有多條。</p><p> 每個航班記錄包括八項,分別是:航班號、起點站、終點站、班期、起飛時間、到達時間、飛機型號以及票價等,假設(shè)航班信息表(8條記錄)如下表8-1所示。</p><p> 其中航班號一項的格式為:CZ3869,其中CZ是航空公司的別稱,用兩個大寫字母表示,后4位為航班編
3、號,這種航班號關(guān)鍵字可分成兩段,即字母和數(shù)字。其余七項輸入內(nèi)容因為不涉及本設(shè)計的核心,因此除了票價為數(shù)值型外,均定義為字符串型即可??稍黾佑喥惫芾砟K。</p><p><b> 一、需求分析 </b></p><p> 為達到題目的設(shè)計要求,選用文件讀取方式來存儲和讀取航班信息。因此可分為以下幾個板塊設(shè)計系統(tǒng)。</p><p> voi
4、d add(); //函數(shù)聲明增加航班信息函數(shù)</p><p> void print(); //顯示航班信息</p><p> int search();//查找航班信息</p><p> void dingpiao(); //訂票</p><p> void tuipiao();//退票</p&
5、gt;<p> void read(); //讀取文件</p><p> void save(); //保存文件</p><p> void output();//輸出格式</p><p> void chushihua();//系統(tǒng)初始化</p><p> void build();
6、//建立數(shù)據(jù)文件</p><p> void paixu(int c);//按航班號從小到大排序</p><p><b> 二、環(huán)境說明 </b></p><p> 計算機品牌:戴爾7520</p><p> 計算機系統(tǒng):windows7</p><p> 計算機硬件配置:處理器Int
7、el i7-3612QMCPU</p><p><b> 內(nèi)存 8.00GB</b></p><p> 系統(tǒng)類型 64位操作系統(tǒng)</p><p> 編譯軟件:C-free5、Visual C++6.0</p><p><b> 三、詳細(xì)設(shè)計: </b></p><p>
8、;<b> 算法說明:</b></p><p> 子函數(shù)add()聲明增加航班信息函數(shù)</p><p> 子函數(shù)print()顯示航班信息</p><p> 子函數(shù)search()功能為查找航班信息,使用二分查找法查找所需航班信息,使用關(guān)鍵字查找方法</p><p> 子函數(shù)dingpiao實現(xiàn)訂票功能<
9、/p><p> 子函數(shù)tuipiao()實現(xiàn)退票功能</p><p> 子函數(shù)read()可從文件中讀取數(shù)據(jù)</p><p> 子函數(shù)save()保存數(shù)據(jù)到文件中</p><p> 子函數(shù)output()輸出航班信息</p><p> 子函數(shù)initialize()判斷是否已有存儲航班信息的文件</p&
10、gt;<p> 子函數(shù)build() 如沒有航班信息則新建立數(shù)據(jù)文件</p><p> 子函數(shù) paixu()用選擇排序法實現(xiàn)排序功能,按航班號從小到大排序</p><p><b> 存儲結(jié)構(gòu):</b></p><p> 本設(shè)計在程序中將航班信息用結(jié)構(gòu)數(shù)組進行存儲,程序結(jié)束后使用文本文件進行信息的讀入存儲。在下一次運行程序
11、時可以再次讀取該文件信息,并在程序中進行修改。</p><p><b> 流程圖:</b></p><p><b> 沒有文件信息</b></p><p><b> 有文件信息</b></p><p><b> 源代碼及程序說明:</b></
12、p><p> #include<stdio.h></p><p> #include<string.h></p><p> #include<process.h>//包含access函數(shù)的頭文件</p><p> #include<conio.h></p><p
13、> #define N 100//定義最多的航班數(shù)</p><p> #define PRINT " %s\t\t%s %s 星期%s\t\t%d\t\t%d\t\t%s\t\t%d\t\t%d \n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].takeoff,s[i].arrive,s[i].typ
14、e,s[i].price,s[i].count </p><p> struct air </p><p><b> {</b></p><p> char num[20];//航班號</p><p> char start[20]; //起始站</p><p
15、> char over[20];//終點站</p><p> char time[40];//班期</p><p> int takeoff; //起飛時間 </p><p> int arrive; //到達時間</p><p> char type[10];
16、 //機型 </p><p> int price; //機票價格 </p><p> int count;//機票數(shù)量</p><p><b> }s[N];</b></p><p> int i,m=0,j; //定義全局變量,m為航班數(shù) </p&g
17、t;<p> char ii[10]; //操作判斷yes或no </p><p> void add(); //函數(shù)聲明增加航班信息函數(shù)</p><p> void print(); //顯示航班信息</p><p> int search();//查找航班信息</p><p>
18、 void dingpiao();//訂票</p><p> void tuipiao();//退票</p><p> void read();//讀取文件</p><p> void save();//保存文件</p><p> void output();//輸出格式</p><p>
19、; void initialize();//系統(tǒng)初始化</p><p> void build();//建立數(shù)據(jù)文件</p><p> void paixu(int c);//按航班號從小到大排序</p><p> int main()</p><p><b> {</b></p>
20、<p><b> int j; </b></p><p> initialize();//系統(tǒng)初始化判斷是否存在原始數(shù)據(jù)文件</p><p> printf("\n");</p><p> printf(" ==============================
21、 \n"); </p><p> printf(" ==歡迎使用航班信息管理系統(tǒng)!== \n ");</p><p> printf(" ============================== \n"); </p><p><b> do&l
22、t;/b></p><p><b> { </b></p><p> printf(" ==== 1.增加航班信息 ====\n"</p><p> " ==== 2.瀏覽航班信息 ====\n"</p><p> " ==== 3.查找航班信息
23、 ====\n"</p><p> " ==== 4.訂票業(yè)務(wù) ====\n" </p><p> " ==== 5.退票業(yè)務(wù) ====\n"</p><p> " ==== 0.退出 ====\n");</p><p> printf(" ===
24、===========================\n"); </p><p> printf("請在0-6中選擇以回車鍵結(jié)束: ");</p><p> scanf("%d",&j);</p><p><b> switch(j)</b></p><p&
25、gt;<b> {</b></p><p> case 1: add();</p><p><b> break;</b></p><p> case 2:print();</p><p><b> break;</b></p><p>
26、; case 3:search();</p><p><b> break;</b></p><p> case 4:dingpiao();</p><p><b> break;</b></p><p> case 5:tuipiao();</p><p>
27、<b> break; </b></p><p> case 0:</p><p><b> save();</b></p><p> printf("\n謝謝使用,再見!");</p><p><b> break;</b></p&g
28、t;<p><b> }</b></p><p> }while(j!=0);//判斷是否調(diào)用其他函數(shù)</p><p><b> return 0;</b></p><p><b> }</b></p><p> void initialize()
29、//定義系統(tǒng)初始化函數(shù)</p><p><b> {</b></p><p> if(access("C:\\hangban.txt",0)) //確定文件或文件夾的訪問權(quán)限。即檢查某個文件的存取方式,比如//說是只讀方式、只寫方式等。如果指定的存取方式有效,則函數(shù)返回0,否則函數(shù)返回-1。</p><p>&l
30、t;b> {</b></p><p><b> build();</b></p><p><b> }</b></p><p><b> else</b></p><p><b> read();</b></p>
31、<p><b> }</b></p><p> void build()//定義建立數(shù)據(jù)文件函數(shù)</p><p><b> {</b></p><p> FILE *fp;</p><p> if((fp=fopen("C:\\hangban.txt&qu
32、ot;,"wb"))==NULL)//打開文件并判定是否出錯 </p><p><b> {</b></p><p> printf("創(chuàng)建文件失敗! ");</p><p> getchar();</p><p><b> return;</b&
33、gt;</p><p><b> }</b></p><p> printf(" =======================\n");</p><p> printf(" 請依次輸入航班信息:\n"); </p><p> printf("
34、 =======================\n");</p><p> for(i=0;i<N;i++)</p><p><b> {</b></p><p> printf("請輸入航班號: "); </p><p> scanf("%s",&
35、amp;s[i].num);</p><p> printf("請輸入起始站: ");</p><p> scanf("%s",s[i].start);</p><p> printf("請輸入終點站: ");</p><p> scanf("%s"
36、;,s[i].over);</p><p> printf("請輸入班期(星期幾): ");</p><p> scanf("%s",s[i].time);</p><p> printf("請輸入起飛時間:"); </p><p> scanf("%d
37、",&s[i].takeoff); </p><p> printf("請輸入到達時間:");</p><p> scanf("%d",&s[i].arrive); </p><p> printf("請輸入航班的機型:");</p><p>
38、; scanf("%s",s[i].type); </p><p> printf("請輸入航班機票價格:");</p><p> scanf("%d",&s[i].price);</p><p> printf("請輸入機票數(shù): ");</p>
39、<p> scanf("%d",&s[i].count);</p><p> fwrite(&s[i],sizeof(struct air),1,fp);</p><p><b> m++;</b></p><p> printf("\n添加完畢,是否繼續(xù)添加? 請鍵入y或n以
40、回車鍵結(jié)束:");</p><p> scanf("%s",ii);</p><p> printf("\n");</p><p> if(strcmp(ii,"y")!=0)//判斷是否繼續(xù)添加航班信息</p><p><b> {</b&g
41、t;</p><p> fclose(fp);//關(guān)閉文件</p><p><b> return;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b&
42、gt;</p><p> void read() //定義讀取文件函數(shù)</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p> if((fp=fopen("C:\\hangban.txt","
43、;r"))==NULL)</p><p><b> {</b></p><p> printf("創(chuàng)建文件失敗! ");</p><p> getchar();</p><p><b> return;</b></p><p><b
44、> }</b></p><p><b> i=0;</b></p><p> while(!feof(fp))</p><p><b> {</b></p><p> fread(&s[i],sizeof(struct air),1,fp);//逐塊讀取數(shù)據(jù)&
45、lt;/p><p><b> i++;</b></p><p> m++; //計算存在航班數(shù)</p><p><b> }</b></p><p><b> m--;</b></p><
46、p> fclose(fp);</p><p><b> }</b></p><p> void save()//定義保存函數(shù)</p><p><b> {</b></p><p><b> FILE *fp;</b></p><p>
47、 if((fp=fopen("C:\\hangban.txt","w"))==NULL) </p><p><b> {</b></p><p> printf("創(chuàng)建文件失敗! ");</p><p> getchar();</p><p><
48、b> return;</b></p><p><b> }</b></p><p> for(i=0;i<m;i++)//逐塊保存數(shù)據(jù)</p><p> fwrite(&s[i],sizeof(struct air),1,fp);</p><p> fclose(fp);&
49、lt;/p><p><b> }</b></p><p> void add()//定義增加航班信息函數(shù)</p><p><b> {</b></p><p><b> do{</b></p><p> printf("請依次輸入您要
50、增加的航班信息(以回車鍵結(jié)束): \n"); </p><p> printf("==================\n");</p><p> printf("請輸入航班號: "); </p><p> scanf("%s",&s[m].num);</p&
51、gt;<p> printf("請輸入起始站: ");</p><p> scanf("%s",s[m].start);</p><p> printf("請輸入終點站: ");</p><p> scanf("%s",s[m].over);</p&g
52、t;<p> printf("請輸入班期(星期幾): ");</p><p> scanf("%s",s[m].time);</p><p> printf("請輸入起飛時間:"); </p><p> scanf("%d",&s[m].takeof
53、f); </p><p> printf("請輸入到達時間:");</p><p> scanf("%d",&s[m].arrive); </p><p> printf("請輸入航班的機型:");</p><p> scanf("%s"
54、,s[m].type); </p><p> printf("請輸入航班機票價格:");</p><p> scanf("%d",&s[m].price);</p><p> printf("請輸入機票數(shù): ");</p><p> scanf("
55、%d",&s[m].count);</p><p><b> m++;</b></p><p> printf("\n添加完畢,是否繼續(xù)添加?請鍵入y或n以回車鍵結(jié)束:");</p><p> scanf("%s",ii);</p><p> }whil
56、e(!strcmp(ii,"y"));//判斷是否繼續(xù)添加</p><p><b> }</b></p><p> void output()//定義輸出格式函數(shù)</p><p><b> {</b></p><p> printf("\n航班號\t\t
57、起始站\t\t終點站\t\t班期\t\t起飛時間\t\t到達時間 機型\t\t機票價格 \t\t機票數(shù)\n");</p><p> for(i=0;i<m;i++)</p><p> printf(PRINT);</p><p><b> }</b></p><p> void pri
58、nt()//定義顯示航班信息函數(shù)</p><p><b> {</b></p><p> printf("\n目前我們有如下航班:\n");</p><p> output();//調(diào)用輸出格式函數(shù)</p><p> printf("\n請按回車鍵返回上層菜單 "
59、);</p><p> getchar();</p><p> getchar();</p><p><b> } </b></p><p> int again(int c)</p><p><b> {</b></p><p> int
60、 start=0;</p><p> int end=m-1;</p><p><b> int time;</b></p><p> char n[20];</p><p><b> switch(c)</b></p><p><b> {</b&
61、gt;</p><p><b> case 1:</b></p><p> printf("\n請輸入航班號: ");</p><p> scanf("%s",n); //輸入查詢的航班號</p><p> printf("\
62、n您所查找的航班信息為:\n ");</p><p> paixu(c); //從小到大排序一次 </p><p> while(start<=end)</p><p><b> {</b></p><p> j=(start+end)/2;&
63、lt;/p><p> if(strcmp(s[j].num,n)==0) //二分查找法 </p><p><b> {</b></p><p><b> j=start;</b></p><p> while(j<=end)</p><p><b>
64、 {</b></p><p> if(strcmp(s[j].num,n)==0)</p><p><b> {</b></p><p> printf("\n航班號\t\t起始站\t\t終點站\t\t班期\t\t起飛時間\t\t到達時間 機型\t\t機票價格\t\t機票數(shù)\n");</p>
65、;<p> printf("%s\t\t%s\t\t%s\t\t星期%s\t\t%d\t\t%d\t\t%s\t\t%d\t\t%d \n",s[j].num,s[j].start,s[j].over,s[j].time,s[j].takeoff,s[j].arrive,s[j].type,s[j].price,s[j].count);</p><p><b> i
66、i=='n';</b></p><p><b> i=j;</b></p><p><b> }</b></p><p><b> j++;</b></p><p><b> }</b></p><p
67、><b> break;</b></p><p><b> } </b></p><p> else if (strcmp(n,s[j].num)<0) </p><p><b> end=j-1;</b></p><p> else if(strc
68、mp(n,s[j].num)>0) </p><p> start=j+1; </p><p> if(start>end)</p><p><b> { </b></p><p> printf("對不起,沒有您需要的信息!");</p><p><
69、;b> break;</b></p><p><b> } </b></p><p><b> } </b></p><p><b> return 0;</b></p><p><b> case 2:</b>
70、</p><p> printf("請輸入起始站: ");</p><p> scanf("%s",n);</p><p> printf("\n您所查找的航班信息為:\n ");</p><p> paixu(c); //
71、從小到大排序一次 </p><p> while(start<=end)</p><p><b> { </b></p><p> i=(start+end)/2;</p><p> if(strcmp(s[i].start,n)==0) //二分查找法 </p><p><
72、;b> {</b></p><p><b> i=start;</b></p><p> while(i<=end)</p><p><b> {</b></p><p> if(strcmp(s[i].start,n)==0)</p><p&g
73、t;<b> {</b></p><p> printf("\n航班號\t\t起始站\t\t終點站\t\t班期\t\t起飛時間\t\t到達時間 機型\t\t機票價格\t\t機票數(shù)\n");</p><p> printf(PRINT);</p><p><b> }i++;</b><
74、/p><p><b> }</b></p><p><b> break;</b></p><p><b> } </b></p><p> else if (strcmp(n,s[i].start)<0) </p><p><b&
75、gt; end=i-1;</b></p><p> else if(strcmp(n,s[i].start)>0) </p><p> start=i+1; </p><p> if(start>end)</p><p><b> { </b></p><p>
76、 printf("對不起,沒有您需要的信息!");</p><p><b> break;</b></p><p><b> } </b></p><p><b> } </b></p><p><b> return 0
77、;</b></p><p><b> case 3:</b></p><p> printf("請輸入終點站: ");</p><p> scanf("%s",n); </p><p> printf("\n您所查找的航班信息為:\n ");
78、</p><p> paixu(c); //從小到大排序一次 </p><p> while(start<=end)</p><p><b> { </b></p><p> i=(end+start)/2;</p><p>
79、if(strcmp(s[i].over,n)==0) //二分查找法 </p><p><b> {</b></p><p><b> i=start;</b></p><p> while(i<=end)</p><p><b> {</b></p>
80、;<p> if(strcmp(s[i].over,n)==0)</p><p><b> {</b></p><p> printf("\n航班號\t\t起始站\t\t終點站\t\t班期\t\t起飛時間\t\t到達時間 機型\t\t機票價格\t\t機票數(shù)\n");</p><p> printf
81、(PRINT);</p><p><b> }i++;</b></p><p><b> }</b></p><p><b> break;</b></p><p><b> } </b></p><p> else
82、 if (strcmp(n,s[i].over)<0) </p><p><b> end=i-1;</b></p><p> else if(strcmp(n,s[i].over)>0) </p><p> start=i+1; </p><p> if(start>end)</p>
83、;<p><b> { </b></p><p> printf("對不起,沒有您需要的信息!");</p><p><b> break;</b></p><p><b> } </b></p><p><b>
84、 }</b></p><p> return 0; </p><p><b> case 4: </b></p><p> printf("請輸入起飛時間: ");</p><p> scanf("%d",&time);</p>&l
85、t;p> printf("\n您所查找的航班信息為:\n ");</p><p> paixu(c); //從小到大排序一次 </p><p> while(start<=end)</p><p><b> {</b></p><
86、p> i=(end+start)/2;</p><p> if(s[i].takeoff==time) //二分查找法 </p><p><b> {</b></p><p><b> i=start;</b></p><p> while(i<=end)</p>
87、<p><b> {</b></p><p> if(s[i].takeoff==time)</p><p><b> {</b></p><p> printf("\n航班號\t\t起始站\t\t終點站\t\t班期\t\t起飛時間\t\t到達時間 機型\t\t機票價格\t\t機票數(shù)\n
88、");</p><p> printf(PRINT);</p><p><b> }i++;</b></p><p><b> }</b></p><p><b> break;</b></p><p><b> }
89、 </b></p><p> else if (s[i].takeoff>time) </p><p><b> end=i-1;</b></p><p> else if(s[i].takeoff<time) </p><p> start=i+1; </p><p&
90、gt; if(start>end)</p><p><b> { </b></p><p> printf("對不起,沒有您需要的信息!");</p><p><b> break;</b></p><p><b> } </b>
91、</p><p><b> }</b></p><p> return 0; </p><p><b> case 5:</b></p><p> printf("請輸入到達時間: ");</p><p> scanf("%d&qu
92、ot;,&time); </p><p> printf("\n您所查找的航班信息為:\n ");</p><p> paixu(c); //從小到大排序一次 </p><p> while(start<=end)</p><p><b>
93、 {</b></p><p> i=(end+start)/2;</p><p> if(s[i].arrive==time) //二分查找法 </p><p><b> {</b></p><p><b> i=start;</b></p><p>
94、; while(i<=end)</p><p><b> {</b></p><p> if(s[i].arrive==time)</p><p><b> {</b></p><p> printf("\n航班號\t\t起始站\t\t終點站\t\t班期\t\t起飛時間\t
95、\t到達時間 機型\t\t機票價格\t\t機票數(shù)\n");</p><p> printf(PRINT);</p><p><b> }i++;</b></p><p><b> }</b></p><p><b> break;</b></p&g
96、t;<p><b> } </b></p><p> else if (s[i].arrive>time) </p><p><b> end=i-1;</b></p><p> else if(s[i].arrive<time) </p><p> sta
97、rt=i+1; </p><p> if(start>end)</p><p><b> { </b></p><p> printf("對不起,沒有您需要的信息!");</p><p><b> break;</b></p><p>&l
98、t;b> } </b></p><p><b> } </b></p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p>
99、<p> int search()//定義查詢函數(shù)</p><p><b> {</b></p><p> char n[20];int c; </p><p><b> do</b></p><p><b> { </b></p>
100、<p> printf("\n請選擇查詢方式: \n");</p><p> printf(" ==== 1.按航班號查詢 ====\n"</p><p> " ==== 2.按起始站查詢====\n"</p><p> " ==== 3.按終點站查詢 ====\n&q
101、uot;</p><p> " ==== 4.起飛時間 ====\n"</p><p> " ==== 5.到達時間 ====\n" );</p><p> scanf("%d",&c);</p><p><b> again(c);</b>
102、</p><p> printf("是否重新查找?請鍵入y或n以回車鍵結(jié)束 ");</p><p> scanf("%s",ii);</p><p> }while(!strcmp(ii,"y")); //判定是否重新查找</p><p>&
103、lt;b> return 0;</b></p><p><b> } </b></p><p> void dingpiao()//定義訂票業(yè)務(wù)函數(shù)</p><p><b> {</b></p><p> int n;int c=1;</p><p
104、> char a[10]="n";</p><p><b> do</b></p><p><b> {</b></p><p> again(c); </p><p> if(!strcmp(ii,&q
105、uot;y"))</p><p><b> {</b></p><p> printf("對不起!沒有找到您所需要的航班,所以不能訂票。\n");//未查找到所需航班</p><p> printf("\n請按回車鍵返回上層菜單 ");</p><p> get
106、char();</p><p> getchar();</p><p> strcpy(ii,"n");</p><p><b> break;</b></p><p><b> }</b></p><p><b> do</b&
107、gt;</p><p><b> {</b></p><p> printf("請輸入您要訂的機票數(shù)(以回車鍵結(jié)束): ");</p><p> scanf("%d",&n);//輸入所訂機票數(shù)</p><p> if(n<=0)//判定機票數(shù)是否出
108、錯</p><p><b> {</b></p><p> printf("輸入錯誤!至少需訂1張機票。\n");</p><p><b> }</b></p><p> else if(s[i].count==0)//判定機票是否售完</p><p&
109、gt;<b> {</b></p><p> printf("對不起,你所選擇的航班的機票已售完!\n");</p><p><b> break;</b></p><p><b> }</b></p><p> else if(s[i].coun
110、t!=0&&s[i].count>=n)//判定機票數(shù)是否大于等于訂票數(shù)</p><p><b> {</b></p><p> s[i].count=s[i].count-n;</p><p> printf("訂票成功! ");</p><p><b>
111、break;</b></p><p><b> }</b></p><p> else if(s[i].count<n)//判定機票數(shù)是否小于訂票數(shù)</p><p><b> { </b></p><p> printf("對不起,你所選擇的航班只剩 %d張機票\
112、n", s[i-2].count);</p><p> printf("是否需要重新輸入機票數(shù)?請輸入y或n以回車鍵結(jié)束: ");//判定是否重新輸入訂票數(shù)</p><p> scanf("%s",a);</p><p><b> }</b></p><p> }
113、while(!strcmp(a,"y"));</p><p> printf("\n是否需要訂其他航班的機票?請輸入y或n以回車鍵結(jié)束: ");</p><p> scanf("%s",a);</p><p> }while(!strcmp(a,"y"));//判定是否繼續(xù)訂票
114、</p><p><b> }</b></p><p> void tuipiao()//定義退票函數(shù)</p><p><b> {</b></p><p><b> int n;</b></p><p><b> int c=1
115、;</b></p><p> char a[10];</p><p><b> do</b></p><p><b> {</b></p><p> again(c);//調(diào)用查詢函數(shù)</p><p> if(!strcmp(ii,"y&q
116、uot;))</p><p><b> {</b></p><p> printf("對不起!沒有找到您所需要的航班,所以不能退票。\n");</p><p> printf("\n請按回車鍵返回上層菜單 ");</p><p> getchar();</p>
117、<p> getchar();</p><p> strcpy(ii,"n");</p><p><b> break;</b></p><p><b> }</b></p><p> printf("請輸入您要退的機票數(shù)目: ");&l
118、t;/p><p> scanf("%d",&n); //輸入所退票數(shù)</p><p> if(n<=0)//判定票數(shù)是否有效</p><p> printf("輸入錯誤!至少需退1張機票。 ");</p><p><b> else </b></p
119、><p><b> {</b></p><p> s[i].count=s[i].count+n;</p><p> printf("退票成功! ");</p><p><b> }</b></p><p> printf("是否繼續(xù)?
120、請鍵入y或n以回車鍵結(jié)束: ");//判定是否繼續(xù)退票</p><p> scanf("%s",a);</p><p> }while(!strcmp(a,"y"));//判定并跳出循環(huán) </p><p><b> }</b></p><p> void
121、 paixu(int c)//定義從小到大排序函數(shù)</p><p><b> {</b></p><p><b> int k,j;</b></p><p> struct air t;</p><p><b> switch(c)</b></p>&
122、lt;p><b> {</b></p><p><b> case 1:</b></p><p> for(i=0;i<m;i++)//選擇法排序</p><p><b> {</b></p><p><b> k=i;</b>&l
123、t;/p><p> for(j=i+1;j<m;j++)</p><p> if(strcmp(s[k].num,s[j].num)>0)</p><p><b> k=j;</b></p><p><b> if(i!=k)</b></p><p><
124、b> {</b></p><p><b> t=s[k];</b></p><p> s[k]=s[i];</p><p><b> s[i]=t;</b></p><p><b> }</b></p><p><b&g
125、t; }</b></p><p><b> break;</b></p><p><b> case 2:</b></p><p> for(i=0;i<m;i++)//選擇法排序</p><p><b> {</b></p><
126、;p><b> k=i;</b></p><p> for(j=i+1;j<m;j++)</p><p> if(strcmp(s[k].start,s[j].start)>0)</p><p><b> k=j;</b></p><p><b> if(i!=
127、k)</b></p><p><b> {</b></p><p><b> t=s[k];</b></p><p> s[k]=s[i];</p><p><b> s[i]=t;</b></p><p><b> }&
128、lt;/b></p><p><b> }</b></p><p><b> break;</b></p><p><b> case 3:</b></p><p> for(i=0;i<m;i++)//選擇法排序</p><p>
129、<b> {</b></p><p><b> k=i;</b></p><p> for(j=i+1;j<m;j++)</p><p> if(strcmp(s[k].over,s[j].over)>0)</p><p><b> k=j;</b><
130、;/p><p><b> if(i!=k)</b></p><p><b> {</b></p><p><b> t=s[k];</b></p><p> s[k]=s[i];</p><p><b> s[i]=t;</b>
131、;</p><p><b> }</b></p><p><b> }</b></p><p><b> break;</b></p><p><b> case 4:</b></p><p> for(i=0;i<
132、m;i++)//選擇法排序</p><p><b> {</b></p><p><b> k=i;</b></p><p> for(j=i+1;j<m;j++)</p><p> if(s[k].takeoff>s[j].takeoff)</p><p&
133、gt;<b> k=j;</b></p><p><b> if(i!=k)</b></p><p><b> {</b></p><p><b> t=s[k];</b></p><p> s[k]=s[i];</p><p
134、><b> s[i]=t;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> break;</b></p><p><b> case 5:</b></
135、p><p> for(i=0;i<m;i++)//選擇法排序</p><p><b> {</b></p><p><b> k=i;</b></p><p> for(j=i+1;j<m;j++)</p><p> if(s[k].arrive>s
136、[j].arrive)</p><p><b> k=j;</b></p><p><b> if(i!=k)</b></p><p><b> {</b></p><p><b> t=s[k];</b></p><p>
137、 s[k]=s[i];</p><p><b> s[i]=t;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> break;</b></p><p><
138、b> }</b></p><p><b> }</b></p><p><b> 至此本程序結(jié)束</b></p><p><b> 四、調(diào)試分析:</b></p><p><b> 測試數(shù)據(jù):</b></p>&l
139、t;p> 1、輸入信息后創(chuàng)建后的文件</p><p> 2、再次啟動程序瀏覽信息:</p><p><b> 3、增加航班信息:</b></p><p> 顯示增加信息后結(jié)果:</p><p> 4、查找航班信息模塊:</p><p><b> a、按航班號查詢<
140、/b></p><p><b> b、按起始站查詢:</b></p><p><b> c、按終點站查詢;</b></p><p> d、按起飛時間查詢:</p><p> e、按到達時間查詢:</p><p><b> 5、訂票模塊:</b&
141、gt;</p><p> 訂票后查詢該航班信息:</p><p><b> 6、退票模塊:</b></p><p> 退票后查詢該航班信息:</p><p><b> 五、課設(shè)總結(jié): </b></p><p> 在本次課程設(shè)計中,我主要負(fù)責(zé)的是航班信息管理系統(tǒng)的設(shè)計
142、與調(diào)試,在實驗過程中,遇到了很多問題。比如:信息寫入文件后讀出信息時產(chǎn)生錯誤,而且會使文件里的信息丟失,后改變所使用的寫入格式解決該問題。而后在對航班信息的查找模塊的完善時,程序邏輯不明確導(dǎo)致無法查找信息,故改為使用關(guān)鍵字精確查找信息。由此可見,一次實驗的設(shè)計、構(gòu)思、調(diào)試、完善都是寶貴的經(jīng)驗,能很好地考驗我們對數(shù)據(jù)結(jié)構(gòu)這門課程的認(rèn)知程度與掌握程度,加深對本課程知識點的認(rèn)識。但鑒于在設(shè)計過程中出現(xiàn)的諸多問題,反映出對課程的理解程度還是不夠
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--航班管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---飛機售票系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告---窗口售票系統(tǒng)
- c語言航班售票系統(tǒng)課程設(shè)計報告----航班售票系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---火車售票系統(tǒng)的實現(xiàn)
- 《數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》航班查詢系統(tǒng)實驗報告
- 數(shù)據(jù)結(jié)構(gòu)航空航班課程設(shè)計--航空客運訂票系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--航班信息查詢與檢索系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計----huffman編碼
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計報告--航班信息查詢與檢索
- 數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計報告——航班信息查詢系統(tǒng)(c++)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計
評論
0/150
提交評論