例(航空售票系統(tǒng))
航空售票系統(tǒng)
一、需求分析(標(biāo)題:四號(hào),宋體,段前段后0.5行,單倍行距)
1)每條航線所涉及的信息有:終點(diǎn)站名、航班號(hào)、飛機(jī)號(hào)、飛行日期、定票
量、已定票的乘客名單、票價(jià)。(正文:小四,宋體,行距固定值20磅)2)作為示意系統(tǒng),所有數(shù)據(jù)可以只放在內(nèi)存中。3)系統(tǒng)能實(shí)現(xiàn)的操作和功能如下:
a)查詢航線:能根據(jù)乘客提出的終點(diǎn)站名輸出下列信息:航班號(hào)、所屬航空公司、班機(jī)號(hào)、飛行日期、起飛時(shí)間、目的機(jī)場(chǎng)、到達(dá)時(shí)間。b)承辦售票業(yè)務(wù)c)承辦定票業(yè)務(wù)d)承辦退票業(yè)務(wù)
二、概要設(shè)計(jì)
1、抽象數(shù)據(jù)類型的定義如下:ADTSchedule{
數(shù)據(jù)對(duì)象:D={ei|i=1,2,3,…,n;n0;ei∈Schedule}
數(shù)據(jù)關(guān)系:R1={<ei-1,ei>|<ei-1,ei>表示ei-1和ei之間有先后順序關(guān)系}基本操作:
Schedule*OutFile(fstream&outfile);
操作結(jié)果:打開文本文件dipiao.txt,把文件中的數(shù)據(jù)送到結(jié)構(gòu)體數(shù)組中。boolSearch_airnum(Schedule*P,Schedule&plane,charairnum[]);初始條件:結(jié)構(gòu)體數(shù)組P存在
操作結(jié)果:按照輸入的航班號(hào)進(jìn)行查找,并顯示。
boolSearch_Airport(Schedule*P,Scheduleplane[],int&num,charportname[]);初始條件:結(jié)構(gòu)體數(shù)組P存在
操作結(jié)果:按照輸入的時(shí)間和目的機(jī)場(chǎng)進(jìn)行查找,并顯示。}ADTSchedule
2、抽象數(shù)據(jù)類型隊(duì)列的定義如下:
......……程序流程圖
主界面售票系統(tǒng)沒有票是否有票?定票系統(tǒng)退票系統(tǒng)有票售票三、詳細(xì)設(shè)計(jì)
各模塊詳細(xì)設(shè)計(jì)及源程序
四、調(diào)試分析
1、該程序的主要存儲(chǔ)結(jié)構(gòu)是數(shù)組,其次有隊(duì)列,隊(duì)列主要用來存放定票人的信息。
2、進(jìn)行查找的時(shí)候,能夠根據(jù)輸入的時(shí)間區(qū)間進(jìn)行模糊查找,并且把找到的所有符合條件的航班顯示出來。
3、對(duì)輸入的錯(cuò)誤信息給出警告或提示,對(duì)一次操作的完成也給出相應(yīng)的提示。
五、測(cè)試結(jié)果
圖1主界面
六、課設(shè)總結(jié)
2售票界面…
…圖
擴(kuò)展閱讀:航空售票系統(tǒng)
航空訂票系統(tǒng)
一、題目分析
本題目要求設(shè)計(jì)航空訂票業(yè)務(wù)系統(tǒng),借助計(jì)算機(jī)來實(shí)現(xiàn)以下業(yè)務(wù):查詢航線、客票預(yù)訂和辦理退票等。該系統(tǒng)的基本要求:
(1)每條航線所涉及的信息有:終點(diǎn)站名、航班號(hào)、飛機(jī)號(hào)、飛行周日(星期幾)、乘員定額、余票量、已訂票的客戶名單(包括姓名、訂票量、艙位等級(jí)1,2或3)以及等候替補(bǔ)的客戶名單(包括姓名、所需票量);
(2)系統(tǒng)能實(shí)現(xiàn)的操作和功能如下:①查詢航線:根據(jù)旅客提出的終點(diǎn)站名輸出下列信息:航班號(hào)、飛機(jī)號(hào)、星期幾飛行,最近一天航班的日期和余票額;②承辦訂票業(yè)務(wù):根據(jù)客戶提出的要求(航班號(hào)、訂票數(shù)額)查詢?cè)摵桨嗥鳖~情況,若尚有余票,則辦理訂票手續(xù),輸出座位號(hào);若已滿員或余票額少于訂票額,則需重新詢問客戶要求。若需要,可登記排隊(duì)候補(bǔ);③承辦退票業(yè)務(wù):根據(jù)客戶提供的情況(日期、航班),為客戶辦理退票手續(xù),然后查詢?cè)摵桨嗍欠裼腥伺抨?duì)候補(bǔ),首先詢問排在第一的客戶,若所退票額能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問其它排隊(duì)候補(bǔ)客戶。
程序使用了數(shù)據(jù)結(jié)構(gòu)中的隊(duì)列及鏈表,將對(duì)客戶的操作及航線的操作用鏈表來實(shí)現(xiàn),將替補(bǔ)對(duì)替補(bǔ)客戶的操作用隊(duì)列來實(shí)現(xiàn),在該程序中,我一共為其定義了8個(gè)函數(shù)。再main()中調(diào)用command_mode()進(jìn)入選擇菜單,在選擇則菜單中,可以分別調(diào)用FIND(),RETURN(),ORDER()等函數(shù)來實(shí)現(xiàn)查找,退票,訂票等功能。
二、設(shè)計(jì)過程(程序流程圖)
由于此程序涉及功能和信息較多,因此應(yīng)定義結(jié)構(gòu)體。本程序的結(jié)構(gòu)體有:1.typedefstructOrder{charname[10];/*客戶姓名*/uintnum_rank1;/*等級(jí)為1的票數(shù)*/uintnum_rank2;/*等級(jí)為2的票數(shù)*/uintnum_rank3;/*等級(jí)為3的票數(shù)*/structOrder*next;}Order,*OrderList;
2.typedefstructFlightLine
{charstop[10];/*終點(diǎn)站名*/charflight[10];/*航班號(hào)*/uintplane;/*飛機(jī)號(hào)*/charweek[3];/*飛行周日*/
uinttotal_rank1;/*等級(jí)為1的乘員數(shù)*/uinttotal_rank2;/*等級(jí)為2的余票數(shù)*/uinttotal_rank3;/*等級(jí)為3的余票數(shù)*/uintrest_rank1;/*等級(jí)為1的余票數(shù)*/uintrest_rank2;/*等級(jí)為2的余票數(shù)*/uintrest_rank3;/*等級(jí)為3的余票數(shù)*/OrderListpordered_list;/*訂票客戶*/OrderListpordered_rear;
第1頁航空訂票系統(tǒng)
OrderListpwaited_list;/*候補(bǔ)客戶*/OrderListpwaited_rear;structFlightLine*next;
}FlightLine,*FlightLineList;FlightLineListflightline_list;FlightLineListflightline_rear;查找功能
該功能需要輸入目的地進(jìn)行查找,調(diào)用find_fight()函數(shù),并且在find_flight()中調(diào)用flight_print()找到符合的信息。訂票功能
在order()函數(shù)中,通過對(duì)鏈表的操作,找到相應(yīng)的航線,將錄入的客戶信息添加到鏈表中。但當(dāng)航線訂票數(shù)已滿員,則詢問用戶是否進(jìn)入候補(bǔ)名單,通過調(diào)用alternate()函數(shù),將客戶加入候補(bǔ)隊(duì)列。退票功能
通過客戶名來在客戶鏈表中查找客戶信息,在通過錄入客戶訂票航班號(hào)、姓名,在航線鏈表中查找航線頭結(jié)點(diǎn),并用航線指針實(shí)現(xiàn)票數(shù)的變化,如果在退票后,候補(bǔ)隊(duì)列不為空,則首先詢問排在第一的客戶,若所退票額能滿足他的要求,則為他辦理訂票手續(xù),否則依次詢問其它排隊(duì)候補(bǔ)客戶。程序流程圖:
開始定義變量voidflight_print(FlightLineListflightline_tmp)輸出航班信息打印訂票信息打印候補(bǔ)信息返回圖1航班信息打印函數(shù)
第2頁航空訂票系統(tǒng)
開始訂票鏈表末尾增加一個(gè)節(jié)點(diǎn)寫入訂票信息余票更新返回定義變量intorder_tickets(char*name,char*flight,uintnum_rank1,uintnum_rank2,uintnum_rank3,FlightLineList*flightline_tmp)*flightline_tmp=flightline_list;航線指針的指針域非零YN比較flight和(*flightline_tmp->next-N>flightYbreak*flightline_tmp=(*flightline_tmp)->next;將航班指針的指針域賦給航班指針航線指針為空YN返回0訂票數(shù)額超過票額總數(shù)YN返回1余票不N足Y返回2
圖2訂票函數(shù)第3頁
航空訂票系統(tǒng)
開始定義變量intreturn_tickets(char*name,char*flight,FlightLineList*flightline_tmp)初始化訂票鏈更新余票刪除滿足需求的表頭結(jié)點(diǎn)候補(bǔ)節(jié)點(diǎn)查找退票人的返回2訂票節(jié)點(diǎn)*flightline_tmp=(*flightline_tmp)->next;沒找到航班YN返回0沒找到退票人的訂票節(jié)點(diǎn)YN返回1更新余票刪除退票人的訂票節(jié)點(diǎn)查找候補(bǔ)節(jié)點(diǎn)中有沒有N滿足需要的節(jié)點(diǎn)Y給訂票鏈表末尾返回加一個(gè)節(jié)點(diǎn)將滿足需求的候補(bǔ)節(jié)點(diǎn)加入到訂票鏈表中圖3退票函數(shù)
第4頁
航空訂票系統(tǒng)
開始定義變量voidalternae(char*name,uintnum_rank1,unitnum_rank2,unitnum_rank3,FlightLineListflightkine_tmp)在候補(bǔ)鏈表末尾加一個(gè)節(jié)點(diǎn)寫入候補(bǔ)信息返回圖4候補(bǔ)函數(shù)
開始定義變量xoidfind_flight(char*stop)FlightLineListflightline_tmp=flightline_list;航線信息指針域不為空YNflightline_tmp=flightline_tmp->next;比較stop和flightline_tmp->stopYN調(diào)用航班打印函數(shù)返回圖5查找航班函數(shù)第5頁
航空訂票系統(tǒng)
返回輸入終點(diǎn)站開始Waitsuccess定義航班號(hào),航班等級(jí),終點(diǎn)站,姓名定義不同等級(jí)成員輸如候補(bǔ)人員信息,航班信息waitquitYNIfqueue?case=2沒有足夠余票,是否排隊(duì)case=0沒有航班case=1沒有訂票輸出“reversesuccess”航班信息輸出"returnsuccess!"case=2航班信息switch語句輸入命令case=0沒有此航班case=1票額不足Y判斷是否是空N返回值是否是0Y輸入姓名,航班號(hào)Nswitch語句N輸入姓名,航班等級(jí),航班號(hào)圖6命令函數(shù)
第6頁航空訂票系統(tǒng)
開始初始化增加航線進(jìn)入命令返回0結(jié)束圖7主函數(shù)三、調(diào)試過程及實(shí)驗(yàn)結(jié)果1).調(diào)試過程
在初編程序時(shí)訂票函數(shù)中沒有編入更新剩余票數(shù)語句:(*flightline_tmp)->rest_rank1-=num_rank1;(*flightline_tmp)->rest_rank2-=num_rank2;(*flightline_tmp)->rest_rank3-=num_rank3;
這導(dǎo)致任務(wù)顯示欄中剩余票數(shù)沒有更新。在加入后,任務(wù)顯示欄中剩余票數(shù)可以實(shí)行更新。
在初編程序時(shí)退票函數(shù)中沒有刪除退票人的訂票節(jié)點(diǎn),導(dǎo)致剩余票顯示出錯(cuò)。應(yīng)該加上:
order_free=order_tmp->next;order_tmp->next=order_free->next;if(order_tmp->next==NULL){(*flightline_tmp)->pordered_rear=order_tmp;}free(order_free);
order_tmp=(*flightline_tmp)->pwaited_list;2).實(shí)驗(yàn)結(jié)果
第7頁航空訂票系統(tǒng)
查找函數(shù)界面
訂票函數(shù)界面
第8頁航空訂票系統(tǒng)
等候函數(shù)界面如果票已經(jīng)售完則程序調(diào)用等候函數(shù)。
退票函數(shù)界面
第9頁航空訂票系統(tǒng)
在退票函數(shù)中:如果在退票后,候補(bǔ)隊(duì)列不為空,則詢問排隊(duì)的客戶,若所退票額能滿足他的要求,則為他辦理訂票手續(xù),依次詢問其它排隊(duì)候補(bǔ)客戶。四、結(jié)論
此次軟件課程設(shè)計(jì),考察鏈表以及隊(duì)列的操作,在編寫程序的時(shí)候,雖然遇到了很多問題,通過不斷的查閱相關(guān)資料,提高了根據(jù)具體情況解決問題的能力,結(jié)合數(shù)據(jù)結(jié)構(gòu)課程中的基本理論和基本算法,分析并正確確定數(shù)據(jù)的邏輯結(jié)構(gòu),合理地選擇相應(yīng)的存儲(chǔ)結(jié)構(gòu),并能設(shè)計(jì)出解決問題的有效算法的能力,也為我日后的編程積累了經(jīng)驗(yàn)。同時(shí)也使我初步掌握軟件開發(fā)過程中問題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能。
在這次課程設(shè)計(jì)的過程中,我總結(jié)出了一條很有用的調(diào)試經(jīng)驗(yàn),通過注釋程序段語句,部分執(zhí)行程序,由大到小縮短范圍,直到找到程序問題所在,我認(rèn)為這個(gè)方法能很好的提高程序調(diào)試的效率。
通過對(duì)數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí),使我在編程的時(shí)候有了很好的指導(dǎo)思想,而通過數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),使我有了一個(gè)很好的理論聯(lián)系實(shí)際的機(jī)會(huì)。
五、程序清單
#include#include
typedefunsignedintuint;typedefstructOrder{charname[10];/*客戶姓名*/uintnum_rank1;/*等級(jí)為1的票數(shù)*/uintnum_rank2;/*等級(jí)為2的票數(shù)*/uintnum_rank3;/*等級(jí)為3的票數(shù)*/structOrder*next;}Order,*OrderList;
typedefstructFlightLine
{charstop[10];/*終點(diǎn)站名*/charflight[10];/*航班號(hào)*/uintplane;/*飛機(jī)號(hào)*/charweek[3];/*飛行周日*/
uinttotal_rank1;/*等級(jí)為1的乘員數(shù)*/uinttotal_rank2;/*等級(jí)為2的余票數(shù)*/uinttotal_rank3;/*等級(jí)為3的余票數(shù)*/
uintrest_rank1;/*等級(jí)為1的余票數(shù)*/uintrest_rank2;/*等級(jí)為2的余票數(shù)*/uintrest_rank3;/*等級(jí)為3的余票數(shù)*/
OrderListpordered_list;/*訂票客戶*/OrderListpordered_rear;
第10頁航空訂票系統(tǒng)
OrderListpwaited_list;/*候補(bǔ)客戶*/OrderListpwaited_rear;
structFlightLine*next;
}FlightLine,*FlightLineList;FlightLineListflightline_list;FlightLineListflightline_rear;
voidflightline_init();
voidflightline_add(char*stop,char*flight,uintplane,char*week,uinttotal_rank1,uinttotal_rank2,uinttotal_rank3);voidflight_print(FlightLineListflightline_tmp);
intorder_tickets(char*name,char*flight,uintnum_rank1,uintnum_rank2,uintnum_rank3,
FlightLineList*flightline_tmp);
intreturn_tickets(char*name,char*flight,FlightLineList*flightline_tmp);
voidalternate(char*name,uintnum_rank1,uintnum_rank2,uintnum_rank3,FlightLineListflightline_tmp);voidfind_flight(char*stop);voidhelp();
voidcommand_mode();voidflightline_init(){
/*初始化航線鏈表的頭節(jié)點(diǎn)*/
flightline_list=(FlightLineList)malloc(sizeof(FlightLine));flightline_list->next=NULL;flightline_list->pordered_list=NULL;flightline_list->pordered_rear=NULL;flightline_list->pwaited_list=NULL;flightline_list->pwaited_rear=NULL;flightline_rear=flightline_list;}
voidflightline_add(char*stop,char*flight,uintplane,char*week,uinttotal_rank1,uinttotal_rank2,uinttotal_rank3){
/*航線鏈表末尾增加一個(gè)節(jié)點(diǎn)*/flightline_rear->next=
(FlightLineList)malloc(sizeof(FlightLine));flightline_rear=flightline_rear->next;flightline_rear->next=NULL;/*寫入航線信息*/
strcpy(flightline_rear->stop,stop);strcpy(flightline_rear->flight,flight);
第11頁航空訂票系統(tǒng)
flightline_rear->plane=plane;strcpy(flightline_rear->week,week);
flightline_rear->total_rank1=total_rank1;flightline_rear->total_rank2=total_rank2;flightline_rear->total_rank3=total_rank3;flightline_rear->rest_rank1=total_rank1;flightline_rear->rest_rank2=total_rank2;flightline_rear->rest_rank3=total_rank3;/*初始化訂票鏈表頭節(jié)點(diǎn)*/
flightline_rear->pordered_list=(OrderList)malloc(sizeof(Order));flightline_rear->pordered_list->next=NULL;flightline_rear->pordered_rear=flightline_rear->pordered_list;/*初始化候補(bǔ)鏈表頭節(jié)點(diǎn)*/
flightline_rear->pwaited_list=(OrderList)malloc(sizeof(Order));flightline_rear->pwaited_list->next=NULL;flightline_rear->pwaited_rear=flightline_rear->pwaited_list;}
/*航班信息打印函數(shù)*/
voidflight_print(FlightLineListflightline_tmp){OrderListorder_tmp;printf("********************************************************************\\n");printf("*stop:%s\\tflight:%s\\tplane:%d\\tweek:date%s\\n*\\n*
total_rank1:%d\\trest_rank1:%d\\n*total_rank2:%d\\trest_rank2:%d\\n*total_rank3:%d\\trest_rank3:%d\\n*\\n",flightline_tmp->stop,flightline_tmp->flight,flightline_tmp->plane,flightline_tmp->week,flightline_tmp->total_rank1,flightline_tmp->rest_rank1,flightline_tmp->total_rank2,flightline_tmp->rest_rank2,flightline_tmp->total_rank3,flightline_tmp->rest_rank3);/*打印訂票信息*/printf("*[ordernamelist]\\n");order_tmp=flightline_tmp->pordered_list;while(order_tmp->next!=NULL){order_tmp=order_tmp->next;
第12頁航空訂票系統(tǒng)
printf("*%s(total_rank1:%d,total_rank2:%d,total_rank3:%d)\\n",order_tmp->name,order_tmp->num_rank1,order_tmp->num_rank2,order_tmp->num_rank3);}
/*打印候補(bǔ)信息*/printf("*\\n*[waitnamelist]\\n");order_tmp=flightline_tmp->pwaited_list;while(order_tmp->next!=NULL){order_tmp=order_tmp->next;printf("*%s(total_rank1:%d,total_rank2:%d,total_rank3:%d)\\n",order_tmp->name,order_tmp->num_rank1,order_tmp->num_rank2,order_tmp->num_rank3);}
printf("************************************************************************\\n");}
/*訂票函數(shù)*/
intorder_tickets(char*name,char*flight,uintnum_rank1,uintnum_rank2,uintnum_rank3,
FlightLineList*flightline_tmp){*flightline_tmp=flightline_list;/*查找航班*/while((*flightline_tmp)->next!=NULL){if(strcmp((*flightline_tmp)->next->flight,flight)!=0){*flightline_tmp=(*flightline_tmp)->next;}else{break;}}
*flightline_tmp=(*flightline_tmp)->next;/*查找航班*/if(*flightline_tmp==NULL){return0;
第13頁航空訂票系統(tǒng)
}/*訂票數(shù)額超過票額總數(shù)返回1*/if(num_rank1>(*flightline_tmp)->total_rank1||num_rank2>(*flightline_tmp)->total_rank2||num_rank3>(*flightline_tmp)->total_rank3){return1;}
/*余票不足返回2*/if((*flightline_tmp)->rest_rank1 /*訂票鏈表末尾增加一個(gè)節(jié)點(diǎn)*/ (*flightline_tmp)->pordered_rear->next=(OrderList)malloc(sizeof(Order));(*flightline_tmp)->pordered_rear=(*flightline_tmp)->pordered_rear->next;(*flightline_tmp)->pordered_rear->next=NULL;/*寫入訂票信息*/ strcpy((*flightline_tmp)->pordered_rear->name,name);(*flightline_tmp)->pordered_rear->num_rank1=num_rank1;(*flightline_tmp)->pordered_rear->num_rank2=num_rank2;(*flightline_tmp)->pordered_rear->num_rank3=num_rank3;/*余票更新*/(*flightline_tmp)->rest_rank1-=num_rank1;(*flightline_tmp)->rest_rank2-=num_rank2;(*flightline_tmp)->rest_rank3-=num_rank3;return3;} /*退票函數(shù)*/ intreturn_tickets(char*name,char*flight,FlightLineList*flightline_tmp){OrderListorder_tmp=NULL;OrderListorder_free=NULL;*flightline_tmp=flightline_list;/*查找退票人的訂票節(jié)點(diǎn)*/ while((*flightline_tmp)->next!=NULL){if(strcmp((*flightline_tmp)->next->flight,flight)!=0){ 第14頁航空訂票系統(tǒng) *flightline_tmp=(*flightline_tmp)->next;}else{order_tmp=(*flightline_tmp)->next->pordered_list;while(order_tmp->next!=NULL){if(strcmp(order_tmp->next->name,name)!=0){order_tmp=order_tmp->next;}else{break;}}break;}}*flightline_tmp=(*flightline_tmp)->next;/*沒有找到航班返回0*/if(*flightline_tmp==NULL){return0;} /*沒有找到退票人的訂票節(jié)點(diǎn)返回1*/if(order_tmp->next==NULL){return1;} /*更新余票*/ (*flightline_tmp)->rest_rank1+=order_tmp->next->num_rank1;(*flightline_tmp)->rest_rank2+=order_tmp->next->num_rank2;(*flightline_tmp)->rest_rank3+=order_tmp->next->num_rank3;/*刪除退票人的訂票節(jié)點(diǎn)*/ order_free=order_tmp->next;order_tmp->next=order_free->next;if(order_tmp->next==NULL){(*flightline_tmp)->pordered_rear=order_tmp;}free(order_free); order_tmp=(*flightline_tmp)->pwaited_list; /*查找候補(bǔ)節(jié)點(diǎn)中有沒有滿足需要的節(jié)點(diǎn),如果有就把票依次定給候補(bǔ)人*/ 第15頁航空訂票系統(tǒng) while(order_tmp->next!=NULL){if((*flightline_tmp)->rest_rank1>=order_tmp->next->num_rank1&&(*flightline_tmp)->rest_rank2>=order_tmp->next->num_rank2&&(*flightline_tmp)->rest_rank3>=order_tmp->next->num_rank3){ /*給訂票鏈表末尾添加一個(gè)節(jié)點(diǎn)*/ (*flightline_tmp)->pordered_rear->next=(OrderList)malloc(sizeof(Order));(*flightline_tmp)->pordered_rear=(*flightline_tmp)->pordered_rear->next;(*flightline_tmp)->pordered_rear->next=NULL;/*將滿足需求的候補(bǔ)節(jié)點(diǎn)加入到訂票鏈表中*/strcpy((*flightline_tmp)->pordered_rear->name,order_tmp->next->name);(*flightline_tmp)->pordered_rear->num_rank1=order_tmp->next->num_rank1;(*flightline_tmp)->pordered_rear->num_rank2=order_tmp->next->num_rank2;(*flightline_tmp)->pordered_rear->num_rank3=order_tmp->next->num_rank3;/*更新余票*/ (*flightline_tmp)->rest_rank1-=order_tmp->next->num_rank1;(*flightline_tmp)->rest_rank2-=order_tmp->next->num_rank2;(*flightline_tmp)->rest_rank3-=order_tmp->next->num_rank3; /*刪除滿足需求的候補(bǔ)節(jié)點(diǎn)*/order_free=order_tmp->next;order_tmp->next=order_free->next;if(order_tmp->next==NULL){(*flightline_tmp)->pwaited_rear=order_tmp;}free(order_free);}else{break;}}return2; 第16頁航空訂票系統(tǒng) /*排隊(duì)候補(bǔ)函數(shù)*/ voidalternate(char*name,uintnum_rank1,uintnum_rank2,uintnum_rank3,FlightLineListflightline_tmp){ /*在候補(bǔ)鏈表末尾增加一個(gè)節(jié)點(diǎn)*/ flightline_tmp->pwaited_rear->next=(OrderList)malloc(sizeof(Order));flightline_tmp->pwaited_rear=flightline_tmp->pwaited_rear->next;flightline_tmp->pwaited_rear->next=NULL;/*寫入候補(bǔ)信息*/ strcpy(flightline_tmp->pwaited_rear->name,name);flightline_tmp->pwaited_rear->num_rank1=num_rank1;flightline_tmp->pwaited_rear->num_rank2=num_rank2;flightline_tmp->pwaited_rear->num_rank3=num_rank3;} /*查找航班函數(shù)*/ voidfind_flight(char*stop){FlightLineListflightline_tmp=flightline_list;/*根據(jù)終點(diǎn)站查找航班,并打印航班信息*/while(flightline_tmp->next!=NULL){flightline_tmp=flightline_tmp->next;if(stricmp(flightline_tmp->stop,stop)==0){flight_print(flightline_tmp);}}} /*命令行模式函數(shù)*/voidcommand_mode(){FlightLineListflightline_tmp=NULL;charcommand[10];charname[10];charflight[10];charstop[10];intresult;uintnum_rank1;uintnum_rank2;uintnum_rank3;for(;;){printf("pleaseinputcomand:\\n"); 第17頁航空訂票系統(tǒng) scanf("%s",command);if(strcmp(command,"FIND")==0){printf("pleaseinputstop:");scanf("%s",stop);find_flight(stop);}elseif(strcmp(command,"RETURN")==0){printf("pleaseyourname:");scanf("%s",name);printf("pleaseinputflight:");scanf("%s",flight);result=return_tickets(name,flight,&flightline_tmp);switch(result){case0:printf("notheplane!\\n");break;case1:printf("noreverse!\\n");break;default:flight_print(flightline_tmp);printf("returnsuccess!\\n");}}elseif(strcmp(command,"ORDER")==0){printf("pleaseyourname:");scanf("%s",name);printf("pleaseinputflight:");scanf("%s",flight);printf("lever1num:");scanf("%d",&num_rank1);printf("lever2num:");scanf("%d",&num_rank2);printf("lever3num:");scanf("%d",&num_rank3);result=order_tickets(name,flight,num_rank1,num_rank2,num_rank3,&flightline_tmp);switch(result){case0:printf("notheplane!\\n");break; 第18頁航空訂票系統(tǒng) case1:flight_print(flightline_tmp);printf("noenoughticket\\n");break;case2:flight_print(flightline_tmp);printf("noenoughrest,ifqueue?(Y/N)");scanf("%s",command);if(command[0]=="Y"||command[0]=="y"){alternate(name,num_rank1,num_rank2,num_rank3,flightline_tmp);flight_print(flightline_tmp);printf("waitsuccess!\\n");}elseif(command[0]=="N"||command[0]=="n"){printf("waitquit!\\n");}else{printf("inputerror!\\n");}break;default:flight_print(flightline_tmp);printf("reversesuccess!\\n");}} elseif(strcmp(command,"CLEAR")==0){system("cls");}elseif(strcmp(command,"QUIT")==0){break;}else{printf("inputerror!\\n");}}}intmain(){ /*初始化*/ flightline_init(); 第19頁航空訂票系統(tǒng) /*增加航線*/flightline_add("shenyang","A",1,"3",50,170,230);flightline_add("beijing","B",2,"2",50,120,150);flightline_add("chengdu","C",3,"1",130,150,170);/*進(jìn)入命令行模式*/command_mode();return0;} 第20頁 友情提示:本文中關(guān)于《例(航空售票系統(tǒng))》給出的范例僅供您參考拓展思維使用,例(航空售票系統(tǒng)):該篇文章建議您自主創(chuàng)作。 來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請(qǐng)聯(lián)系我們及時(shí)刪除。
《例(航空售票系統(tǒng))》由互聯(lián)網(wǎng)用戶整理提供,轉(zhuǎn)載分享請(qǐng)保留原作者信息,謝謝!
鏈接地址:http://www.taixiivf.com/gongwen/742700.html