版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 程序的設(shè)計(jì)與實(shí)現(xiàn)</b></p><p> ——數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</p><p><b> 目錄</b></p><p><b> 一、功能描述1</b></p><p> 1.1 系統(tǒng)實(shí)現(xiàn)的目的和意義1</p><
2、p> 1.2 系統(tǒng)實(shí)現(xiàn)的功能1</p><p> 1.3 系統(tǒng)開(kāi)發(fā)的環(huán)境1</p><p><b> 二、總體結(jié)構(gòu)1</b></p><p> 2.1 文件清單(按文件系統(tǒng)樹(shù)型方式排列)1</p><p> 2.2 系統(tǒng)功能結(jié)構(gòu)圖2</p><p> 2.3 系統(tǒng)的總流
3、程圖(標(biāo)明每個(gè)模塊的文件名)2</p><p> 三、詳細(xì)設(shè)計(jì)(均需注釋)2</p><p> 3.1 數(shù)據(jù)結(jié)構(gòu)2</p><p> 3.2 各模塊(或算法)流程圖(標(biāo)明函數(shù)名)2</p><p><b> 四、系統(tǒng)實(shí)現(xiàn)2</b></p><p> 4.1模塊一(寫(xiě)出模塊的名字
4、)1</p><p> 4.2模塊二(寫(xiě)出模塊的名字)1</p><p><b> 4.3……2</b></p><p> 五、程序的過(guò)程展示2</p><p> 5.1 程序運(yùn)行過(guò)程展示2</p><p> 5.2 程序結(jié)果展示及分析2</p><p&g
5、t; 六、軟件的輔助說(shuō)明2</p><p> 6.1 本軟件的優(yōu)點(diǎn)2</p><p> 6.2 本軟件的缺點(diǎn)2</p><p> 6.3 本軟件的BUG2</p><p> 七、課程設(shè)計(jì)結(jié)論(意見(jiàn)、建議、心得、申報(bào)成績(jī)…)2</p><p> 八、參考文獻(xiàn)(參考網(wǎng)站)2</p>&
6、lt;p> 九、附錄——提交文檔2</p><p> 9.1 書(shū)面形式清單2</p><p> 9.2 電子形式清單2</p><p> 9.3 文檔命名要求2</p><p><b> 一、功能描述</b></p><p> 1.1 系統(tǒng)實(shí)現(xiàn)的目的和意義:</p&
7、gt;<p> 1.?dāng)?shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)是綜合運(yùn)用數(shù)據(jù)結(jié)構(gòu)課程中學(xué)到的幾種典型數(shù)據(jù)結(jié)構(gòu),以及程序設(shè)計(jì)語(yǔ)言(C語(yǔ)言),自行實(shí)現(xiàn)一個(gè)較為完整的應(yīng)用系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)。 </p><p> 2.通過(guò)課程設(shè)計(jì),自己通過(guò)系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、編程調(diào)試,寫(xiě)實(shí)驗(yàn)報(bào)告等環(huán)節(jié),進(jìn)一步掌握應(yīng)用系統(tǒng)設(shè)計(jì)的方法和步驟,靈活運(yùn)用并深刻理解典型數(shù)據(jù)結(jié)構(gòu)在軟件開(kāi)發(fā)中的應(yīng)用。</p><p> 3.
8、學(xué)會(huì)將知識(shí)應(yīng)用于實(shí)際的方法,提高分析和解決問(wèn)題的能力,增加綜合能力。</p><p><b> 航空空訂票系統(tǒng):</b></p><p> ?。?)熟練掌握鏈表存儲(chǔ)結(jié)構(gòu)及其建立過(guò)程和常用操作;</p><p> ?。?)熟練掌握隊(duì)列的建立過(guò)程和常用操作;</p><p> ?。?)學(xué)會(huì)自己調(diào)試程序的方法并掌握一定的技巧
9、。</p><p> 1.2 系統(tǒng)實(shí)現(xiàn)的功能:航空客運(yùn)訂票的業(yè)務(wù)活動(dòng)包括:查詢航線、客票預(yù)訂和辦理退票等。設(shè)計(jì)一個(gè)航空客運(yùn)訂票系統(tǒng),以使上述業(yè)務(wù)可以借助計(jì)算機(jī)來(lái)完成。</p><p> 1.3 系統(tǒng)開(kāi)發(fā)的環(huán)境:C類,開(kāi)發(fā)軟件為DEV C++ </p><p><b> 二、總體結(jié)構(gòu)</b></p><p> 2.
10、1 文件清單(按文件系統(tǒng)樹(shù)型方式排列)</p><p> 瀏覽航線信息 讀入文件(airplane.txt)</p><p> 瀏覽已訂票客戶信息 按航班號(hào)查找</p><p><b> 主</b></p><p><b> 按終點(diǎn)站查詢</b>
11、;</p><p> 菜 查詢航線 </p><p><b> 按航班號(hào)查詢</b></p><p><b> 單 </b></p><p><b> 辦理訂票業(yè)務(wù)</b></p><p><b>
12、; 辦理退票業(yè)務(wù)</b></p><p><b> 退出系統(tǒng)</b></p><p> 2.2 系統(tǒng)功能結(jié)構(gòu)圖</p><p> 2.3 系統(tǒng)的總流程圖</p><p> 三、詳細(xì)設(shè)計(jì)(均需注釋)</p><p><b> 3.1 數(shù)據(jù)結(jié)構(gòu)</b>&l
13、t;/p><p> 訂票跟退票的模塊均用到了鏈表跟隊(duì)列的知識(shí)。以退票模塊為例:(退票模塊涉及到兩方面,一是客戶將定完的票推掉,二是將客戶退掉的票安排給排隊(duì)的客戶)</p><p> void return_tkt()</p><p><b> /*退票模塊*/</b></p><p> { struct airli
14、ne *info;</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()))</p&
15、gt;<p> return;/*調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進(jìn)行搜索*/</p><p> head=info->order;</p><p><b> p1=head;</b></p><p> printf("請(qǐng)輸入你的姓名(退票客戶):");</p><p>
16、 scanf("%s",cusname);</p><p> while(p1!=NULL)</p><p> {/*根據(jù)客戶提供的姓名到訂票客戶名單域進(jìn)行查詢*/</p><p> if(!strcmp(cusname,p1->name))</p><p><b> break;</b>
17、;</p><p><b> p2=p1;</b></p><p> p1=p1->next;</p><p><b> }</b></p><p> if(p1==NULL)</p><p><b> {</b></p>
18、<p> printf("對(duì)不起,你沒(méi)有訂過(guò)票!\n");</p><p><b> return;</b></p><p> }/*若未找到,退出本模塊*/</p><p><b> else</b></p><p> {/*若信息查詢成功,刪除訂票客戶名單
19、域中的信息*/</p><p> if(p1==head) head=p1->next;</p><p> else p2->next=p1->next;</p><p> info->tkt_sur+=p1->ord_amt;</p><p> grade=p1->grade;</p>
20、<p> printf("%s成功退票!\n",p1->name);</p><p><b> free(p1);</b></p><p><b> }</b></p><p> info->order=head;/*重新將航線名單域指向訂票單鏈表的頭指針 */<
21、/p><p> f=(info->wait).front;/*f指向排隊(duì)等候名單隊(duì)列的頭結(jié)點(diǎn)*/</p><p> r=(info->wait).rear;/*r指向排隊(duì)等候名單隊(duì)列的尾結(jié)點(diǎn)*/</p><p> t=f;/*t為當(dāng)前滿點(diǎn)條件的排隊(duì)候補(bǔ)名單域*/</p><p><b> while(t)</b
22、></p><p><b> {</b></p><p> if(info->tkt_sur>=info->wait.front->req_amt)</p><p> {/*若滿足條件者為頭結(jié)點(diǎn)*/</p><p><b> int i;</b></p&g
23、t;<p> info->wait.front=t->next;</p><p> printf("%s訂票成功!\n",t->name);</p><p> for(i=0;i<t->req_amt;i++)/*輸出座位號(hào)*/</p><p> printf("%s的座位號(hào)是:%d\
24、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->name,grade);/*插入到訂票客戶名單鏈表中*/</p>
25、<p><b> free(t);</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> back=t;</b></p><p> t=t->next;</p
26、><p> if((info->tkt_sur)>=(t->req_amt)&&t!=NULL)/*若滿足條件者不為頭結(jié)點(diǎn)*/</p><p><b> {</b></p><p><b> int i;</b></p><p> back->next=t
27、->next;</p><p> printf("%s訂票成功!\n",t->name);</p><p> for(i=0;i<t->req_amt;i++)/*輸出座位號(hào)*/</p><p> printf("<%s>'s seat number is:%d\n",t-&g
28、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->name,grade);/*插入到訂票客戶名單鏈表中*/</p><p><
29、;b> free(t);</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> if(f==r)</b></p><p><b> break;</b></
30、p><p><b> }</b></p><p><b> }</b></p><p> 3.2 各模塊(或算法)流程圖(標(biāo)明函數(shù)名)</p><p> 顯示已初始化的全部航線信息</p><p><b> (2)查詢航線</b></p>
31、;<p><b> a.按終點(diǎn)站查詢</b></p><p><b> b.按航班號(hào)查詢</b></p><p> ?。?)瀏覽已訂票客戶信息</p><p><b> 訂票</b></p><p><b> (5)辦理退票業(yè)務(wù)</b>
32、;</p><p><b> 四、系統(tǒng)實(shí)現(xiàn)</b></p><p> 4.1模塊一:初始化</p><p> int readrecord(struct airline air[])</p><p><b> { </b></p><p><b>
33、FILE *fp;</b></p><p> struct airline a;</p><p> if((fp = fopen("airplane.txt","r")) != NULL)</p><p><b> {</b></p><p> while(!f
34、eof(fp))</p><p><b> {</b></p><p> fscanf(fp,"%s%s%s%s%d%d",a.ter_name,a.air_num,a.plane_num,a.day,&a.tkt_amt,&a.tkt_sur);</p><p> strcpy(air[length]
35、.ter_name, a.ter_name);</p><p> strcpy(air[length].air_num, a.air_num);</p><p> strcpy(air[length].plane_num, a.plane_num);</p><p> strcpy(air[length].day, a.day);</p><
36、;p> air[length].tkt_amt = a.tkt_amt;</p><p> air[length].tkt_sur = a.tkt_sur;</p><p><b> length++;</b></p><p><b> }</b></p><p> air[leng
37、th].ter_name[0] = '\0';</p><p><b> } </b></p><p><b> else</b></p><p><b> {</b></p><p> printf("Can not open this fi
38、le!\n");</p><p><b> exit(0);</b></p><p><b> } </b></p><p> return length;</p><p><b> } </b></p><p> 4.2模塊二:顯示
39、每條航線信息</p><p> void display(struct airline *info)</p><p> /*輸出每條航線的基本信息*/</p><p><b> {</b></p><p> printf("%8s\t%3s\t%s\t%4s\t\t%3d\t%10d\n",i
40、nfo->ter_name,info->air_num,info->plane_num,info->day,info->tkt_amt,info->tkt_sur);</p><p><b> }</b></p><p> 4.3模塊三:打印全部航線信息</p><p> void list()<
41、/p><p><b> { </b></p><p> struct airline *info;</p><p><b> int i=0;</b></p><p> info=start;</p><p> printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\
42、t飛行周日\(chéng)t乘員定額\t余票量\n");</p><p> while(i<length)</p><p><b> {</b></p><p> display(info);</p><p><b> info++;</b></p><p><
43、;b> i++;</b></p><p><b> }</b></p><p> printf("\n\n");</p><p><b> }</b></p><p> 4.4模塊四:根據(jù)客戶提出的終點(diǎn)站名輸出航線信息</p><p
44、> void search()</p><p><b> {</b></p><p> int findHao();</p><p> int findZhong();</p><p> struct airline *find();</p><p> printf("
45、1......按終點(diǎn)站查詢\n2......按航班號(hào)查詢\n");</p><p> switch(getch())</p><p><b> {</b></p><p><b> case '1':</b></p><p> findHao();</p>
46、;<p><b> break;</b></p><p><b> case '2':</b></p><p> findZhong();</p><p><b> break;</b></p><p><b> default
47、:;</b></p><p><b> }</b></p><p><b> }</b></p><p> 4.5模塊五:根據(jù)客戶提出的終點(diǎn)站名輸出航線信息</p><p> int findHao()</p><p><b> {</b
48、></p><p> struct airline *info;</p><p> char name[10];</p><p><b> int i=0;</b></p><p> info=start;</p><p> printf("請(qǐng)輸入終點(diǎn)站名:")
49、;</p><p> scanf("%s",name);</p><p> while(i<length)</p><p><b> {</b></p><p> if(!strcmp(name,info->ter_name)) break;//字符串比較</p>&
50、lt;p><b> info++;</b></p><p><b> i++;</b></p><p><b> }</b></p><p> if(i>=length)</p><p> printf("對(duì)不起,該航線未找到!\n")
51、;</p><p><b> else</b></p><p><b> {</b></p><p> printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行周日\(chéng)t乘員定額\t余票量\n");</p><p> display(info);</p><
52、p><b> }</b></p><p><b> }</b></p><p> 4.6模塊六:根據(jù)系統(tǒng)提出的航班號(hào)查詢并以指針形式返回</p><p> int findZhong()</p><p><b> {</b></p><p&g
53、t; struct airline *info;</p><p> char number[10];</p><p><b> int i=0;</b></p><p> info=start;</p><p> printf("請(qǐng)輸入航班號(hào):");</p><p>
54、 scanf("%s",number);</p><p> while(i<length)</p><p><b> {</b></p><p> if(!strcmp(number,info->air_num))</p><p><b> break;</b&g
55、t;</p><p><b> info++;</b></p><p><b> i++;</b></p><p><b> }</b></p><p> if(i>=length)</p><p> printf("對(duì)不起,該
56、航線未找到!\n");</p><p><b> else</b></p><p><b> {</b></p><p> printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行周日\(chéng)t乘員定額\t余票量\n");</p><p> display(info);&
57、lt;/p><p><b> }</b></p><p> return NULL;</p><p><b> }</b></p><p> 4.7模塊七:根據(jù)系統(tǒng)提出的航班號(hào)查詢并以指針形式返回</p><p> struct airline *find()</
58、p><p><b> {</b></p><p> struct airline *info;</p><p> char number[10];</p><p><b> int i=0;</b></p><p> info=start;</p><
59、;p> printf("請(qǐng)輸入航班號(hào):");</p><p> scanf("%s",number);</p><p> while(i<length)</p><p><b> {</b></p><p> if(!strcmp(number,info-&g
60、t;air_num))</p><p> return info;</p><p><b> info++;</b></p><p><b> i++;</b></p><p><b> }</b></p><p> if(i>=leng
61、th)</p><p> printf("對(duì)不起,該航線未找到!\n");</p><p><b> else</b></p><p><b> {</b></p><p> printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行周日\(chéng)t乘員定額\t余票量\n&q
62、uot;);</p><p> display(info);</p><p><b> }</b></p><p> return NULL;</p><p><b> }</b></p><p> 4.8模塊八:打印訂票乘員名單域的客戶名單信息</p>
63、<p> void prtlink()</p><p> { linklist *p;</p><p> struct airline *info;</p><p> info=find();</p><p> p=info->order;</p><p> if(p!=NULL)&l
64、t;/p><p><b> {</b></p><p> printf("客戶姓名 訂票數(shù)額 艙位等級(jí)\n");</p><p><b> while(p)</b></p><p><b> {</b></p><p>
65、 printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade);</p><p> p=p->next;</p><p><b> }</b></p><p><b> }</b></p><p><
66、b> else</b></p><p> printf("該航線沒(méi)有客戶信息!!\n");</p><p><b> }</b></p><p> 4.9模塊九:增加訂票乘員名單域的客戶信息</p><p> linklist *insertlink(linklist *h
67、ead,int amount,char name[],int grade)</p><p><b> { </b></p><p> linklist *p1,*n;</p><p><b> p1=head; </b></p><p> n=(linklist *)malloc(size
68、of(linklist));</p><p><b> if(!n)</b></p><p><b> {</b></p><p> printf("\nOut of memory!!\n");</p><p> return NULL;</p><p
69、><b> }</b></p><p> strcpy(n->name,name);</p><p> n->ord_amt=amount;</p><p> n->grade=grade;</p><p> n->next=NULL;</p><p>
70、if(head==NULL)/*若原無(wú)訂票客戶信息*/</p><p><b> {</b></p><p><b> head=n;</b></p><p> n->next=NULL;</p><p><b> }</b></p><p&g
71、t;<b> else</b></p><p><b> head=n;</b></p><p> n->next=p1;</p><p> return head;</p><p><b> }</b></p><p> 4.10模塊
72、十:增加排隊(duì)等候的客戶名單域</p><p> linkqueue appendqueue(linkqueue q,char name[],int amount)</p><p><b> { qptr n;</b></p><p> n=(qptr)malloc(sizeof(qnode));</p><p>
73、 strcpy(n->name,name);</p><p> n->req_amt=amount;</p><p> n->next=NULL;</p><p> if(q.front==NULL)/*若原排隊(duì)等候客戶名單域?yàn)榭?/</p><p> q.front=n;</p><p>&
74、lt;b> else</b></p><p> q.rear->next=n;</p><p><b> q.rear=n;</b></p><p><b> return q;</b></p><p><b> }</b></p>
75、<p> 4.11模塊十一:訂票業(yè)務(wù)</p><p> void order()</p><p> /*辦理訂票業(yè)務(wù)*/</p><p> { struct airline *info;</p><p> int amount,grade;</p><p> char name[10];&l
76、t;/p><p> info=start;</p><p> if(!(info=find()))</p><p> return;/*根據(jù)客戶提供的航班號(hào)進(jìn)行查詢,如為空,退出該模塊*/</p><p> printf("請(qǐng)輸入你訂票所需要的數(shù)量:");</p><p> scanf(&qu
77、ot;%d",&amount);</p><p> if(amount>info->tkt_amt)/*若客戶訂票額超過(guò)乘員定票總額,退出*/</p><p><b> {</b></p><p> printf("\n對(duì)不起,您輸入的票的數(shù)量已經(jīng)超過(guò)乘員定額!");</p>
78、<p><b> return;</b></p><p><b> }</b></p><p> if(amount<=info->tkt_sur)/*若客戶訂票額末超過(guò)余票量,訂票成功并等記信息*/</p><p><b> {</b></p><
79、p><b> int i;</b></p><p> printf("請(qǐng)輸入您的姓名(訂票客戶):");</p><p> scanf("%s",name);</p><p> printf("請(qǐng)輸入您需訂購(gòu)的機(jī)票的艙位等級(jí):",grade);</p>&l
80、t;p> scanf("%d",&grade);</p><p> info->order=insertlink(info->order,amount,name,grade);/*在訂票乘員名單域中添加客戶信息*/</p><p> for(i=0;i<amount;i++)/*依次輸出該訂票客戶的座位號(hào)*/</p>
81、<p> printf("%s的座位號(hào)是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1);</p><p> info->tkt_sur-=amount;/*該航線的余票量應(yīng)減掉該客戶的訂票量*/</p><p> printf("\n祝您乘坐愉快!\n");</p>
82、;<p><b> }</b></p><p> else /*若滿員或余票額少于訂票額,詢問(wèn)客戶是否需要進(jìn)行排隊(duì)等候*/</p><p><b> {</b></p><p><b> char r;</b></p><p> printf
83、("\n已經(jīng)沒(méi)有更多的票,您需要排隊(duì)等候嗎?(Y/N)");</p><p> r=getch();</p><p> printf("%c",r);</p><p> if(r=='Y'||r=='y')</p><p><b> {</b>
84、;</p><p> printf("\n請(qǐng)輸入您的姓名(排隊(duì)訂票客戶):");</p><p> scanf("%s",name);</p><p> info->wait=appendqueue(info->wait,name,amount);/*在排隊(duì)等候乘員名單域中添加客戶信息*/</p>
85、<p> printf("\n添加成功!\n");</p><p><b> }</b></p><p> else printf("\n歡迎您下次訂購(gòu)!\n");</p><p><b> }</b></p><p><b>
86、 }</b></p><p> 4.12模塊十二:退票業(yè)務(wù)</p><p> void return_tkt()</p><p><b> /*退票模塊*/</b></p><p> { struct airline *info;</p><p> qnode *t,*b
87、ack,*f,*r;</p><p> int grade;</p><p> linklist *p1,*p2,*head;</p><p> char cusname[10];</p><p> if(!(info=find()))</p><p> return;/*調(diào)用查詢函數(shù),根據(jù)客戶提供的航線進(jìn)行
88、搜索*/</p><p> head=info->order;</p><p><b> p1=head;</b></p><p> printf("請(qǐng)輸入你的姓名(退票客戶):");</p><p> scanf("%s",cusname);</p>
89、<p> while(p1!=NULL)</p><p> {/*根據(jù)客戶提供的姓名到訂票客戶名單域進(jìn)行查詢*/</p><p> if(!strcmp(cusname,p1->name))</p><p><b> break;</b></p><p><b> p2=p1;<
90、/b></p><p> p1=p1->next;</p><p><b> }</b></p><p> if(p1==NULL)</p><p><b> {</b></p><p> printf("對(duì)不起,你沒(méi)有訂過(guò)票!\n"
91、);</p><p><b> return;</b></p><p> }/*若未找到,退出本模塊*/</p><p><b> else</b></p><p> {/*若信息查詢成功,刪除訂票客戶名單域中的信息*/</p><p> if(p1==head)
92、head=p1->next;</p><p> else p2->next=p1->next;</p><p> info->tkt_sur+=p1->ord_amt;</p><p> grade=p1->grade;</p><p> printf("%s成功退票!\n",p
93、1->name);</p><p><b> free(p1);</b></p><p><b> }</b></p><p> info->order=head;/*重新將航線名單域指向訂票單鏈表的頭指針 */</p><p> f=(info->wait).front;
94、/*f指向排隊(duì)等候名單隊(duì)列的頭結(jié)點(diǎn)*/</p><p> r=(info->wait).rear;/*r指向排隊(duì)等候名單隊(duì)列的尾結(jié)點(diǎn)*/</p><p> t=f;/*t為當(dāng)前滿點(diǎn)條件的排隊(duì)候補(bǔ)名單域*/</p><p><b> while(t)</b></p><p><b> {</b
95、></p><p> if(info->tkt_sur>=info->wait.front->req_amt)</p><p> {/*若滿足條件者為頭結(jié)點(diǎn)*/</p><p><b> int i;</b></p><p> info->wait.front=t->ne
96、xt;</p><p> printf("%s訂票成功!\n",t->name);</p><p> for(i=0;i<t->req_amt;i++)/*輸出座位號(hào)*/</p><p> printf("%s的座位號(hào)是:%d\n",t->name,(info->tkt_sur)-i);&l
97、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></
98、p><p><b> break;</b></p><p><b> }</b></p><p><b> back=t;</b></p><p> t=t->next;</p><p> if((info->tkt_sur)>=
99、(t->req_amt)&&t!=NULL)/*若滿足條件者不為頭結(jié)點(diǎn)*/</p><p><b> {</b></p><p><b> int i;</b></p><p> back->next=t->next;</p><p> printf(&qu
100、ot;%s訂票成功!\n",t->name);</p><p> for(i=0;i<t->req_amt;i++)/*輸出座位號(hào)*/</p><p> printf("<%s>'s seat number is:%d\n",t->name,(info->tkt_sur)-i);</p>&l
101、t;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
102、><b> break;</b></p><p><b> }</b></p><p><b> if(f==r)</b></p><p><b> break;</b></p><p><b> }</b></
103、p><p><b> }</b></p><p> 4.13模塊十三:主菜單</p><p> int menu_select()</p><p><b> /*菜單界面*/</b></p><p><b> { int c;</b></p
104、><p> char s[20];</p><p> printf("\n\t\t航空客運(yùn)訂票系統(tǒng)\n");</p><p> printf("******************************************\n");</p><p> printf("1.瀏覽航線信息
105、:\n");</p><p> printf("2.瀏覽已訂票客戶信息:\n");</p><p> printf("3.查詢航線\n");</p><p> printf("4.辦理訂票業(yè)務(wù):\n");</p><p> printf("5.辦理退票業(yè)務(wù)
106、:\n");</p><p> printf("6.退出系統(tǒng)\n");</p><p> printf("*******************************************\n");</p><p><b> do{</b></p><p>
107、printf("請(qǐng)選擇:");</p><p> scanf("%s",s);</p><p> c=atoi(s);//convert string to int</p><p> }while(c<0||c>7);</p><p><b> return c;</
108、b></p><p><b> }</b></p><p> 4.14模塊十四:主函數(shù)</p><p> int main()</p><p> { /*struct airline air[MAXSIZE]={{"beijing","1","B8571&
109、quot;,"SUN",3,3},</p><p> {"shanghai","2","S1002","MON",2,2},</p><p> {"london","3","L1003","FRI",1,1}
110、};/*初始化航線信息*/</p><p> /* clrscr();*/</p><p> readrecord(air);</p><p> start=air;</p><p><b> for(;;){</b></p><p> switch(menu_select()){&l
111、t;/p><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();b
112、reak;</p><p> case 6:printf("\n歡迎使用本系統(tǒng),再見(jiàn)!\n");exit(0);</p><p><b> }</b></p><p> printf("\nPress any key to continue!\n");</p><p><
113、;b> getch();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 五、程序的過(guò)程展示</b></p><p> 5.1 程序運(yùn)行過(guò)程展示</p><p>&
114、lt;b> 主界面</b></p><p><b> 瀏覽航線信息</b></p><p><b> 瀏覽已訂票客戶信息</b></p><p><b> 查詢航線</b></p><p><b> 辦理訂票業(yè)務(wù)</b><
115、/p><p><b> 辦理退票業(yè)務(wù)</b></p><p> 5.2 程序結(jié)果展示及分析</p><p><b> 六、軟件的輔助說(shuō)明</b></p><p> 6.1 本軟件的優(yōu)點(diǎn)</p><p> 能夠完成簡(jiǎn)單的訂票程序,簡(jiǎn)單易懂,在查詢航班時(shí)考慮了通過(guò)航班號(hào)查詢
116、和通過(guò)終點(diǎn)站查詢兩方面,使用戶操作更方便。另外,此軟件用鏈表及隊(duì)列實(shí)現(xiàn),節(jié)約內(nèi)存。訂票步驟較為簡(jiǎn)潔,節(jié)約顧客的時(shí)間。</p><p> 6.2 本軟件的缺點(diǎn)</p><p> 未涉及到更改航線這一用途,功能有限,對(duì)退票之后還款也沒(méi)有做出相應(yīng)的設(shè)計(jì)。訂票時(shí)只能按照航班號(hào)訂票,沒(méi)有時(shí)間信息,不能按其他方式訂票。用到的數(shù)據(jù)結(jié)構(gòu)課程的知識(shí)較少,在編寫(xiě)的時(shí)候只使用了相對(duì)較為簡(jiǎn)單的基礎(chǔ)語(yǔ)言,代替了
117、相對(duì)較為復(fù)雜的語(yǔ)言,降低了運(yùn)行效率。</p><p> 6.3 本軟件的BUG</p><p> 設(shè)計(jì)讀入文件時(shí)總導(dǎo)致程序無(wú)法運(yùn)行。</p><p> 查詢航線時(shí)雖設(shè)置了兩種查詢航線的方式,但是按航班號(hào)查詢時(shí)總出現(xiàn)錯(cuò)誤。</p><p> 退票時(shí)是按退票人姓名進(jìn)行查找的,沒(méi)有其他身份驗(yàn)證信息,若有人重名,都會(huì)被刪掉。</p>
118、;<p> 課程設(shè)計(jì)結(jié)論(意見(jiàn)、建議、心得、申報(bào)成績(jī)…)</p><p> 通過(guò)此次課程設(shè)計(jì),我明白了合作的重要性,雖然這個(gè)程序可能沒(méi)有別人編寫(xiě)的那么具有難度,但是也耗費(fèi)了我們很多精力,而如果讓任何一個(gè)人單獨(dú)完成的話,將會(huì)更加辛苦,每個(gè)人所擅長(zhǎng)的部分不一樣,合作體現(xiàn)出1+1>2的效果。除此之外,通過(guò)此次課程設(shè)計(jì),我加深了對(duì)調(diào)試的認(rèn)識(shí),調(diào)試是有技巧的,改變了過(guò)去只調(diào)試不知道如何對(duì)照程序語(yǔ)言修
119、改程序的壞習(xí)慣。</p><p> 計(jì)科1103班 高華超</p><p> 在這次的課程設(shè)計(jì)中我又學(xué)到了許多知識(shí),不僅是c語(yǔ)言的知識(shí),方法,技巧,更多的是我們?cè)趯W(xué)習(xí)過(guò)程中掌握的一些學(xué)習(xí)的技巧,手段和方法。雖然我們的程序還不是很完美,但我們也是精心準(zhǔn)備的。</p><p> 計(jì)科1103班 朱楠</p><p> 參考文獻(xiàn)(參考網(wǎng)站
120、)</p><p> 數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)</p><p><b> 百度文庫(kù)</b></p><p><b> 九、附錄 源代碼</b></p><p> #include <stdio.h></p><p> #include <stdlib.
121、h></p><p> #include <string.h></p><p> #include<conio.h></p><p> #include <iostream></p><p> #define MAXSIZE 100 /*定義航線量的最大值*/</p><p
122、> using namespace std;</p><p> typedef struct wat_ros</p><p> { char name[10];/*姓名*/</p><p> int req_amt;/*訂票量*/</p><p> struct wat_ros *next;</p><p
123、> }qnode,*qptr;</p><p> typedef struct pqueue</p><p> { qptr front;/*等候替補(bǔ)客戶名單域的頭指針*/</p><p> qptr rear;/*等候替補(bǔ)客戶名單域的屬指針*/</p><p> }linkqueue;</p><p&g
124、t; typedef struct ord_ros</p><p> { char name[10];/*客戶姓名*/</p><p> int ord_amt;/*訂票量*/</p><p> int grade;/*艙位等級(jí)*/</p><p> struct ord_ros *next;</p><p&g
125、t; }linklist;</p><p> struct airline</p><p> { char ter_name[10];/*終點(diǎn)站名 */</p><p> char air_num[10];/*航班號(hào)*/</p><p> char plane_num[10];/*飛機(jī)號(hào)*/</p><p&g
126、t; char day[7];/*飛行周日(星期幾)*/</p><p> int tkt_amt;/*票量定額*/</p><p> int tkt_sur;/*余票量*/</p><p> linklist *order;/*乘員名單域,指向乘員名單鏈表的頭指針*/</p><p> linkqueue wait;/*等候替補(bǔ)的
127、客戶名單域,分別指向排隊(duì)等候名單隊(duì)頭隊(duì)尾的指針*/</p><p> struct airline *next; </p><p> }air[100];</p><p> struct airline *start;</p><p> int length =0;</p><p> int readreco
128、rd(struct airline air[])</p><p><b> { </b></p><p><b> FILE *fp;</b></p><p> struct airline a;</p><p> if((fp = fopen("airplane.txt&q
129、uot;,"r")) != NULL)</p><p><b> {</b></p><p> while(!feof(fp))</p><p><b> {</b></p><p> //fscanf(fp,"%s %s %s %s %d %d ",
130、air[length].ter_name,air[length].air_num,air[length].plane_num,air[length].day,air[length].tkt_amt,air[length].tkt_sur);</p><p> fscanf(fp,"%s%s%s%s%d%d",a.ter_name,a.air_num,a.plane_num,a.day,&am
131、p;a.tkt_amt,&a.tkt_sur);</p><p> strcpy(air[length].ter_name, a.ter_name);</p><p> strcpy(air[length].air_num, a.air_num);</p><p> strcpy(air[length].plane_num, a.plane_num);
132、</p><p> strcpy(air[length].day, a.day);</p><p> air[length].tkt_amt = a.tkt_amt;</p><p> air[length].tkt_sur = a.tkt_sur;</p><p><b> length++;</b></
133、p><p><b> }</b></p><p> air[length].ter_name[0] = '\0';</p><p><b> } </b></p><p><b> else</b></p><p><b>
134、 {</b></p><p> printf("Can not open this file!\n");</p><p><b> exit(0);</b></p><p><b> } </b></p><p> return length;</p&
135、gt;<p><b> } </b></p><p> void display(struct airline *info)</p><p> /*輸出每條航線的基本信息*/</p><p><b> {</b></p><p> printf("%8s\t%3s\
136、t%s\t%4s\t\t%3d\t%10d\n",info->ter_name,info->air_num,info->plane_num,info->day,info->tkt_amt,info->tkt_sur);</p><p><b> }</b></p><p> void list()/*打印全部航線信息*
137、/</p><p> { struct airline *info;</p><p><b> int i=0;</b></p><p> info=start;</p><p> printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行周日\(chéng)t乘員定額\t余票量\n");</p>
138、<p> while(i<length)</p><p><b> {</b></p><p> display(info);</p><p><b> info++;</b></p><p><b> i++;</b></p><
139、;p><b> }</b></p><p> printf("\n\n");</p><p><b> }</b></p><p> void search()</p><p> /*根據(jù)客戶提出的終點(diǎn)站名輸出航線信息*/</p><p>
140、<b> {</b></p><p> int findHao();</p><p> int findZhong();</p><p> struct airline *find();</p><p> printf("1......按終點(diǎn)站查詢\n2......按航班號(hào)查詢\n");&l
141、t;/p><p> switch(getch())</p><p><b> {</b></p><p><b> case '1':</b></p><p> findHao();</p><p><b> break;</b>&
142、lt;/p><p><b> case '2':</b></p><p> findZhong();</p><p><b> break;</b></p><p><b> default:;</b></p><p><b&g
143、t; }</b></p><p><b> }</b></p><p> int findHao()</p><p> /*根據(jù)客戶提出的終點(diǎn)站名輸出航線信息*/</p><p><b> {</b></p><p> struct airline *
144、info;</p><p> char name[10];</p><p><b> int i=0;</b></p><p> info=start;</p><p> printf("請(qǐng)輸入終點(diǎn)站名:");</p><p> scanf("%s"
145、;,name);</p><p> while(i<length)</p><p><b> {</b></p><p> if(!strcmp(name,info->ter_name)) break;//字符串比較</p><p><b> info++;</b></p&
146、gt;<p><b> i++;</b></p><p><b> }</b></p><p> if(i>=length)</p><p> printf("對(duì)不起,該航線未找到!\n");</p><p><b> else</b
147、></p><p><b> {</b></p><p> printf("終點(diǎn)站名\t航班號(hào)\t飛機(jī)號(hào)\t飛行周日\(chéng)t乘員定額\t余票量\n");</p><p> display(info);</p><p><b> }</b></p><
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---列車運(yùn)行查詢程序的設(shè)計(jì)與實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---列車運(yùn)行查詢程序的設(shè)計(jì)與實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-- joseph環(huán)程序設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-校園導(dǎo)游程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-校園導(dǎo)游程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-校園導(dǎo)游程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-校園導(dǎo)游程序
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----行編輯程序
評(píng)論
0/150
提交評(píng)論