国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語言版數(shù)據(jù)結(jié)構(gòu)-課程設(shè)計-航空客運訂票系統(tǒng) V2.0 附源碼(增加管理員功能)

這篇具有很好參考價值的文章主要介紹了C語言版數(shù)據(jù)結(jié)構(gòu)-課程設(shè)計-航空客運訂票系統(tǒng) V2.0 附源碼(增加管理員功能)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

相信很多粉絲看過看過我的主頁,有一個航空訂票系統(tǒng):

數(shù)據(jù)結(jié)構(gòu)航空訂票系統(tǒng)(附源碼)

但是最近后臺收到很多粉絲的要求,在上一個航空訂票系統(tǒng)中要加上管理員的功能塊,于是對上面那個課設(shè)進行了改進,新的功能流程如下:(航班信息由管理員添加和刪除、顧客可以實現(xiàn)購票與退票,訂票分為經(jīng)濟艙和商務(wù)艙)

航空客運訂票系統(tǒng)c語言設(shè)計,數(shù)據(jù)結(jié)構(gòu)C語言版,課程設(shè)計,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表

新增管理員模塊的功能如下,采用單鏈表、隊列實現(xiàn)(航班信息改為由管理員添加):

管理員模塊的功能:
A:管理員密碼驗證
B:查詢所有航班信息
C:根據(jù)航班ID查詢客戶信息(包括身份證號碼)
D:增加航班(航班的各個信息輸入要合法,不合法的重新輸入)
E:刪除航班,根據(jù)ID進行刪除,ID不存在則刪除失敗。
F:返回上一級菜單

//管理員的操作,包括管理員的驗證,包括查看航班、增加航班、刪除航班和查看訂票的客戶信息,能查到身份證號碼。

航空訂票系統(tǒng)V2.0的功能需求如下:

【基本需求】
(1)每條航線所設(shè)計的信息有:航班ID、起點站名、終點站名、飛機號、飛行周日(星期幾)、成員定額、總余票量、經(jīng)濟倉余票量、商務(wù)艙余票量、已訂票的客戶名單、經(jīng)濟艙候補客戶名單、商務(wù)艙候補客戶名單。其中,經(jīng)濟艙候補客戶名單和商務(wù)艙候補客戶名單中的包括以下幾個域:姓名、身份證、所需票量、預(yù)定票的等級


(2)作為示意系統(tǒng),數(shù)據(jù)放在內(nèi)存中;

(3)系統(tǒng)能實現(xiàn)的操作和功能如下:
? ? ?查看所有航班信息:
? ? ?查詢模塊:輸入起點站和終點站進行搜索


?訂票模塊的功能:
A:輸入航班ID進行訂票,當(dāng)航班ID不存在或者不合法時要求重新輸入航班ID,然后輸入訂票數(shù)量和等級,數(shù)量和等級要合法,訂票數(shù)目要大于0,等級輸入1代表經(jīng)濟艙,輸入其他數(shù)據(jù)商務(wù)艙。不合法則重新輸入,再判斷對應(yīng)等級的票是否足夠 ,足夠則繼續(xù)輸入客戶信息(姓名和身份證),然后訂票成功。當(dāng)對應(yīng)等級的票數(shù)不足時,詢問是否改變訂票計劃,同意改變計劃則重新輸入航班ID進行相應(yīng)的訂票操作。不同意改變計劃則繼續(xù)詢問是否排隊等候,不同意排隊等候則詢問是否需要推薦相同航線的其他航班,詢問操作時,輸入Y或者y表示同意,輸入N,n或者其它數(shù)據(jù)表示不同意。
B:根據(jù)起點和終點查詢航班
C:查詢所有航班的相關(guān)信息
D::查詢航班的訂票情況,輸入航班ID,當(dāng)航班ID不存在或者不合法時要求重新輸入航班ID,根據(jù)ID查詢航班,顯示出已訂票的客戶的姓名、訂票數(shù)目和倉位等級,為了保密,不能顯示客戶的身份證。
E:返回上一級菜單

退票模塊的功能:
A:先輸入航班ID,然后輸入姓名和身份證號碼進行驗證,驗證成功則辦理退票手續(xù)。然后查詢該航班是否有人排隊候補,如果有,而且票數(shù)夠了,則首先詢問排在第一的客戶,是否需要訂票,是則為他辦理訂票手續(xù),否則出隊,依次詢問其他排隊候補的客戶。若剛剛退票的是經(jīng)濟艙,則詢問經(jīng)濟艙排隊的客戶;若是商務(wù)艙,則詢問商務(wù)艙排隊的客戶。
B:返回上一級菜單
C:退出系統(tǒng)


管理員模塊的功能:
A:管理員密碼驗證
B:查詢所有航班信息
C:根據(jù)航班ID查詢客戶信息(包括身份證號碼)
D:增加航班(航班的各個信息輸入要合法,不合法的重新輸入)
E:刪除航班,根據(jù)ID進行刪除,ID不存在則刪除失敗。
F:返回上一級菜單

?

運行效果主頁面截圖:

運行環(huán)境(Dev C++ 或者 code blocks),測試數(shù)據(jù)如下:

航空客運訂票系統(tǒng)c語言設(shè)計,數(shù)據(jù)結(jié)構(gòu)C語言版,課程設(shè)計,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表

?

?運行后,首先需要管理員登錄,來添加航班信息:

航空客運訂票系統(tǒng)c語言設(shè)計,數(shù)據(jù)結(jié)構(gòu)C語言版,課程設(shè)計,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表

?

然后管理員添加航班:

航空客運訂票系統(tǒng)c語言設(shè)計,數(shù)據(jù)結(jié)構(gòu)C語言版,課程設(shè)計,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表

管理員查看航班信息:

航空客運訂票系統(tǒng)c語言設(shè)計,數(shù)據(jù)結(jié)構(gòu)C語言版,課程設(shè)計,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表

普通用戶輸入起點站終點站 名稱,查詢?航班信息:

航空客運訂票系統(tǒng)c語言設(shè)計,數(shù)據(jù)結(jié)構(gòu)C語言版,課程設(shè)計,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表

?普通客戶科根據(jù)? 經(jīng)濟艙? 和? ?商務(wù)艙? 兩種情況訂票:

航空客運訂票系統(tǒng)c語言設(shè)計,數(shù)據(jù)結(jié)構(gòu)C語言版,課程設(shè)計,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表

?

?查詢訂票模塊:根據(jù)航班ID查詢誰訂票訂了幾張票還有艙位等級

航空客運訂票系統(tǒng)c語言設(shè)計,數(shù)據(jù)結(jié)構(gòu)C語言版,課程設(shè)計,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表

?退票操作:

航空客運訂票系統(tǒng)c語言設(shè)計,數(shù)據(jù)結(jié)構(gòu)C語言版,課程設(shè)計,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表

航空客運訂票系統(tǒng)c語言設(shè)計,數(shù)據(jù)結(jié)構(gòu)C語言版,課程設(shè)計,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表

管理員刪除航班信息:

航空客運訂票系統(tǒng)c語言設(shè)計,數(shù)據(jù)結(jié)構(gòu)C語言版,課程設(shè)計,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表

?退出系統(tǒng):

航空客運訂票系統(tǒng)c語言設(shè)計,數(shù)據(jù)結(jié)構(gòu)C語言版,課程設(shè)計,數(shù)據(jù)結(jié)構(gòu),c語言,鏈表

所用類型定義:

完整代碼請訪問:

騰訊文檔騰訊文檔-在線文檔https://docs.qq.com/doc/p/71239d69a76f56cf1521717ae6b22c27cf876f10

typedef int Status;

//航班日期枚舉類,星期一到星期天

enum Week {

??? Mon = 1, Tues = 2, Wed = 3, Thurs = 4, Fri = 5, Sat = 6, Sun = 7

};

//乘客節(jié)點
typedef struct CustomerNode {

??? char name[10];//客戶姓名

??? int clientTickets;//客戶訂票量

??? char identification[20];//客戶身份證號碼

??? int rank;//艙位等級

??? CustomerNode *next;

} CustomerNode, *CusLinkList;
//候補隊列中的節(jié)點

typedef struct WaitPassenger {

??? char name[10];//姓名

??? char identification[20]; //身份證

??? int preTickets;//預(yù)定的票量

??? struct WaitPassenger *next;

} WaitQNode, *PWait;
//候補隊列

typedef struct Queue {

??? PWait front;//等候替補客戶名單域的頭指針

??? PWait rear;//等候替補客戶名單域的尾指針

} LinkQueue;
//封裝乘客的姓名和訂票量和身份證

//用于候補客戶出隊時把關(guān)鍵字返回

typedef struct NameAndNumAndID {

??? char name[10];//姓名

??? char identification[20]; //身份證號碼

??? int num;//訂票量

} NameAndNumAndID;
//航班節(jié)點

typedef struct Flight {

??? char startPoint[20];//起點站名

??? char destination[20];//終點站名

??? char flightCodeID[20];//航班ID(相當(dāng)于主鍵)

??? char planeNum[20];//飛機號

??? char day[20];//飛行日期(星期幾)

??? int totalTickets;//乘員定額(總票數(shù))

??? int left;//總余票量

??? int leftEconomicTicket; //經(jīng)濟票剩余量

??? int leftBusinessTicket; //商務(wù)票剩余量

??? Flight *next;

??? CusLinkList cusLinkList;//乘員名單域,指向乘員名單鏈表的頭指針

??? LinkQueue waitQueue1;//經(jīng)濟艙候補,等候替補的客戶名單域,指向一個隊列

??? LinkQueue waitQueue2;//商務(wù)艙候補,等候替補的客戶名單域,指向一個隊列


} Flight, FlightNode, *PFlight;

航班鏈表采用全局變量:pFlight,指向航班鏈表的頭指針

?pflight1,一個數(shù)組,存有留個基本航班,一個個入pFlight 航班鏈表中。文章來源地址http://www.zghlxwxcb.cn/news/detail-775763.html

/
*入隊,增加排隊等候的客戶名單域
*@paramq帶頭結(jié)點的鏈隊列
*@paramname
*@paramamount
*@return
*/
LinkQueueAppendqueue(LinkQueue&q,charname[],intamount,charidentification[]){
PWaitnew1;
new1=(PWait)malloc(sizeof(WaitQNode));
strcpy(new1->name,name);
strcpy(new1->identification,identification);
new1->preTickets=amount;
new1->next=NULL;

q.rear->next=new1;
q.rear=new1;

returnq;
}
/
*退票功能模塊
*/
voidReturnTicket(){
structFlight*info;
intrank;
//p1為遍歷指針,p2為輔助指針,指向p1的前驅(qū)
CustomerNode*p1,*p2,*head;
//客戶姓名
charcusname[10];
//客戶身份證
charidentification[20];
system("cls");
//info指針,find函數(shù)根據(jù)航班ID返回該航班節(jié)點的指針
intloop;
loop:
{
info=find();
};

if(info==NULL){
printf("沒有這個航班,請重新輸入\n");
gotoloop;
}

//head為該航班的的乘員名單域的頭指針
head=info->cusLinkList;
//帶頭結(jié)點的指針,head->next開始遍歷
p1=head->next;
printf("請輸入你的姓名:");
scanf("%s",cusname);
printf("請輸入你的身份證號碼:");
scanf("%s",identification);
//根據(jù)客戶姓名搜索客戶是否訂票
p2=head;
while(p1!=NULL){
if((strcmp(cusname,p1->name)==0)&&(strcmp(identification,p1->identification)==0))break;
p2=p1;
p1=p1->next;
}

if(p1==NULL){
printf("對不起,你沒有訂過票或姓名和身份證不對應(yīng)\n");
return;
}else{//退票成功
//從乘客名單域中移除該節(jié)點
rank=p1->rank;
p2->next=p1->next;
//加回該航班的剩余票
info->left+=p1->clientTickets;
if(rank==1){
info->leftEconomicTicket+=p1->clientTickets;
}else{
info->leftBusinessTicket+=p1->clientTickets;
}
printf("%s成功退票!\n",p1->name);
free(p1);
}

LinkQueuequeue1=info->waitQueue1;
LinkQueuequeue2=info->waitQueue2;
NameAndNumAndIDnameAndNumAndID={0,0};


if(rank==1){//有經(jīng)濟艙退票,詢問經(jīng)濟艙排隊的客戶
for(;queue1.front->next!=NULL&&queue1.front->next->preTickets<=info->leftEconomicTicket;){
//從候補客戶隊列中,出隊客戶的姓名和訂票量用NameAndNumAndID返回
QueueDelete(info->waitQueue1,nameAndNumAndID);
inty;
printf("有經(jīng)濟艙票剩余,尊敬的%s:\n",nameAndNumAndID.name);
printf("是否確認訂票(1確認訂票,其他數(shù)字拒絕訂票\n");
scanf("%d",&y);
/
*訂票界面
*屬于訂票模塊
*/
voidBookticketFace(){
inta3;
intloop3;
loop3:
{
system("cls");
printf("\n");
printf("\n");
printf("WelcomeTo訂票模塊\n");
printf("-----------------------------------------------\n");
printf("|1.客戶訂票|\n");
printf("|2.根據(jù)起點和終點搜索航班|\n");
printf("|3.查詢所有航班|\n");
printf("|4.通過航班ID查詢訂票客戶名單|\n");
printf("|5.返回上一級菜單|\n");
printf("------------------------------------------------\n");
printf("請輸入您的選擇:");
scanf("%d",&a3);
}
switch(a3){
case1:
//訂票
BookTickets();
system("PAUSE");
BookticketFace();
break;
case2:
//輸入起點和終點查詢
SearchFlight();
system("PAUSE");
BookticketFace();
break;
case3:
PrintFilghtlist(pFlight);
BookticketFace();
break;
case4:
//為了保密,只能查到客戶的姓名和訂票量,查不到身份證
PriCusInfo();
system("PAUSE");
BookticketFace();
break;
case5:
MenuSelect();
break;
default:
gotoloop3;
}
}

到了這里,關(guān)于C語言版數(shù)據(jù)結(jié)構(gòu)-課程設(shè)計-航空客運訂票系統(tǒng) V2.0 附源碼(增加管理員功能)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包