航空客运订票系统的设计与实现.docx
- 文档编号:24033732
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:18
- 大小:21.33KB
航空客运订票系统的设计与实现.docx
《航空客运订票系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《航空客运订票系统的设计与实现.docx(18页珍藏版)》请在冰豆网上搜索。
航空客运订票系统的设计与实现
课程设计说明书
课程名称
题目航空客运订票体系的设计与实现
院系_电子信息工程学院____
班级__盘算机科学与技巧__
学生姓名______________
指点教师_____________
日期___
数据构造课程设计义务书
课程设计标题
航空客运订票体系的设计与实现
姓名
学号
专业班级
盘算机科学与技巧
组别
组长
同构成员
指点教师
课程设计目标
设计一个航班订票体系,进步对信息治理.信息查找和排序算法的应用才能.
课程设计情形
386以上的微机长进行,运行情形为TurboC
课程设计义务和请求
1.承办订票营业:
依据客户提出的请求(飞机抵达城市.起降时光.订票数目)查新该航班信息(包含票价.扣头和残剩地位),若知足请求,则为客户筹划订票手续,输出座位号.
2.承办退票营业:
依据客户供给的情形(航班号.订票数目),为客户筹划退票手续.
3.查询功效:
a)查询航路信息:
依据飞机下降地点,输入下列信息:
航班号.飞机号.起降时光.航班票价.票价扣头和残剩地位.
b)查询客户预订信息:
依据客户证件号,输出下列信息:
航班号.飞机号和座位号.
参考
文献
1.杨秀金等.数据构造(C说话版).西安电子科技大学出版社2004
2.谭浩强.C说话程序设计.清华大学出版社.2002
3.李春保.数据构造教程上机试验指点.清华大学出版社.2005
时间进度安排
序号
起止日期
工作内容
1
下达课程设计义务.查阅材料.肯定计划
2
编写程序.调试.运行
3
验收.撰写课程设计陈述
4
验收.撰写课程设计陈述.提交文档
航空客运订票体系的设计与实现
一.简介
1.设计目标:
1.数据构造课程设计是分解应用数据构造课程中学到的几种典范数据构造,以及程序设计说话(C说话),自行实现一个较为完全的应用体系的设计与开辟
2.经由过程课程设计,本身经由过程体系剖析.体系设计.编程调试,写试验陈述等环节,进一步控制应用体系设计的办法和步调,灵巧应用并深入懂得典范数据构造在软件开辟中的应用.
3.学会将常识应用于现实的办法,进步剖析息争决问题的才能,增长分解才能.
航空空订票体系:
(1)闇练控制链表存储构造及其树立进程和经常应用操纵;
(2)闇练控制队列的树立进程和经常应用操纵;
(3)学会本身调试程序的办法并控制必定的技能.
2.问题的描写:
航空客运订票的营业包含查询航路和客票预定的信.客票预定和筹划退票等,设计一个程序以使上述义务借助盘算机完成.
二.数据构造的设计:
(1)航班信息:
飞机抵达城市.航班号.飞机号.起降时光.航班票价.票价扣头.总地位和残剩地位.以訂票的客户名单.
(2)客户信息:
客户姓名.证件号.座位号.
三.功效(函数)设计:
1.每条航路所涉及的信息有:
终点站名.航班号.飞机号.飞翔日(礼拜几).载客量.余票量.票价钱,扣头,已订票的客户名单(包含姓名.订票量.舱位等级1,2或3)以及等候替补的客户名单(包含姓名.所需票量);
2.全体数据可以只放在内存中;
3.体系能实现的操纵和功效如下:
a)查询航路:
依据搭客提出的终点站名输出下列信息:
航班号.飞机号.礼拜几飞翔,比来一天航班的日期和余票额;
b)承办订票营业:
依据客户提出的请求(航班号.订票数额)查询该航班票额情形,若另有余票,则为客户筹划订票手续,
输出座位号;若已满员或余票额少于定票额,则需从新讯问客户请求.若须要,可登记列队候补;
c)退票营业:
依据客户供给的情形(日期.航班),为客户筹划退票手续,然后查询该航班是否有人列队候补,起首讯问排在第一的客户,若所退票额能知足他的请求,则为他筹划订票手续,不然依次讯问其他列队候补的客户.
体系构造图(功效模块图)
功效模块解释
(1)显示已初始化的全体航路信息
(2)阅读已订票客户信息
(3)依据客户提出的终点站名,挪用find()函数查找航路信息,挪用list()函数输出航路信息
(4)筹划订票营业:
依据客户供给的航班号进行查询航路信息,若客户订票额超出乘员定票总额,退出,若客户订票额末超出余票量,订票成功并登记信息,在订票乘员名单域中添加客户信息;假如临时没有票,讯问客户是否要列队等侯,假如是,则在等候队列增长该客户的订票信息.
(5)筹划退票营业:
挪用查询函数,依据客户供给的航路进行搜刮依据客户供给的姓名到订票客户名单域进行查询.退票成功后,从新将航路名单域指向订票单链表的头指针.依据队列中从出的客户信息断定是否知足请求,假如知足,则将该客户的信息拔出到乘客信息链表中.
(6)退出本体系
四.界面设计:
界面简练易懂,包含1.阅读航路信息;2.阅读已订票客户信息;3.查询航路;4.筹划订票营业;5.筹划退票营业;6.检讨残剩票数并排序.
五.程序设计:
六.运行与测试:
1.测试的数据及其成果:
(1)经由过程按键“1”阅读航路信息,成果输出五行事先输入的数据.
(2)经由过程按键“3”查询航路,输入终点站名后,成果输出相干航路信息.
(3)经由过程按键“4”筹划订票营业,依次输入航班号,订票数目,客户姓名,证件号后,成果输出客户的座位号,订票成功.
(4)经由过程按键“2”阅读已定票客户信息,输入航班号后,成果显示客户信息.
(5)经由过程按键“5”筹划退票营业,输入航班号,客户名后,成果退票成功.
(6)经由过程按键“6”检讨残剩票数并排序,成果精确.
(7)经由过程按键“0”退出体系,成果精确.
2.运行与测试时代碰到的问题及其解决办法.
(1)因本身才能有限,在编写的时刻只应用了相对较为简略的基本说话,代替了相对较为庞杂的说话,下降了运行效力.
(2)程序在起先设计的时刻,经常消失溢出错误,并且不只一处.为了修改这些溢出错误,消耗了大量的时光,修改解释之后再看源程序,才发明本来只是因为开端的函数界说的数据类型消失了问题,对函数的界说不清楚,字符的不精确界说造成了后期大量的纠错工作,
(3)因为忘却了一些c说话的规范使得在调试进程中一些错误没有发明.例如,挪用函数时,数组只须要传递数组名即可;字符‘0’和整形的0是不合的文明不成以直接对其画等号.
(4)测试用例具有必定的普遍性.运行程序时输入了多种不合字符信息,经由多次修改成果达到了预期后果.解释程序具有必定的靠得住性和稳固性.
七.设计后的思虑:
经由此次课程设计,我对换试控制的加倍闇练了,转变了曩昔只调试不知道若何对比程序说话修改程序的坏习惯,对换试也有了新的熟悉,意识到了程序说话的规范性以及我们在编程时要有严谨的立场,同时在写程序时假如加必定量的注释,既增长了程序的可读性,也可以使本身在读程序时更轻易.
代码:
#include
#include
#include
#include
#defineMAXSIZE5
typedefstructwat_ros
{charname[10];
intreq_amt;
structwat_ros*next;
}qnode,*qptr;
typedefstructpqueue
{qptrfront;
qptrrear;
}linkqueue;
typedefstructord_ros
{charname[10];
intord_amt;
intgrade;
structord_ros*next;
}linklist;
structairline
{charter_name[10];
charair_num[10];
charplane_num[10];
chardate[7];
inttkt_amt;
inttkt_sur;
inttkt_pri;
inttkt_reb;
linklist*order;
linkqueuewait;
}lineinfo;
structairline*start;
structairlineair[MAXSIZE]={{"北京","1","A1401","礼拜日",3,1,800,9},
{"上海","2","H1102","礼拜一",2,5,600,6},
{"洛阳","3","L1003","礼拜五",1,3,100,4},
{"杭州","4","H1035","礼拜三",5,4,700,5},
{"呼和浩特","5","F1100","礼拜六",6,3,800,5}};
voiddisplay(structairline*info)
{printf("%8s\t%3s\t%s\t%7s\t%7d\t%10d\t%5d\t%3d\n",info->ter_name,info->air_num,info->plane_num,info->date,info->tkt_amt,info->tkt_sur,info->tkt_pri,info->tkt_reb);
}
voidlist()
{structairline*info;
inti=0;
info=start;
printf("终点站\t\t航班号\t飞机号\t飞翔日期\t载客量\t余票量\t票价钱\t扣头\n");
while(i { display(info); info++; i++; } printf("\n\n"); } voidsearch() {structairline*info,*find(); charname[10]; inti=0; info=start; printf("请输入终点站名: "); scanf("%s",name); while(i { if(! strcmp(name,info->ter_name))break; info++; i++; } if(i>=MAXSIZE) printf("对不起,该航路未找到! \n"); else { printf("终点站\t\t航班号\t飞机号\t飞翔日期\t载客量\t余票量\t票价钱\t扣头\n"); display(info); } } structairline*find() {structairline*info; charnumber[10]; inti=0; info=start; printf("请输入航班号: "); scanf("%s",number); while(i { if(! strcmp(number,info->air_num))returninfo; info++; i++; } printf("对不起,该航路末找到! \n"); returnNULL; } voidprtlink() {linklist*p; structairline*info; info=find(); p=info->order; if(p! =NULL){ printf("客户姓名订票数额客户证件号\n"); while(p){ printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade); p=p->next; } } else printf("该航路没有客户信息! ! \n"); } linklist*insertlink(linklist*head,intamount,charname[],intgrade) {linklist*p1,*new1; p1=head; new1=(linklist*)malloc(sizeof(linklist)); if(! new1){printf("\nOutofmemory! ! \n");returnNULL;} strcpy(new1->name,name); new1->ord_amt=amount; new1->grade=grade; new1->next=NULL; if(head==NULL) {head=new1;new1->next=NULL;} else head=new1; new1->next=p1; returnhead; } linkqueueappendqueue(linkqueueq,charname[],intamount) {qptrnew1; new1=(qptr)malloc(sizeof(qnode)); strcpy(new1->name,name); new1->req_amt=amount; new1->next=NULL; if(q.front==NULL) q.front=new1; else q.rear->next=new1; q.rear=new1; returnq; } voidorder() {structairline*info; intamount,grade; charname[10]; info=start; if(! (info=find()))return; printf("请输入你订票所须要的数目: "); scanf("%d",&amount); if(amount>info->tkt_amt) {printf("\n对不起,您输入的票的数目已经超出乘员定额! "); return; } if(amount<=info->tkt_sur) { inti; printf("请输入您的姓名(订票客户): "); scanf("%s",name); printf("请输入%s票的证件号: ",name); scanf("%d",&grade); info->order=insertlink(info->order,amount,name,grade); for(i=0;i printf("%s的座位号是: %d\n",name,info->tkt_amt-info->tkt_sur+i+1); info->tkt_sur-=amount; printf("\n祝您乘坐高兴! \n"); } else {charr; printf("\n已经没有更多的票,您须要列队等候吗? (Y/N)"); r=getch(); printf("%c",r); if(r=='Y'||r=='y') {printf("\n请输入您的姓名(列队订票客户): "); scanf("%s",name); info->wait=appendqueue(info->wait,name,amount); printf("\n注册成功! \n"); } elseprintf("\n迎接您下次再次订购! \n"); } } voidreturn_tkt() {structairline*info; qnode*t,*back,*f,*r; intgrade; linklist*p1,*p2,*head; charcusname[10]; if(! (info=find()))return; head=info->order; p1=head; printf("请输入你的姓名(退票客户): "); scanf("%s",cusname); while(p1! =NULL){ if(! strcmp(cusname,p1->name))break; p2=p1;p1=p1->next; } if(p1==NULL){printf("对不起,你没有订过票! \n");return;} else { if(p1==head)head=p1->next; elsep2->next=p1->next; info->tkt_sur+=p1->ord_amt; grade=p1->grade; printf("%s成功退票! \n",p1->name); free(p1); } info->order=head; f=(info->wait).front; r=(info->wait).rear; t=f; while(t) { if(info->tkt_sur=info->wait.front->req_amt) { inti; info->wait.front=t->next; printf("%s订票成功! \n",t->name); for(i=0;i printf("%s的座位号是: %d\n",t->name,(info->tkt_sur)-i); info->tkt_sur-=t->req_amt; info->order=insertlink(info->order,t->req_amt,t->name,grade); free(t); break; } back=t;t=t->next; if((info->tkt_sur)>=(t->req_amt)&&t! =NULL) {inti; back->next=t->next; printf("%s订票成功! \n",t->name); for(i=0;i printf("<%s>'sseatnumberis: %d\n",t->name,(info->tkt_sur)-i); info->tkt_sur-=t->req_amt; info->order=insertlink(info->order,t->req_amt,t->name,grade); free(t);break; } if(f==r)break; } } voidsort_tkt() { intj; structairlinet,*info,*p,*q; p=info=air; for(p=info;(p+1)->tkt_sur;p++) for(q=p+1;q->tkt_sur;q++) { if(p->tkt_sur { t=*p; *p=*q; *q=t; } } printf("终点站\t\t航班号\t飞机号\t飞翔日期\t载客量\t余票量\t票价钱\t扣头\n"); for(j=0;j { display(info); info++; } } intmenu_select() {intc; chars[20]; printf("\n*航空客运订票体系*\n"); printf("**************************************************************\n"); printf("1.阅读航路信息2.阅读已订票客户信息\n"); printf("3.查询航路4.筹划订票营业\n"); printf("5.筹划退票营业6.检讨残剩票数并排序\n"); printf("0.退出体系\n"); printf("********************************************************************************\n"); do{ printf("请选择: "); scanf("%s",s); c=atoi(s); }while(c<0||c>7); returnc; } voidmain() { start=air; for(;;) { switch(menu_select()) { case1: list();break; case2: prtlink();break; case3: search();break; case4: order();break; case5: return_tkt();break; case6: sort_tkt();break; case0: printf("\n迎接您的应用,再会! \n");exit(0); } printf("\nPressanykeytocontinue! \n"); getch(); } } 课程设计标题 航空客运订票体系的设计与实现 姓名 学号 专业班级 计科 指点教师考语: 指点教师签名: 2012年1月6日 成绩评定 项目 分值 评分要素 成绩 1设计进程中出勤.进修立场等方面 20 上机出勤及正直的进修立场.卖力耐劳程度等 2软件设计质量 40 采取的算法.设计计划,设计成果,界面友爱等方面进行分解评定 3答辩 20 能简明简要地阐述设计的重要内容,能精确流畅地答复各类问题 4设计陈述书写 10 层次清楚,表述清楚.措词得当 5现实着手才能 10 软件编程及调试才能等 总成绩 电子信息工程学院数据构造课程设计指点教师评分表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 客运 订票 系统 设计 实现