模拟机场订票系统.docx
- 文档编号:8264408
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:16
- 大小:261.85KB
模拟机场订票系统.docx
《模拟机场订票系统.docx》由会员分享,可在线阅读,更多相关《模拟机场订票系统.docx(16页珍藏版)》请在冰豆网上搜索。
模拟机场订票系统
课程设计说明书
课程名称:
数据结构
设计题目:
模拟机场订票系统
学院:
计算机科学与信息工程学院
学生姓名:
11111111
学生学号:
201203040027
专业班级:
12物联网工程
指导教师:
1111111
年月日
课程设计任务书
设计题目
模拟机场订票系统
学生姓名
1
所在院系
计算机科学与信息工程系
专业、年级、班
12物联网工程1班
设计要求:
系统需要实现如下功能:
(1)录入:
可以录入航班信息;
(2)查询:
可以根据航班号或起点和终点查询某个航班的信息;
(3)订票:
可以订票,记录订票信息;
(4)退票:
可退票,退票后修改相关数据文件;
(5)修改航班信息:
当航班信息改变可以修改航班数据文件。
学生应完成的工作:
(1)根据课程设计要求,分析思路并构建模型,划分子模块、完善其功能;
(2)根据各模块的功能设计并编写程序段、连接各程序段使之形成一个有机的整体;
(3)调试、运行程序进而得到正确的结果;
(4)根据实验设计运行过程,写出实验论文并总结实验教训。
参考文献阅读:
[1]张福祥.C语言程序设计[M].辽宁大学出版社,2008.1
[2]张福祥,王萌.C语言程序设计习题解答与实验实训[M]
[3]牛莉,刘远军等.计算机等级考试辅导教程[M].北京:
中国铁道出版社,2008.
[4]黄同成,黄俊民,董建寅编著数据结构.中国电力出版社
[5]黄同成,周红波编著程序设计基础教材(c语言)
工作计划:
(1)第一周的第一天:
小组布置设计题目;说明进度安排。
(2)第一周的第二天:
小组审题,查阅资料,进行设计前的必要资料准备。
(3)第一周的第三天、第四天、第五天:
程序编写、上机调试
(4)第二周的第一天至第三天:
上机调试程序、结果分析。
(5)第二周的第四天:
撰写设计报告。
(6)第二周的第五天:
设计答辩。
任务下达日期:
2014年6月14日
任务完成日期:
2014年6月28日
指导教师(签名):
学生(签名):
模拟机场订票系统
摘要:
机票预定系统是为机场工作人员和客户提供订票退票等与机票相关内容和管理的系统,它具有开放体系结构的、易扩充的、易维护的、具有良好人机界面的优点.它除克服了存储乘客信息少,查询效率低下等问题外,更重要的是其安全性,可靠性,实现航空公司的机票销售的自动化。
它为企业的决策层提供准确、精细、迅速的机票销售信息,为乘客出行提供方便,便于机场工作人员对机票信息进行管理,提高了机场工作人员对机票管理的工作效率。
关键词:
线性表遍历时间复杂度订票系统
目录
1设计背景…………………………………………………………5
1.1需求分析……………………………………………………5
1.2系统优点……………………………………………………5
2设计方案…………………………………………………………5
2.1总体设计流程………………………………………………5
2.2主要功能模块………………………………………………5
3.方案实施………………………………………………………5
3.1详细设计……………………………………………………6
3.2程序设计……………………………………………………8
4.结果与结论……………………………………………………12
4.1编译运行结果………………………………………………12
4.2课程设计总结………………………………………………14
5.收获与致谢………………………………………………………14
6.参考文献…………………………………………………………15
7.附件………………………………………………………………15
1.设计背景
1.1需求分析
随着社会发展的不断进步,民航事业的壮大,人们消费水平的提高,乘坐民航的消费者也越来越多,旅游也逐渐成为普通老百姓的生活组成部分,飞机票预定查询系统在各机票预定网点中的作用也越显重要。
目前,我国一些旅行社和酒店的机票预定还停留在人工处理阶段,这已经严重制约了工作效率,在计算机技术高速发展的今天,有必要引入高效的计算机系统,来协助处理机票预定工作。
因此,开发一套具有完整的存储,查询,核对,打印机票功能的实时机票预定系统势在必行。
1.2系统优点
机票预定系统是为机场工作人员和客户提供订票退票等与机票相关内容和管理的系统,它具有开放体系结构的、易扩充的、易维护的、具有良好人机界面的优点.它除克服了存储乘客信息少,查询效率低下等问题外,更重要的是其安全性,可靠性,实现航空公司的机票销售的自动化。
它为企业的决策层提供准确、精细、迅速的机票销售信息,为乘客出行提供方便,便于机场工作人员对机票信息进行管理,提高了机场工作人员对机票管理的工作效率。
2.设计方案
2.1总体设计
通过此系统可以实现如下功能:
1).录入:
可以录入航班情况(数据存储在一个数据文件中)
2).查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
3).订票:
(订票情况存在一个数据文件中)
可以订票,如果该航班已经无票,可以提供相关可选择航班;
4).退票:
可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5).修改航班信息:
当航班信息改变可以修改航班数据文件。
2.2模块设计
订票退票模块的算法设计说明如下:
(1)订票模块:
查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功;否则查找这个月此乘客起飞城市和降落城市的有空位航班,供乘客选择,若有则订票,若无则订票不成功并把此乘客的信息录入此航班等候订票队列中,退出订票。
(2)退票模块:
输入要退票的乘客姓名以及所退票的编号,查找乘客资料的链表中是否有这位乘客,有则删去此结点,并判断是否有等候订票的乘客(有则通知等候订票乘客订票,无则余票加乘客所退票数);无则退票失败。
3.方案实施
3.1详细设计
3.2程序设计
intDinpiao(lineairH)/*订票*/
{
intm,k=0,x,v=0,c=1,d;
lineinfo*p,*t;
Lnode*q;
chara,*b;
qnode*s;
charyear[5];
charmonth[3];
charday[3];/*飞行日期*/
charair_num[7];/*航班号*/
p=H->next;
t=H->next;
printf("请输入所定的航班号,票的年、月、日:
\n");
scanf("%s",air_num);
scanf("%s",year);
scanf("%s",month);
scanf("%s",day);
while(p)
{
if(!
(strcmp(air_num,p->air_num))&&!
(strcmp(year,p->year))&&!
(strcmp(month,p->month))&&!
(strcmp(day,p->day)))
{
c=0;
if(p->tkt_sur)
{
printf("此航班还有%d张票可订,请输入您要订票的张数:
",p->tkt_sur);
scanf("%d",&m);
if(m<=p->tkt_sur)
{
printf("您已成功订到%d张票!
\n请输入您的姓名:
",m);
if(!
(q=(linklist)malloc(sizeof(Lnode))))
{
printf("分配空间出错");
a=getchar();
return0;
}
scanf("%s",q->name);
printf("请输入您的身份证号码:
");
scanf("%s",q->IDnum);
q->dpl=m;
if(!
(b=(char*)malloc(sizeof(char))))
{
printf("分配空间出错");
a=getchar();
return0;
}
strcpy(q->airnum,p->air_num);
itoa(p->tkt_sur,b,10);
strcpy(q->piaohaio,p->air_num);
strcat(q->piaohaio,p->year);
strcat(q->piaohaio,p->month);
strcat(q->piaohaio,p->day);
strcat(q->piaohaio,b);
printf("您所订票的编号:
%s",q->piaohaio);
p->tkt_sur-=m;
q->next=p->order->next;
p->order->next=q;
return1;
}
else
{
printf("对不起余票量不够,请选择其他航班!
");
k=1;
}
}
if(!
p->tkt_sur||k==1)
{
printf("航班已经满仓,您可以选择以下相关航班:
\n");
while(t)
{
if(!
(strcmp(t->year,p->year))&&!
(strcmp(t->month,p->month))&&!
(strcmp(p->qdname,t->qdname))&&!
(strcmp(p->zhname,t->zhname))&&p->tkt_sur)
{
printf("航班号机型飞行日期起降时间票价折扣余票量\n%s%s%s/%s/%s%s:
%s%s:
%s%5.1f%3.1f%d\n",t->air_num,t->plane_num,t->year,t->month,t->day,t->qhour,t->qminute,t->jhour,t->jminute,t->price,t->zhekou,t->tkt_sur);
}
t=t->next;
}
printf("有没有您可以乘坐的航班\t0没有\t非0整数有\t请选择:
");
scanf("%d",&x);
if(!
x)
{
printf("请输入您的姓名、联系方式\n");
if(!
(s=(qptr)malloc(sizeof(qnode))))
{
printf("分配空间出错!
");
a=getchar();
return0;
}
scanf("%s",s->name);
scanf("%s",s->phone);
s->next=NULL;
if(p->wait->front==NULL&&p->wait->rear==NULL)/*等候订票队列为空*/
p->wait->rear=p->wait->front=s;
else
{
s->next=p->wait->rear->next;
p->wait->rear->next=s;
p->wait->rear=s;
}
printf("如果有人退票,我们会在第一时间联系您!
\n");
return0;
}
else
returnDinpiao(H);
}
}
p=p->next;
}
if(c)
{
printf("没有您所指定的航班,0菜单栏非0数字重新输入航班号,票的年、月、日\n");
scanf("%d",&d);
if(d)
returnDinpiao(H);
else
return0;
}
return1;
}
intTuipiao(lineairH)//退票
{
lineinfo*p;
intm=0,t;
Lnode*q,*f;
charb[20];
scanf("%s",b);
p=H->next;
while(p)
{
q=p->order->next;
if(!
(strcmp(b,q->piaohaio)))
{
m=1;
p->order->next=q->next;
t=q->dpl;
free(q);
break;
}
while(q->next)
{
if(!
(strcmp(b,q->next->piaohaio)))
{
m=1;
f=q->next;
t=f->dpl;
q->next=f->next;
free(f);
break;
}
q=q->next;
}
if(m)
break;
p=p->next;
}
if(!
m)
{
printf("对不起没有搜索到您的订单,请重新输入订单编号!
");
Tuipiao(H);
}
else
{
printf("您已成功退票!
\n");
p->tkt_sur+=t;
if(p->wait->rear==p->wait->front)
return1;
else
{//机场订票系统服务人员马上通知本次航班等候订票乘客
printf("通知等候订票的乘客,通知成功后按任意键\n");
getchar();
returnDinpiao(H);
}
}
}
4.结果与结论
4.1编译运行结
图4.1订票系统的运行结果
图4.2退票系统的运行结果
图4.3.航班信息
4.2课程设计总结
在这次课程设计中,我学习到了,不管做什么事情还是团队协作,才可以使一件事情办得最后,一个人的力量永远是有限的,不管一个人的能力有多大,总会有一些地方的不足,尤其是我们编程这一行,最主要的还是要团队合作。
其次就是写程序时要用到注释,因为一个程序是由几个人写出来的,假如不写注释的话,就相互都看不懂,也不能实现程序的结合,所以说写程序时注释很重要。
另外,还遇到一些专业课程方面的问题,比如对C语言函数库还不是太熟,还有一些系统的头文件也不太了解,还有一些数据结构方面的知识等,以后需加强努力学习,以弥补不足。
5.收获与致谢
此次课程设计我们组选了订票系统这个选题。
为了实现某个功能,必须使用相应的结构体,我们首先在网上搜索了几套别人所做订票系统的课程设计,看了一下他们所定义的结构体和我们课程设计选题所要实现的功能,觉得他们的结构体相对于我们的选题来说还是有一定的缺陷。
我们的选题主要运用线性结构来存储数据,进行线性表、队列的一些基本操作。
根据选题要实现的功能和链式存储结构的优点,我们最终决定队列和线性表都采用链式存储结构存储,并定义相应的结构体。
在敲源代码时,发现航班结构体中的已定票乘客信息和等待订票乘客信息的结构不太好操作,经过一番思考最终改为源代码中所定义的结构体。
从中知道了结构体的定义决定了源程序的难易。
在打程序时,没有把文件操作的代码打进源程序。
在调试没有文件操作的代码时,没有很多错误,但是犯了一个大错,就是在有一个字符串的复制中使用了赋值,调试过程指出错错误半天都不知道改,后来看了整个程序才反应过来。
在运行调试过程中浏览信息没有输出想要的输出结果,检查程序原来是格式控制字符串中的一个字符打成了大写;查询信息只能查询链表中的第一条航线,检查程序原来是多用了break造成过早跳出循环,不能查找后面的航线;乘客订多张票后浏览信息发现余票只减了一张,检查程序发现乘客订票后只对余票做了自减,在运行调试过程中就出现了这么些大的错误,在这过程中还对输出窗口界面做了一些调整。
加入文件操作代码后进行调试,没有出现什么错误。
最终运行时老在文件操作时终止程序,经过调试和自己的摸索原来是文件检测函数运用错误,改正后程序正常运行。
运行程序后打开所写的文件,发现航班信息的余票量没有随乘客的订票而减少,还是初始值,这时才发现每进行一次订票后都要重新对航班信息的文件重新写入,改后最终就确定了上交源代码。
在敲代码和在程序的调试、运行过程中我们发现我们半天才能想出几句语句,整个代码敲了二十几个小时,调试调了二三十个小时,主要原因使我们练得还不够,C语言功底还不是很扎实,要增加敲的代码量。
数据结构是为了解决实际问题,提出了一些结构,这些东西是我们以后解决一些问题时所要用到的,所以一定要熟练掌握,要多敲代码。
此次课程设计,使我们对链表和链队列的基本操作更加熟练,让我们深深地体会到要学好数据结构需要多练。
6.参考文献
[1]张福祥.C语言程序设计[M].辽宁大学出版社,2008.1
[2]张福祥,王萌.C语言程序设计习题解答与实验实训[M].沈阳:
辽宁大学出版社,2008.
[3]牛莉,刘远军等.计算机等级考试辅导教程[M].北京:
中国铁道出版社,2008.
[4]黄同成,黄俊民,董建寅编著数据结构.中国电力出版社
[5]黄同成,周红波编著程序设计基础教材(c语言)
7.附件
附源程序清单电子档一份:
指导教师评语:
1、课程设计报告:
a、内容:
不完整□完整□详细□
b、方案设计:
较差□合理□非常合理□
c、实现:
未实现□部分实现□全部实现□
d、文档格式:
不规范□基本规范□规范□
2、出勤:
全勤□缺勤次
3、答辩:
a、未能完全理解题目,答辩情况较差□
b、部分理解题目,部分问题回答正确□
c、理解题目较清楚,问题回答基本正确□
d、理解题目透彻,问题回答流利□
课程设计报告成绩:
,占总成绩比例:
50%
课程设计其它环节成绩:
环节名称:
出勤,成绩:
,占总成绩比例:
20%
环节名称:
答辩,成绩:
,占总成绩比例:
30%
总成绩:
指导教师签字:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模拟 机场 订票 系统