版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告撰寫(xiě)要求</p><p> ?。ㄒ唬┘垙埮c頁(yè)面要求</p><p> 1.采用國(guó)際標(biāo)準(zhǔn)A4型打印紙或復(fù)印紙,縱向打印。</p><p> 2.封頁(yè)和頁(yè)面按照下面模板書(shū)寫(xiě)(正文為:小四宋體1.5倍行距)。</p><p> 3.圖表及圖表標(biāo)題按照模板中的表示書(shū)寫(xiě)。 </p><
2、p> (二) 課設(shè)報(bào)告書(shū)的內(nèi)容應(yīng)包括以下各個(gè)部分:(按照以下順序裝訂)</p><p> 1.封頁(yè)(見(jiàn)課設(shè)模版)</p><p> 2.任務(wù)書(shū)(學(xué)生教師均要簽字,信息填寫(xiě)完整)</p><p><b> 3.目錄</b></p><p> 4.正文一般應(yīng)包括以下內(nèi)容: </p><p&
3、gt; (1)題目介紹和功能要求(或描述)</p><p> 課程設(shè)計(jì)任務(wù)的詳細(xì)描述(注意不能直接抄任務(wù)書(shū)),將內(nèi)容做更詳細(xì)的具體的分析與描述;</p><p> (2) 系統(tǒng)功能模塊結(jié)構(gòu)圖</p><p> 繪制系統(tǒng)功能結(jié)構(gòu)框圖及主要模塊的功能說(shuō)明; </p><p> ?。?) 使用的數(shù)據(jù)結(jié)構(gòu)的描述: 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及用法說(shuō)明;&l
4、t;/p><p> ?。?) 涉及到的函數(shù)的描述 ; </p><p> ?。?) 主要算法描述( 程序流程圖)</p><p> ?。?) 給出程序測(cè)試/運(yùn)行的結(jié)果</p><p> 設(shè)計(jì)多組數(shù)據(jù)加以描述(包括輸入數(shù)據(jù)和輸出結(jié)果) </p><p> ?。?) 課程設(shè)計(jì)的總結(jié)及體會(huì)</p>
5、<p><b> ?。?) 參考文獻(xiàn)</b></p><p> 格式要求:[1]作者,等. 書(shū)名.出版地:出版社,出版年</p><p> 5.附錄:程序清單 (應(yīng)帶有必要的注釋)</p><p> 課 程 設(shè) 計(jì) 報(bào) 告</p><p> 課程設(shè)計(jì)名稱(chēng):數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</p>&l
6、t;p> 課程設(shè)計(jì)題目: 火車(chē)售票系統(tǒng)的實(shí)現(xiàn)</p><p> 院(系):計(jì)算機(jī)學(xué)院</p><p> 專(zhuān) 業(yè):網(wǎng)絡(luò)工程</p><p><b> 班 級(jí): </b></p><p><b> 學(xué) 號(hào): </b></p><p><b
7、> 姓 名: </b></p><p><b> 指導(dǎo)教師: </b></p><p><b> 目 錄</b></p><p><b> 1 需求分析1</b></p><p> 1.1 問(wèn)題描述1</p><
8、p> 1.2 問(wèn)題理解1</p><p><b> 2 系統(tǒng)設(shè)計(jì)3</b></p><p> 2.1 總體方案設(shè)計(jì)3</p><p> 2.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)3</p><p> 2.3 函數(shù)設(shè)計(jì)4</p><p> 2.4 關(guān)鍵流程5</p><
9、p> 2.4.1 系統(tǒng)主流程5</p><p> 2.4.2 void add()函數(shù)流程6</p><p> 2.4.3 void search()函數(shù)流程8</p><p> 2.4.4 void order()函數(shù)流程9</p><p> 2.4.5void return_tkt()函數(shù)流程9</p>
10、;<p> 3 調(diào)試分析11</p><p> 4 測(cè)試及運(yùn)行結(jié)果12</p><p><b> 1 需求分析</b></p><p><b> 1.1 問(wèn)題描述</b></p><p> 火車(chē)成為越來(lái)越受歡迎的交通工具,隨著愈來(lái)愈多的人選擇火車(chē)成為出行的交通工具,
11、火車(chē)站需要管理的信息量也越來(lái)越多,這種情況下,利用計(jì)算機(jī)來(lái)管理和存儲(chǔ)火車(chē),客戶(hù)信息就會(huì)很有效率?;疖?chē)售票系統(tǒng)要求通過(guò)鏈表實(shí)現(xiàn)列車(chē)的基本信息管理,即輸入火車(chē),路線所涉及的基本信息,包括終點(diǎn)站,車(chē)次號(hào),車(chē)廂號(hào),開(kāi)車(chē)周日,乘員定額,余票量,已訂票的客戶(hù)名單。通過(guò)查找功能實(shí)現(xiàn)列車(chē)的三種基本信息查詢(xún)方式。并實(shí)現(xiàn)訂票和退票功能。選擇車(chē)站售票系統(tǒng)作為課程設(shè)計(jì)的課題,就車(chē)站的售票流程等進(jìn)一步了解車(chē)站售票系統(tǒng)的原理。</p><p&g
12、t;<b> 1.2 問(wèn)題理解</b></p><p> 本題主要通過(guò)鏈表和函數(shù)實(shí)現(xiàn)火車(chē)售票系統(tǒng)的各種功能,首先要利用定義各種函數(shù)來(lái)分別實(shí)現(xiàn)每一個(gè)功能模塊,包括信息插入函數(shù)來(lái)增加列車(chē)的基本信息,然后設(shè)計(jì)打印函數(shù)輸出路線的基本信息,再定義查找函數(shù)實(shí)現(xiàn)列車(chē)基本信息查找功能,按照要求設(shè)置三種查找方式,設(shè)計(jì)訂票函數(shù)讀取乘客信息,通過(guò)指針實(shí)現(xiàn)訂票乘客的信息查找功能,定義退票函數(shù),實(shí)現(xiàn)退票功能。最后
13、通過(guò)主函數(shù)將各個(gè)功能函數(shù)連接起來(lái)。</p><p> 上圖為簡(jiǎn)易結(jié)構(gòu)圖,首先設(shè)計(jì)一個(gè)簡(jiǎn)單明了的菜單,讓用戶(hù)可以一目了然的找到自己想要實(shí)現(xiàn)的功能,然后在各個(gè)模塊中實(shí)現(xiàn)具體功能,程序主要分為四個(gè)模塊,第一個(gè)模塊為列車(chē)基本信息輸入,此模塊用來(lái)實(shí)現(xiàn)列車(chē)信息輸入功能,用戶(hù)可根據(jù)提示來(lái)完成列車(chē)信息的錄入。第二個(gè)模塊為列車(chē)信息查詢(xún)模塊,在此模塊,用戶(hù)可通過(guò)三種方式完成對(duì)列車(chē)信息的查詢(xún),即通過(guò)車(chē)次查詢(xún),通過(guò)終點(diǎn)站進(jìn)行查詢(xún),通過(guò)
14、路線進(jìn)行查詢(xún),用戶(hù)可通過(guò)簡(jiǎn)潔明了的提示進(jìn)行操作。第三個(gè)模塊為訂票模塊,在此模塊用戶(hù)可輸入個(gè)人基本信息在有余票的情況下進(jìn)行訂票。第四個(gè)模塊為退票管理,即對(duì)所以得票進(jìn)行退票。</p><p><b> 2 系統(tǒng)設(shè)計(jì)</b></p><p> 2.1 總體方案設(shè)計(jì)</p><p> 定義結(jié)構(gòu)體,分別為火車(chē)線路的結(jié)構(gòu)體,包括線路要用到的基本信息
15、,已訂票乘客和未訂票乘客結(jié)構(gòu)體,以及替補(bǔ)客戶(hù)結(jié)構(gòu)體。設(shè)計(jì)列車(chē)信息輸入函數(shù),輸入線路的基本信息建立鏈表,設(shè)計(jì)打印線路基本信息函數(shù),為線路查詢(xún)做準(zhǔn)備。打印線路函數(shù)完成后,接著設(shè)計(jì)查詢(xún)函數(shù),可通過(guò)車(chē)次號(hào)、抵達(dá)站和線路分別進(jìn)行查詢(xún),查詢(xún)過(guò)程通過(guò)strcmp()函數(shù)實(shí)現(xiàn)。設(shè)計(jì)打印乘客信息函數(shù),并寫(xiě)出輸入客戶(hù)信息函數(shù),設(shè)計(jì)訂票函數(shù)時(shí)對(duì)前面的函數(shù)進(jìn)行調(diào)用,定義一個(gè)排隊(duì)等候的客戶(hù)名單域,若出現(xiàn)票數(shù)不足時(shí)讓乘客排隊(duì)進(jìn)行等候。最后定義退票函數(shù)。通過(guò)主函數(shù)讓
16、各個(gè)功能直觀的展現(xiàn)在用戶(hù)面前。</p><p> 2.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</p><p> 1. 列車(chē)基本信息的結(jié)構(gòu)體</p><p> 結(jié)構(gòu)體:struct line </p><p> { char ter_name[10];//終點(diǎn)站名</p>&
17、lt;p> char cc_num[10];//車(chē)次號(hào)</p><p> char cx_num[10];//車(chē)廂號(hào)</p><p> char day[7];//出發(fā)日期</p><p> int tkt_amt;//成員定額</p><p> int tkt_sur;//余票量</p><p>
18、linklist *order;//乘員名單域,指向乘員名單鏈表的頭指針</p><p> linkqueue wait;//等候替補(bǔ)的客戶(hù)名單域,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的指針</p><p> }lineinfo; </p><p><b> 2. 乘客信息</b></p><p> typedef st
19、ruct ord_ros </p><p> { char name[10];//客戶(hù)姓名</p><p> int ord_amt;//訂票量</p><p> int grade;//車(chē)廂等級(jí)</p><p> struct ord_ros *next;</p>
20、<p> }linklist;</p><p><b> 3.已定票乘客信息</b></p><p> typedef struct wat_ros</p><p> { char name[10];//乘客姓名</p><p> int req_amt;//訂票量</p><
21、p> struct wat_ros *next;</p><p> }qnode,*qptr;</p><p><b> 4.等候替補(bǔ)客戶(hù)</b></p><p> typedef struct pqueue</p><p> { qptr front;//等候替補(bǔ)客戶(hù)名單域的頭指針</p>
22、<p> qptr rear;//等候替補(bǔ)客戶(hù)名單域的尾指針</p><p> }linkqueue;</p><p><b> 2.3 函數(shù)設(shè)計(jì)</b></p><p> ﹙1﹚本系統(tǒng)所設(shè)計(jì)的函數(shù)見(jiàn)表2.1。</p><p><b> 表2.1 函數(shù)列表</b></p
23、><p> ﹙2﹚本系統(tǒng)函數(shù)的調(diào)用關(guān)系見(jiàn)圖2.1。</p><p> 圖2.1 函數(shù)調(diào)用關(guān)系</p><p><b> 2.4 關(guān)鍵流程</b></p><p> 2.4.1 系統(tǒng)主流程</p><p> (1)主函數(shù)的簡(jiǎn)單描述:</p><p> 通過(guò)主函數(shù),將函
24、數(shù)的各個(gè)功能聯(lián)合起來(lái),通過(guò)對(duì)菜單函數(shù)的調(diào)用,對(duì)所需要的功能進(jìn)行選擇,讓用戶(hù)一目了然的面對(duì)系統(tǒng),隨著用戶(hù)不同的選擇,主函數(shù)會(huì)分別調(diào)用不同的功能函數(shù),進(jìn)而實(shí)現(xiàn)用戶(hù)的需求。</p><p> (2)主函數(shù)的流程圖</p><p> 圖2.2 主函數(shù)的流程圖</p><p> 2.4.2 void add()函數(shù)流程</p><p> ?。?)
25、void add()函數(shù)的簡(jiǎn)單描述:</p><p> 列車(chē)基本信息輸入函數(shù),存儲(chǔ)列車(chē)的基本信息,start[iii].ter_name存儲(chǔ)終點(diǎn)站,start[iii].cc_num存儲(chǔ)車(chē)次號(hào),start[iii].cx_num存儲(chǔ)車(chē)廂號(hào),start[iii].day存儲(chǔ)發(fā)車(chē)時(shí)間,, start[iii].tkt_amt存儲(chǔ)乘員定額,start[iii].tkt_sur存儲(chǔ)余票量。利用變量iii進(jìn)行存儲(chǔ)。<
26、;/p><p> ?。?)void add()函數(shù)的流程圖</p><p> 圖2.3 void add()函數(shù)的流程圖</p><p> 2.4.3 void search()函數(shù)流程</p><p> (1)void search()函數(shù)的簡(jiǎn)單描述:</p><p> 查找函數(shù),可按三種方式查詢(xún)列車(chē)基本信息,定
27、義變量aa,將用戶(hù)的輸入值賦予aa,對(duì)aa進(jìn)行判斷,若輸入的值為1,則按照車(chē)次號(hào)進(jìn)行查詢(xún),用戶(hù)輸入車(chē)次,使用strcmp()與鏈表中的信息進(jìn)行比較,調(diào)用display()輸出查到的列車(chē)信息。若輸入的值為2,則按照終點(diǎn)站進(jìn)行查詢(xún),用戶(hù)輸入終點(diǎn)站,輸出查詢(xún)到的信息,若輸入的值為3,則按照線路進(jìn)行查詢(xún),輸出信息。</p><p> ?。?)void search()函數(shù)的流程圖</p><p>
28、 圖2.4 void search()函數(shù)的流程圖</p><p> 2.4.4 void order()函數(shù)流程</p><p> ?。?)void order()函數(shù)的簡(jiǎn)單描述:</p><p> 本函數(shù)實(shí)現(xiàn)的是訂票功能,首先需要輸入訂票的數(shù)量,若訂票數(shù)量在額定范圍內(nèi),則輸入乘客信息并調(diào)用insertlink函數(shù)保存乘客信息,并顯示訂票成功,若票數(shù)不夠,調(diào)
29、用appendqueue函數(shù),讓顧客進(jìn)行等候。</p><p> (2)void order()函數(shù)的流程圖</p><p> appendqueue</p><p> 圖2.5 void order()函數(shù)的流程圖</p><p> 2.4.5void return_tkt()函數(shù)流程</p><p> (
30、1)void return_tkt()函數(shù)的簡(jiǎn)單描述</p><p> 此函數(shù)為退票函數(shù),首先,輸入乘客的姓名,對(duì)乘客是否訂票進(jìn)行查詢(xún),若無(wú),則顯示沒(méi)有定票,若有,則利用鏈表刪除乘客信息,進(jìn)行退票,并顯示退票成功,剩余票數(shù)加一,若有排隊(duì)等待的乘客則該乘客進(jìn)行訂票。</p><p> ?。?)void return_tkt()函數(shù)的流程圖</p><p> 圖2.
31、5 void return_tkt()函數(shù)的流程圖</p><p><b> 3 調(diào)試分析</b></p><p><b> (1) 問(wèn)題1</b></p><p> 問(wèn)題描述:各個(gè)功能都沒(méi)有錯(cuò)誤,但輸入的信息不能正常顯示,出現(xiàn)亂碼</p><p> 問(wèn)題分析:程序存在邏輯錯(cuò)誤</p
32、><p> 解決方法:重新整理程序的邏輯結(jié)構(gòu)</p><p><b> (2) 問(wèn)題2</b></p><p> 問(wèn)題描述: 不能逐條輸出列車(chē)的基本信息,只能整體顯示</p><p> 問(wèn)題分析: 缺少逐條輸出的函數(shù)</p><p> 解決方法: 定義一個(gè)可逐條輸出的函數(shù)并在各個(gè)功能函數(shù)中
33、對(duì)該函數(shù)進(jìn)行調(diào)用。</p><p><b> (3) 問(wèn)題3</b></p><p> 問(wèn)題描述:運(yùn)行時(shí)顯示函數(shù)不能正常定義</p><p> 問(wèn)題分析:定義函數(shù)時(shí)出現(xiàn)錯(cuò)誤</p><p> 解決方法:對(duì)函數(shù)進(jìn)行修改</p><p><b> (4) 問(wèn)題4</b&g
34、t;</p><p> 問(wèn)題描述:變量出現(xiàn)錯(cuò)誤</p><p><b> 問(wèn)題分析:粗心大意</b></p><p> 解決方法:重新檢查程序,更改錯(cuò)誤變量</p><p> 4 測(cè)試及運(yùn)行結(jié)果</p><p> ?。?)列車(chē)基本信息輸入的測(cè)試結(jié)果如圖4.1所示。</p>
35、<p> 圖4.1 列車(chē)基本信息輸入測(cè)試結(jié)果</p><p> (2)列車(chē)信息查詢(xún)的具體的測(cè)試結(jié)果如圖4.2所示</p><p><b> 。</b></p><p> 圖4.2 列車(chē)信息查詢(xún)測(cè)試結(jié)果</p><p> (3)訂票的具體的測(cè)試結(jié)果如圖4.3所示</p><p>
36、<b> 。</b></p><p> 圖4.3訂票測(cè)試結(jié)果</p><p> ?。?)退票的具體的測(cè)試結(jié)果如圖4.4所示。</p><p> 圖4.4 退票測(cè)試結(jié)果</p><p><b> 參考文獻(xiàn)</b></p><p> 【1】嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)
37、言版)【M】.北京:清華大學(xué)出版社,2006【2】呂國(guó)英.算法設(shè)計(jì)與分析【M】.北京:清華大學(xué)出版社,2006</p><p> 【3】徐寶文 李志.C程序設(shè)計(jì)語(yǔ)言【M】.北京:機(jī)械工業(yè)出版社</p><p><b> 附 錄</b></p><p><b> 源程序清單:</b></p><
38、p> #include <stdio.h></p><p> #include <stdlib.h></p><p> #include <string.h></p><p> #define MAXSIZE 3 </p><p> typedef struct wat_ros</p&
39、gt;<p> { char name[10];</p><p> int req_amt;</p><p> struct wat_ros *next;</p><p> }qnode,*qptr;</p><p> typedef struct pqueue</p><p> { qp
40、tr front;</p><p> qptr rear;</p><p> }linkqueue;</p><p> typedef struct ord_ros</p><p> { char name[10];</p><p> int ord_amt;</p><p> i
41、nt grade;</p><p> struct ord_ros *next;</p><p> }linklist;</p><p> struct line</p><p> { char ter_name[10];</p><p> char cc_num[10];</p><
42、p> char cx_num[10];</p><p> char day[7];</p><p> int tkt_amt;</p><p> int tkt_sur;</p><p> linklist *order;</p><p> linkqueue wait;</p><
43、;p> }lineinfo;</p><p> struct line start[MAXSIZE];</p><p> int iii=0;</p><p> void add()</p><p><b> {</b></p><p> struct line info[MAX
44、SIZE];</p><p> printf("終點(diǎn)站名、車(chē)次號(hào)、車(chē)廂號(hào)、開(kāi)車(chē)周日、乘員定額、余票量\n");</p><p> scanf("%s%s%s%s%d%d",start[iii].ter_name,start[iii].cc_num,start[iii].cx_num,start[iii].day,&start[iii].t
45、kt_amt,&start[iii].tkt_sur);</p><p><b> iii++;</b></p><p><b> }</b></p><p> void display(struct line *info)</p><p><b> {</b>
46、</p><p> printf ("%8s\t%3s\t%s\t%4s\t\t%3d\t%10d\n",info->ter_name,info->cc_num,info->cx_num,info->day,info->tkt_amt,info->tkt_sur);</p><p><b> }</b><
47、;/p><p> void list()</p><p> { struct line *info;</p><p><b> int i=0;</b></p><p> info=start;</p><p> printf("終點(diǎn)站名\t車(chē)次號(hào)\t車(chē)廂號(hào)\t開(kāi)車(chē)周日\(chéng)t乘員定
48、額\t余票量\n");</p><p> while(i<iii){</p><p> display(info);</p><p><b> info++;</b></p><p><b> i++;</b></p><p><b> }
49、</b></p><p> printf("\n\n");</p><p><b> }</b></p><p> void search()</p><p> { struct line *info,*find();</p><p> char nam
50、e[10];</p><p><b> int i=0;</b></p><p> info=start;</p><p> printf("1.按車(chē)次查詢(xún)\t2.按終點(diǎn)站查詢(xún)\t3.按路線查詢(xún)\n");</p><p><b> int aa;</b></p>
51、;<p> scanf("%d",&aa);</p><p> if (aa==2)</p><p><b> {</b></p><p> printf("請(qǐng)輸入終點(diǎn)站名:");</p><p> scanf("%s",name
52、);</p><p> while(i<MAXSIZE)</p><p><b> {</b></p><p> if(!strcmp(name,info->ter_name)) break;</p><p><b> info++;</b></p><p&g
53、t;<b> i++;</b></p><p><b> }</b></p><p> if(i>=MAXSIZE)</p><p> printf("對(duì)不起,該路線未找到!\n");</p><p><b> else</b></p&
54、gt;<p><b> {</b></p><p> printf("終點(diǎn)站名\t車(chē)次號(hào)\t車(chē)廂號(hào)\t開(kāi)車(chē)周日\(chéng)t乘員定額\t余票量\n");</p><p> display(info);</p><p><b> }</b></p><p><b&
55、gt; }</b></p><p> if (aa==1)</p><p> { printf("請(qǐng)輸入車(chē)次:");</p><p> scanf("%s",name);</p><p> while(i<MAXSIZE)</p><p><b
56、> {</b></p><p> if(!strcmp(name,info->cc_num)) break;</p><p><b> info++;</b></p><p><b> i++;</b></p><p><b> }</b>&l
57、t;/p><p> if(i>=MAXSIZE)</p><p> printf("對(duì)不起,該路線未找到!\n");</p><p><b> else</b></p><p><b> {</b></p><p> printf("
58、終點(diǎn)站名\t車(chē)次號(hào)\t車(chē)廂號(hào)\t開(kāi)車(chē)周日\(chéng)t乘員定額\t余票量\n");</p><p> display(info);</p><p><b> }</b></p><p><b> }</b></p><p> if (aa==3)</p><p>
59、{ printf("請(qǐng)輸入路線:");</p><p> scanf("%s",name);</p><p> while(i<MAXSIZE)</p><p><b> {</b></p><p> if(!strcmp(name,info->ter_nam
60、e)) break;</p><p><b> info++;</b></p><p><b> i++;</b></p><p><b> }</b></p><p> if(i>=MAXSIZE)</p><p> printf(&q
61、uot;對(duì)不起,該路線未找到!\n");</p><p><b> else</b></p><p><b> {</b></p><p> printf("終點(diǎn)站名\t車(chē)次號(hào)\t車(chē)廂號(hào)\t開(kāi)車(chē)周日\(chéng)t乘員定額\t余票量\n");</p><p> displa
62、y(info);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> struct line *find()</p><p> { struct line *in
63、fo;</p><p> char number[10];</p><p><b> int i=0;</b></p><p> info=start;</p><p> printf("請(qǐng)輸入車(chē)次號(hào):");</p><p> scanf("%s"
64、,number);</p><p> while(i<iii) {</p><p> if(!strcmp(number,info->cc_num)) return info;</p><p><b> info++;</b></p><p><b> i++;</b></
65、p><p><b> }</b></p><p> printf("對(duì)不起,該路線末找到!\n");</p><p> return NULL;</p><p><b> }</b></p><p> void prtlink()</p>
66、<p> { linklist *p;</p><p> struct line *info;</p><p> info=find();</p><p> p=info->order;</p><p> if(p!=NULL){</p><p> printf("客戶(hù)姓名
67、 訂票數(shù)額 座位等級(jí)\n");</p><p><b> while(p){</b></p><p> printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade);</p><p> p=p->next;</p><
68、;p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p> printf("該路線線沒(méi)有客戶(hù)信息!!\n");</p><p><b> }</b>&l
69、t;/p><p> linklist *insertlink(linklist *head,int amount,char name[],int grade)</p><p> { linklist *p1,*new1;</p><p><b> p1=head;</b></p><p> new1=(linkli
70、st *)malloc(sizeof(linklist));</p><p> if(!new1) {printf("\nOut of memory!!\n");return NULL;}</p><p> strcpy(new1->name,name);</p><p> new1->ord_amt=amount;</p
71、><p> new1->grade=grade;</p><p> new1->next=NULL;</p><p> if(head==NULL)</p><p> {head=new1;new1->next=NULL;}</p><p><b> else</b><
72、;/p><p> head=new1;</p><p> new1->next=p1;</p><p> return head;</p><p><b> }</b></p><p> linkqueue appendqueue(linkqueue q,char name[],int
73、 amount)</p><p> { qptr new1;</p><p> new1=(qptr)malloc(sizeof(qnode));</p><p> strcpy(new1->name,name);</p><p> new1->req_amt=amount;</p><p> n
74、ew1->next=NULL;</p><p> if(q.front==NULL)</p><p> q.front=new1;</p><p><b> else</b></p><p> q.rear->next=new1;</p><p> q.rear=new1;&
75、lt;/p><p><b> return q;</b></p><p><b> }</b></p><p> void order()</p><p> { struct line *info;</p><p> int amount,grade;</p&g
76、t;<p> char name[10];</p><p> info=start;</p><p> if(!(info=find())) return;</p><p> printf("請(qǐng)輸入你訂票所需要的數(shù)量:");</p><p> scanf("%d",&am
77、ount);</p><p> if(amount>info->tkt_amt)</p><p> { printf("\n對(duì)不起,您輸入的票的數(shù)量已經(jīng)超過(guò)乘員定額!");</p><p><b> return;</b></p><p><b> }</b>
78、;</p><p> if(amount<=info->tkt_sur)</p><p><b> {</b></p><p><b> int i;</b></p><p> printf("請(qǐng)輸入您的姓名(訂票客戶(hù)):");</p><
79、p> scanf("%s",name);</p><p> printf("請(qǐng)輸入%s票的座位等級(jí):",name);</p><p> scanf("%d",&grade);</p><p> info->order=insertlink(info->order,amoun
80、t,name,grade);</p><p> for(i=0;i<amount;i++)</p><p> printf("%s的座位號(hào)是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1);</p><p> info->tkt_sur-=amount;</p>
81、<p> printf("\n祝您乘坐愉快!\n");</p><p><b> }</b></p><p> else </p><p> { char r;</p><p> printf("\n已經(jīng)沒(méi)有更多的票,您需要排隊(duì)等候嗎?(Y/N)"
82、);</p><p> r=getchar();</p><p> printf("%c",r);</p><p> if(r=='Y'||r=='y')</p><p> { printf("\n請(qǐng)輸入您的姓名(排隊(duì)訂票客戶(hù)):");</p>&
83、lt;p> scanf("%s",name);</p><p> info->wait=appendqueue(info->wait,name,amount);</p><p> printf("\n注冊(cè)成功!\n");</p><p><b> }</b></p>
84、<p> else printf("\n歡迎您下次再次訂購(gòu)!\n");</p><p><b> }</b></p><p><b> }</b></p><p> void return_tkt()</p><p> { struct line *inf
85、o;</p><p> qnode *t,*back,*f,*r;</p><p> int grade;</p><p> linklist *p1,*p2,*head;</p><p> char cusname[10];</p><p> if(!(info=find())) return;</p
86、><p> head=info->order;</p><p><b> p1=head;</b></p><p> printf("請(qǐng)輸入你的姓名(退票客戶(hù)):");</p><p> scanf("%s",cusname);</p><p>
87、 while(p1!=NULL) {</p><p> if(!strcmp(cusname,p1->name)) break;</p><p> p2=p1;p1=p1->next;</p><p><b> }</b></p><p> if(p1==NULL){ printf("對(duì)不起
88、,你沒(méi)有訂過(guò)票!\n");return;}</p><p><b> else{</b></p><p> if(p1==head) head=p1->next;</p><p> else p2->next=p1->next;</p><p> info->tkt_sur+=p
89、1->ord_amt;</p><p> grade=p1->grade;</p><p> printf("%s成功退票!\n",p1->name);</p><p><b> free(p1);</b></p><p><b> }</b></
90、p><p> info->order=head;</p><p> f=(info->wait).front;</p><p> r=(info->wait).rear;</p><p><b> t=f;</b></p><p><b> while(t)<
91、;/b></p><p><b> {</b></p><p> if(info->tkt_sur>=info->wait.front->req_amt){</p><p><b> int i;</b></p><p> info->wait.front
92、=t->next;</p><p> printf("%s訂票成功!\n",t->name);</p><p> for(i=0;i<t->req_amt;i++)</p><p> printf("%s的座位號(hào)是:%d\n",t->name,(info->tkt_sur)-i);&l
93、t;/p><p> info->tkt_sur-=t->req_amt;</p><p> info->order=insertlink(info->order,t->req_amt,t->name,grade);</p><p><b> free(t);</b></p><p>
94、<b> break;</b></p><p><b> }</b></p><p> back=t;t=t->next;</p><p> if((info->tkt_sur)>=(t->req_amt)&&t!=NULL)</p><p><
95、b> { int i;</b></p><p> back->next=t->next;</p><p> printf("%s訂票成功!\n",t->name);</p><p> for(i=0;i<t->req_amt;i++)</p><p> print
96、f("<%s>'s seat number is:%d\n",t->name,(info->tkt_sur)-i);</p><p> info->tkt_sur-=t->req_amt;</p><p> info->order=insertlink(info->order,t->req_amt,t-&
97、gt;name,grade);</p><p> free(t);break;</p><p><b> }</b></p><p> if(f==r) break;</p><p><b> }</b></p><p><b> }</b>&
98、lt;/p><p> int menu_select()</p><p><b> { int c;</b></p><p> char s[20];</p><p> printf("\n\t\t鐵路客運(yùn)訂票系統(tǒng)\n");</p><p> printf("
99、******************************************\n");</p><p> printf("0.增加車(chē)次信息:\n");</p><p> printf("1.瀏覽路線信息:\n");</p><p> printf("2.瀏覽已訂票客戶(hù)信息:\n");
100、</p><p> printf("3.查詢(xún)\n");</p><p> printf("4.辦理訂票業(yè)務(wù):\n");</p><p> printf("5.辦理退票業(yè)務(wù):\n");</p><p> printf("6.退出系統(tǒng)\n");</p&g
101、t;<p> printf("*******************************************\n");</p><p><b> do{</b></p><p> printf("請(qǐng)選擇:");</p><p> scanf("%s",s)
102、;</p><p> c=atoi(s);</p><p> }while(c<0||c>7);</p><p><b> return c;</b></p><p><b> }</b></p><p> int main()</p>&
103、lt;p><b> {</b></p><p><b> while(1)</b></p><p><b> {</b></p><p> switch(menu_select()){</p><p> case 0: add();break;</p>
104、;<p> case 1:list();break;</p><p> case 2:prtlink();break;</p><p> case 3:search();break;</p><p> case 4:order();break;</p><p> case 5:return_tkt();break;&l
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 航班售票系統(tǒng)-數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---飛機(jī)售票系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---窗口售票系統(tǒng)
- 火車(chē)售票系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)—火車(chē)售票系統(tǒng)課程設(shè)計(jì)
- 火車(chē)售票系統(tǒng)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)
- 課程設(shè)計(jì)報(bào)告---- 火車(chē)售票系統(tǒng)
- 火車(chē)售票系統(tǒng)課程設(shè)計(jì)報(bào)告
- 火車(chē)售票系數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告----火車(chē)票售票系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--火車(chē)票售票管理系統(tǒng)
- 火車(chē)站車(chē)票售票系統(tǒng)--數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 火車(chē)預(yù)售票系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)----火車(chē)站車(chē)票售票系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 課程設(shè)計(jì)---火車(chē)票網(wǎng)上售票系統(tǒng)
- 火車(chē)預(yù)售票系統(tǒng)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---數(shù)據(jù)結(jié)構(gòu)相關(guān)算法的演示系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---飛機(jī)訂票系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論