版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
C語言飛機訂票系統(tǒng)專業(yè)課程設(shè)計第一章緒論1.1:項目背景描述1、課程設(shè)計性質(zhì)與目的:C語言程序設(shè)計是一門實踐性很強的課程。C程序課程設(shè)計是學(xué)習(xí)C語言程序設(shè)計的非常重要的實踐環(huán)節(jié),通過本課程設(shè)計使學(xué)生進一步鞏固課堂所學(xué),全面熟悉,掌握C語言程序設(shè)計的基本方法和技巧,進一步提高編寫程序、分析程序及上機操作、調(diào)試程序的能力,讓學(xué)生加深理解,提高動手操作能力及分析問題和解決問題的能力。2、課程設(shè)計包含的知識點:1.掌握并熟練利用C語言的基本數(shù)據(jù)類型與各種表達式,程序的流程控制語句。2.掌握數(shù)組的基本概念。掌握一維數(shù)組與二維數(shù)組的使用,掌握字符數(shù)組與字符串的關(guān)系。3.熟練掌握指針、地址、指針類型的概念及其使用。掌握指針變量的定義與初始化、指針的間接訪問和表達式,掌握指針與數(shù)組、函數(shù)、字符串的聯(lián)系4.掌握函數(shù)的定義,函數(shù)的返回值,函數(shù)的調(diào)用,函數(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個座位的飛機,每架飛機每天飛行一趟。通過該系統(tǒng)來實現(xiàn)機票的訂購問題。二、功能要求:1、本系統(tǒng)采用一個包含N個數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:起飛地、目的地航班號、航班定額。2、本系統(tǒng)顯示這樣的菜單:1.)錄入:可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中)2.)瀏覽:航班信息瀏覽功能需要提供顯示操作;查詢:可提供按照航班號、起點站、終點站、飛行時間、查詢,可以查詢某個航線的情況(如,輸入航班號,起飛抵達城市,確定航班是否滿倉);另外要提供鍵盤式選擇菜單以實現(xiàn)功能選擇。輸入航班信息輸出航班信息查找航班信息(4)訂票預(yù)約(5)刪除定票預(yù)約(6)退出系統(tǒng)本系統(tǒng)成功執(zhí)行菜單的每個信息,選項4)和5)將要求額外的輸入,并且它們都允許用戶收回其輸入。查找航班信息既可按線路查,也可按目的地查。4、在兩次運行之間,數(shù)據(jù)被保存于一個文件里,當(dāng)本程序重新開始的時候,它首先從該文件讀入數(shù)據(jù)三、算法提示:1、數(shù)據(jù)結(jié)構(gòu):結(jié)構(gòu)體類型數(shù)組2、數(shù)據(jù)庫結(jié)構(gòu):下表構(gòu)成該系統(tǒng)的基本數(shù)據(jù)庫。航班號起點終點起飛時間intcharcharchar四、測試數(shù)據(jù):錄入北京到上海的星期一起飛的航班,假設(shè)其定額為30,上海到南京的航班起飛時間為星期二。五、其它:在實現(xiàn)系統(tǒng)基本功能后,完善系統(tǒng)的其它功能。在測試數(shù)據(jù)是發(fā)現(xiàn)退票系統(tǒng)出現(xiàn)問題,退票數(shù)會超過定額,在加上一個限定條件后成功?;诒鞠到y(tǒng)可以嘗試輸出所定票的的顧客的完整信息,包括姓名,身份證號等個人信息,由于時間有限,尚未添加。第三章總體設(shè)計3.1課程設(shè)計題目:航班訂票系統(tǒng)3.2.內(nèi)容摘要:假設(shè)某航空公司只有M架N個座位的飛機,每架飛機每天飛行一趟。通過該系統(tǒng)來實現(xiàn)機票的訂購問題。3.3.關(guān)鍵字:函數(shù)數(shù)組結(jié)構(gòu)體文件循環(huán)語句多分支結(jié)構(gòu)3.4.總體設(shè)計方案的選定:程序的功能要求:1、本系統(tǒng)采用一個包含N個數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,每個數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:起飛地、目的地航班號、座次號碼、座次訂出與否標(biāo)記、訂座者的姓名和訂座者的身份證號碼。2、本系統(tǒng)顯示這樣的菜單:輸入航班信息輸出航班信息查找航班信息a.顯示空座的數(shù)量b.顯示空座的信息c.顯示已訂座的信息d.起飛時間(4)訂票預(yù)約(5)刪除定票預(yù)約(6)退出系統(tǒng)本系統(tǒng)成功執(zhí)行菜單的每個信息,選項4)和5)將要求額外的輸入,并且它們都允許用戶收回其輸入。查找航班信息既可按航班號來實現(xiàn)。4、在兩次運行之間,數(shù)據(jù)被保存于一個文件里,當(dāng)本程序重新開始的時候,它首先從該文件讀入數(shù)據(jù)第四章詳細(xì)設(shè)計4.1采用自定向下,逐步細(xì)化的思想,將該系統(tǒng)分解成各個相對獨立且可以運行的模塊。在文件的開始定義出本系統(tǒng)中將會用到的所有的變量以及對各個模塊的調(diào)用,將作為頭文件使各個組員能夠使用。如下所示:hangban.h#include<stdio.h> //標(biāo)準(zhǔn)輸入、輸出頭文件#include<string.h> //包含字符串函數(shù)處理頭文件#defineN9999 //定義最多的航班數(shù)#definePRINT"%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n",s[i].num,s[i].qidian,s[i].zhongdian,s[i].time,s[i].count//宏定義輸出格式structair //定義結(jié)構(gòu)體數(shù)組{ intnum; //定義航班號 charqidian[20]; //航班起始站 charzhongdian[20]; //終點站 chartime[10]; //飛行時間 intcount; //機票數(shù)量}s[N];inti,m=0; //定義全局變量charhangbanhao[10];voidadd(); //函數(shù)聲明增加航班信息函數(shù)voidprint(); //顯示航班信息voidsearch(); //查找航班信息voiddingpiao(); //訂票業(yè)務(wù)voidtuipiao(); //退票voidread(); //讀取文件 voidsave(); //保存文件voidoutput(); //輸出格式voidpaixu(); //航班排序voidbuild(); //建立數(shù)據(jù)文件voidpaixu1(); //按航班號從小到大排序voidpaixu2(); //從大到小
4.2系統(tǒng)總體結(jié)構(gòu)4.3航班信息錄入流程圖4.4訂票系統(tǒng)流程圖在有航班信息的情況下可以進行訂票操作。開始開始查詢所有是查詢所有 否輸入航班號輸入航班號顯示航班信息顯示航班信息確定訂票 否確定訂票保存保存4.5查詢結(jié)構(gòu)代碼voidsearch() //定義查詢函數(shù){ intn; do { printf("\n請輸入航班號:"); scanf("%d",&n); //輸入查詢的航班號 for(i=0;i<m;i++) { if(s[i].num==n) //按航班號判定輸出條件 { printf("\n您所查找的航班信息為:\n"); printf("航班號\t\t起始站\t\t終點站\t\t時間\t\t機票數(shù)\n\n"); printf(PRINT); //顯示信息 printf("\n查詢完畢,按回車鍵繼續(xù)"); getchar(); getchar(); return; } } printf("\n對不起,沒有您需要的信息!\n"); printf("是否重新查找?請鍵入y或n以回車鍵結(jié)束"); scanf("%s",hangbanhao); }while(!strcmp(hangbanhao,"y"));//判定是否重新查找}4.6訂票業(yè)務(wù)代碼voiddingpiao() //定義訂票業(yè)務(wù)函數(shù){ intn; chara[10]="y"; do { search(); //調(diào)用查詢模塊 do { printf("請輸入您要訂的機票數(shù)(以回車鍵結(jié)束):"); scanf("%d",&n); //輸入所訂機票數(shù) if(n<=0) //判定機票數(shù)是否出錯 { printf("輸入錯誤!至少需訂1張機票。\n"); } elseif(s[i].count==0)//判定機票是否售完 { printf("對不起,你所選擇的航班的機票已售完!\n"); break; } elseif(s[i].count!=0&&s[i].count>=n) //判定機票數(shù)是否大于等于訂票數(shù) { s[i].count=s[i].count-n; printf("訂票成功!"); break; } elseif(s[i].count<n)//判定機票數(shù)是否小于訂票數(shù) { printf("對不起,你所選擇的航班只剩%d張機票\n",s[i].count); printf("是否需要重新輸入機票數(shù)?請輸入y或n以回車鍵結(jié)束:");//判定是否重新輸入訂票數(shù) scanf("%s",a); } }while(!strcmp(a,"y")); printf("是否需要訂其他航班的機票?請輸入y或n以回車鍵結(jié)束:"); scanf("%s",a); }while(!strcmp(a,"y")); //判定是否繼續(xù)訂票}4.7退票業(yè)務(wù)代碼voidtuipiao() //定義退票函數(shù){ intn; chara[10]; do { search(); //調(diào)用查詢函數(shù) printf("請輸入您要退的機票數(shù)目:"); scanf("%d",&n); //輸入所退票數(shù) if(n<=0) //判定票數(shù)是否有效 printf("輸入錯誤!至少需退1張機票。"); else { s[i].count=s[i].count+n; printf("退票成功!"); } printf("是否繼續(xù)?請鍵入y或n以回車鍵結(jié)束:"); //判定是否繼續(xù)退票 scanf("%s",a); }while(!strcmp(a,"y")); //判定并跳出循環(huán)}
第五章總結(jié)一周的C語言課程設(shè)計即將結(jié)束,通過此次課程設(shè)計也學(xué)會綜合運用理論知識來分析和解決實際問題的能力、養(yǎng)成嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度和良好的程序設(shè)計習(xí)慣實現(xiàn)由知識向智能的初步轉(zhuǎn)化學(xué)會循軟件開發(fā)過程的基本規(guī)范運用結(jié)構(gòu)化程序設(shè)計的方法按照課程設(shè)計的題目要求并能夠完成設(shè)計、編寫、調(diào)試和測試應(yīng)用程序及編寫文檔的任務(wù)程序整體上運行與題目要求很吻合算法大多比較通用各個函數(shù)模塊的正確性、完備性、對輸入的容錯能力以及算法的進一步改進在設(shè)計中都有表述這道題使我熟悉了文件的輸入輸出操作真切的感受到了fprintf和fwrite函數(shù)的區(qū)別。回顧起此次課程設(shè)計至今我仍感慨頗多從理論到實踐在整整半個月的日子里我學(xué)到很多很多的東西不僅鞏固了以前所學(xué)過的知識而且學(xué)到了很多在書本上所沒有學(xué)到過的內(nèi)容。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的只有理論知識是遠遠不夠的只有把所學(xué)的理論知識與實踐相結(jié)合起來從理論中得出結(jié)論才是真正的知識才能提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程遇到了各種各樣的問題同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處對以前所學(xué)過的知識理解得不夠深刻掌握得不夠牢固通過這次課程設(shè)計把以前所學(xué)過的知識重新溫故鞏固了所學(xué)的知識。在編寫程序的過程中受到了其他同學(xué)的指點也許在某些程序方面會和有的同學(xué)想類似但是老師在我編程序過程中也起到了很大的作用我們在C語言這門課上還會繼續(xù)走下去以后還會經(jīng)常碰到我會努力。附1:源代碼#include<stdio.h> //標(biāo)準(zhǔn)輸入、輸出頭文件#include<string.h> //包含字符串函數(shù)處理頭文件#defineN9999 //定義最多的航班數(shù)#definePRINT"%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n",s[i].num,s[i].qidian,s[i].zhongdian,s[i].time,s[i].count//宏定義輸出格式structair //定義結(jié)構(gòu)體數(shù)組{ intnum; //定義航班號 charqidian[20]; //航班起始站 charzhongdian[20]; //終點站 chartime[10]; //飛行時間 intcount; //機票數(shù)量}s[N];inti,m=0; //定義全局變量charhangbanhao[10];voidadd(); //函數(shù)聲明增加航班信息函數(shù)voidprint(); //顯示航班信息voidsearch(); //查找航班信息voiddingpiao(); //訂票業(yè)務(wù)voidtuipiao(); //退票voidread(); //讀取文件 voidsave(); //保存文件voidoutput(); //輸出格式voidpaixu(); //航班排序voidbuild(); //建立數(shù)據(jù)文件voidpaixu1(); //按航班號從小到大排序voidpaixu2(); //從大到小voidmain() //主函數(shù){ intj;read(); printf("\n\t\t歡迎使用航班訂票系統(tǒng)!\n");printf("******************************************\n");printf("1.增加航班信息\n");printf("2.瀏覽航班信息\n");printf("3.查找航班信息\n");printf("4.航班排序(按航班號)\n");printf("5.辦理訂票業(yè)務(wù)\n");printf("6.辦理退票業(yè)務(wù)\n");printf("0.退出系統(tǒng)(exit)\n");printf("*******************************************\n"); printf("請在0-6中選擇以回車鍵結(jié)束:"); scanf("%d",&j); switch(j) { case1:add(); //調(diào)用增加航班函數(shù) break; case2:print(); //調(diào)用顯示模塊 break; case3:search(); //調(diào)用查找模塊 break; case4:paixu(); //調(diào)用排序函數(shù) break; case5:dingpiao(); //調(diào)用訂票模塊 break; case6:tuipiao(); //調(diào)用退票模塊 break; case0: save();//退出系統(tǒng) printf("謝謝使用,再見!"); break; }}voidread() //定義讀取文件函數(shù){ FILE*fp; if((fp=fopen("hangban.dat","rb"))==NULL) { printf("創(chuàng)建文件失敗!"); getchar(); return; } i=0; while(!feof(fp)) { fread(&s[i],sizeof(structair),1,fp); //逐塊讀取數(shù)據(jù) i++; m++; //計算存在航班數(shù) } m--; fclose(fp);}voidsave() //定義保存函數(shù){ FILE*fp; if((fp=fopen("hangban.dat","wb"))==NULL) { printf("創(chuàng)建文件失敗!"); getchar(); return; } for(i=0;i<m;i++) //逐塊保存數(shù)據(jù) fwrite(&s[i],sizeof(structair),1,fp); fclose(fp);}voidadd() //定義增加航班信息函數(shù){ do{ printf("請依次輸入您要增加的航班信息(以回車鍵結(jié)束):\n");//打印提示信息 printf("--------------------------------------------------------------------------\n"); printf("請輸入航班號:"); scanf("%d",&s[m].num); //讀取航班號 printf("請輸入起始站:"); scanf("%s",s[m].qidian); //讀取起始站 printf("請輸入終點站:"); scanf("%s",s[m].zhongdian); //讀取終點站 printf("請輸入時間:"); scanf("%s",s[m].time); //讀取時間 printf("請輸入機票數(shù):"); scanf("%d",&s[m].count); //讀取機票數(shù) m++; printf("添加完畢,是否繼續(xù)添加?請鍵入y或n以回車鍵結(jié)束:"); scanf("%s",hangbanhao); }while(!strcmp(hangbanhao,"y")); //判斷是否繼續(xù)添加}voidoutput() //定義輸出格式函數(shù){ printf("航班號\t\t起始站\t\t終點站\t\t時間\t\t機票數(shù)\n"); //信息標(biāo)題 for(i=0;i<m;i++) printf(PRINT);//打印出信息 }voidprint() //定義顯示航班信息函數(shù){ printf("\n目前我們有如下航班:\n"); output(); //調(diào)用輸出格式函數(shù) printf("\n請按回車鍵返回上層菜單"); getchar(); getchar();}voidsearch() //定義查詢函數(shù){ intn; do { printf("\n請輸入航班號:"); scanf("%d",&n); //輸入查詢的航班號 for(i=0;i<m;i++) { if(s[i].num==n) //按航班號判定輸出條件 { printf("\n您所查找的航班信息為:\n"); printf("航班號\t\t起始站\t\t終點站\t\t時間\t\t機票數(shù)\n\n"); printf(PRINT); //顯示信息 printf("\n查詢完畢,按回車鍵繼續(xù)"); getchar(); getchar(); return; } } printf("\n對不起,沒有您需要的信息!\n"); printf("是否重新查找?請鍵入y或n以回車鍵結(jié)束"); scanf("%s",hangbanhao); }while(!strcmp(hangbanhao,"y"));//判定是否重新查找}voiddingpiao() //定義訂票業(yè)務(wù)函數(shù){ intn; chara[10]="y"; do { printf("請輸入您要訂的機票數(shù)(以回車鍵結(jié)束):"); scanf("%d",&n); //輸入所訂機票數(shù) if(n<=0) //判定機票數(shù)是否出錯 { printf("輸入錯誤!至少需訂1張機票。\n"); } elseif(s[i].count==0)//判定機票是否售完 { printf("對不起,你所選擇的航班的機票已售完!\n"); break; } elseif(s[i].count!=0&&s[i].count>=n) //判定機票數(shù)是否大于等于訂票數(shù) { s[i].count=s[i].count-n; printf("訂票成功!"); break; } elseif(s[i].count<n)//判定機票數(shù)是否小于訂票數(shù) { printf("對不起,你所選擇的航班只剩%d張機票\n",s[i].count); printf("是否需要重新輸入機票數(shù)?請輸入y或n以回車鍵結(jié)束:");//判定是否重新輸入訂票數(shù) scanf("%s",a); } printf("是否需要訂其他航班的機票?請輸入y或n以回車鍵結(jié)束:"); scanf("%s",a); }while(!strcmp(a,"y")); //判定是否繼續(xù)訂票}voidtuipiao() //定義退票函數(shù){ intn; chara[10]; do { search(); //調(diào)用查詢函數(shù) printf("請輸入您要退的機票數(shù)目:"); scanf("%d",&n); //輸入所退票數(shù) if(n<=0) //判定票數(shù)是否有效 printf("輸入錯誤!至少需退1張機票。"); else { s[i].count=s[i].count+n; printf("退票成功!"); } printf("是否繼續(xù)?請鍵入y或n以回車鍵結(jié)束:"); //判定是否繼續(xù)退票 scanf("%s",a); }while(!str
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《心臟解剖及血供》課件
- 2021年四川省雅安市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2023年遼寧省遼陽市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 2022年遼寧省遼陽市公開招聘警務(wù)輔助人員輔警筆試自考題2卷含答案
- 2022年浙江省嘉興市公開招聘警務(wù)輔助人員輔警筆試自考題1卷含答案
- 《漢字拼音復(fù)習(xí)攻略》課件
- 2025年行政訴訟法知識競賽題庫與答案(完整版)
- 2024年P(guān)ET改性及合金材料項目投資申請報告代可行性研究報告
- 2024年石油產(chǎn)品添加劑:燃料油添加劑項目資金申請報告
- 關(guān)于銀行實習(xí)日記范文錦集八篇
- 工作失誤匯報
- 呼吸科主任述職報告
- 旅游法規(guī)期末試卷與參考答案匯編
- 11054-國家開放大學(xué)2023年春期末統(tǒng)一考試《流通概論》答案
- 晉江物流行業(yè)分析
- 編譯原理考試題及答案匯總
- 【蘇州市軌道交通安全管理現(xiàn)狀、問題及優(yōu)化建議分析4300字(論文)】
- 國家開放大學(xué)2023年7月期末統(tǒng)一試《11132衛(wèi)生管理》試題及答案-開放本科
- 咽喉癌病歷書寫
- 2023年自然資源部所屬事業(yè)單位招聘(208人)筆試參考題庫(共500題)答案詳解版
- 自身免疫性肝炎診斷和治療指南(2021版)解讀
評論
0/150
提交評論