版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 軟件課程設計報告</b></p><p><b> 1軟件設計1</b></p><p><b> 1.1設計題目1</b></p><p><b> 1.2設計要求1</b></p><p><b>
2、 1.3設計思想1</b></p><p><b> 1.4流程圖2</b></p><p><b> 2軟件測試7</b></p><p> 2.1航班查詢模塊測試7</p><p> 2.2訂票模塊測試11</p><p> 2.3退票模塊
3、測試13</p><p> 2.4管理員更改航班信息模塊測試14</p><p><b> 3開發(fā)體會15</b></p><p> 附錄:源代碼清單17</p><p><b> 1軟件設計</b></p><p><b> 1.1設計題目<
4、;/b></p><p><b> 飛機票銷售系統(tǒng)。</b></p><p><b> 1.2設計要求</b></p><p> 運用C語言基本知識,結合相關算法思想和數(shù)據(jù)結構,編寫一個單微機系統(tǒng)下運行的飛機票銷售系統(tǒng)。飛機票銷售系統(tǒng)應實現(xiàn)航班信息查詢、機票購買、機票信息查詢、機票退購等功能。</p>
5、;<p><b> 1.3設計思想</b></p><p> 程序包括管理員創(chuàng)建模塊,輸出模塊,保存模塊,讀取模塊,查詢模塊,訂票模塊,退票模塊,菜單模塊,以及初始化引入指針等9個模塊。定義了一個結構體是儲存航班信息的,建立的分別是航班信息文件plane和Num。</p><p> 管理員創(chuàng)建模塊是void creat(),輸出模塊由void pr
6、int()實現(xiàn),保存模塊由void save()實現(xiàn),讀取模塊是int read,查詢模塊是PLANES *search(),訂票信息是int book_tickets(),退票是int bounce。其中訂票和退票都多次用到了查詢模塊。而輸出、保存和讀取都是公用模塊。這樣子設計更能夠方便地調用減少程序的長度。</p><p><b> 1.4流程圖</b></p><
7、p> 主函數(shù)與printfmenu函數(shù)流程圖</p><p> 主函數(shù)很短,直接調用printfmenu.這樣子功能不受限于主函數(shù),跟有利于模塊化.</p><p> Creat是管理員輸入航班函數(shù):</p><p> search ()為航班查找函數(shù),后面的訂票和退票都用到了它:</p><p> 訂購機票函數(shù)int boo
8、k_tickets()流程圖</p><p> 退票函數(shù)int bounce()流程圖</p><p><b> 2軟件測試</b></p><p> 2.1航班信息查詢模塊測試</p><p> 運行程序,首先進入主菜單界面。</p><p> 選擇1,進入航班信息查詢模塊。顯示子菜單
9、界面</p><p> 選擇1,按航班號查詢航班信息。輸入航班號“1111”。</p><p> 查找到相應航班信息如下:</p><p> 若在子菜單中選擇2,按目的地查詢航班信息,輸入目的地“beijing”。</p><p> 查找到相應航班信息如下:</p><p> 若在子菜單中選擇3,按飛行路線查
10、找航班信息。輸入起點站“wuhan”,輸入終點站”beijing”。</p><p> 查找到相應航班信息如下:</p><p><b> 2.2訂票模塊測試</b></p><p> 在主菜單中選擇2,進行機票購買。顯示購票界面。通過查詢來買滿足自己要求的票:</p><p> 輸入目的地beijing,確定后
11、會詢問是否輸錯重新輸入:</p><p> 然后選擇機票數(shù)量,確定:</p><p><b> 2.3退票模塊測試</b></p><p> 在主菜單中選擇3,進入退票模塊。選擇要退的票數(shù):</p><p> 屏幕上顯示“退票成功”字樣,則表示旅客已成功退票。</p><p> 2.4管
12、理員輸入航班信息</p><p> 在主菜單選擇4,進入管理員輸入航班信息.首先輸入密碼:</p><p> 然后管理員輸入航班數(shù)量,信息等:</p><p><b> 最后保存</b></p><p> 這樣就輸入了航班信息,可以于航班查詢中查閱以及訂票.</p><p><b&g
13、t; 3開發(fā)體會</b></p><p> 在開發(fā)飛機票信息管理系統(tǒng)的過程中,我遇到了許許多多的挫折,但也因此進行了反反復復的思考,從中得到了不少體會。</p><p> 最先我是直接用的四個模塊:查詢航班,訂票,退票以及界面模塊??墒沁@樣子寫發(fā)現(xiàn)每一個模塊中都要重復利用到輸入輸出等大量重復語句,真正區(qū)分這幾個模塊的只有switch選擇。于是我干脆把輸入輸出讀取這幾個提出
14、來作為單獨的模塊函數(shù),而把選擇如何查詢航班(比如按航班號查詢或者按目的地查詢)的方法直接整合在一個函數(shù)中。這樣子程序變短了很多;再者在編寫購票函數(shù)時,先開始還在重新寫查詢函數(shù)。后來發(fā)現(xiàn)整個查詢函數(shù)實際上可以直接調用過來,因為和之前考慮的四個模塊不同,我這個是把所有的搜索方式都寫在一個search函數(shù)里,所以調用更方便更全面了(所有的查找航班的方式全都可以用于購票的索引中)。</p><p> 然后我覺得編程最需
15、要的就是細致。粗心大意地不僅不會編譯通過無法實現(xiàn)功能,而且耗時耗力不討好;更為繁瑣的是,有些錯誤并不是語法錯誤,程序無法識別,但是實際運行時程序就會崩潰。比如我在程序中定義了一個全局指針,但是卻不知道引入的方法就直接用了,程序編譯器通過了但是一旦用到它就會失去響應。后來我的表哥告訴我之后我才恍然大悟。另外一些細節(jié)地方,比如變量的定義必須放在最前面、循環(huán)時事<還是<=等,這些都是需要注意的最基礎東西,但是常常會被忘記或說忽略。
16、這種細致的習慣是一定要養(yǎng)成的。 </p><p> 4.源代碼清單 </p><p> #include<stdio.h> </p><p> #include<string.h> </p><p> #incl
17、ude<stdlib.h> </p><p> typedef struct flightPLANES //定義航班結構體數(shù)組</p><p><b> {</b></p><p> int num; //航班號</p>
18、<p> char start[20]; //起始站</p><p> char over[20]; //終點站</p><p> char time[10]; //時間按</p><p> int count;
19、//機票數(shù)</p><p> struct flightPLANES *next;</p><p> } PLANES; //這個貌似必須用大寫字母,不然會出錯...</p><p> #define PRINT "%3d%17s%12s%10s%9d |\n",p->next->num,p->n
20、ext->start,p->next->over,p->next->time,p->next->count //定義輸出格式</p><p> void printfmenu(); //菜單</p><p> int read(); //讀取航班信息</p><p> vo
21、id save(); //保存航班信息 </p><p> void print(); //輸出航班信息</p><p> PLANES *search(); //查找航班信息</p><p> int book_tickets(); //訂票信息</p>
22、<p> int bounce(); //退票信息</p><p> PLANES *h=NULL; //建立全局變量,存鏈表頭指針</p><p> int m=0; //航班數(shù)量</p><p> void main()</p><p><b> {</b>&l
23、t;/p><p> printfmenu();</p><p> } //主函數(shù)結束</p><p> void initlist(PLANES **h) </p><p><b> {</b></p><p> *h=(PLANES *)malloc(s
24、izeof(PLANES));</p><p> (*h)->next=NULL;</p><p><b> }</b></p><p> void save()//保存模塊程序</p><p><b> { </b></p><p> PLANES *p
25、=NULL;</p><p> FILE *fp,*fp1;//定義文件指針</p><p><b> p=h;</b></p><p> if((fp=fopen("Plane.dat","wb"))==NULL)//打開文件并判斷是否出錯 </p><p><b&
26、gt; {</b></p><p> printf(" 創(chuàng)建文件失敗!\n\n\n");//打印出錯提示</p><p> fflush(stdin);</p><p> getchar();</p><p><b> return;</b
27、></p><p><b> }</b></p><p> if((fp1=fopen("Num.dat","wb"))==NULL)//打開文件并判斷是否出錯 </p><p><b> {</b></p><p> printf("
28、; 創(chuàng)建文件失敗!\n\n\n");//打印出錯提示</p><p> fflush(stdin);</p><p> getchar();</p><p><b> return;</b></p><p><b> }</b><
29、/p><p> while(p->next!=NULL)</p><p><b> {</b></p><p> if(fwrite(p->next,sizeof(PLANES),1,fp)==0)//向文件寫入數(shù)據(jù),并判斷是否出錯</p><p><b> {</b></p&
30、gt;<p> printf(" 向文件輸入數(shù)據(jù)失敗!\n\n\n");</p><p><b> break;</b></p><p><b> }</b></p><p> else p=p->next;</p>
31、<p><b> }</b></p><p> fprintf(fp1,"%d",m);</p><p> fclose(fp);//關閉文件</p><p> fclose(fp1);//關閉文件</p><p><b> }</b></p>
32、<p> int read()//從文件讀取信息模塊</p><p><b> {</b></p><p> FILE *fp,*fp1;//定義文件指針</p><p> PLANES *p=NULL;</p><p><b> int i;</b></p>&
33、lt;p> initlist(&h);</p><p><b> p=h;</b></p><p> if((fp=fopen("Plane.dat","rb"))==NULL)//打開文件,并判斷是否出錯</p><p><b> {</b></p>
34、;<p> printf(" 出錯,請檢查信息文件是否存在,按任意鍵后回車返回住菜單\n\n\n");//打印出錯提示</p><p> fflush(stdin);</p><p> getchar();</p><p> system("cls");</p>&
35、lt;p><b> return 0;</b></p><p><b> }</b></p><p> if((fp1=fopen("Num.dat","rb"))==NULL)//打開文件并判斷是否出錯 </p><p><b> {</b>&
36、lt;/p><p> printf(" 創(chuàng)建文件失敗!\\n\n\n");//打印出錯提示</p><p> fflush(stdin);</p><p> getchar();</p><p> system("cls");</p>&l
37、t;p><b> return 0;</b></p><p><b> }</b></p><p> fscanf(fp1,"%d",&m);</p><p> fclose(fp1);//關閉文件</p><p> printf("\n
38、 總共%d個航班信息\n",m);</p><p> for(i=0;i<m;i++)</p><p><b> {</b></p><p> p->next=(PLANES *)malloc(sizeof(PLANES)); </p><p> p-&
39、gt;next->next=NULL;</p><p> fread(p->next,sizeof(PLANES),1,fp);//從文件中讀取信息</p><p> p=p->next;</p><p><b> }</b></p><p> fclose(fp);//關閉文件</p&g
40、t;<p><b> return 1;</b></p><p><b> }</b></p><p> void print()//打印模塊</p><p><b> {</b></p><p> PLANES *p=NULL;</p>
41、<p> if(read()==0)</p><p> return;//調用讀取文件函數(shù),并判斷是否文件存在。</p><p><b> p=h;</b></p><p> printf("════════════════════════════\n"); </p><p> p
42、rintf("航班號 起始站 終點站 時間 機票數(shù) \n"); </p><p> printf("════════════════════════════\n"); </p><p> while(p->next!=NULL)</p><p><b> {&
43、lt;/b></p><p> printf(PRINT);//打印信息</p><p> p=p->next;</p><p><b> }</b></p><p> printf("════════════════════════════"); </p><
44、p> printf("\n\n\n\n\n\n請按任意鍵后回車結束返回上層菜單:\n");</p><p> fflush(stdin);</p><p> getchar();</p><p> system("cls");</p><p><b> }</b>&
45、lt;/p><p> PLANES *search()//查詢模塊</p><p><b> {</b></p><p> PLANES *p=NULL;</p><p> PLANES *x=NULL; //用于記錄查詢到的記錄</p><p> char name1[20];<
46、/p><p> char name2[20];</p><p> char ii[10];</p><p><b> int n,no;</b></p><p> int flag=0;</p><p> if(read()==0) //調用讀取文件函數(shù),并判斷是否文件存在。<
47、;/p><p><b> return 0;</b></p><p><b> p=h;</b></p><p><b> do</b></p><p><b> {</b></p><p> printf("
48、 請選擇查找方式:\n");</p><p> printf("--------------------------------------------\n");</p><p> printf("| 1.按航班號查找 |\n"</p><p&
49、gt; "| 2.按終點站查找 |\n"</p><p> "| 3.按航線查找 |\n"</p><p> "| 0.返回 |\n"</p&g
50、t;<p> "| 請在0-3中選擇: |\n"</p><p> "| 按其他鍵后回車返回主菜單: |\n\n");</p><p> fflush(stdin);</p><p> scanf("%d"
51、;,&n);//讀取查找方式</p><p><b> if(n==0)</b></p><p><b> break;</b></p><p><b> switch(n)</b></p><p><b> {</b></p>
52、<p><b> case 1:</b></p><p> printf(" 請輸入航班號:\n");</p><p> fflush(stdin);</p><p> scanf("%d",&no);//航班號</p>
53、;<p><b> break;</b></p><p><b> case 2:</b></p><p> printf(" 請輸入終點站名稱:\n");</p><p> fflush(stdin);</p><
54、p> scanf("%10s",name2);//讀取終點站</p><p><b> break;</b></p><p><b> case 3:</b></p><p> printf(" 請輸入起始站名稱:\n");
55、</p><p> fflush(stdin);</p><p> scanf("%10s",name1);//讀取起始站</p><p> printf(" 請輸入終點站名稱:\n");</p><p> fflush(stdin);</p&
56、gt;<p> scanf("%10s",name2);//終點站</p><p><b> break;</b></p><p> default: printf(" 請選擇有效查詢方式!\n\n\n");</p><p><b>
57、}</b></p><p> while(p->next!=NULL)</p><p><b> { </b></p><p> if(strcmp(p->next->start,name1)==0||strcmp(p->next->over,name2)==0) //按終點站起始站判斷輸
58、出條件</p><p><b> {</b></p><p> printf(" \n查找航班信息成功!\n\n\n");</p><p> printf("航班號 起始站 終點站 時間 機票數(shù)\n");<
59、;/p><p> printf(PRINT);//打印信息</p><p> x=p->next;</p><p><b> flag=1;</b></p><p><b> break;</b></p><p><b> }</b><
60、/p><p> if(p->next->num==no)//按航班號判斷輸出條件</p><p><b> { </b></p><p> printf(" \n查找航班信息成功!\n\n\n");</p><p> printf(&qu
61、ot;航班號 起始站 終點站 時間 機票數(shù)\n");</p><p> printf(PRINT);//打印信息</p><p> x=p->next;</p><p><b> flag=1;</b></p><p><b> break;&
62、lt;/b></p><p><b> } </b></p><p> p=p->next;</p><p><b> }</b></p><p><b> if(!flag)</b></p><p> printf("查
63、找失敗!:\n\n\n\n\n");</p><p> printf ( "\n\n\n"</p><p> " 是否重新查找?\n"</p><p> " 請鍵入yes或no\n"</p
64、><p> " 后回車鍵結束 \n");</p><p> no=0;//將航班號賦值為0</p><p><b> p=h;</b></p><p><b> flag=0;</b></p><p>
65、 fflush(stdin);</p><p> scanf("%10s",ii);</p><p> system("cls");</p><p> }while(strcmp(ii,"yes")==0);//判斷結束</p><p> system("cls&q
66、uot;);</p><p> return(x);</p><p><b> }</b></p><p> int book_tickets()//訂票模塊</p><p><b> {</b></p><p><b> int n;</b>
67、</p><p> char a[10];</p><p> PLANES *x=NULL; </p><p> PLANES *p=NULL;</p><p><b> do</b></p><p><b> {</b></p><p>
68、 printf(" 查找要訂票的航班:\n");</p><p> x = search(); //調用查詢模塊</p><p> if(x!=NULL)</p><p><b> {</b></p><p> print
69、f(" 請輸入您要訂的機票數(shù)以回車鍵結束:\n");</p><p> fflush(stdin);</p><p> scanf("%d",&n); //讀取所訂機票數(shù)</p><p><b> }</b></p>
70、<p> else return (0);</p><p><b> if(n<0)</b></p><p><b> {</b></p><p> printf(" 請輸入有效的機票數(shù)!\n\n\n\n\n\n");//判斷機票數(shù)是
71、否出錯</p><p><b> break;</b></p><p><b> }</b></p><p> if(x->count!=0&&x->count>=n)//判斷是否出錯</p><p><b> {</b></p&
72、gt;<p> x->count=x->count-n;</p><p> save();//調用保存函數(shù)</p><p> printf(" 訂票成功!\n\n按任意鍵返回\n\n");</p><p><b> getch();</b></p><
73、;p> system("cls");</p><p><b> break;</b></p><p><b> }</b></p><p> if(x->count<n)//判斷是否出錯</p><p><b> {</b><
74、;/p><p> printf(" 可訂機票數(shù)不足,請輸入有效的機票數(shù):\n\n\n\n\n\n");</p><p><b> break; </b></p><p><b> }</b></p><p> printf(&qu
75、ot; 是否繼續(xù)? 請輸入yes或no以回車鍵結束:\n\n\n\n\n\n");//判斷是否繼續(xù)訂票</p><p> fflush(stdin);</p><p> scanf("%10s",a);</p><p> }while(!strcmp(a,"yes"
76、));//判斷結束</p><p> return(1);</p><p><b> }</b></p><p> int bounce()//退票模塊</p><p><b> {</b></p><p><b> int n;</b><
77、;/p><p> char a[10];</p><p> PLANES *p=NULL;</p><p> PLANES *x=NULL;</p><p><b> do</b></p><p><b> { </b></p><p> p
78、rintf(" 查找要退票的航班\n");</p><p> x= search();//調用查詢模塊</p><p> if(x!=NULL)</p><p><b> {</b></p><p> printf("
79、 請輸入您要退的機票數(shù)目:\n");</p><p> fflush(stdin);</p><p> scanf("%d",&n);//輸入所退票數(shù)</p><p><b> }</b></p><p> else return (0);</
80、p><p> while(n<0) //判斷票數(shù)是否有效</p><p><b> {</b></p><p> printf(" 請輸入有效的機票數(shù)!\n\n\n\n\n\n");</p><p> fflush(stdin);</p&
81、gt;<p> scanf("%d",&n);</p><p><b> }</b></p><p> x->count= x->count+n;</p><p> save(); //調用保存模塊</p><p> printf("
82、 退票成功!\n\n\n\n\n");</p><p> printf(" 是否繼續(xù)? 請鍵入yes或no以回車鍵結束:\n\n\n");//判斷是否繼續(xù)退票</p><p> fflush(stdin);</p><p> scanf("%1
83、0s",a);</p><p> }while(!strcmp(a,"yes"));//判斷并跳出循環(huán)</p><p> return (1);</p><p> fflush(stdin);</p><p> getchar();</p><p><b> }<
84、/b></p><p> void printfmenu()</p><p><b> {</b></p><p><b> int j;</b></p><p><b> do</b></p><p><b> {</
85、b></p><p> printf("\t\t===================================================\n"</p><p> "\t\t| 歡迎使用飛機票查詢與銷售系統(tǒng) |\n"</p><p> "\t\t=====
86、==============================================\n"</p><p> "\t\t|請選擇服務: |\n"</p><p> "\t\t| 航班信息查詢,請輸入1 |\n&qu
87、ot;</p><p> "\t\t| |\n"</p><p> "\t\t| 買票服務,請輸入2 |\n"</p><p> "\t\t|
88、 |\n"</p><p> "\t\t| 退票服務,請輸入3 |\n"</p><p> "\t\t|
89、|\n"</p><p> "\t\t| 退出系統(tǒng),請輸入0 |\n"</p><p> "\t\t===================================================\n\n\n"</p><p> "請
90、輸入您選擇的服務編號,然后回車鍵確認:");</p><p> fflush(stdin);</p><p> scanf("%d",&j);</p><p><b> switch(j)</b></p><p><b> {</b></p>
91、<p><b> case 1:</b></p><p> system("cls");</p><p> search();//調用查找模塊</p><p><b> break;</b></p><p><b> case 2:</b&
92、gt;</p><p> system("cls");</p><p> book_tickets();//調用訂票模塊</p><p><b> break;</b></p><p><b> case 3:</b></p><p> syst
93、em("cls");</p><p> bounce();//調用退票模塊</p><p><b> break;</b></p><p><b> case 4:</b></p><p> system("cls");</p><
94、p><b> creat();</b></p><p><b> case 0:;</b></p><p> system("cls");</p><p><b> break;</b></p><p><b> default:&
95、lt;/b></p><p> printf("請選擇有效選項!按任意鍵后回車返回。\n\n\n\n");</p><p> fflush(stdin);</p><p> getchar();</p><p> system("cls");</p><p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件課程設計報告(飛機票系統(tǒng))
- 軟件課程設計報告(飛機票銷售系統(tǒng))
- 軟件課程設計報告--飛機票銷售系統(tǒng)
- 飛機票銷售系統(tǒng)軟件課程設計
- 軟件課程設計--c語言程序之飛機票訂票系統(tǒng)
- c語言課程設計報告---民航飛機票訂票系統(tǒng)設計
- 課程設計--飛機票網(wǎng)上預訂系統(tǒng)概要設計
- 飛機票報銷管理辦法
- 數(shù)據(jù)結構課程設計---飛機售票系統(tǒng)
- 數(shù)據(jù)庫課程設計---飛機機票預訂系統(tǒng)
- 數(shù)據(jù)庫課程設計---飛機機票預訂系統(tǒng)
- 車站售票管理系統(tǒng)—軟件工程課程設計報告
- 軟件工程課程設計-機票預定系統(tǒng)
- 機票預定系統(tǒng)-課程設計報告
- 民航售票系統(tǒng)課程設計報告
- 火車售票系統(tǒng)課程設計報告
- 民航售票系統(tǒng)課程設計報告
- 課程設計報告---- 火車售票系統(tǒng)
- 火車售票系統(tǒng)課程設計報告
- 軟件工程課程設計-機票預訂系統(tǒng)
評論
0/150
提交評論