版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第一章 緒論1.1:項(xiàng)目背景描述1、課程設(shè)計(jì)性質(zhì)與目的:C語言程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程。C程序課程設(shè)計(jì)是學(xué)習(xí)C語言程序設(shè)計(jì)的非常重要的實(shí)踐環(huán)節(jié),通過本課程設(shè)計(jì)使學(xué)生進(jìn)一步鞏固課堂所學(xué),全面熟悉,掌握C語言程序設(shè)計(jì)的基本方法和技巧,進(jìn)一步提高編寫程序、分析程序及上機(jī)操作、調(diào)試程序的能力,讓學(xué)生加深理解,提高動(dòng)手操作能力及分析問題和解決問題的能力。2、課程設(shè)計(jì)包含的知識(shí)點(diǎn):1掌握并熟練利用C語言的基本數(shù)據(jù)類型與各種表達(dá)式,程序的流程控制語句。2掌握數(shù)組的基本概念。掌握一維數(shù)組與二維數(shù)組的使用,掌握字符數(shù)組與字符串的關(guān)系。3熟練掌握指針、地址、指針類型的概念及其使用。掌握指針變量的定義與初始化
2、、指針的間接訪問和表達(dá)式,掌握指針與數(shù)組、函數(shù)、字符串的聯(lián)系4掌握函數(shù)的定義,函數(shù)的返回值,函數(shù)的調(diào)用,函數(shù)的聲明,函數(shù)的形式參數(shù)和實(shí)際參數(shù)之間的關(guān)系,了解函數(shù)的作用區(qū)間。5掌握結(jié)構(gòu)體的概念,結(jié)構(gòu)體類型的定義,結(jié)構(gòu)體變量的定義和初始化,結(jié)構(gòu)體成員的表示。結(jié)構(gòu)體與指針、函數(shù)的關(guān)系。第二章 可行性分析一、問題描述:假設(shè)某航空公司只有N架X個(gè)座位的飛機(jī),每架飛機(jī)每天飛行一趟。通過該系統(tǒng)來實(shí)現(xiàn)機(jī)票的訂購問題。二、功能要求:1、本系統(tǒng)采用一個(gè)包含N個(gè)數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個(gè)數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:起飛地、目的地 航班號(hào)、航班定額。2、本系統(tǒng)顯示這樣的菜單:1.)錄入: 可以錄入航班情況(數(shù)據(jù)可以存儲(chǔ)在一個(gè)數(shù)據(jù)
3、文件中)2.)瀏覽:航班信息瀏覽功能需要提供顯示操作; 1、 查詢:可提供按照航班號(hào)、起點(diǎn)站、終點(diǎn)站、飛行時(shí)間、查詢,可以查詢某個(gè)航線的情況(如,輸入航班號(hào),起飛抵達(dá)城市,確定航班是否滿倉);另外要提供鍵盤式選擇菜單以實(shí)現(xiàn)功能選擇。(1) 輸入航班信息(2) 輸出航班信息(3) 查找航班信息(4)訂票預(yù)約(5)刪除定票預(yù)約(6)退出系統(tǒng)2、 本系統(tǒng)成功執(zhí)行菜單的每個(gè)信息,選項(xiàng)4)和5)將要求額外的輸入,并且它們都允許用戶收回其輸入。3、 查找航班信息既可按線路查,也可按目的地查。4、在兩次運(yùn)行之間,數(shù)據(jù)被保存于一個(gè)文件里,當(dāng)本程序重新開始的時(shí)候,它首先從該文件讀入數(shù)據(jù)三、算法提示:1、數(shù)據(jù)結(jié)構(gòu)
4、:結(jié)構(gòu)體類型數(shù)組2、數(shù)據(jù)庫結(jié)構(gòu):下表構(gòu)成該系統(tǒng)的基本數(shù)據(jù)庫。航班號(hào)起點(diǎn)終點(diǎn)起飛時(shí)間intcharcharchar 四、測(cè)試數(shù)據(jù):錄入北京到上海的星期一起飛的航班,假設(shè)其定額為30,上海到南京的航班起飛時(shí)間為星期二。五、其它:在實(shí)現(xiàn)系統(tǒng)基本功能后,完善系統(tǒng)的其它功能。在測(cè)試數(shù)據(jù)是發(fā)現(xiàn)退票系統(tǒng)出現(xiàn)問題,退票數(shù)會(huì)超過定額,在加上一個(gè)限定條件后成功?;诒鞠到y(tǒng)可以嘗試輸出所定票的的顧客的完整信息,包括姓名,身份證號(hào)等個(gè)人信息,由于時(shí)間有限,尚未添加。第三章 總體設(shè)計(jì)3.1 課程設(shè)計(jì)題目:航班訂票系統(tǒng)3.2. 內(nèi)容摘要:假設(shè)某航空公司只有M架N個(gè)座位的飛機(jī),每架飛機(jī)每天飛行一趟。通過該系統(tǒng)來實(shí)現(xiàn)機(jī)票的訂
5、購問題。3.3. 關(guān)鍵字:函數(shù) 數(shù)組 結(jié)構(gòu)體 文件 循環(huán)語句 多分支結(jié)構(gòu)3.4總體設(shè)計(jì)方案的選定:程序的功能要求:1、本系統(tǒng)采用一個(gè)包含N個(gè)數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個(gè)數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:起飛地、目的地 航班號(hào)、座次號(hào)碼、座次訂出與否標(biāo)記、訂座者的姓名和訂座者的身份證號(hào)碼。2、本系統(tǒng)顯示這樣的菜單:(4) 輸入航班信息(5) 輸出航班信息(6) 查找航班信息a.顯示空座的數(shù)量b.顯示空座的信息c.顯示已訂座的信息d.起飛時(shí)間(4)訂票預(yù)約(5)刪除定票預(yù)約(6)退出系統(tǒng)4、 本系統(tǒng)成功執(zhí)行菜單的每個(gè)信息,選項(xiàng)4)和5)將要求額外的輸入,并且它們都允許用戶收回其輸入。5、 查找航班信息既可按航班號(hào)來實(shí)
6、現(xiàn)。4、在兩次運(yùn)行之間,數(shù)據(jù)被保存于一個(gè)文件里,當(dāng)本程序重新開始的時(shí)候,它首先從該文件讀入數(shù)據(jù) 第四章 詳細(xì)設(shè)計(jì)4.1采用自定向下,逐步細(xì)化的思想,將該系統(tǒng)分解成各個(gè)相對(duì)獨(dú)立且可以運(yùn)行的模塊。在文件的開始定義出本系統(tǒng)中將會(huì)用到的所有的變量以及對(duì)各個(gè)模塊的調(diào)用,將作為頭文件使各個(gè)組員能夠使用。如下所示:hangban.h#include<stdio.h>/標(biāo)準(zhǔn)輸入、輸出頭文件#include<string.h>/包含字符串函數(shù)處理頭文件#define N 9999/定義最多的航班數(shù)#define PRINT "%dtt%stt%stt星期%stt%dn &quo
7、t;,si.num,si.qidian,si.zhongdian,si.time,si.count /宏定義輸出格式struct air /定義結(jié)構(gòu)體數(shù)組int num;/定義航班號(hào)char qidian20;/航班起始站char zhongdian20;/終點(diǎn)站char time10;/飛行時(shí)間int count;/機(jī)票數(shù)量sN;int i,m=0;/定義全局變量char hangbanhao10;void add();/函數(shù)聲明增加航班信息函數(shù)void print(); /顯示航班信息void search();/查找航班信息void dingpiao();/訂票業(yè)務(wù)void tuipia
8、o();/退票void read();/讀取文件void save();/保存文件void output();/輸出格式void paixu();/航班排序void build();/建立數(shù)據(jù)文件void paixu1();/按航班號(hào)從小到大排序void paixu2();/從大到小4.2系統(tǒng)總體結(jié)構(gòu)4.3航班信息錄入流程圖4.4訂票系統(tǒng)流程圖在有航班信息的情況下可以進(jìn)行訂票操作。開始查詢所有 是否輸入航班號(hào)顯示航班信息確定訂票否保存4.5查詢結(jié)構(gòu)代碼void search()/定義查詢函數(shù)int n;doprintf("n請(qǐng)輸入航班號(hào): ");scanf("%d
9、",&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查詢完畢,按回車鍵繼續(xù)");getchar();getchar();return; printf("n對(duì)不起,沒有您需要的信息!n ");printf("是否重新查找?請(qǐng)鍵入y或n以回車鍵結(jié)束 &
10、quot;);scanf("%s",hangbanhao);while(!strcmp(hangbanhao,"y");/判定是否重新查找4.6訂票業(yè)務(wù)代碼void dingpiao()/定義訂票業(yè)務(wù)函數(shù)int n;char a10="y"dosearch();/調(diào)用查詢模塊doprintf("請(qǐng)輸入您要訂的機(jī)票數(shù)(以回車鍵結(jié)束): ");scanf("%d",&n);/輸入所訂機(jī)票數(shù)if(n<=0)/判定機(jī)票數(shù)是否出錯(cuò)printf("輸入錯(cuò)誤!至少需訂1張機(jī)票。n&qu
11、ot;);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-n;printf("訂票成功! ");break;else if(si.count<n)/判定機(jī)票數(shù)是否小于訂票數(shù) printf("對(duì)不起,你所選擇的航班只剩 %d張機(jī)票n", si.count);printf("是否需要重新輸入機(jī)
12、票數(shù)?請(qǐng)輸入y或n以回車鍵結(jié)束: ");/判定是否重新輸入訂票數(shù)scanf("%s",a);while(!strcmp(a,"y");printf("是否需要訂其他航班的機(jī)票?請(qǐng)輸入y或n以回車鍵結(jié)束: ");scanf("%s",a);while(!strcmp(a,"y");/判定是否繼續(xù)訂票4.7退票業(yè)務(wù)代碼void tuipiao()/定義退票函數(shù)int n;char a10;dosearch();/調(diào)用查詢函數(shù)printf("請(qǐng)輸入您要退的機(jī)票數(shù)目: ")
13、;scanf("%d",&n);/輸入所退票數(shù)if(n<=0)/判定票數(shù)是否有效printf("輸入錯(cuò)誤!至少需退1張機(jī)票。 ");else si.count=si.count+n;printf("退票成功! ");printf("是否繼續(xù)? 請(qǐng)鍵入y或n以回車鍵結(jié)束: ");/判定是否繼續(xù)退票scanf("%s",a);while(!strcmp(a,"y");/判定并跳出循環(huán) 第五章 總結(jié)一周的C語言課程設(shè)計(jì)即將結(jié)束,通過此次課程設(shè)計(jì)也學(xué)會(huì)綜合運(yùn)用理論知識(shí)來
14、分析和解決實(shí)際問題的能力、養(yǎng)成嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的程序設(shè)計(jì)習(xí)慣實(shí)現(xiàn)由知識(shí)向智能的初步轉(zhuǎn)化學(xué)會(huì)循軟件開發(fā)過程的基本規(guī)范運(yùn)用結(jié)構(gòu)化程序設(shè)計(jì)的方法按照課程設(shè)計(jì)的題目要求并能夠完成設(shè)計(jì)、編寫、調(diào)試和測(cè)試應(yīng)用程序及編寫文檔的任務(wù) 程序整體上運(yùn)行與題目要求很吻合算法大多比較通用各個(gè)函數(shù)模塊的正確性、完備性、對(duì)輸入的容錯(cuò)能力以及算法的進(jìn)一步改進(jìn)在設(shè)計(jì)中都有表述這道題使我熟悉了文件的輸入輸出操作真切的感受到了fprintf和fwrite函數(shù)的區(qū)別?;仡櫰鸫舜握n程設(shè)計(jì)至今我仍感慨頗多從理論到實(shí)踐在整整半個(gè)月的日子里我學(xué)到很多很多的東西不僅鞏固了以前所學(xué)過的知識(shí)而且學(xué)到了很多在書本上所沒有學(xué)到過的內(nèi)容。通過這次
15、課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的只有把所學(xué)的理論知識(shí)與實(shí)踐相結(jié)合起來從理論中得出結(jié)論才是真正的知識(shí)才能提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程遇到了各種各樣的問題同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處對(duì)以前所學(xué)過的知識(shí)理解得不夠深刻掌握得不夠牢固通過這次課程設(shè)計(jì)把以前所學(xué)過的知識(shí)重新溫故鞏固了所學(xué)的知識(shí)。 在編寫程序的過程中受到了其他同學(xué)的指點(diǎn)也許在某些程序方面會(huì)和有的同學(xué)想類似但是老師在我編程序過程中也起到了很大的作用我們?cè)贑語言這門課上還會(huì)繼續(xù)走下去以后還會(huì)經(jīng)常碰到我會(huì)努力。附1: 源代碼#include<stdio.h>/標(biāo)準(zhǔn)輸
16、入、輸出頭文件#include<string.h>/包含字符串函數(shù)處理頭文件#define N 9999/定義最多的航班數(shù)#define PRINT "%dtt%stt%stt星期%stt%dn ",si.num,si.qidian,si.zhongdian,si.time,si.count /宏定義輸出格式struct air /定義結(jié)構(gòu)體數(shù)組int num;/定義航班號(hào)char qidian20;/航班起始站char zhongdian20;/終點(diǎn)站char time10;/飛行時(shí)間int count;/機(jī)票數(shù)量sN;int i,m=0;/定義全局變量cha
17、r hangbanhao10;void add();/函數(shù)聲明增加航班信息函數(shù)void print(); /顯示航班信息void search();/查找航班信息void dingpiao();/訂票業(yè)務(wù)void tuipiao();/退票void read();/讀取文件void save();/保存文件void output();/輸出格式void paixu();/航班排序void build();/建立數(shù)據(jù)文件void paixu1();/按航班號(hào)從小到大排序void paixu2();/從大到小void main()/主函數(shù)int j; read(); printf("nt
18、t歡迎使用航班訂票系統(tǒng)!n"); printf("*n"); printf(" 1.增加航班信息n"); printf(" 2.瀏覽航班信息n"); printf(" 3.查找航班信息n"); printf(" 4.航班排序(按航班號(hào))n"); printf(" 5.辦理訂票業(yè)務(wù)n"); printf(" 6.辦理退票業(yè)務(wù)n"); printf(" 0.退出系統(tǒng)(exit)n"); printf("*n")
19、; printf("請(qǐng)?jiān)?-6中選擇以回車鍵結(jié)束: ");scanf("%d",&j);switch(j)case 1: add();/調(diào)用增加航班函數(shù)break;case 2:print();/調(diào)用顯示模塊break;case 3:search();/調(diào)用查找模塊break;case 4:paixu();/調(diào)用排序函數(shù)break;case 5:dingpiao();/調(diào)用訂票模塊break;case 6:tuipiao();/調(diào)用退票模塊break; case 0:save(); /退出系統(tǒng)printf("謝謝使用,再見! "
20、;);break; void read()/定義讀取文件函數(shù)FILE *fp;if(fp=fopen("hangban.dat","rb")=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",&q
21、uot;wb")=NULL) printf("創(chuàng)建文件失敗! ");getchar();return;for(i=0;i<m;i+)/逐塊保存數(shù)據(jù)fwrite(&si,sizeof(struct air),1,fp);fclose(fp);void add()/定義增加航班信息函數(shù)doprintf("請(qǐng)依次輸入您要增加的航班信息(以回車鍵結(jié)束): n"); /打印提示信息printf("- n");printf("請(qǐng)輸入航班號(hào): "); scanf("%d",&s
22、m.num);/讀取航班號(hào)printf("請(qǐng)輸入起始站: ");scanf("%s",sm.qidian);/讀取起始站printf("請(qǐng)輸入終點(diǎn)站: ");scanf("%s",sm.zhongdian);/讀取終點(diǎn)站printf("請(qǐng)輸入時(shí)間: ");scanf("%s",sm.time);/讀取時(shí)間printf("請(qǐng)輸入機(jī)票數(shù): ");scanf("%d",&sm.count);/讀取機(jī)票數(shù)m+;printf("
23、添加完畢,是否繼續(xù)添加?請(qǐng)鍵入y或n以回車鍵結(jié)束:");scanf("%s",hangbanhao);while(!strcmp(hangbanhao,"y");/判斷是否繼續(xù)添加void output()/定義輸出格式函數(shù)printf("航班號(hào)tt起始站tt終點(diǎn)站tt時(shí)間tt機(jī)票數(shù)n");/信息標(biāo)題 for(i=0;i<m;i+)printf(PRINT);/打印出信息void print()/定義顯示航班信息函數(shù)printf("n目前我們有如下航班:n");output();/調(diào)用輸出格式函數(shù)p
24、rintf("n請(qǐng)按回車鍵返回上層菜單 ");getchar();getchar(); void search()/定義查詢函數(shù)int n;doprintf("n請(qǐng)輸入航班號(hào): ");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
25、("n查詢完畢,按回車鍵繼續(xù)");getchar();getchar();return;printf("n對(duì)不起,沒有您需要的信息!n ");printf("是否重新查找?請(qǐng)鍵入y或n以回車鍵結(jié)束 ");scanf("%s",hangbanhao);while(!strcmp(hangbanhao,"y");/判定是否重新查找 void dingpiao()/定義訂票業(yè)務(wù)函數(shù)int n;char a10="y"doprintf("請(qǐng)輸入您要訂的機(jī)票數(shù)(以回車鍵結(jié)束)
26、: ");scanf("%d",&n);/輸入所訂機(jī)票數(shù)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-n;printf("訂票成功! ");break;else if(si
27、.count<n)/判定機(jī)票數(shù)是否小于訂票數(shù) printf("對(duì)不起,你所選擇的航班只剩 %d張機(jī)票n", si.count);printf("是否需要重新輸入機(jī)票數(shù)?請(qǐng)輸入y或n以回車鍵結(jié)束: ");/判定是否重新輸入訂票數(shù)scanf("%s",a);printf("是否需要訂其他航班的機(jī)票?請(qǐng)輸入y或n以回車鍵結(jié)束: ");scanf("%s",a);while(!strcmp(a,"y");/判定是否繼續(xù)訂票void tuipiao()/定義退票函數(shù)int n;char a10;dosearch();/調(diào)用查詢函數(shù)printf("請(qǐng)輸入您要退的機(jī)票數(shù)目: ");scanf("%d",&n);/輸入所退票數(shù)if(n<=
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年上??紡臉I(yè)資格證貨運(yùn)試題
- 2025年保山貨運(yùn)從業(yè)資格證題庫
- 2025年呼和浩特貨車從業(yè)資格考試題庫
- 城市綠化照明規(guī)劃
- 網(wǎng)絡(luò)安全風(fēng)險(xiǎn)管理準(zhǔn)則
- 餐飲業(yè)工會(huì)預(yù)算編制與控制
- 體育合作租賃合同
- 農(nóng)村旅游停電景點(diǎn)安全
- 高空動(dòng)物園設(shè)施維護(hù)合同
- 攝影棚作品市場(chǎng)推廣策略
- 未來當(dāng)兵職業(yè)生涯規(guī)劃書
- 鎂合金回收與再利用
- 帶狀皰疹中醫(yī)護(hù)理
- BOSS GT-6效果處理器中文說明書
- 網(wǎng)絡(luò)安全培訓(xùn)
- 【事業(yè)單位考試真題】《綜合基礎(chǔ)知識(shí)》必看考點(diǎn)《刑法》(2021年版)(附答案解析)
- 大學(xué)生職業(yè)規(guī)劃大賽成長賽道
- 第三單元(整體教學(xué)設(shè)計(jì))七年級(jí)語文上冊(cè)大單元教學(xué)名師備課系列(統(tǒng)編版2024)
- 魯教版五四制初中八年級(jí)化學(xué)全一冊(cè)全套教案
- 餐飲服務(wù)電子教案 學(xué)習(xí)任務(wù)4 雞尾酒調(diào)制
- 【大單元整體教學(xué)】教科版科學(xué)五年級(jí)上冊(cè)-第一單元《光》第1課有關(guān)光的思考-單元整體分析+課時(shí)公開課一
評(píng)論
0/150
提交評(píng)論