




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、飛機訂票系統(tǒng)標準化管理處編碼BBX968T-XBB8968-NNJ668-MM9N商學(xué)院課程設(shè)計報告課程名稱C語言程序設(shè)計題目名稱飛機訂票系統(tǒng)學(xué)生學(xué)院 商學(xué)院專業(yè)班級信息管理與信息系統(tǒng)學(xué) 號 學(xué)生姓名 _ 完成日期2014年 月 日目錄1 .設(shè)計目的與要求31.1 題目與設(shè)計要求31.2 本程序涉及的知識點32 .功能設(shè)計33 . 1總體設(shè)計34 . 2詳細設(shè)計33.程序?qū)崿F(xiàn)43.1 程序?qū)崿F(xiàn)時應(yīng)考慮的問題45 . 2模塊代碼46 .測試分析146.1 測試結(jié)果及分析147 .總結(jié)16參考文獻161 .設(shè)計目的與要求1.1 題目與設(shè)計要求題目:飛機訂票系統(tǒng)設(shè)計設(shè)計要求:本程序首先輸入機票信息,
2、管理員在保存功能中通過密碼驗證輸入機票信 息,可以對機票信息進行查詢;修改;刪除等功能。一般用戶可以使用訂票;顯示;退 票等功能,在訂票時用戶輸入密碼在退票時通過驗證后成功退票。假定民航機場共有n個航班,每個航班有一航班號、確定的航線(起始站、終點站)、 確定的飛行時間(星期兒)和一定的成員訂額。設(shè)計一個飛機訂票系統(tǒng),使之能提供下 列服務(wù):1、航班信息錄入功能(航班信息用文件保存)包括航班號、起始站、重點站、機票數(shù)等;2、航班信息瀏覽功能4、查詢航線:按航班號查詢1. 2本程序涉及的知識點運用了 access函數(shù)判斷文件是否存在。系統(tǒng)初始化后,沒有尋找到數(shù)據(jù)文件,則進行 新建數(shù)據(jù)文件,此函數(shù)的
3、作用就是進行新建文件數(shù)據(jù)的錄入。運用到了文件指針的定義 FILE *fp,文件的打開fopen和關(guān)閉fclose、成塊讀寫函數(shù)中的fwrite;運用for循 環(huán)進行各組數(shù)據(jù)的輸入,用m+記錄下輸入的航班數(shù)量,并運用if語句判斷是否輸入下 一條航班信息,若不繼續(xù)則返回主界面。系統(tǒng)初始化之后,若原始數(shù)據(jù)文件存在,則進 行文件內(nèi)航班信息的讀取,以供接下來程序中的各個函數(shù)來使用。在該函數(shù)中同樣運用 到了文件指針FILE *fp、文件的打開fopen和關(guān)閉fclose、成塊讀寫函數(shù)中的fread、 文件結(jié)束檢測函數(shù)feof同時配合while語句控制文件的讀取;m+記錄下讀取到的航班 數(shù)量等。2.功能設(shè)計
4、2. 1總體設(shè)計航班結(jié)構(gòu)體包含三大模塊,分別是:航班信息輸入模塊、航班信息瀏覽模塊、航線查詢模塊3. 2詳細設(shè)計數(shù)據(jù)結(jié)構(gòu)采用結(jié)構(gòu)體數(shù)組,設(shè)計航班結(jié)構(gòu)體如下:Struct(Char flightNo10;航班號Char start 10;起始站Char end10;終點站Float day;飛行時間Int totalTicket;預(yù)售票總數(shù)Int sellTicket;已售票總數(shù)FlightN; 航班結(jié)構(gòu)體(1)航班信息輸入模塊采用fwrite或fprintf把航班信息寫入航班信息文件。(2)航班信息瀏覽模塊分屏顯示航班信息,每屏10條記錄,按任意鍵顯示下一屏。讀文件(采用fread 或fsca
5、nf)然后顯示即可。(3)航線查詢模塊通過菜單選擇查詢方式,提供按照航班號、起點站、終點站和飛行時間查詢。采用 基本查找算法即可。3.程序?qū)崿F(xiàn)3.1 程序?qū)崿F(xiàn)時應(yīng)考慮的問題 因為在飛機訂票系統(tǒng)中涉及到匕機的訂票和退票業(yè)務(wù),還有按航班號的排序功能,所以 定義了這個保存函數(shù)來保存下每次運行系統(tǒng)后對整個訂票系統(tǒng)涉及到的資料的修改。為 了簡便程序,準備將此函數(shù)放在整個系統(tǒng)得推出選項中,這樣就只在每次退出系統(tǒng)的時 候進行一次保存,將此次對文件修改的所有新信息都一次保存下來。這樣就實現(xiàn)了整個 系統(tǒng)運行時進行一次讀取,推出時一次保存的設(shè)計,大大簡便了文件的調(diào)用和讀取。4. 2模塊代碼#include<
6、stdio. h>標準輸入、輸出頭文件#include<string. h>包含字符串函數(shù)處理頭文件#include<stdlib. h>包含動態(tài)存儲與釋放函數(shù)頭文件#define N 10000struct flight定義結(jié)構(gòu)體數(shù)組int num;航班號char start 20; 起始站char end20;終點站char time10;飛行時間int count;機票總數(shù)flightN;int i;int m=0;ttdefine PRINT *%-d%12s%12s%10s%12dn,, flighti. num, flighti. start, fli
7、ghti. end, flightLiZ. time, flighti. count定義輸出格式void input ();輸入航班信息void print ();輸出航班信息void save();保存航班信息void search();查找航班信息void shanchu(); 刪除航班信息void dingpiaoO : 訂票信息void tuipiao(); 退票信息void xiugai (); 修改信息void main()(int j;printf ( *您好,歡迎使用 匕機ij 票系統(tǒng)*n);printf = n,z);do(printf C1.輸入航班信息n”2.瀏覽航班信息
8、n3 ,修改航班信息4.查找航班信息n5.刪除航班信息n6.訂票信息n”7.退票信息n0.退出n);printfC=nz,);printf Cn,z);scanf &j);switch (j)(case 1 : input (); 調(diào)用輸入模塊 break;case 2:print ();調(diào)用打印模塊break;case 3:xiugai();調(diào)川修改模塊break;case 4: search ();調(diào)用查找模塊 break;case 5: shanchu(); 調(diào)用刪除模塊 break;case 6:dingpiao(); 調(diào)用訂票模塊 break;case 7:tuipiao()
9、;調(diào)用退票模塊break;case 0:;break;while(j!=0); 判斷結(jié)束printf ("謝謝使用,再見! n); 主函數(shù)結(jié)束void input ()打印模塊程序char f =”123456;設(shè)置密碼int y;printf (請輸入密碼:);scanf (s", f);讀取密碼if (strcmp(f, ”123456")=。)(printf(請依次輸入航班信息:); 打印提示信息printf("n);for(i=0;i<N;i+)(printf (請輸入航班號:);scanf (,/%d,, &flight i. n
10、um);讀取航班號printf (請輸入起始站:);scanf ("%s,flightiL start);讀取起始站printf (請輸入終點站:);scanfflighti. end);讀取終點站printf (“請輸入時間:);scanfflighti. time);讀取時間printf (請輸入機票數(shù):,m);scanf ("%d”, &flight i. count);讀取機票數(shù)m+;printf (笫加個信息已經(jīng)輸完是否繼續(xù)?按任意鍵繼續(xù),按0結(jié)束",m);scanf&y);if (y=0)(save。;將結(jié)構(gòu)體信息存盤print ();
11、 輸出輸入的航班信息break;)elseprintf (輸入密碼錯誤!請檢查您的密碼是否正確! n);void save ()保存模塊程序(FILE定義文件指針if(fp=fopen(,/chen. dat,wb") )=NULL)打開文件并判斷是否出錯(printf ("創(chuàng)建文件失敗! n); 打印出錯提示getchar ();return;)if (fpl=fopenfhao. dat,衲)=NULL)打開文件并判斷是否出錯(printf (創(chuàng)建文件失敗八n); 打印出錯提示getchar ();return;)for(i=0;i<m;i+)if (fwrite
12、(&flighti, sizeof (struct flight), 1, fp)=0)向文件寫入數(shù)據(jù),并判 斷是否出錯printf (向文件輸入數(shù)據(jù)失敗! n);fprintf(fpl, "%d, m);fclose(fp);關(guān)閉文件fclose(fpl);關(guān)閉文件void read ()從文件讀取信息模塊FILE *fp,*fpl;定義文件指針if(fp=fopen(,/chen. dat,rb)=NULL)打開文件,并判斷是否出錯(printf(出錯,請檢查文件是否存在,按任意鍵返回住菜單);打印出錯提示 getchar ();if (fpl二fopen(hao. da
13、t,rb)=NULL)打開文件并判斷是否出錯(printf (創(chuàng)建文件失敗! n);打印出錯提示getchar ();return;fscanf (fpl, "%d,&m);fclose(fpl);關(guān)閉文件for (i=0; i<m; i+)(fread(&flighti, sizeof (struct flight), 1, fp);從文件中讀取信息fclose(fp);關(guān)閉文件void print ()打印模塊(char w10;read。;調(diào)用讀取文件函數(shù)printf (航班號起始站 終點站 時間 機票數(shù)n);for (i=0; i<m; i+)pr
14、intf (PRINT);打印信息)printf (請按任意鍵返回上層菜單:);scanf ('%s”, w);)void search ()查詢模塊(char namel20;char name220;char ii LIO;int n,no;do(printf (請選擇查找方式:);打印查詢方式菜單printf ("1.按航班號查找n"”2.按終點站查找n3.按時間查找n0,返回 n);scanf (d”, &n); 讀取查找方式if (n=0)break;switch(n)case 1:printf("請輸入航班號:);scanf (&quo
15、t;%d", &no) ; /航班號break;case 2:printf(“請輸入終點站名稱:);scanf name2); 讀取終點站break;case 3:printf (請輸入時間:");scanf (s”, namel);讀取時間break;read。;調(diào)用讀取函數(shù)for(i=0;i<m;i+)if (strcmp (flight i. end, namel) =0 I strcmp (flight i. end, name2) =0) 按終點 站起始站判斷輸出條件(printf ("n查找航班信息成功! n");printf
16、(航班號起始站 終點站 時間 機票數(shù)n);printf (PRINT) ;/打印信息break;if (flight i. num=no)按航班號判斷輸出條件(printf (n查找航班信息成功! n");printf (航班號起始站 終點站 時間機票數(shù)n);printf (PRINT) ;/打印信息break;no=0;將航班號賦值為0printf (沒有您需要的信息或查找完畢,是否繼續(xù)查找?請按yes或no繼續(xù)n);scanfii);while(strcmp(ii, z,yes,)=0);判斷結(jié)束 vo i d shanchu () 刪除模塊char name120;char n
17、ame220;char ii 10;char f =”123456;設(shè)置密碼int no, n;printf (請輸入密碼:);scanf(%s,f); 讀取密碼if (strcmp(f, 123456)=0)判斷密碼是否正確(do(printf (請選擇刪除以方式回車鍵結(jié)束:n);打印刪除方式菜單printf (1.按航班號刪除n2.按航線刪除n0.返回 n);printf (請選擇:);scanf (d,&n); 讀取刪除方式if (n-0)break; 跳出循環(huán)switch(n)(case 1:printf (請輸入航班號:);scanf &no); 讀取航班號read。
18、;調(diào)用讀取函數(shù)break; 跳出循環(huán)case 2:printf (請輸入起始站名稱:);scanf namel); 讀取起始站printf(請輸入終點站名稱:);scanf ("%s”, name2); 讀取終點站read。;調(diào)用讀取函數(shù)break;/跳出循環(huán)for(i=0;i<m;i+)(if (flight i. num 二二 no I strcmp (flight i. start, name 1) -0&&s tr cmp (f 1 i ght _ i j. end,name2)=0)判斷輸入信息是否存在(flighti=flightm-lj;m;dop
19、rintf (沒有您需要的信息或查找完畢,是否繼續(xù)查找?請按yes或no繼續(xù)n);scanf (%s,ii);讀取是否繼續(xù)信息save(); 調(diào)用讀取函數(shù)if(!strcmp(ii/yes,z) 判斷是否繼續(xù)刪除printf (請按任意鍵返回上層菜單:n);break;while(n! =l&&n! =2&&n! =3&&n! =4&&n! =0); 判斷結(jié)束)elseprintf (對不起密碼錯誤!請檢查您的密碼是否正確!n);)void dingpiao()訂票模塊int n;char a10_;search。;調(diào)用查詢模塊p
20、rintf(請輸入您要訂的機票數(shù):);scanf (%d, &n); 讀取所訂機票數(shù)if(n<0)(printf (請輸入有效的機票數(shù):);判斷機票數(shù)是否出錯 break;)if (flighti. count!=0&&flighti. count>=n)判斷是否出錯(flighti. count=flighti_. count-n;save。;調(diào)用保存函數(shù)printf (訂票成功! n);break;if (flight i. countn) 判斷是否出錯(printf(請輸入有效的機票數(shù):);break;printf (是否繼續(xù) 請輸入yes或no繼續(xù):
21、n); 判斷是否繼續(xù)訂票 scanf(%s, a);while(!strcmp(a, "yes");判斷結(jié)束)void tuipiao()退票模塊int n;char a10_;dosearch。;調(diào)用查詢模塊printf(請輸入您要退的機票數(shù)目:);scanf (%d, &n); 輸入所退票數(shù)if(n<0) 判斷票數(shù)是否有效printf(請輸入有效的機票數(shù):);flighti. count=flighti_. count+n;save(); 調(diào)用保存模塊printf (退票成功! n);printf (是否繼續(xù)?請鍵入yes或no繼續(xù):n);判斷是否繼續(xù)退票
22、 scanfa);while (!strcmp(a, yes);判斷并跳出循環(huán)getchar ();void xiugai () 修改模塊struct xiu定義結(jié)構(gòu)體(int no;char namel20;char name220;char time20;int count;char j10;char f =”123456;設(shè)置密碼 int n;printf (請輸入密碼:);scanf(s,f); 讀取密碼if (strcmp(f, 123456)=0)判斷是否出錯read。;調(diào)用讀取模塊do(printf (請選擇修改方式:n”1,按航班號修改n"2,按航線修改n);prin
23、tf ("請選擇:");scanf &n); 讀取修改方式switch(n)(case l:printf(請輸入航班號:”);scanf (%d”, &x 0. no); 讀取航班號break;case 2:printf(請輸入起始站:);scanf (s", x0. namel); 讀取起始站printf(請輸入終點站:);scanf x0. name2); 讀取終點站break;for(i=0;i<m;i+)if (strcmp(flight Li. end, x0. namel)-0&&strcmp(flighti. e
24、nd, x0. name2) =0)判斷輸出條件(printf (航班號 起始站 終點站 時間機票數(shù)n);printf(PRINT);break;if (flight i. num =二 x0. no) 判斷輸出條件(printf (航班號起始站 終點站 時間 機票數(shù)n);printf(PRINT);break;x0.no=0;將結(jié)構(gòu)體中的號為零printf (請輸入新航班號、起始站、終點站、時間(星期兒)、機票數(shù):n);scanf (/%d%s%s%s%d, &xOJ. no, xOJ. namel, x0. name2, x0. time, &x0. count) ;/ 定義輸入格式flighti. num=x0. no;替換航班號 strcpy (flight lij. start, x0. namel);替換其始站strcpy (flight lij. end, x0. name2
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校長課堂唱歌活動方案
- 校長述職活動方案
- 江蘇互聯(lián)網(wǎng)培訓(xùn)活動方案
- 殘疾人送鮮花活動方案
- 水電安全活動方案
- 漢堡店充值活動方案
- 正規(guī)公司服裝策劃方案
- 河南微信活動方案
- 汽車俱樂部開展活動方案
- 殘疾人集中服務(wù)活動方案
- 2025年廣東省中考生物試卷真題及答案詳解(精校打印版)
- 住院患者健康宣教的重要性
- 中國汽車傳感器行業(yè)發(fā)展趨勢及發(fā)展前景研究報告2025-2028版
- 基本原理與性能特點多自由度電磁軸承課件
- 北京輸變電工程標準工藝應(yīng)用圖冊(圖文并茂)
- 三相負荷(380V)及單相(220V)最大供電距離計算表及電壓降計算表
- 國家職業(yè)技能標準 (2021年版) 嬰幼兒發(fā)展引導(dǎo)員
- 計算機網(wǎng)絡(luò)專業(yè)畢業(yè)論文:網(wǎng)上鮮花銷售系統(tǒng)的設(shè)計與實現(xiàn)
- 伯杰氏細菌系統(tǒng)分類學(xué)手冊
- 小學(xué)閱讀材料:五年級下冊閱讀題及答案--寫景類(7篇)
- 珠海市工傷保險待遇申請表(20110630)
評論
0/150
提交評論