




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
標準化管理處編碼[BBX968T-XBB8968-NNJ668-MM9N]商學院課程設計報告課程名稱 c語言程序設計題目名稱 飛機訂票系統(tǒng)學生學院 商學院專業(yè)班級信息管理與信息系統(tǒng)—學號 學生姓名 完成日期2014年月日目錄設計目的與要求…………3題目與設計要求……3本程序涉及的知識點………………3功能設計 3總體設計……………3詳細設計……………3程序實現(xiàn)……………4程序實現(xiàn)時應考慮的問題…………4模塊代碼…………………4測試分析 14測試結果及分析…………………14總結…………………16參考文獻………………16設計目的與要求題目與設計要求題目:飛機訂票系統(tǒng)設計設計要求:本程序首先輸入機票信息,管理員在保存功能中通過密碼驗證輸入機票信息,可以對機票信息進行查詢;修改;刪除等功能。一般用戶可以使用訂票;顯示;退票等功能,在訂票時用戶輸入密碼在退票時通過驗證后成功退票。假定民航機場共有n個航班,每個航班有一航班號、確定的航線(起始站、終點站)、確定的飛行時間(星期幾)和一定的成員訂額。設計一個飛機訂票系統(tǒng),使之能提供下列服務:1、 航班信息錄入功能(航班信息用文件保存)包括航班號、起始站、重點站、機票數(shù)等;2、 航班信息瀏覽功能4、查詢航線:按航班號查詢本程序涉及的知識點運用了access函數(shù)判斷文件是否存在。系統(tǒng)初始化后,沒有尋找到數(shù)據(jù)文件,則進行新建數(shù)據(jù)文件,此函數(shù)的作用就是進行新建文件數(shù)據(jù)的錄入。運用到了文件指針的定義FILE*fp,文件的打開fopen和關閉fclose、成塊讀寫函數(shù)中的fwrite;運用for循環(huán)進行各組數(shù)據(jù)的輸入,用m++記錄下輸入的航班數(shù)量,并運用if語句判斷是否輸入下一條航班信息,若不繼續(xù)則返回主界面。系統(tǒng)初始化之后,若原始數(shù)據(jù)文件存在,則進行文件內航班信息的讀取,以供接下來程序中的各個函數(shù)來使用。在該函數(shù)中同樣運用到了文件指針FILE*fp、文件的打開fopen和關閉fclose、成塊讀寫函數(shù)中的fread、文件結束檢測函數(shù)feof同時配合while語句控制文件的讀取;m++記錄下讀取到的航班數(shù)量等。2.功能設計2.1總體設計航班結構體包含三大模塊,分別是:航班信息輸入模塊、航班信息瀏覽模塊、航線查詢模塊2.2詳細設計數(shù)據(jù)結構采用結構體數(shù)組,設計航班結構體如下:Struct{CharflightNo[10];//航班號Charstart[10];//起始站Charend[10];//終點站Floatday;//飛行時間InttotalTicket;//預售票總數(shù)IntsellTicket;//已售票總數(shù)}Flight[N];//航班結構體(1)航班信息輸入模塊采用fwrite或fprintf把航班信息寫入航班信息文件。(2)航班信息瀏覽模塊分屏顯示航班信息,每屏10條記錄,按任意鍵顯示下一屏。讀文件(采用fread或fscanf)然后顯示即可。(3)航線查詢模塊通過菜單選擇查詢方式,提供按照航班號、起點站、終點站和飛行時間查詢。采用基本查找算法即可。程序實現(xiàn)3.1程序實現(xiàn)時應考慮的問題因為在飛機訂票系統(tǒng)中涉及到飛機的訂票和退票業(yè)務,還有按航班號的排序功能,所以定義了這個保存函數(shù)來保存下每次運行系統(tǒng)后對整個訂票系統(tǒng)涉及到的資料的修改。為了簡便程序,準備將此函數(shù)放在整個系統(tǒng)得推出選項中,這樣就只在每次退出系統(tǒng)的時候進行一次保存,將此次對文件修改的所有新信息都一次保存下來。這樣就實現(xiàn)了整個系統(tǒng)運行時進行一次讀取,推出時一次保存的設計,大大簡便了文件的調用和讀取。模塊代碼#include<stdio.h>//標準輸入、輸出頭文件#include<string.h>//包含字符串函數(shù)處理頭文件#include<stdlib.h>//包含動態(tài)存儲與釋放函數(shù)頭文件#defineN10000structflight//定義結構體數(shù)組intnum;//航班號charstart[20];//起始站charend[20];//終點站chartime[10];//飛行時間intcount;//機票總數(shù)intnum;//航班號charstart[20];//起始站charend[20];//終點站chartime[10];//飛行時間intcount;//機票總數(shù)}flight[N];inti;intm=0;#definePRINT"%-d%12s%12s%10s%12d\n",flight[i].num,flight[i].start,flight[i].end,flight[i].time,flight[i].count//定義輸出格式voidinput(); //輸入航班信息voidprint(); //輸出航班信息voidsave(); //保存航班信息voidread(); //讀取航班信息voidsearch();//查找航班信息voidshanchu();//刪除航班信息voiddingpiao();//訂票信息voidtuipiao();//退票信息voidxiugai();//修改信息voidmain(){intj;printf(“******************您好,歡迎使用飛機訂票系統(tǒng)******************\n");printf("============================================================\n");do{printf(" 1.輸入航班信息 \n"" 2.瀏覽航班信息 \n"3.修改航班信息3.修改航班信息\n"〃4.查找航班信息\n"〃5.刪除航班信息\n"〃6.訂票信息\n"〃7.退票信息\n"〃0.退出\n")printf("===========================================================\n");printf("\n");scanf("%d",&j);switch(j){case1:input();//調用輸入模塊break;case2:print((;//調用打印模塊break;case3:xiugai();//調用修改模塊break;case4:search();//調用查找模塊break;case5:shanchu();//調用刪除模塊break;case6:dingpiao();//調用訂票模塊break;case7:tuipiao();//調用退票模塊break;case0:;break;}}while(j!=0);//判斷結束}//主函數(shù)結束voidinput()//打印模塊程序{charf[]="123456";//設置密碼inty;printf("請輸入密碼:");scanf("%s",f); //讀取密碼if(strcmp(f,"123456")==0){//打印提示信息printf("請依次輸入航班信息:");//打印提示信息printf(" \n");for(i=0;i<N;i++){printf("請輸入航班號:");scanf("%d",&flight[i].num);//讀取航班號printf("請輸入起始站:");scanf("%s",flight[i].start);//讀取起始站printf("請輸入終點站:");scanf("%s",flight[i].end);//讀取終點站printf("請輸入時間:");scanf("%s",flight[i].time);//讀取時間printf("請輸入機票數(shù):",m);scanf("%d",&flight[i].count);//讀取機票數(shù)m++;printf("第%小個信息已經(jīng)輸完是否繼續(xù)?按任意鍵繼續(xù),按0結束",m);scanf("%d",&y);if(y==0){save();//將結構體信息存盤print();//輸出輸入的航班信息break;}}}elseprintf(〃輸入密碼錯誤!請檢查您的密碼是否正確!\n〃);}voidsave()//保存模塊程序{FILE*fp,*fpl;//定義文件指針if((fp二fopen(〃chen.dat〃,〃wb〃))二二NULL)//打開文件并判斷是否出錯{printf(〃創(chuàng)建文件失敗!\n");//打印出錯提示getchar();return;if((fpl二fopen("hao.dat","wb"))二二NULL)//打開文件并判斷是否出錯{printf("創(chuàng)建文件失敗!\n");//打印出錯提示getchar();return;}for(i=0;i<m;i++)if(fwrite(&flight[i],sizeof(structflight),l,fp)==O)//向文件寫入數(shù)據(jù),并判斷是否出錯printf("向文件輸入數(shù)據(jù)失敗!\n");fprintf(fp1,"%d",m);fclose(fp);//關閉文件fclose(fpl);//關閉文件voidread()//從文件讀取信息模塊{FILE*fp,*fpl;//定義文件指針if((fp二fopen("chen.dat","rb"))二二NULL)//打開文件,并判斷是否出錯{printf("出錯,請檢查文件是否存在,按任意鍵返回住菜單");//打印出錯提示getchar();}if((fp1=fopen("hao.dat","rb"))二二NULL)//打開文件并判斷是否出錯{printf("創(chuàng)建文件失敗!\n");//打印出錯提示getchar();return;}fscanf(fp1,"%d",&m);fclose(fpl);//關閉文件for(i=0;i<m;i++){fread(&flight[i],sizeof(struetflight),l,fp);//從文件中讀取信息}fclose(fp);//關閉文件}voidprint()//打印模塊{charw[10];read();//調用讀取文件函數(shù)printf("航班號 起始站終點站時間 機票數(shù)\n");for(i=0;i<m;i++){printf(PRINT);//打印信息printf("請按任意鍵返回上層菜單:");scanf("%s",w);}voidsearch。//查詢模塊{charname1[20];charname2[20];charii[10];intn,no;do{printf("請選擇查找方式:");//打印查詢方式菜單"2.按終點站查找\n〃"3.按時間查找\n〃〃0?返回\n〃);scanf(〃%d〃,&n);//讀取查找方式if(n==0)break;switch(n){case1:printf(〃請輸入航班號:〃);scanf(〃%d〃,&no);//航班號break;case2:printf(〃請輸入終點站名稱:〃);scanf(〃%s〃,name2);//讀取終點站case3:printf("請輸入時間:");scanf("%s",namel);//讀取時間break;}read();//調用讀取函數(shù)for(i=0;i<m;i++){if(strcmp(flight[i].end,namel)==O||strcmp(flight[i].end,name2)==0)//按終點站起始站判斷輸出條件{printf("\n查找航班信息成功!\n");printf("航班號 起始站終點站時間 機票數(shù)\n");if(flight[i].num二二no)//按航班號判斷輸出條件{printf("\n查找航班信息成功!\n");printf("航班號 起始站終點站時間 機票數(shù)\n");printf(PRINT);//打印信息break;}}no=0;//將航班號賦值為0printf("沒有您需要的信息或查找完畢,是否繼續(xù)查找?請按yes或no繼續(xù)\n");scanf("%s",ii);}while(strcmp(ii,"yes")==0);//判斷結束}voidshanchu()//刪除模塊charname1[20];charname2[20];charii[10];charf[]=〃123456〃;//設置密碼intno,n;printf(〃請輸入密碼:〃);scanf(〃%s〃,f);//讀取密碼if(strcmp(f,〃123456〃)==0)//判斷密碼是否正確{do{printf(〃請選擇刪除以方式回車鍵結束:\n〃);//打印刪除方式菜單〃2.按航線刪除\n〃"0.返回\n〃);printf(〃請選擇:〃);scanf(〃%d〃,&n);//讀取刪除方式if(n==0)break;//跳出循環(huán)switch(n){case1:printf(〃請輸入航班號:〃);scanf(〃%d〃,&no);//讀取航班號read();//調用讀取函數(shù)break;//跳出循環(huán)case2:printf(〃請輸入起始站名稱:〃);scanf(〃%s〃,namel);//讀取起始站printf("請輸入終點站名稱:");scanf("%s",name2);//讀取終點站read();//調用讀取函數(shù)break;//跳出循環(huán)}for(i=0;i<m;i++){if(flight[i].num==no||strcmp(flight[i].start,name1)==0&&strcmp(flight[i].end,name2)==0)//判斷輸入信息是否存在{flight[i]=flight[m-1];m--;}printf("沒有您需要的信息或查找完畢,是否繼續(xù)查找?請按yes或no繼續(xù)\n");scanf("%s",ii); //讀取是否繼續(xù)信息save();//調用讀取函數(shù)if(!strcmp(ii,"yes"))//判斷是否繼續(xù)刪除printf("請按任意鍵返回上層菜單:\n");break;}while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0);//判斷結束}elseprintf(〃對不起密碼錯誤!請檢查您的密碼是否正確!\n〃);}voiddingpiao()//訂票模塊{intn;chara[10];do{search。;//調用查詢模塊printf(〃請輸入您要訂的機票數(shù):〃);scanf("%d",&n);//讀取所訂機票數(shù)if(n<0){printf(〃請輸入有效的機票數(shù):");//判斷機票數(shù)是否出錯break;}if(flight[i].count!=0&&flight[i].count>二n)//判斷是否出錯{flight[i].count=flight[i].count-n;save();//調用保存函數(shù)printf(〃訂票成功!\n〃);break;}if(flight[i].count<n)//判斷是否出錯{printf(〃請輸入有效的機票數(shù):〃);break;}printf(〃是否繼續(xù)請輸入yes或no繼續(xù):\n〃);//判斷是否繼續(xù)訂票scanf(〃%s〃,a);}while(!strcmp(a,〃yes〃));//判斷結束}voidtuipiao()//退票模塊{intn;chara[10];do{search。;//調用查詢模塊printf(〃請輸入您要退的機票數(shù)目:〃);scanf("%d",&n);//輸入所退票數(shù)if(n<0)//判斷票數(shù)是否有效printf(〃請輸入有效的機票數(shù):〃);flight[i].count=flight[i].count+n;save();//調用保存模塊printf(〃退票成功!\n〃);printf(〃是否繼續(xù)?請鍵入yes或no繼續(xù):\n〃);//判斷是否繼續(xù)退票scanf(〃%s〃,a);}while(!strcmp(a,〃yes〃));//判斷并跳出循環(huán)getchar();voidxiugai()//修改模塊{structxiu//定義結構體{intno;charname1[20];charname2[20];chartime[20];intcount;}x[1];charj[10];charf[]=〃123456〃;//設置密碼intn;printf(〃請輸入密碼:〃);scanf(〃%s〃,f);//讀取密碼if(strcmp(f,"123456")==0)//判斷是否出錯{read();//調用讀取模塊do{printf("請選擇修改方式:\n""1,按航班號修改\n""2,按航線修改\n");printf("請選擇:");scanf("%d",&n);//讀取修改方式switch(n){case1:printf("請輸入航班號:");scanf("%d",&x[0].no);//讀取航班號case2:printf("請輸入起始站:");scanf("%s",x[O].namel);//讀取起始站printf("請輸入終點站:");scanf("%s",x[0].name2);//讀取終點站break;}for(i=0;i<m;i++){end,x[0].name2)==0)機票數(shù)\nend,x[0].name2)==0)機票數(shù)\n〃);//判斷輸出條件{printf("航班號 起始站終點站時間printf(PRINT);if(flight[i].num==x[0].no)//判斷輸出條件{printf("航班號 起始站終點站時間 機票數(shù)\n");printf(PRINT);break;}}x[0].no=0; //將結構體中的號為零printf("請輸入新航班號、起始站、終點站、時間(星期幾)、機票數(shù):\n");scanf("%d%s%s%s%d",&x[0].no,x[0].name1,x[0].name2,x[0].time,&x[0].count);//定義輸入格式flight[i].num二x[O].no;//替換航班號strcpy(flight[i].start,x[O].namel);//替換其始站strcpy(fli
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出差人員住宿標準及費用結算合同
- 教學課件怎么設計
- 消防救援知識綜合測試試卷含應急管理等要點
- 三年級快樂寶貝教學課件
- 印刷包裝設計中的綠色供應鏈管理考核試卷
- 冷鏈物流與電子商務融合分析考核試卷
- 表面處理對樂器零件壽命的影響考核試卷
- 影視媒體對動漫產(chǎn)業(yè)產(chǎn)業(yè)鏈重構的影響考核試卷
- 行業(yè)影響力評估考核試卷
- 離譜面試題目及答案
- 2023-2024學年四川省雅安市小學數(shù)學一年級下冊期末高分試卷
- 網(wǎng)絡游戲代理合同通用版范文(2篇)
- GB/T 6414-1999鑄件尺寸公差與機械加工余量
- GB/T 27773-2011病媒生物密度控制水平蜚蠊
- GB/T 12817-1991鐵道客車通用技術條件
- 質量風險識別項清單及防控措施
- 【課件超聲】常見的超聲效應與圖象偽差
- 外墻保溫、真石漆工程施工方案
- 自然指數(shù)NatureIndex(NI)收錄的68種自然科學類期刊
- 建立良好的同伴關系-課件-高二心理健康
- 老年人健康管理隨訪表
評論
0/150
提交評論