飛機(jī)訂票系統(tǒng)_第1頁
飛機(jī)訂票系統(tǒng)_第2頁
飛機(jī)訂票系統(tǒng)_第3頁
飛機(jī)訂票系統(tǒng)_第4頁
飛機(jī)訂票系統(tǒng)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

商 學(xué) 院課程設(shè)計(jì)報(bào)告課程名稱c語言程序設(shè)計(jì)題目名稱飛機(jī)訂票系統(tǒng)學(xué)生學(xué)院商學(xué)院專業(yè)班級信息管理與信息系統(tǒng)_學(xué)號_________學(xué)生姓名_______________完成日期2014年月日目錄TOC\o"1-2"\h\z\u\h1.設(shè)計(jì)目的與要求 3\h1.1題目與設(shè)計(jì)要求 3\h1.2本程序涉及的知識點(diǎn) 3\h2.功能設(shè)計(jì) 3\h2.1總體設(shè)計(jì) 3\h2.2詳細(xì)設(shè)計(jì) 3\h3.程序?qū)崿F(xiàn) 4\h3.1程序?qū)崿F(xiàn)時(shí)應(yīng)考慮的問題 4\h3.2模塊代碼 4\h4.測試分析 14\h4.1測試結(jié)果及分析 145.總結(jié)…………………16參考文獻(xiàn)………………161.設(shè)計(jì)目的與要求1.1題目與設(shè)計(jì)要求題目:飛機(jī)訂票系統(tǒng)設(shè)計(jì)設(shè)計(jì)要求:本程序首先輸入機(jī)票信息,管理員在保存功能中通過密碼驗(yàn)證輸入機(jī)票信息,可以對機(jī)票信息進(jìn)行查詢;修改;刪除等功能。一般用戶可以使用訂票;顯示;退票等功能,在訂票時(shí)用戶輸入密碼在退票時(shí)通過驗(yàn)證后成功退票。假定民航機(jī)場共有n個(gè)航班,每個(gè)航班有一航班號、確定的航線(起始站、終點(diǎn)站)、確定的飛行時(shí)間(星期幾)和一定的成員訂額。設(shè)計(jì)一個(gè)飛機(jī)訂票系統(tǒng),使之能提供下列服務(wù):航班信息錄入功能(航班信息用文件保存)包括航班號、起始站、重點(diǎn)站、機(jī)票數(shù)等;航班信息瀏覽功能4、查詢航線:按航班號查詢1.2本程序涉及的知識點(diǎn)運(yùn)用了access函數(shù)判斷文件是否存在。系統(tǒng)初始化后,沒有尋找到數(shù)據(jù)文件,則進(jìn)行新建數(shù)據(jù)文件,此函數(shù)的作用就是進(jìn)行新建文件數(shù)據(jù)的錄入。運(yùn)用到了文件指針的定義FILE*fp,文件的打開fopen和關(guān)閉fclose、成塊讀寫函數(shù)中的fwrite;運(yùn)用for循環(huán)進(jìn)行各組數(shù)據(jù)的輸入,用m++記錄下輸入的航班數(shù)量,并運(yùn)用if語句判斷是否輸入下一條航班信息,若不繼續(xù)則返回主界面。系統(tǒng)初始化之后,若原始數(shù)據(jù)文件存在,則進(jìn)行文件內(nèi)航班信息的讀取,以供接下來程序中的各個(gè)函數(shù)來使用。在該函數(shù)中同樣運(yùn)用到了文件指針FILE*fp、文件的打開fopen和關(guān)閉fclose、成塊讀寫函數(shù)中的fread、文件結(jié)束檢測函數(shù)feof同時(shí)配合while語句控制文件的讀??;m++記錄下讀取到的航班數(shù)量等。2.功能設(shè)計(jì)2.1總體設(shè)計(jì)航班結(jié)構(gòu)體包含三大模塊,分別是:航班信息輸入模塊、航班信息瀏覽模塊、航線查詢模塊2.2詳細(xì)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)采用結(jié)構(gòu)體數(shù)組,設(shè)計(jì)航班結(jié)構(gòu)體如下:Struct{CharflightNo[10];//航班號Charstart[10];//起始站Charend[10];//終點(diǎn)站Floatday;//飛行時(shí)間InttotalTicket;//預(yù)售票總數(shù)IntsellTicket;//已售票總數(shù)}Flight[N];//航班結(jié)構(gòu)體航班信息輸入模塊采用fwrite或fprintf把航班信息寫入航班信息文件。航班信息瀏覽模塊分屏顯示航班信息,每屏10條記錄,按任意鍵顯示下一屏。讀文件(采用fread或fscanf)然后顯示即可。(3)航線查詢模塊通過菜單選擇查詢方式,提供按照航班號、起點(diǎn)站、終點(diǎn)站和飛行時(shí)間查詢。采用基本查找算法即可。3.程序?qū)崿F(xiàn)3.1程序?qū)崿F(xiàn)時(shí)應(yīng)考慮的問題因?yàn)樵陲w機(jī)訂票系統(tǒng)中涉及到飛機(jī)的訂票和退票業(yè)務(wù),還有按航班號的排序功能,所以定義了這個(gè)保存函數(shù)來保存下每次運(yùn)行系統(tǒng)后對整個(gè)訂票系統(tǒng)涉及到的資料的修改。為了簡便程序,準(zhǔn)備將此函數(shù)放在整個(gè)系統(tǒng)得推出選項(xiàng)中,這樣就只在每次退出系統(tǒng)的時(shí)候進(jìn)行一次保存,將此次對文件修改的所有新信息都一次保存下來。這樣就實(shí)現(xiàn)了整個(gè)系統(tǒng)運(yùn)行時(shí)進(jìn)行一次讀取,推出時(shí)一次保存的設(shè)計(jì),大大簡便了文件的調(diào)用和讀取。3.2模塊代碼#include<stdio.h>//標(biāo)準(zhǔn)輸入、輸出頭文件#include<string.h>//包含字符串函數(shù)處理頭文件#include<stdlib.h>//包含動(dòng)態(tài)存儲與釋放函數(shù)頭文件#defineN10000structflight//定義結(jié)構(gòu)體數(shù)組{intnum;//航班號charstart[20];//起始站charend[20];//終點(diǎn)站chartime[10];//飛行時(shí)間intcount;//機(jī)票總數(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("******************您好,歡迎使用飛機(jī)訂票系統(tǒng)******************\n");printf("============================================================\n");do{printf("1.輸入航班信息\n""2.瀏覽航班信息\n""3.修改航班信息\n""4.查找航班信息\n""5.刪除航班信息\n""6.訂票信息\n""7.退票信息\n""0.退出\n");printf("===========================================================\n");printf("\n");scanf("%d",&j);switch(j){case1:input();//調(diào)用輸入模塊break;case2:print();//調(diào)用打印模塊break;case3:xiugai();//調(diào)用修改模塊break;case4:search();//調(diào)用查找模塊break;case5:shanchu();//調(diào)用刪除模塊break;case6:dingpiao();//調(diào)用訂票模塊break;case7:tuipiao();//調(diào)用退票模塊break;case0:;break;}}while(j!=0);//判斷結(jié)束printf("謝謝使用,再見!\n");}//主函數(shù)結(jié)束voidinput()//打印模塊程序{charf[]="123456";//設(shè)置密碼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("請輸入終點(diǎn)站:");scanf("%s",flight[i].end);//讀取終點(diǎn)站printf("請輸入時(shí)間:");scanf("%s",flight[i].time);//讀取時(shí)間printf("請輸入機(jī)票數(shù):",m);scanf("%d",&flight[i].count);//讀取機(jī)票數(shù)m++;printf("第%d個(gè)信息已經(jīng)輸完是否繼續(xù)按任意鍵繼續(xù),按0結(jié)束",m);scanf("%d",&y);if(y==0){save();//將結(jié)構(gòu)體信息存盤print();//輸出輸入的航班信息break;}}}elseprintf("輸入密碼錯(cuò)誤!請檢查您的密碼是否正確!\n");}voidsave()//保存模塊程序{FILE*fp,*fp1;//定義文件指針if((fp=fopen("chen.dat","wb"))==NULL)//打開文件并判斷是否出錯(cuò){printf("創(chuàng)建文件失敗!\n");//打印出錯(cuò)提示getchar();return;}if((fp1=fopen("hao.dat","wb"))==NULL)//打開文件并判斷是否出錯(cuò){printf("創(chuàng)建文件失敗!\n");//打印出錯(cuò)提示getchar();return;}for(i=0;i<m;i++)if(fwrite(&flight[i],sizeof(structflight),1,fp)==0)//向文件寫入數(shù)據(jù),并判斷是否出錯(cuò)printf("向文件輸入數(shù)據(jù)失敗!\n");fprintf(fp1,"%d",m);fclose(fp);//關(guān)閉文件fclose(fp1);//關(guān)閉文件}voidread()//從文件讀取信息模塊{FILE*fp,*fp1;//定義文件指針if((fp=fopen("chen.dat","rb"))==NULL)//打開文件,并判斷是否出錯(cuò){printf("出錯(cuò),請檢查文件是否存在,按任意鍵返回住菜單");//打印出錯(cuò)提示getchar();}if((fp1=fopen("hao.dat","rb"))==NULL)//打開文件并判斷是否出錯(cuò){printf("創(chuàng)建文件失敗!\n");//打印出錯(cuò)提示getchar();return;}fscanf(fp1,"%d",&m);fclose(fp1);//關(guān)閉文件for(i=0;i<m;i++){fread(&flight[i],sizeof(structflight),1,fp);//從文件中讀取信息}fclose(fp);//關(guān)閉文件}voidprint()//打印模塊{charw[10];read();//調(diào)用讀取文件函數(shù)printf("航班號起始站終點(diǎn)站時(shí)間機(jī)票數(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("請選擇查找方式:");//打印查詢方式菜單printf("1.按航班號查找\n""2.按終點(diǎn)站查找\n""3.按時(shí)間查找\n""0.返回\n");scanf("%d",&n);//讀取查找方式if(n==0)break;switch(n){case1:printf("請輸入航班號:");scanf("%d",&no);//航班號break;case2:printf("請輸入終點(diǎn)站名稱:");scanf("%s",name2);//讀取終點(diǎn)站break;case3:printf("請輸入時(shí)間:");scanf("%s",name1);//讀取時(shí)間break;}read();//調(diào)用讀取函數(shù)for(i=0;i<m;i++){if(strcmp(flight[i].end,name1)==0||strcmp(flight[i].end,name2)==0)//按終點(diǎn)站起始站判斷輸出條件{printf("\n查找航班信息成功!\n");printf("航班號起始站終點(diǎn)站時(shí)間機(jī)票數(shù)\n");printf(PRINT);//打印信息break;}if(flight[i].num==no)//按航班號判斷輸出條件{printf("\n查找航班信息成功!\n");printf("航班號起始站終點(diǎn)站時(shí)間機(jī)票數(shù)\n");printf(PRINT);//打印信息break;}}no=0;//將航班號賦值為0printf("沒有您需要的信息或查找完畢,是否繼續(xù)查找請按yes或no繼續(xù)\n");scanf("%s",ii);}while(strcmp(ii,"yes")==0);//判斷結(jié)束}voidshanchu()//刪除模塊{charname1[20];charname2[20];charii[10];charf[]="123456";//設(shè)置密碼intno,n;printf("請輸入密碼:");scanf("%s",f);//讀取密碼if(strcmp(f,"123456")==0)//判斷密碼是否正確{do{printf("請選擇刪除以方式回車鍵結(jié)束:\n");//打印刪除方式菜單printf("1.按航班號刪除\n""2.按航線刪除\n""0.返回\n");printf("請選擇:");scanf("%d",&n);//讀取刪除方式if(n==0)break;//跳出循環(huán)switch(n){case1:printf("請輸入航班號:");scanf("%d",&no);//讀取航班號read();//調(diào)用讀取函數(shù)break;//跳出循環(huán)case2:printf("請輸入起始站名稱:");scanf("%s",name1);//讀取起始站printf("請輸入終點(diǎn)站名稱:");scanf("%s",name2);//讀取終點(diǎn)站read();//調(diào)用讀取函數(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();//調(diào)用讀取函數(shù)if(!strcmp(ii,"yes"))//判斷是否繼續(xù)刪除printf("請按任意鍵返回上層菜單:\n");break;}while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0);//判斷結(jié)束}elseprintf("對不起密碼錯(cuò)誤!請檢查您的密碼是否正確!\n");}voiddingpiao()//訂票模塊{intn;chara[10];do{search();//調(diào)用查詢模塊printf("請輸入您要訂的機(jī)票數(shù):");scanf("%d",&n);//讀取所訂機(jī)票數(shù)if(n<0){printf("請輸入有效的機(jī)票數(shù):");//判斷機(jī)票數(shù)是否出錯(cuò)break;}if(flight[i].count!=0&&flight[i].count>=n)//判斷是否出錯(cuò){flight[i].count=flight[i].count-n;save();//調(diào)用保存函數(shù)printf("訂票成功!\n");break;}if(flight[i].count<n)//判斷是否出錯(cuò){printf("請輸入有效的機(jī)票數(shù):");break;}printf("是否繼續(xù)?請輸入yes或no繼續(xù):\n");//判斷是否繼續(xù)訂票scanf("%s",a);}while(!strcmp(a,"yes"));//判斷結(jié)束}voidtuipiao()//退票模塊{intn;chara[10];do{search();//調(diào)用查詢模塊printf("請輸入您要退的機(jī)票數(shù)目:");scanf("%d",&n);//輸入所退票數(shù)if(n<0)//判斷票數(shù)是否有效printf("請輸入有效的機(jī)票數(shù):");flight[i].count=flight[i].count+n;save();//調(diào)用保存模塊printf("退票成功!\n");printf("是否繼續(xù)?請鍵入yes或no繼續(xù):\n");//判斷是否繼續(xù)退票scanf("%s",a);}while(!strcmp(a,"yes"));//判斷并跳出循環(huán)getchar();}voidxiugai()//修改模塊{structxiu//定義結(jié)構(gòu)體{intno;charname1[20];charname2[20];chartime[20];intcount;}x[1];charj[10];charf[]="123456";//設(shè)置密碼intn;printf("請輸入密碼:");scanf("%s",f);//讀取密碼if(strcmp(f,"123456")==0)//判斷是否出錯(cuò){read();//調(diào)用讀取模塊do{printf("請選擇修改方式:\n""1,按航班號修改\n""2,按航線修改\n");printf("請選擇:");scanf("%d",&n);//讀取修改方式switch(n){case1:printf("請輸入航班號:");scanf("%d",&x[0].no);//讀取航班號break;case2:printf("請輸入起始站:");scanf("%s",x[0].name1);//讀取起始站printf("請輸入終點(diǎn)站:");scanf("%s",x[0].name2);//讀取終點(diǎn)站break;}for(i=0;i<m;i++){if(strcmp(flight[i].end,x[0].name1)==0&&strcmp(flight[i].end,x[0].name2)==0)//判斷輸出條件{printf("航班號起始站終點(diǎn)站時(shí)間機(jī)票數(shù)\n");printf(PRINT);break;}if(flight[i].num==x[0].no)//判斷輸出條件{printf("航班號起始站終點(diǎn)站時(shí)間機(jī)票數(shù)\n");printf(PRINT);break;}}x[0].no=0;//將結(jié)構(gòu)體中的號為零printf("請輸入新航班號、起始站、終點(diǎn)站、時(shí)間(星期幾)、機(jī)票數(shù):\n");sc

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論