飞机订票系统- c语言课程设,C语言课程设计飞机订票系统设计
C語言課程設計飛機訂票系統設計
中 國 地 質 大 學本科生課程論文封面課程名稱 C語言程序設計 教師姓名 劉文中 本科生姓名 陳陽 本科生學號 本科生專業 網絡工程 所在院系 計算機學院 類別: 課程設計報告 日期: 2013.1.5 課程設計評語對課程論文的評語:平時成績:課程論文成績:總 成 績:評閱人簽名:注:1、無評閱人簽名成績無效;2、必須用鋼筆或圓珠筆批閱,用鉛筆閱卷無效;3、如有平時成績,必須在上面評分表中標出,并計算入總成績。目 錄課程設計評語2目 錄3一課程論文題目4二程序設計思路4三詳細設計5四程序代碼12五程序運行結果19六編程中遇到的困難及解決方法、心得體會23七致謝23一、課程論文題目:飛機訂票系統【要求】假定某名航機場共有n個航班,每個航班有一航班號、確定的航線(起始站、終點站)、確定的飛行時間(星期幾)和一定的成員定額。試設計一民航訂票系統,能提供下列服務。(1) 航班信息錄入功能(航班信息用文件保存)。(2) 航班信息瀏覽功能。(3) 查詢航線:(至少一種查詢方式)。 按航班號查詢。 按起點站查詢。 按終點站查詢。 按飛行時間查詢。二、程序設計思路【需求分析】航班信息用文件保存:航班信息瀏覽功能需要提供顯示操作:要查詢航線需要提供查找功能,可提供按照航班號、起點站、終點站和飛行時間查詢;另外要提供鍵盤式選擇菜單以實現功能選擇。根據需求分析,可將這個系統的設計分為如下五個模塊:輸入航班信息,保存航班信息,瀏覽航班信息,查詢航班信息,退出。飛機訂票系統輸入航班信息保存航班信息瀏覽航班信息查詢航班信息退出三、詳細設計1.結構體設計建立航班結構體,結構體成員包括航班號、起點站、終點站和飛行時間(星期幾),剩余機票數。struct air /定義結構體數組int num;/定義航班號char start20;/航班起始站char over20;/終點站char time10;/飛行時間int count;/機票數量sN; /*sN中每個數組元素依次對應一個航班信息*/注意sN中的N為航班個數,程序中采用宏定義的方式,可以隨時在源程序宏定義中改。本程序宏定義#define N 1000.2.主函數顯示一系列功能選項根據N的值調用各功能模塊函數YES 輸入N,判斷N是否是0-3NO主要程序:void main()/主函數int j; chushihua();/系統初始化判斷是否存在原始數據文件printf( -歡迎使用地大飛機訂票系統-n);/打印出系統主界面doprintf(= ); printf(1.增加航班信息nn2.瀏覽航班信息nn3.查找航班信息nn0.退出nn);printf(= ); printf(請在0-3中選擇以回車鍵結束:nn);scanf(%d,&j);switch(j)case 1: add();/調用增加航班函數break;case 2:print();/調用顯示模塊break;case 3:search();/調用查找模塊break;case 0:/退出系統break;while(j!=0); /判斷是否調用其他函數printf(謝謝使用,再見! );3.各功能模塊設計(1)輸入、保存航班信息模塊(包括初始信息和后增加新信息)調用建立數據文件函數增加航班信息函數,輸入初始航班信息;調用保存函數save()輸出航班信息n(輸入完畢)y(繼續輸入)主要程序:void chushihua()/定義系統初始化函數int access(const char *filenpath, int mode); if(access(hangban.dat,0)build();elseread();void build()/定義建立數據文件函數FILE *fp;/定義文件指針if(fp=fopen(hangban.dat,wb)=NULL)/打開文件并判定是否出錯 printf(創建文件失敗! );/打印出錯提示getchar();return;printf(請依次輸入航班信息(以回車鍵結束):n); /打印提示信息printf(- n);for(i=0;iN;i+)printf(請輸入航班號: ); scanf(%d,&si.num);/輸入航班號printf(請輸入起始站: );scanf(%s,si.start);/輸入起始站printf(請輸入終點站: );scanf(%s,si.over);/輸入終點站printf(請輸入時間(星期幾): );scanf(%s,si.time);/輸入時間printf(請輸入機票數: );scanf(%d,&si.count);/輸入機票數fwrite(&si,sizeof(struct air),1,fp);m+;printf(添加完畢,是否繼續添加?請鍵入y或n以回車鍵結束:);scanf(%s,ii);if(strcmp(ii,y)!=0)/判斷是否繼續添加航班信息fclose(fp);/關閉文件return;void read()/定義讀取文件函數FILE *fp;if(fp=fopen(hangban.dat,r)=NULL)printf(創建文件失敗! );getchar();return;i=0;while(!feof(fp)fread(&si,sizeof(struct air),1,fp);/逐塊讀取數據i+;m+;/計算存在航班數m-;fclose(fp);void save()/定義保存函數FILE *fp;if(fp=fopen(hangban.dat,wb)=NULL) printf(創建文件失敗! );getchar();return;for(i=0;im;i+)/逐塊保存數據fwrite(&si,sizeof(struct air),1,fp);fclose(fp);void add()/定義增加航班信息函數doprintf(請依次輸入您要增加的航班信息(以回車鍵結束): n); /打印提示信息printf(- n);printf(請輸入航班號: ); scanf(%d,&sm.num);/讀取航班號printf(請輸入起始站: );scanf(%s,sm.start);/讀取起始站printf(請輸入終點站: );scanf(%s,sm.over);/讀取終點站printf(請輸入時間: );scanf(%s,sm.time);/讀取時間printf(請輸入機票數: );scanf(%d,&sm.count);/讀取機票數m+;printf(添加完畢,是否繼續添加?請鍵入y或n以回車鍵結束:);scanf(%s,ii);while(!strcmp(ii,y);/判斷是否繼續添加void output()/定義輸出格式函數printf(航班號tt起始站tt終點站tt時間tt機票數n);/信息標題for(i=0;im;i+)printf(PRINT);/打印出信息void print()/定義顯示航班信息函數printf(n目前我們有如下航班:n);output();/調用輸出格式函數printf(n請按回車鍵返回上層菜單 );getchar();getchar();(2)瀏覽航班信息模塊打開文件,并判斷是否出錯輸出出錯提示從文件中讀取信息關閉文件主要程序:void read()/定義讀取文件函數FILE *fp;if(fp=fopen(hangban.dat,r)=NULL)printf(創建文件失敗! );getchar();return;i=0;while(!feof(fp)fread(&si,sizeof(struct air),1,fp);/逐塊讀取數據i+;m+;/計算存在航班數m-;fclose(fp);void output()/定義輸出格式函數printf(航班號tt起始站tt終點站tt時間tt機票數n);/信息標題for(i=0;im;i+)printf(PRINT);/打印出信息void print()/定義顯示航班信息函數printf(n目前我們有如下航班:n);output();/調用輸出格式函數printf(n請按回車鍵返回上層菜單 );getchar();getchar();(3)航線查詢模塊顯示查詢方式菜單選擇查找方式顯示查詢結果輸入要求信息是否繼續查找退出NY主要程序:void search()/定義查詢函數char name120;char name220;char ii10;char ctime10;int n,no;doprintf(請選擇一種你想要查找的方式:nn);printf(1.根據航班號查找nn2.根據終點站查找nn3.根據起點站查找nn4.根據飛行時間查找nn0.返回nn);printf(請在0-4之間選擇一個整數:nn);scanf(%d,&n);if(n=0)break;switch(n)case 1:printf(請輸入航班號:n);scanf(%d,&no);break;case 2:printf(請輸入終點站:n);scanf(%s,name2);break;case 3:printf(請輸入起點站:n);scanf(%s,name1);break;case 4:printf(請輸入飛行時間:n);scanf(%s,ctime);break;read();for(i=0;im;i+)if(strcmp(si.start,name1)=0|strcmp(si.over,name2)=0)printf(n成功查到了航班信息!n);printf(航班號tt起點站tt終點站tt時間tt票數n);printf(PRINT);printf(n查詢完畢,按回車鍵繼續);getchar();getchar();return;if(si.num=no)printf(n成功查到了航班信息!n);printf(航班號tt起點站tt終點站tt時間tt票數n);printf(PRINT);printf(n查詢完畢,按回車鍵繼續); getchar();getchar();return; if(strcmp(si.time,ctime)=0)printf(n成功查到了航班信息!n);printf(航班號tt起點站tt終點站tt時間tt票數n);printf(PRINT);printf(n查詢完畢,按回車鍵繼續);getchar();getchar();return;no=0;printf(n不能找到您所需要的信息!nn);printf(您還需要繼續服務,請輸入Y或者N,然后再按Enter返回上一級菜單 n);scanf(%s,ii);while(strcmp(ii,Y)!=0);四、程序代碼#includestdio.h/標準輸入、輸出頭文件#includestring.h/包含字符串函數處理頭文件#includeprocess.h/包含access函數的頭文件#define N 1000/定義最多的航班數#define PRINT %dtt%stt%stt星期%stt%dn,si.num,si.start,si.over,si.time,si.count /宏定義輸出格式struct air /定義結構體數組int num;/定義航班號char start20;/航班起始站char over20;/終點站char time10;/飛行時間int count;/機票數量sN;int i,m=0;/定義全局變量char ii10;void add();/函數聲明增加航班信息函數void print(); /顯示航班信息void search();/查找航班信息void read();/讀取文件void save();/保存文件void chushihua();void build();void main()/主函數int j; chushihua();/系統初始化判斷是否存在原始數據文件printf( -歡迎使用地大飛機訂票系統-n);/打印出系統主界面doprintf(= ); printf(1.增加航班信息nn2.瀏覽航班信息nn3.查找航班信息nn0.退出nn);printf(= ); printf(請在0-3中選擇以回車鍵結束:nn);scanf(%d,&j);switch(j)case 1: add();/調用增加航班函數save();break;case 2:print();/調用顯示模塊break;case 3:search();/調用查找模塊break;case 0:/退出系統break;while(j!=0); /判斷是否調用其他函數printf(謝謝使用,再見! );void chushihua()/定義系統初始化函數int access(const char *filenpath, int mode); if(access(hangban.dat,0)build();elseread();void build()/定義建立數據文件函數FILE *fp;/定義文件指針if(fp=fopen(hangban.dat,wb)=NULL)/打開文件并判定是否出錯 printf(創建文件失敗! );/打印出錯提示getchar();return;printf(請依次輸入航班信息(以回車鍵結束):n); /打印提示信息printf(- n);for(i=0;iN;i+)printf(請輸入航班號: ); scanf(%d,&si.num);/輸入航班號printf(請輸入起始站: );scanf(%s,si.start);/輸入起始站printf(請輸入終點站: );scanf(%s,si.over);/輸入終點站printf(請輸入時間(星期幾): );scanf(%s,si.time);/輸入時間printf(請輸入機票數: );scanf(%d,&si.count);/輸入機票數fwrite(&si,sizeof(struct air),1,fp);m+;printf(添加完畢,是否繼續添加?請鍵入y或n以回車鍵結束:);scanf(%s,ii);if(strcmp(ii,y)!=0)/判斷是否繼續添加航班信息fclose(fp);/關閉文件return;void read()/定義讀取文件函數FILE *fp;if(fp=fopen(hangban.dat,r)=NULL)printf(創建文件失敗! );getchar();return;i=0;m=0;while(!feof(fp)fread(&si,sizeof(struct air),1,fp);/逐塊讀取數據i+;m+;/計算存在航班數m-;fclose(fp);void save()/定義保存函數FILE *fp;if(fp=fopen(hangban.dat,wb)=NULL) printf(創建文件失敗! );getchar();return;for(i=0;im;i+)/逐塊保存數據fwrite(&si,sizeof(struct air),1,fp);fclose(fp);void add()/定義增加航班信息函數doprintf(請依次輸入您要增加的航班信息(以回車鍵結束): n); /打印提示信息printf(- n);printf(請輸入航班號: ); scanf(%d,&sm.num);/讀取航班號printf(請輸入起始站: );scanf(%s,sm.start);/讀取起始站printf(請輸入終點站: );scanf(%s,sm.over);/讀取終點站printf(請輸入時間: );scanf(%s,sm.time);/讀取時間printf(請輸入機票數: );scanf(%d,&sm.count);/讀取機票數m+;printf(添加完畢,是否繼續添加?請鍵入y或n以回車鍵結束:);scanf(%s,ii);while(!strcmp(ii,y);/判斷是否繼續添加void output()/定義輸出格式函數printf(航班號tt起始站tt終點站tt時間tt機票數n);/信息標題for(i=0;im;i+)printf(PRINT);/打印出信息void print()/定義顯示航班信息函數printf(n目前我們有如下航班:n);output();/調用輸出格式函數printf(n請按回車鍵返回上層菜單 );getchar();getchar();void search()/定義查詢函數char name120;char name220;char ii10;char ctime10;int n,no; int find=0; /定義一個find,作為判定最后的結果選擇輸出doprintf(= );printf(請選擇一種你想要查找的方式:nn);printf(1.根據航班號查找nn2.根據終點站查找nn3.根據起點站查找nn4.根據飛行時間查找nn0.返回nn);printf(請在0-4之間選擇一個整數:nn);scanf(%d,&n);if(n=0)break;switch(n)case 1:printf(請輸入航班號:n);scanf(%d,&no);break;case 2:printf(請輸入終點站:n);scanf(%s,name2);break;case 3:printf(請輸入起點站:n);scanf(%s,name1);break;case 4:printf(請輸入飛行時間:n);scanf(%s,ctime);break;/read();/此處不需調用read函數,因為數據已經被讀到數組中了for(i=0;im;i+)if(strcmp(si.start,name1)=0|strcmp(si.over,name2)=0)find=1;printf(n成功查到了航班信息!n);printf(航班號tt起點站tt終點站tt時間tt票數n);printf(PRINT);/printf(n查詢完畢,按回車鍵繼續);/getchar();/getchar();/return;if(si.num=no)find=1;printf(n成功查到了航班信息!n);printf(航班號tt起點站tt終點站tt時間tt票數n);printf(PRINT);/printf(n查詢完畢,按回車鍵繼續); /getchar();/getchar();/return; if(strcmp(si.time,ctime)=0)find=1;printf(n成功查到了航班信息!n);printf(航班號tt起點站tt終點站tt時間tt票數n);printf(PRINT);/printf(n查詢完畢,按回車鍵繼續);/getchar(); /return;if(find) /用if語句選擇輸出結果printf(n查詢完畢,按回車鍵返回主菜單n);getchar();getchar();else/no=0;printf(n沒能找到您所需要的信息!nn);printf(請按Enter返回主菜單 n);getchar();getchar();return(0);while(strcmp(ii,Y)!=0);五、程序運行結果1.輸入初始數據2. 增加航班信息3.瀏覽航班信息4.查找航班信息1).根據航班號查找2).根據終點站查找3).根據起點站查找4).根據飛行時間查找六、在試驗中遇到的困難及心得體會我這次在C語言程序設計課程中,做的是“飛機訂票系統”。充分應用了所學的C語言的知識,粗略設計出并成功的運行起該系統。這次實驗其中,不乏一些簡單的基礎性的錯誤,如經常輸入錯誤的字母,使程序無法運行,但通過這次專業性的練習,相信在以后會有所減少。而關鍵性問題經常出現在一些函數的使用上,由于對一些函數調用的正確使用不夠熟悉,往往也會造成程序無法運行,出現錯誤。七、致謝這次的C語言程序設計課程中,遇到了很多問題和困難,在這里要特別感謝我的課程設計導師劉文中老師。每次在編程過程中遇到了不清楚的東西向老師請教,老師總會耐心細致的幫我分析程序,找出問題的所在,給了我很大的幫助。有了老師的指導,我才能在規定的時間內完成課程設計的要求。我還要感謝我的C語言導師朱麗老師,是老師一個學期來的悉心教導,讓我初步具備了C語言編程的能力,為我以后的學習打下了堅實的基礎
總結
以上是生活随笔為你收集整理的飞机订票系统- c语言课程设,C语言课程设计飞机订票系统设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vpp之node节点分析一: dual类
- 下一篇: 软件自动化测试订飞机票,飞机订票系统自动