版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、河南城建學(xué)院課程設(shè)計(jì)報(bào)告書(shū)專 業(yè):計(jì)算機(jī)科學(xué)與技術(shù) 課程設(shè)計(jì)名稱:數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題 目:飛機(jī)航班訂票系統(tǒng)班 級(jí):xxx學(xué)號(hào):x姓名:xx同 組 人 員:x指 導(dǎo) 老 師:x完 成 時(shí) 間:2012-2-17 摘要隨著時(shí)代的進(jìn)步社會(huì)分工的不斷細(xì)化,各個(gè)行業(yè)聯(lián)系的不斷密切,人們出行越來(lái)越多,出行的方式也是百花齊放,作為空中重要的交通工具,飛機(jī)航空系統(tǒng)也在不斷地得到優(yōu)化,其中重要的一項(xiàng)就是飛機(jī)航空訂票系統(tǒng),因此好的訂票系統(tǒng)關(guān)系著人們的日常出行方便與否,設(shè)計(jì)并編制出符合人們需要的航空訂票系統(tǒng)是一項(xiàng)繁重而艱巨的任務(wù),需要我們認(rèn)真去完成。本文采用C作為前臺(tái)開(kāi)發(fā)工具,VC6.0作為程序代碼的實(shí)現(xiàn),旨在實(shí)現(xiàn)
2、對(duì)現(xiàn)有飛機(jī)訂票系統(tǒng)中遇到的各種情況進(jìn)行良好的改進(jìn),是作為嵌入式系統(tǒng)應(yīng)用于機(jī)場(chǎng)的良好軟件。關(guān)鍵詞:C,VC 6.0,飛機(jī)訂票系統(tǒng)目錄目錄3第一章開(kāi)發(fā)環(huán)境和開(kāi)發(fā)工具41.1C語(yǔ)言簡(jiǎn)介41.2 開(kāi)發(fā)背景41.3 開(kāi)發(fā)環(huán)境4第二章 算法思想52.1 系統(tǒng)需求分析52.2 系統(tǒng)總體設(shè)計(jì)52.2.1 系統(tǒng)設(shè)計(jì)目標(biāo)52.2.2 開(kāi)發(fā)設(shè)計(jì)思想52.2.3 系統(tǒng)功能模塊設(shè)計(jì)62.3 算法思想描述7第三章算法實(shí)現(xiàn).113.1 數(shù)據(jù)結(jié)構(gòu)113.2 程序模塊113.3 各模塊之間的調(diào)用關(guān)系123.4 源程序代碼12第四章測(cè)試與分析214.1 測(cè)試數(shù)據(jù)選擇21 4.2 測(cè)試結(jié)果分析22總 結(jié)22心得體會(huì)22參考文獻(xiàn)23
3、第一章 開(kāi)發(fā)環(huán)境和開(kāi)發(fā)工具1.1 C/C+語(yǔ)言介紹1.2 開(kāi)發(fā)背景隨著科學(xué)技術(shù)的不斷發(fā)展,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大功能已為人們所深刻認(rèn)識(shí),它己進(jìn)入人類(lèi)社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。采用計(jì)算機(jī)進(jìn)行信息化管理已成為衡量各個(gè)國(guó)家科學(xué)化和現(xiàn)代化的重要標(biāo)志,而交通方式的全面自動(dòng)化、信息化則是其中重要的組成部分,在很大程度上影響著企業(yè)的經(jīng)濟(jì)效益和社會(huì)效益。因此,本文所研究的航空訂票系統(tǒng)具有一定的使用價(jià)值和現(xiàn)實(shí)意義。1.3 開(kāi)發(fā)環(huán)境 本文所采用的開(kāi)發(fā)環(huán)境主要是基于VC6.0和基于面向?qū)ο蟪绦蛟O(shè)計(jì)的c+。VC是個(gè)平臺(tái)開(kāi)工具。該軟件使用TC2為內(nèi)核,提供WINDOWS平臺(tái)的開(kāi)發(fā)界面,因此也就支持WI
4、NDOWS平臺(tái)下的功能,例如剪切、復(fù)制、粘貼和查找替換等。而且在功能上也有它的獨(dú)特特色例如語(yǔ)法加亮、C內(nèi)嵌匯編、自定義擴(kuò)展庫(kù)的支持等。第二章 算法思想2.1 系統(tǒng)需求分析隨著經(jīng)濟(jì)全球化的推進(jìn)以及企業(yè)激烈的競(jìng)爭(zhēng),各大機(jī)場(chǎng)訂票系統(tǒng)已經(jīng)越來(lái)越不能適應(yīng)人們?nèi)粘3鲂械木置妫晕覀儸F(xiàn)在需要一個(gè)檢索迅速、查找方便、易修改功能齊全方便的系統(tǒng)來(lái)適應(yīng)我們的需求。問(wèn)題的提出:為了減少人工工作量,提高工作效率,使機(jī)場(chǎng)管理員的工作更加有效的進(jìn)行。2.2系統(tǒng)總體設(shè)計(jì)2.21 系統(tǒng)設(shè)計(jì)目標(biāo)本文研究開(kāi)發(fā)的航空訂票系統(tǒng)用于完成航空訂票工作,有以下三個(gè)方面的目標(biāo):【1】 支持航空管理公司更加便捷的管理【2】 支持航空公司高效率
5、的滿足人們空行需求,包括與班機(jī)有關(guān)的訂票,退票,查詢等功能?!?】支持航空公司隨時(shí)增加或者是刪除航班信息 2.22 開(kāi)發(fā)設(shè)計(jì)思想基于以上系統(tǒng)設(shè)計(jì)目標(biāo),本文在開(kāi)發(fā)人事管理信息系統(tǒng)時(shí)遵循了以下開(kāi)發(fā)設(shè)計(jì)思想:采用現(xiàn)有的軟硬件環(huán)境及先進(jìn)的管理系統(tǒng)開(kāi)發(fā)方案,從而達(dá)到充分利用現(xiàn)有資源,提高系統(tǒng)開(kāi)發(fā)水平和應(yīng)用效果的目的。盡量達(dá)到操作過(guò)程中的直觀、方便、實(shí)用、安全等要求。系統(tǒng)采用模塊化程序設(shè)計(jì)方法,既便于系統(tǒng)功能的各種組合和修改,又便于未參與開(kāi)發(fā)的技術(shù)維護(hù)人員補(bǔ)充、維護(hù)。系統(tǒng)應(yīng)具備數(shù)據(jù)庫(kù)維護(hù)功能,及時(shí)根據(jù)用戶需求進(jìn)行數(shù)據(jù)的添加、刪除、修改、等操作。2.23 系統(tǒng)功能模塊設(shè)計(jì)本系統(tǒng)分為六個(gè)模塊:增加航班模塊、瀏
6、覽航班模塊、查找航班模塊、航班排序模塊、訂票模塊、退票模塊。得到如圖所示系統(tǒng)功能模塊圖。飛機(jī)航班訂票系統(tǒng)增加航班信息瀏覽航班信息航班排序模塊退票系統(tǒng)增加機(jī)票保存查找函數(shù)排序函數(shù)查找函數(shù)減少機(jī)票數(shù)目查找函數(shù)增加機(jī)票數(shù)目查找航班信息訂票系統(tǒng)輸出函數(shù)圖2-1 系統(tǒng)功能模塊圖2.3 算法思想描述【1】系統(tǒng)啟動(dòng)時(shí)通過(guò)輸入航班信息來(lái)增加乘客的選擇范圍【2】當(dāng)選擇功能1時(shí),進(jìn)入增加航班模塊【3】當(dāng)選擇功能2時(shí),進(jìn)入瀏覽航班信息模塊【4】當(dāng)選擇功能3時(shí),進(jìn)入查找航班信息模塊【5】當(dāng)選擇功能4時(shí),進(jìn)入航班排序模塊,有兩種選擇一是從航班號(hào)從大到小,二是從航班號(hào)從小到大【6】當(dāng)需要訂票時(shí),可以選擇功能5進(jìn)入訂票模塊
7、,【7】當(dāng)有的乘客需要退票時(shí)也可以進(jìn)入退票模塊第三章 算法實(shí)現(xiàn)3.1 數(shù)據(jù)結(jié)構(gòu)航空管理系統(tǒng)是一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),航班的所有信息都保存在數(shù)據(jù)庫(kù)中。3.2 程序模塊 為實(shí)現(xiàn)函數(shù)功能特定義一下函數(shù)模型,具體程序參考程序源代碼模塊void add();/函數(shù)聲明增加航班信息函數(shù)void print(); /顯示航班信息void search();/查找航班信息void dingpiao();/訂票業(yè)務(wù)void tuipiao();/退票void read();/讀取文件void save();/保存文件void output();/輸出格式void paixu();/航班排序void chushihu
8、a();/系統(tǒng)初始化void build();/建立數(shù)據(jù)文件void paixu1();/按航班號(hào)從小到大排序void paixu2();/從大到小3.3 各模塊之間的調(diào)用關(guān)系程序從主函數(shù)開(kāi)始,首先調(diào)用chushihua函數(shù)用來(lái)判斷系統(tǒng)本身是否已經(jīng)有原始數(shù)據(jù)文件,如果已經(jīng)有原始數(shù)據(jù)則調(diào)用read函數(shù)否則調(diào)用build函數(shù)用來(lái)創(chuàng)建數(shù)據(jù)文件。進(jìn)入系統(tǒng)開(kāi)始頁(yè)面,當(dāng)進(jìn)入增加航班信息模塊時(shí)調(diào)用add函數(shù)和save函數(shù),進(jìn)入瀏覽信息模塊后調(diào)用print函數(shù)來(lái)顯示已有數(shù)據(jù)文件,進(jìn)入查詢信息模塊調(diào)用search函數(shù),dingpiao和tuipiao函數(shù)中首先調(diào)用search函數(shù),然后在相應(yīng)的增加或者是減少飛機(jī)
9、航票。3.4 程序源代碼#include<stdio.h>#include<string.h>#include<process.h>#define N 9999/定義最多的航班數(shù)#define PRINT "%dtt%stt%stt星期%stt%dn ",si.num,si.start,si.over,si.time,si.count /宏定義輸出格式struct air /定義結(jié)構(gòu)體數(shù)組int num;char start20;char over20;char time10;int count;sN;int i,m=0;/定義全局變量c
10、har ii10;void add();/函數(shù)聲明增加航班信息函數(shù)void print(); /顯示航班信息void search();/查找航班信息void dingpiao();/訂票業(yè)務(wù)void tuipiao();/退票void read();/讀取文件void save();/保存文件void output();/輸出格式void paixu();/航班排序void chushihua();/系統(tǒng)初始化void build();/建立數(shù)據(jù)文件void paixu1();/按航班號(hào)從小到大排序void paixu2();/從大到小void main()/主函數(shù)int j; chushi
11、hua();/系統(tǒng)初始化判斷是否存在原始數(shù)據(jù)文件printf(" 歡迎使用飛機(jī)訂票系統(tǒng)n");do printf("= "); printf("1.增加航班信息n" "t2.瀏覽航班信息n" "tt3.查找航班信息(按航班號(hào))tt(_)n" "ttt4.航班排序(按航班號(hào))n" "tttt5.訂票業(yè)務(wù)n" "to()ottt6.退票業(yè)務(wù)n" "tttttt0.退出n");printf("= ");
12、 printf("請(qǐng)?jiān)?-6中選擇以回車(chē)鍵結(jié)束: ");scanf("%d",&j);fflush(stdin);switch(j)case 1: add();break;case 2:print();break;case 3:search();break;case 4:paixu();break;case 5:dingpiao();break;case 6:tuipiao();break; case 0:save();printf("謝謝使用,再見(jiàn)! ");break;default:printf("您輸入不合法,
13、請(qǐng)按回車(chē)鍵繼續(xù)");getchar(); while(j!=0);/判斷是否調(diào)用其他函數(shù) void chushihua()/定義系統(tǒng)初始化函數(shù)if(access("hangban.dat",0)build();elseread();void build()/定義建立數(shù)據(jù)文件函數(shù)FILE *fp;/定義文件指針if(fp=fopen("hangban.dat","wb")=NULL)/打開(kāi)文件并判定是否出錯(cuò) printf("創(chuàng)建文件失敗! ");getchar();return;printf("請(qǐng)
14、依次輸入航班信息(以回車(chē)鍵結(jié)束):n"); printf("- n");for(i=0;i<N;i+)printf("請(qǐng)輸入航班號(hào): "); scanf("%d",&si.num);printf("請(qǐng)輸入起始站: ");scanf("%s",si.start);printf("請(qǐng)輸入終點(diǎn)站: ");scanf("%s",si.over);printf("請(qǐng)輸入時(shí)間(星期幾): ");scanf("%s&
15、quot;,si.time);printf("請(qǐng)輸入機(jī)票數(shù): ");scanf("%d",&si.count);fwrite(&si,sizeof(struct air),1,fp);m+;printf("添加完畢,是否繼續(xù)添加?請(qǐng)鍵入y或n以回車(chē)鍵結(jié)束:");scanf("%s",ii);if(strcmp(ii,"y")!=0)/判斷是否繼續(xù)添加航班信息fclose(fp);/關(guān)閉文件return;void read()/定義讀取文件函數(shù)FILE *fp;if(fp=fope
16、n("hangban.dat","r")=NULL)printf("創(chuàng)建文件失敗! ");getchar();return;i=0;while(!feof(fp)fread(&si,sizeof(struct air),1,fp);/逐塊讀取數(shù)據(jù)i+;m+;/計(jì)算存在航班數(shù)m-;fclose(fp);void save()/定義保存函數(shù)FILE *fp;if(fp=fopen("hangban.dat","wb")=NULL) printf("創(chuàng)建文件失敗! ");g
17、etchar();return;for(i=0;i<m;i+)/逐塊保存數(shù)據(jù)fwrite(&si,sizeof(struct air),1,fp);fclose(fp);void add()/定義增加航班信息函數(shù)doprintf("請(qǐng)依次輸入您要增加的航班信息(以回車(chē)鍵結(jié)束): n"); /打印提示信息printf("- n");printf("請(qǐng)輸入航班號(hào): "); scanf("%d",&sm.num);printf("請(qǐng)輸入起始站: ");scanf("%s
18、",sm.start);printf("請(qǐng)輸入終點(diǎn)站: ");scanf("%s",sm.over);printf("請(qǐng)輸入時(shí)間: ");scanf("%s",sm.time);printf("請(qǐng)輸入機(jī)票數(shù): ");scanf("%d",&sm.count);m+;printf("添加完畢,是否繼續(xù)添加?請(qǐng)鍵入y或n以回車(chē)鍵結(jié)束:");scanf("%s",ii);while(!strcmp(ii,"y&qu
19、ot;);/判斷是否繼續(xù)添加void output()/定義輸出格式函數(shù)printf("航班號(hào)tt起始站tt終點(diǎn)站tt時(shí)間tt機(jī)票數(shù)n"); for(i=0;i<m;i+)printf(PRINT);/打印出信息void print()/定義顯示航班信息函數(shù)printf("n目前我們有如下航班:n");output();/調(diào)用輸出格式函數(shù)printf("n請(qǐng)按回車(chē)鍵返回上層菜單 ");getchar();getchar(); void search()/定義查詢函數(shù)int n;doprintf("n請(qǐng)輸入航班號(hào): &q
20、uot;);scanf("%d",&n);/輸入查詢的航班號(hào)for(i=0;i<m;i+) if(si.num=n)/按航班號(hào)判定輸出條件 printf("n您所查找的航班信息為:n ");printf("航班號(hào)tt起始站tt終點(diǎn)站tt時(shí)間tt機(jī)票數(shù) nn");printf(PRINT);/顯示信息 printf("n查詢完畢,按回車(chē)鍵繼續(xù)");getchar();getchar();return;printf("n對(duì)不起,沒(méi)有您需要的信息!n ");printf("是否
21、重新查找?請(qǐng)鍵入y或n以回車(chē)鍵結(jié)束 ");scanf("%s",ii);while(!strcmp(ii,"y");/判定是否重新查找 void dingpiao()/定義訂票業(yè)務(wù)函數(shù)int n;char a10="y"dosearch();/調(diào)用查詢模塊if(!strcmp(ii,"n")printf("對(duì)不起!沒(méi)有找到您所需要的航班,所以不能訂票。n");printf("n請(qǐng)按回車(chē)鍵返回上層菜單 ");getchar();getchar();strcpy(ii,
22、"n");break;doprintf("請(qǐng)輸入您要訂的機(jī)票數(shù)(以回車(chē)鍵結(jié)束): ");scanf("%d",&n);if(n<=0)/判定機(jī)票數(shù)是否出錯(cuò)printf("輸入錯(cuò)誤!至少需訂1張機(jī)票。n");else if(si.count=0)/判定機(jī)票是否售完printf("對(duì)不起,你所選擇的航班的機(jī)票已售完!n");break;else if(si.count!=0&&si.count>=n)/判定機(jī)票數(shù)是否大于等于訂票數(shù)si.count=si.count
23、-n;printf("訂票成功! ");break;else if(si.count<n)/判定機(jī)票數(shù)是否小于訂票數(shù) printf("對(duì)不起,你所選擇的航班只剩 %d張機(jī)票n", si.count);printf("是否需要重新輸入機(jī)票數(shù)?請(qǐng)輸入y或n以回車(chē)鍵結(jié)束: ");/判定是否重新輸入訂票數(shù)scanf("%s",a);while(!strcmp(a,"y");printf("是否需要訂其他航班的機(jī)票?請(qǐng)輸入y或n以回車(chē)鍵結(jié)束: ");scanf("%s&
24、quot;,a);while(!strcmp(a,"y");/判定是否繼續(xù)訂票void tuipiao()/定義退票函數(shù)int n;char a10;dosearch();/調(diào)用查詢函數(shù)if(!strcmp(ii,"n")printf("對(duì)不起!沒(méi)有找到您所需要的航班,所以不能退票。n");printf("n請(qǐng)按回車(chē)鍵返回上層菜單 ");getchar();getchar();strcpy(ii,"n");break;printf("請(qǐng)輸入您要退的機(jī)票數(shù)目: ");scanf
25、("%d",&n);if(n<=0)/判定票數(shù)是否有效printf("輸入錯(cuò)誤!至少需退1張機(jī)票。 ");else si.count=si.count+n;printf("退票成功! ");printf("是否繼續(xù)? 請(qǐng)鍵入y或n以回車(chē)鍵結(jié)束: ");/判定是否繼續(xù)退票scanf("%s",a);while(!strcmp(a,"y");/判定并跳出循環(huán) void paixu()/定義排序函數(shù)int n;printf("n* "); prin
26、tf("1.按航班號(hào)從小到大排序n" "t2.按航班號(hào)從大到小排序n");printf("* "); printf("請(qǐng)?jiān)?-2中選擇以回車(chē)鍵結(jié)束: ");scanf("%d",&n);switch(n)case 1:paixu1();/調(diào)用從小到大排序函數(shù)break;case 2:paixu2();/調(diào)用從大到小排序函數(shù)break;printf("排序后的航班信息為:n");output();/顯示排序后航班信息printf("n請(qǐng)按回車(chē)鍵返回上層菜單 &
27、quot;); getchar(); getchar();void paixu1()/定義從小到大排序函數(shù)int k,j;struct air t;for(i=0;i<m;i+)/選擇法排序k=i;for(j=i+1;j<m;j+)if(sk.num>sj.num)k=j;if(i!=k)t=sk;sk=si;si=t;void paixu2()/定義從大到小排序函數(shù)int k,j;struct air t;for(i=0;i<m;i+)k=i;for(j=i+1;j<m;j+)if(sk.num<sj.num)k=j;if(i!=k)t=sk;sk=si;si=t;第四章 測(cè)試與分析4.1測(cè)試數(shù)據(jù)選擇 表4-14.2測(cè)試結(jié)果分析在輸入測(cè)試數(shù)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版出租車(chē)充電樁建設(shè)與維護(hù)服務(wù)合同3篇
- 專業(yè)化弱電維修保障服務(wù)協(xié)議(2024年版)版B版
- 2024版買(mǎi)賣(mài)意向協(xié)議書(shū)范本
- 2024年鋼結(jié)構(gòu)裝修合同樣本
- 2024版專業(yè)餐飲管理承包協(xié)議樣本版
- 2024庚辛雙方關(guān)于基礎(chǔ)設(shè)施建設(shè)施工合同
- 2024新能源研發(fā)團(tuán)隊(duì)人員股權(quán)激勵(lì)合同
- 2024年甲乙雙方關(guān)于城市燃?xì)夤艿烙盟芰瞎懿墓?yīng)合同
- 2024青島購(gòu)房合同范文
- 2024年知識(shí)產(chǎn)權(quán)許可合同:授權(quán)乙方使用甲方專利技術(shù)生產(chǎn)產(chǎn)品
- 安徽省淮北市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)部編版期末考試((上下)學(xué)期)試卷及答案
- 注漿工安全技術(shù)措施
- 大學(xué)生職業(yè)生涯規(guī)劃
- 干燥綜合征的護(hù)理查房
- 江蘇省徐州市2023-2024學(xué)年六年級(jí)上學(xué)期期末科學(xué)試卷(含答案)2
- 五年級(jí)數(shù)學(xué)上冊(cè)七大重點(diǎn)類(lèi)型應(yīng)用題
- 2023上海高考英語(yǔ)詞匯手冊(cè)單詞背誦默寫(xiě)表格(復(fù)習(xí)必背)
- 1離子反應(yīng)課件2024-2025學(xué)年人教版高一化學(xué)
- 期末 (試題) -2024-2025學(xué)年人教PEP版英語(yǔ)五年級(jí)上冊(cè)
- 人民軍隊(duì)歷史與優(yōu)良傳統(tǒng)(2024)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 富血小板血漿(PRP)臨床實(shí)踐與病例分享課件
評(píng)論
0/150
提交評(píng)論