版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 軟件課程設(shè)計報告</b></p><p> 班級:光信1005班</p><p><b> 姓名: </b></p><p><b> 學(xué)號: </b></p><p><b> 目錄</b></p>&
2、lt;p> 軟件設(shè)計…………………………………………………………..2</p><p> 設(shè)計題目…………………………………………………………2</p><p> 設(shè)計要求…………………………………………………………2</p><p> 設(shè)計思想…………………………………………………………2</p><p> 流程圖……………
3、………………………………………………4</p><p> 軟件測試……………………………………………………………12</p><p> 航班信息查詢模塊測試…………………………………………12</p><p> 訂票模塊測試……………………………………………………17</p><p> 機(jī)票信息查詢模塊測試……………………………………
4、……19</p><p> 退票模塊測試……………………………………………………23</p><p> 算法改進(jìn)……………………………………………………………25</p><p> 開發(fā)體會……………………………………………………………26</p><p> 附錄:源代碼清單……………………………………………………28</p&g
5、t;<p> 參考文獻(xiàn)………………………………………………………………64</p><p><b> 1 軟件設(shè)計</b></p><p><b> 設(shè)計題目</b></p><p><b> 飛機(jī)票銷售系統(tǒng)</b></p><p><b>
6、設(shè)計要求</b></p><p> 運(yùn)用C語言基本知識,結(jié)合相關(guān)算法思想和數(shù)據(jù)結(jié)構(gòu),編寫一個單微機(jī)系統(tǒng)下運(yùn)行的飛機(jī)票銷售系統(tǒng)。飛機(jī)票銷售系統(tǒng)模擬飛機(jī)票銷售人員的工作,應(yīng)實(shí)現(xiàn)航班信息查詢,訂票,機(jī)票信息查詢,退票等功能。</p><p><b> 1.3 設(shè)計思想</b></p><p> 本程序分為四個模塊,即航班信息查詢模
7、塊,訂票模塊,機(jī)票信息模塊,退票模塊。通過建立plane.txt和ticket.txt兩個文本文檔來儲存航班信息和已售出的機(jī)票信息。程序中,定義了airline和ticket兩個結(jié)構(gòu)體來分別儲存航班和機(jī)票信息,再使用struct airline *list1()和struct ticket *list2()來從文檔中讀取信息儲存在鏈表中,并輸出鏈表頭指針。</p><p> 航班信息查詢模塊功能由函數(shù)airli
8、ne()實(shí)現(xiàn),再分為按航班編號,目的地,起飛時間三種查找方式。通過airline()調(diào)用menu1(struct airline *)目錄函數(shù),再選擇進(jìn)入search11(struct airline *),search12(struct airline *),search13(struct airline *)三個函數(shù),來進(jìn)行信息查詢。</p><p> 訂票模塊功能由函數(shù)book()實(shí)現(xiàn),通過對輸入的航班編
9、號的判斷,來決定是否能夠訂票,訂票成功后將添加的機(jī)票信息回寫入ticket.txt中,并改動plane.txt中相應(yīng)的航班剩余機(jī)票信息。</p><p> 機(jī)票信息查詢模塊功能由ticketsearch()實(shí)現(xiàn),再分為按機(jī)票編號和旅客姓名兩種查找方式。通過ticketsearch()調(diào)用menu2(struct ticket)目錄函數(shù),再選擇進(jìn)入search21(struct ticket)和search22(
10、struct ticket)兩個函數(shù),來進(jìn)行信息的查詢。</p><p> 退票模塊功能由refund()函數(shù)來實(shí)現(xiàn),通過對輸入機(jī)票編號的判斷,來決定是否退票,退票成功后將退除的機(jī)票信息從ticket.txt中刪除,并改動plane.txt中相應(yīng)的航班剩余機(jī)票信息。</p><p><b> 1.4 流程圖</b></p><p><
11、;b> 主菜單流程圖</b></p><p> airlinesearch()為航班查詢函數(shù),book()為機(jī)票訂購函數(shù),ticketsearch()為機(jī)票查詢函數(shù),refund()為退票函數(shù)。</p><p> 航班信息查詢菜單menu1(struct airline *p)</p><p> search11(struct airlin
12、e *)為按航班編號查詢信息,search12(struct airline *)為按航班目的地查詢信息,search13(struct airline *)為按起飛時間查詢信息,menu()為主菜單。</p><p> 按航班編號查詢search11(struct airline *)函數(shù)流程圖</p><p> search12(struct airline *)和search13
13、(struct airline *)同理,只是改了下輸入項和比較項。</p><p> 訂票book()函數(shù)流程圖</p><p> 機(jī)票信息查詢主菜單menu2(struct ticket *p)流程圖</p><p> 按機(jī)票編號查詢信息search21(struct ticket *)流程圖</p><p> 退票refund(
14、)流程圖:</p><p><b> 2 軟件測試</b></p><p> 2.1 航班信息查詢模塊測試</p><p> 進(jìn)入程序,首先進(jìn)入主菜單界面。</p><p> 選擇1,進(jìn)入航班信息查詢菜單界面</p><p> 選擇1,按航班編號查詢航班信息,輸入“ZH9658”。<
15、;/p><p> 查到的航班信息如下所示:</p><p> 輸入“a”,返回菜單后,如果選擇2,就按航班目的地查找,輸入“南京”。</p><p> 查到相應(yīng)的機(jī)票信息為:</p><p> 按”a”返回菜單后,如果選擇3,就按起飛時間查找,輸入“07:00”。</p><p><b> 查到的信息如
16、下:</b></p><p><b> 訂票模塊測試</b></p><p> 在主菜單中選擇2,進(jìn)行機(jī)票購買,顯示購票界面,按前面測試的,輸入到廣州的航班號“ZH9658”,輸入姓名“李俊彥”,性別“男”。</p><p> 如果剩余票,則顯示訂票成功,并顯示機(jī)票信息:</p><p> 再回主菜單
17、對“ZH9658”的航班信息進(jìn)行查詢,結(jié)合前面的測試,剩余票數(shù)由“5”變成了“4”。</p><p> 機(jī)票信息查詢模塊測試</p><p> 返回主菜單,選擇“3”進(jìn)入機(jī)票信息查詢模塊。</p><p> 選擇“1”,按機(jī)票編號查詢,輸入李俊彥的機(jī)票編號“51”.</p><p> 之后顯示其機(jī)票信息:</p><
18、;p> 返回機(jī)票信息查詢的菜單后,選擇“2”,按購票人姓名查詢機(jī)票信息,輸入“李俊彥”。</p><p> 之后顯示其機(jī)票信息:</p><p><b> 退票模塊測試</b></p><p> 回到主菜單,選擇“4”,進(jìn)入退票模塊,輸入要退機(jī)票的編號“51”.</p><p> 顯示所退票的信息后,再輸
19、入“1”確認(rèn)退票。</p><p> 再回到退票部分,輸入機(jī)票編號“51”。</p><p> 再回到航班信息查詢,查詢ZH9658航班的信息,剩余機(jī)票數(shù)由“4”變回了“5”。</p><p> 若進(jìn)行多張機(jī)票的訂購與退票,也能正常運(yùn)行。</p><p><b> 3 算法改進(jìn)</b></p>&
20、lt;p><b> 改進(jìn)一:</b></p><p> 在讀取機(jī)票信息,并儲存在鏈表的過程中,開始時,固定了循環(huán)讀入的次數(shù),則當(dāng)刪除機(jī)票信息或者添加機(jī)票信息后,會導(dǎo)致文件中的信息不能完全讀入到鏈表中。之后發(fā)現(xiàn)其問題,改為了用while(feof(fp)==0)循環(huán),邊將數(shù)據(jù)讀入鏈表,邊創(chuàng)建下一個鏈表節(jié)點(diǎn),直至文件末尾。</p><p><b>
21、改進(jìn)二:</b></p><p> 在各個目錄的選擇過程時,先使用了int型的choice來儲存客戶的選擇,但當(dāng)客戶不按照提示,輸入char型的數(shù)據(jù)時,會導(dǎo)致程序不能識別,進(jìn)入死循環(huán)。發(fā)現(xiàn)這個問題后,我將choice改為了char型。但又由于輸入時的回車號,會被讀入下次的choice=getchar(),使程序運(yùn)行出錯。最后,我在choice=getchar()的前面加了getchar()來儲存回車
22、,改進(jìn)了這個問題。</p><p><b> 改進(jìn)三:</b></p><p> 在book()和refund()模塊中,由于要回寫,會有if((fp1=fopen("plane.txt","wt+"))==NULL),但當(dāng)用戶執(zhí)行到一半直接關(guān)閉程序時,由于未執(zhí)行回寫部分的語句,將導(dǎo)致txt文檔中的信息會沒有。之后,我將打開
23、文檔的語句剛放在回寫的前面,這樣當(dāng)用戶關(guān)閉時,txt里面的信息不會丟失。</p><p><b> 4 開發(fā)體會</b></p><p> 經(jīng)過了這次的飛機(jī)票銷售系統(tǒng)程序的開發(fā),讓我深刻地明白了,軟件的開發(fā)是一個體力活,是對眼力和腦力的一次考驗。</p><p> 開始時,由于對文件和鏈表的極度不熟悉,會對編寫這個程序感到十分的茫然。但
24、當(dāng)慢慢地了解了動態(tài)鏈表的建立過程,熟悉了用fscanf和fprintf對文件的寫出和寫入,我覺得自己應(yīng)該可以做了。</p><p> 程序功能模塊的劃分還算比較簡單,接下來就是一塊一塊的做。上學(xué)期在學(xué)c語言時,所編的程序一般就只有主函數(shù),即使是在學(xué)函數(shù)這塊,一般也就調(diào)用一兩個簡單的函數(shù),最多的程序也就100行。這次的最后有600多行,對函數(shù)的調(diào)用也是挺復(fù)雜的,其間還有許多對輸入輸出信息的處理,對文件及鏈表的操作
25、。整個這次微型軟件的編寫過程,讓我對軟件的編寫有了一定的認(rèn)識,同時自己程序的編寫能力也是得到了極大的提升,對結(jié)構(gòu)化的程序編寫方法有了很深的理解和體會。</p><p> 開始對文件打開時,不了解“a”,“r”,“w”等打開方式,會導(dǎo)致txt中的信息被清空。后來經(jīng)過了單獨(dú)的測試,才體會到了各種方式的用法,以及在程序中的位置不同而對程序的運(yùn)行造成不同的影響,最終能夠?qū)ξ募醋约旱南敕ㄈミM(jìn)行操作。</p>
26、<p> 將文件中的信息儲存到建立的鏈表中后,不知道如何在各個功能模塊中調(diào)用鏈表,覺得如果一個函數(shù)中建立一次就太麻煩了。后來想到了將建立鏈表的過程單獨(dú)的做成函數(shù),輸出鏈表的頭指針,再在函數(shù)中調(diào)用時,將頭指針賦給相應(yīng)的結(jié)構(gòu)指針就可以對整個鏈表進(jìn)行操作了。</p><p> 編寫到退票模塊時,才突然發(fā)現(xiàn)在訂票模塊沒有修改訂票后的航班信息。再重新考慮回寫問題時,經(jīng)常出現(xiàn)文件回寫未成功時,文件中的信息被
27、清空了,挺讓人郁悶的。這就是將航班和機(jī)票信息直接寫到txt中的壞處吧!不過在編寫大型軟件時,或許只能把信息存在文檔中,這就要求編寫人員在編寫時考慮到各種各樣的問題,防止出現(xiàn)將程序信息清空的現(xiàn)象吧。這個事情讓我了解到,編程序需要十分的細(xì)心,且要考慮很多的細(xì)節(jié),確實(shí)是個體力活。</p><p> 在編寫過程中,也發(fā)現(xiàn)了一些VC的類似bug的東西。比如:如果fprintf后面有scanf等一些等待輸入的指令時,會回寫
28、不進(jìn)去,即便它跟fprintf回寫的東西完全無關(guān);一些循環(huán),有的只能用for,有的又只能用while;在使用scanf和gets輸入字符和字符串時,有非常容易讀入錯誤,要在%c前加空格等等。</p><p> 這次的程序由于不再只是自己使用,所以需要人性化的輸入界面。這也是第一次設(shè)定界面,因此在設(shè)計輸入和輸出界面時,費(fèi)了不少精力,也因此調(diào)試了不少時間。雖然最后的界面與一般的程序界面還是有很大的差距,但也算是稍微
29、人性化了吧,仿佛感受到了上個世紀(jì)人們的用電腦的過程。</p><p> 經(jīng)過這次軟件設(shè)計,感覺自己對軟件編寫有了初步的認(rèn)識,對電腦上的一些程序有了一些新的認(rèn)識。比如機(jī)房上機(jī)登陸時的界面,應(yīng)該就是用C的吧;用鼠標(biāo)操作軟件,只是把輸入設(shè)備擴(kuò)展到了鼠標(biāo);使用一些程序時,基本地把其分解為幾個功能模塊等??傊?,經(jīng)過三個星期的努力,雖然辛苦,但真真實(shí)實(shí)地學(xué)到了很多的東西,這個過程也挺讓人難忘的。</p>&l
30、t;p><b> 附錄:源代碼清單</b></p><p> #include<stdio.h></p><p> #include<malloc.h></p><p> #include<time.h></p><p> #include<windows.h&g
31、t;</p><p> #include<conio.h></p><p> struct airline//儲存航班信息</p><p><b> {</b></p><p> char number[8];</p><p> char place[5];</p>
32、;<p> char time[6];</p><p><b> int left;</b></p><p><b> int sum;</b></p><p> int price;</p><p> struct airline *next;</p><
33、;p><b> };</b></p><p> struct ticket//儲存機(jī)票信息</p><p><b> {</b></p><p> int number1;</p><p> char number2[8];</p><p> char pl
34、ace[5];</p><p> char time[6];</p><p> char name[10];</p><p> char sex[5];</p><p> int price;</p><p> struct ticket *next;</p><p><b>
35、; };</b></p><p> struct airline *list1();</p><p> struct ticket *list2();</p><p> void airlinesearch();</p><p> void search11(struct airline *);</p>&
36、lt;p> void search12(struct airline *);</p><p> void search13(struct airline *);</p><p> void menu();</p><p> void menu1(struct airline *);</p><p> void menu2(st
37、ruct ticket *);</p><p> void book();</p><p> void ticketsearch();</p><p> void search21(struct ticket *);</p><p> void search22(struct ticket *);</p><p&g
38、t; void refund();</p><p> struct airline *list1()//創(chuàng)建航班信息的鏈表</p><p><b> {</b></p><p><b> int n;</b></p><p> struct airline *p1,*p2,*head;&l
39、t;/p><p><b> FILE *fp;</b></p><p> if((fp=fopen("plane.txt","r"))==NULL)</p><p><b> {</b></p><p> printf("打開文件失敗\n&quo
40、t;);</p><p><b> exit(0);</b></p><p><b> }</b></p><p> if((p1=(struct airline *)malloc(sizeof(struct airline)))==NULL)//建立頭指針</p><p><b>
41、 {</b></p><p> printf("內(nèi)存分配失敗\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> head=p1;p2=p1;</p><p> fo
42、r(n=0;n<10;n++)//建立鏈表以儲存航班信息</p><p><b> {</b></p><p> p2->next=p1;</p><p><b> p2=p1;</b></p><p> if((p1=(struct airline *)malloc(sizeo
43、f(struct airline)))==NULL)</p><p><b> {</b></p><p> printf("內(nèi)存分配失敗\n");</p><p><b> exit(0);</b></p><p><b> }</b></p
44、><p><b> }</b></p><p> p2->next=NULL;</p><p><b> p1=head;</b></p><p> while(p1!=NULL)</p><p><b> {</b></p>
45、<p> fscanf(fp,"%s %s %s %d %d %d\n",p1->number,p1->place,p1->time,&p1->left,&p1->sum,&p1->price);</p><p> p2=p1->next;</p><p><b> p1=p2;
46、</b></p><p><b> }</b></p><p> return(head);</p><p><b> free(p1);</b></p><p> fclose(fp);</p><p><b> }</b><
47、;/p><p> struct ticket *list2()//建立機(jī)票信息的鏈表</p><p><b> {</b></p><p> struct ticket *p1,*p2,*head;</p><p><b> FILE *fp;</b></p><p>
48、 if((fp=fopen("ticket.txt","r"))==NULL)</p><p><b> {</b></p><p> printf("打開文件失敗\n");</p><p><b> exit(0);</b></p><
49、p><b> }</b></p><p> if((p1=(struct ticket *)malloc(sizeof(struct ticket)))==NULL)//建立頭指針</p><p><b> {</b></p><p> printf("內(nèi)存分配失敗\n");</p&
50、gt;<p><b> exit(0);</b></p><p><b> }</b></p><p> head=p1;p2=p1;</p><p> while(feof(fp)==0)</p><p><b> {</b></p>&
51、lt;p> p2->next=p1;</p><p><b> p2=p1;</b></p><p> fscanf(fp,"%d %s %s %s %s %s %d\n",&p1->number1,p1->number2,p1->place,p1->time,p1->name,p1->
52、sex,&p1->price);</p><p> if((p1=(struct ticket *)malloc(sizeof(struct ticket)))==NULL)</p><p><b> {</b></p><p> printf("內(nèi)存分配失敗\n");</p><p&
53、gt;<b> exit(0);</b></p><p><b> }</b></p><p><b> }</b></p><p> p2->next=NULL;</p><p> return(head);</p><p><b
54、> free(p1);</b></p><p> fclose(fp);</p><p><b> }</b></p><p> void menu()//主菜單</p><p><b> {</b></p><p><b> int
55、n;</b></p><p> char choice;</p><p> printf(" 歡迎使用飛機(jī)票銷售系統(tǒng)\n\n");</p><p> printf("請選擇您要進(jìn)行的服務(wù)\n\n");</p><p> for(n=0
56、;n<20;n++)</p><p> {printf(" ");}</p><p> printf("****************************************\n");</p><p> printf(" ┃☆☆☆☆☆☆1.航班信息查詢◇◇☆☆
57、☆☆┃\n");</p><p> printf(" ┃◇◇◇◇◇◇2.訂票 ◇◇◇◇◇◇┃\n");</p><p> printf(" ┃○○○○○○3.機(jī)票信息查詢○○○○○○┃\n");</p><p> printf
58、(" ┃△△△△△△4.退票 △△△△△△┃\n");</p><p> for(n=0;n<20;n++)</p><p> {printf(" ");}</p><p> printf("********************************
59、********\n");</p><p> printf("提示:如果是第一次輸入,請先按“space”再選擇\n");</p><p> getchar();</p><p><b> do</b></p><p><b> {</b></p>
60、<p> choice=getchar();</p><p> switch(choice)</p><p><b> {</b></p><p> case '1': system("cls");</p><p> airlinesearch();</p&
61、gt;<p><b> break;</b></p><p> case '2': system("cls");</p><p><b> book();</b></p><p><b> break;</b></p><p
62、> case '3': system("cls");</p><p> ticketsearch();</p><p><b> break;</b></p><p> case '4': system("cls");</p><p>
63、<b> refund();</b></p><p><b> break;</b></p><p> default: printf("您輸入的有誤");</p><p> Sleep(2000);</p><p> system("cls");&
64、lt;/p><p><b> menu();</b></p><p><b> break;</b></p><p><b> }</b></p><p> }while(choice!='5');</p><p><b>
65、 }</b></p><p> void main()</p><p><b> {</b></p><p><b> menu();</b></p><p><b> }</b></p><p> void airlinesea
66、rch()//航班信息查詢</p><p><b> {</b></p><p> struct airline *head;</p><p> head=list1();</p><p> menu1(head);</p><p><b> }</b></p
67、><p> void menu1(struct airline *p)//查詢航班信息的主目錄</p><p><b> {</b></p><p><b> int n;</b></p><p> char choice;</p><p> printf("
68、 ╔════════╗\n");</p><p> printf(" ║ ║\n");</p><p> printf(" ║ 航班查詢模塊
69、 ║\n");</p><p> printf(" ║ ║\n");</p><p> printf(" ╚════════╝\n\n");</p><p> pri
70、ntf("請按提示選擇您要查詢的方式\n\n");</p><p> for(n=0;n<20;n++)</p><p> {printf(" ");}</p><p> printf("━━━━━━━━━━━━━━━━━━━━━\n");</p><p> print
71、f(" ┃☆☆☆☆☆☆1.按航班編號查找 ☆☆☆☆┃\n");</p><p> printf(" ┃◇◇◇◇◇◇2.按航班目的地查找 ◇◇◇◇┃\n");</p><p> printf(" ┃○○○○○○3.按航班起飛
72、時間查找○○○○┃\n");</p><p> printf(" ┃△△△△△△4.返回上級 △△△△┃\n");</p><p> for(n=0;n<20;n++)</p><p> {printf(" ");}</p><p&
73、gt; printf("━━━━━━━━━━━━━━━━━━━━━\n");</p><p><b> do</b></p><p><b> {</b></p><p> getchar();</p><p> choice=getchar();</p>
74、<p> switch(choice)</p><p><b> {</b></p><p> case '1': search11(p);</p><p><b> break;</b></p><p> case '2': search12(
75、p);</p><p><b> break;</b></p><p> case '3': search13(p);</p><p><b> break;</b></p><p> case '4': system("cls");<
76、;/p><p><b> menu();</b></p><p><b> break;</b></p><p> default: printf("您輸入的有誤\n");</p><p> Sleep(2000);</p><p> system(
77、"cls");</p><p><b> menu1(p);</b></p><p><b> break;</b></p><p><b> }</b></p><p> }while(choice!='5');</p>
78、<p><b> }</b></p><p> void search11(struct airline *phead)//按航班編號查找</p><p><b> {</b></p><p> struct airline *p1,*p2;</p><p> char pl
79、anenum[8],in;</p><p> int n,flag=0;</p><p> printf("請輸入所要查詢的航班編號\n");</p><p> scanf("%s",planenum);//輸入航班號</p><p> p1=p2=phead;</p><p
80、> for(n=0;n<10;n++)//循環(huán)與鏈表中航班號比較</p><p><b> {</b></p><p> if(strcmp(p1->number,planenum)==0)</p><p><b> {</b></p><p><b> fla
81、g=1;</b></p><p> Sleep(2000);</p><p> system("cls");</p><p> printf("您查詢的航班信息如下所示:\n\n\n\n");</p><p> printf(" *************
82、*************************************************\n");</p><p> printf(" 航班號\t目的地\t起飛時間 剩余票數(shù) 總票數(shù)\t機(jī)票價格\n");</p><p> printf(" %s\t%s\t%s\t %d\t\t%d\t
83、 %d\n",p1->number,p1->place,p1->time,p1->left,p1->sum,p1->price);</p><p> printf(" **************************************************************\n\n\n");</p&g
84、t;<p> printf("輸入“a”返回上級\n");</p><p> scanf(" %c",&in);</p><p> while(in!='a')</p><p><b> {</b></p><p> printf(&
85、quot;輸入不合法\n");</p><p> printf("輸入“a”返回上級\n");</p><p> scanf(" %c",&in);}</p><p> Sleep(2000);</p><p> system("cls");</p&g
86、t;<p> menu1(phead);//重新輸入</p><p><b> break;</b></p><p><b> }</b></p><p> p2=p1->next;</p><p><b> p1=p2;</b></p>
87、;<p><b> }</b></p><p> if(flag==0)</p><p><b> {</b></p><p> printf("您輸入的信息有誤");</p><p> Sleep(1000);</p><p>
88、 system("cls");</p><p> menu1(phead);//回到航班信息查詢目錄</p><p><b> }</b></p><p><b> }</b></p><p> void search12(struct airline *phead)//
89、按目的地查找</p><p><b> {</b></p><p> struct airline *p1,*p2;</p><p> char place[5],in;</p><p> int n,flag=0;</p><p> printf("請輸入所要查詢的航班目的地
90、\n");</p><p> scanf("%s",place);//輸入目的地</p><p> p1=p2=phead;</p><p> for(n=0;n<10;n++)//循環(huán)與鏈表中航班目的地比較</p><p><b> {</b></p><
91、p> if(strcmp(p1->place,place)==0)</p><p><b> {</b></p><p><b> flag=1;</b></p><p> Sleep(2000);</p><p> system("cls");</p
92、><p> printf("您查詢的航班信息如下所示:\n\n\n\n");</p><p> printf(" **************************************************************\n");</p><p> printf("
93、 航班號\t目的地\t起飛時間 剩余票數(shù) 總票數(shù)\t機(jī)票價格\n");</p><p> printf(" %s\t%s\t%s\t %d\t\t%d\t %d\n",p1->number,p1->place,p1->time,p1->left,p1->sum,p1->price);</p>
94、<p> printf(" **************************************************************\n\n\n");</p><p> printf("輸入“a”返回上級\n");</p><p> scanf(" %c",&in);&
95、lt;/p><p> while(in!='a')</p><p><b> {</b></p><p> printf("輸入不合法\n");</p><p> printf("輸入“a”返回上級\n");</p><p> scan
96、f(" %c",&in);</p><p><b> }</b></p><p> Sleep(2000);</p><p> system("cls");</p><p> menu1(phead);//重新輸入</p><p><b
97、> break;</b></p><p><b> }</b></p><p> p2=p1->next;</p><p><b> p1=p2;</b></p><p><b> }</b></p><p> if(
98、flag==0)</p><p><b> {</b></p><p> printf("您輸入的信息有誤");</p><p> Sleep(1000);</p><p> system("cls");</p><p> menu1(phead)
99、;//回到航班查詢目錄</p><p><b> }</b></p><p><b> }</b></p><p> void search13(struct airline *phead)//按起飛時間查找</p><p><b> {</b></p>
100、<p> struct airline *p1,*p2;</p><p> char time[5],in;</p><p> int n,flag=0;</p><p> printf("請輸入所要查詢的航班時間\n");</p><p> scanf("%s",time);//輸
101、入航班時間</p><p> p1=p2=phead;</p><p> for(n=0;n<10;n++)//循環(huán)與鏈表中航班時間比較</p><p><b> {</b></p><p> if(strcmp(p1->time,time)==0)</p><p><b
102、> {</b></p><p><b> flag=1;</b></p><p> Sleep(2000);</p><p> system("cls");</p><p> printf("您查詢的航班信息如下所示:\n\n\n\n");</p&
103、gt;<p> printf(" **************************************************************\n");</p><p> printf(" 航班號\t目的地\t起飛時間 剩余票數(shù) 總票數(shù)\t機(jī)票價格\n");</p><p>
104、; printf(" %s\t%s\t%s\t %d\t\t%d\t %d\n",p1->number,p1->place,p1->time,p1->left,p1->sum,p1->price);</p><p> printf(" ********************************
105、******************************\n\n\n");</p><p> printf("輸入“a”返回上級\n");</p><p> scanf(" %c",&in);</p><p> while(in!='a')</p><p>&
106、lt;b> {</b></p><p> printf("輸入不合法\n");</p><p> printf("輸入“a”返回上級\n");</p><p> scanf(" %c",&in);</p><p><b> }</b
107、></p><p> Sleep(2000);</p><p> system("cls");</p><p> menu1(phead);//重新輸入</p><p><b> break;</b></p><p><b> }</b>&
108、lt;/p><p> p2=p1->next;</p><p><b> p1=p2;</b></p><p><b> }</b></p><p> if(flag==0)</p><p><b> {</b></p><
109、;p> printf("您輸入的信息有誤");</p><p> Sleep(1000);</p><p> system("cls");</p><p> menu1(phead);//回到航班查詢目錄</p><p><b> }</b></p>
110、<p><b> }</b></p><p> void book()//訂票</p><p><b> {</b></p><p> struct airline *head1,*p1,*p2;</p><p> struct ticket *head2,*p3,*p4,*ad
111、d;</p><p> char planenum[8],name[10],sex[5],in;</p><p> int flag=0;</p><p> FILE *fp1,*fp2;</p><p> if((fp2=fopen("ticket.txt","at+"))==NULL)//以
112、追加的形式打開文本文檔</p><p><b> {</b></p><p> printf("打開文件失敗\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p>
113、 if((add=(struct ticket *)malloc(sizeof(struct ticket)))==NULL)</p><p><b> {</b></p><p> printf("內(nèi)存分配失敗\n");</p><p><b> exit(0);</b></p>
114、<p><b> }</b></p><p> head1=list1();</p><p> p1=p2=head1;</p><p> head2=list2();</p><p> p3=p4=head2;</p><p> state:printf("**
115、******************************************************************************");</p><p> printf(" ╔════════╗\n");</p><p> printf("
116、 ║ ║\n");</p><p> printf(" ║ 訂票模塊 ║\n");</p><p> printf(" ║ ║
117、\n");</p><p> printf(" ╚════════╝\n");</p><p> printf("********************************************************************************");
118、</p><p> printf("\n\n請輸入您要乘坐的飛機(jī)的航班號\n");</p><p> scanf("%s",planenum);//輸入航班號</p><p> while(p1!=NULL)//與鏈表中航班編號比較</p><p><b> {</b>&l
119、t;/p><p> if(strcmp(p1->number,planenum)==0&&p1->left!=0)</p><p><b> {</b></p><p><b> flag=1;</b></p><p> printf("請輸入您的姓名: &
120、quot;);</p><p> scanf(" %s",name);</p><p> printf("請輸入您的性別: ");</p><p> scanf(" %s",sex);</p><p><b> break;</b></p>
121、<p><b> }</b></p><p> p2=p1->next;</p><p><b> p1=p2;</b></p><p><b> }</b></p><p> if(flag==0)</p><p><
122、b> {</b></p><p> printf("您輸入的信息有誤");</p><p> Sleep(2000);</p><p> system("cls");</p><p> goto state;//重新輸入</p><p><b&g
123、t; }</b></p><p> strcpy(add->number2,p1->number);</p><p> strcpy(add->place,p1->place);</p><p> strcpy(add->time,p1->time);</p><p> strcpy(
124、add->name,name);</p><p> strcpy(add->sex,sex);</p><p> add->price=p1->price;//新建剛訂的機(jī)票信息</p><p> while(p4->next!=NULL)</p><p><b> {</b><
125、;/p><p> p3=p4->next;</p><p><b> p4=p3;</b></p><p><b> }</b></p><p> add->number1=p4->number1+1;</p><p> p4->next=add
126、;</p><p> add->next=NULL;//將新建的節(jié)點(diǎn)與原鏈表連起來</p><p> fprintf(fp2,"\n%d %s %s %s %s %s %d",add->number1,add->number2,add->place,add->time,add->name,add->sex,add->p
127、rice);//將訂票信息寫入文件</p><p> printf("訂票成功\n");</p><p> printf("機(jī)票信息如下:\n\n\n");</p><p> printf("************************************************************
128、********************");</p><p> printf(" 機(jī)票編號 航班號 目的地\t 起飛時間 姓名 性別 機(jī)票價格\n");</p><p> printf(" %d\t%s %s\t %s\t %s\t%s\t %d\n",add->
129、number1,add->number2,add->place,add->time,add->name,add->sex,add->price);</p><p> printf("********************************************************************************");</
130、p><p> p1->left=p1->left-1;//該航班剩余機(jī)票數(shù)減1</p><p><b> p1=head1;</b></p><p> if((fp1=fopen("plane.txt","wt+"))==NULL)</p><p><b>
131、 {</b></p><p> printf("打開文件失敗\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> while(p1!=NULL)//將改動后的航班信息寫入文本中</p&g
132、t;<p><b> {</b></p><p> fprintf(fp1,"%s %s %s %d %d %d\n",p1->number,p1->place,p1->time,p1->left,p1->sum,p1->price);</p><p> p2=p1->next;<
133、/p><p><b> p1=p2;</b></p><p><b> }</b></p><p> fclose(fp1);</p><p> fclose(fp2);</p><p> free(add);</p><p> printf(
134、"輸入“a”返回上級\n");</p><p> scanf(" %c",&in);//重新輸入</p><p> while(in!='a')</p><p><b> {</b></p><p> printf("輸入不合法\n&quo
135、t;);</p><p> printf("輸入“a”返回上級\n");</p><p> scanf(" %c",&in);</p><p><b> }</b></p><p> Sleep(2000);</p><p> system
136、("cls");</p><p> menu();//回到目錄</p><p><b> }</b></p><p> void ticketsearch()</p><p><b> {</b></p><p> struct ticket *
137、head;</p><p> head=list2();</p><p> menu2(head);</p><p><b> }</b></p><p> void menu2(struct ticket *p)//查詢航班信息的主目錄</p><p><b> {</
138、b></p><p><b> int n;</b></p><p> char choice;</p><p> printf(" ╔════════╗\n");</p><p> printf("
139、 ║ ║\n");</p><p> printf(" ║ 航班查詢模塊 ║\n");</p><p> printf(" ║ ║
140、\n");</p><p> printf(" ╚════════╝\n\n");</p><p> printf("請按提示選擇您要查詢的方式\n\n");</p><p> for(n=0;n<20;n++)</p><p&
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件課程設(shè)計報告--飛機(jī)票銷售系統(tǒng)
- 飛機(jī)票銷售系統(tǒng)軟件課程設(shè)計
- 軟件課程設(shè)計報告(飛機(jī)票系統(tǒng))
- 軟件課程設(shè)計報告---飛機(jī)票售票系統(tǒng)
- 軟件課程設(shè)計--c語言程序之飛機(jī)票訂票系統(tǒng)
- c語言課程設(shè)計報告---民航飛機(jī)票訂票系統(tǒng)設(shè)計
- 課程設(shè)計--飛機(jī)票網(wǎng)上預(yù)訂系統(tǒng)概要設(shè)計
- 飛機(jī)票報銷管理辦法
- 數(shù)據(jù)庫課程設(shè)計---飛機(jī)機(jī)票預(yù)訂系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計---飛機(jī)機(jī)票預(yù)訂系統(tǒng)
- 軟件工程課程設(shè)計-機(jī)票預(yù)定系統(tǒng)
- 機(jī)票預(yù)定系統(tǒng)-課程設(shè)計報告
- 軟件工程課程設(shè)計-機(jī)票預(yù)訂系統(tǒng)
- 基于SSH框架的飛機(jī)票分銷管理系統(tǒng)設(shè)計與實(shí)現(xiàn).pdf
- 機(jī)票預(yù)訂系統(tǒng)課程設(shè)計
- 軟件工程課程設(shè)計--機(jī)票預(yù)訂系統(tǒng)設(shè)計與實(shí)現(xiàn)
- 機(jī)票預(yù)訂系統(tǒng)課程設(shè)計
- 飛機(jī)訂票系統(tǒng)課程設(shè)計報告
- 乘客對飛機(jī)票價的定價方法的影響.pdf
- c課程設(shè)計報告飛機(jī)訂票系統(tǒng)
評論
0/150
提交評論