C语言数据结构航空售票系统设计报告.docx
《C语言数据结构航空售票系统设计报告.docx》由会员分享,可在线阅读,更多相关《C语言数据结构航空售票系统设计报告.docx(18页珍藏版)》请在冰豆网上搜索。
C语言数据结构航空售票系统设计报告
数据结构课程设计报告
题目:
航班订票系统
****************
学号:
2
班级:
1521807
*********************
2016年12月23
第1章功能需求描述3
1.1题目要求3
1.2功能列表与说明3
第2章设计描述4
2.1任务分解说明4
2.2数据结构设计说明4
第4章开发过程描述15
4.1编译过程错误分析15
4.2调试错误分析15
4.3运行结果及说明15
第5章设计心得体会17
第1章功能需求描述
1.1题目要求
任务:
通过此系统可以实现如下功能:
1)、录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
2)、查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
3)、订票:
(订票情况可以存在一个数据文件中,结构自己设定)
可以订票,如果该航班已经无票,可以提供相关可选择航班;
4)、退票:
可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5)、修改航班信息:
当航班信息改变可以修改航班数据文件
要求:
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;
界面要求:
有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:
学生自己根据系统功能要求自己设计。
请在最后的上交资料中指明你用到的存储结构;
测试数据:
要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;
1.2功能列表与说明
系统共设有7个功能并以菜单方式工作,上图为功能列表图。
功能分别包括以下7个方面:
(1)航班录入:
每条航线所涉及的信息有:
航班号、起飞时间、降落时间、抵达城市、航班票价、票价折扣、航班满仓人数、剩余票数、飞行日期。
(2)航线查询:
把每条航班的信息详细输出。
(3)修改航班信息:
先输入需要修改的航班号,然后把这个航班的信息输出确认后,再重新输入航班号、起飞时间、降落时间、抵达城市、航班票价、票价折扣、航班满仓人数、剩余票数、飞行日期进行修改。
(4)订票业务:
根据客户提出的要求(航班号、抵达城市、飞行日期)查询该航班情况,若有余票,则为客户班里订票手续,并让客户输入姓名、身份证号码、手机号码、选择的舱位等级信息进行储存;若已满或者余票少于订票额,则需要重新询问客户要求。
(5)退票业务:
根据客户提供的情况(航班号、姓名),查询是否有相关的订票信息,如有则输出客户的订票信息,客户确认无误后方可退票成功。
(6)查看客户信息:
把每个客户信息和相关订票信息输出。
(7)退出系统:
退出程序。
第2章设计描述
2.1任务分解说明
(1)分析系统中两个链表的设计,用来记录航班信息和客户信息。
(2)根据问题描述,设计链表;
(3)完成系统中各个信息的定义;
(4)完成系统的应用模块;
(5)功能调试;
(6)完成系统设计报告。
2.2数据结构设计说明
(1)头文件
#include
#include
#include
(2)定义“客户”链表
typedefstructcustomer//客户信息
{
charname[20],id[20],tel[11];//客户姓名、身份证号码、手机号码
intlevel;//舱位等级
customer*next;
}customer,*Lcustomer;
(3)定义“航班”链表
typedefstructairline//航线信息
{
charairlineNo[20],takeOffTime[20],landTime[20],landCity[20];//航班号、起飞时间、降落时间、抵达城市
floatprice,discount;//航班票价,票价折扣
inttotal,left,day;//航班满仓人数、剩余票数、飞行日期
Lcustomerbooked;//已定客户信息
airline*next;
}airline,*Lairline;
(4)主程序
voidmain()
{
LairlineL;//定义一个航班类型的对象
InitList(L);//创建航班类型的头结点
menu(L);//调用菜单函数
}
(5)航班录入函数
voidaddAirline(Lairline&L)//录入航班
{
system("cls");
intflag=1,t;
charno[20];
Lairlinep,q;
for(;flag;)
{
printf("请输入航班号:
\n");
scanf("%s",no);
for(p=L;p->next;p=p->next)
if(p->next&&strcmp(p->next->airlineNo,no)==0)
{
printf("航班已存在,是否重新输入?
是
(1)返回主页面(0)\n");
scanf("%d",&t);
if(t==1)
addAirline(L);
else
menu(L);
}
p=L;
q=(Lairline)malloc(sizeof(airline));
if(!
q)
{
printf("申请内存失败!
");
system("pause");
exit(0);
}
printf("该航班不存在,允许录入。
\n请输入航班号、起飞时间、降落时间、抵达城市、航班票价、票价折扣、航班满仓人数、剩余票数、飞行日期:
\n");
scanf("%s%s%s%s%f%f%d%d%d",&q->airlineNo,&q->takeOffTime,&q->landTime,&q->landCity,&q->price,&q->discount,&q->total,&q->left,&q->day);
q->booked=NULL;
q->next=p->next;
p->next=q;
printf("录入航班成功,是否继续录入?
继续
(1)返回主页面(0)\n");
scanf("%d",&flag);
}
menu(L);
}
(6)航班查询函数
voidinquery(Lairline&L)//查询航班信息
{
system("cls");
Lairlinep=L->next;
printf("航班号起飞时间降落时间抵达城市航班票价票价折扣航班满仓人数剩余票数飞行日期\n");
while(p!
=NULL)
{
printf("%s%s%s%s%.2f%.2f%d%d%d\n",p->airlineNo,p->takeOffTime,p->landTime,p->landCity,p->price,p->discount,p->total,p->left,p->day);
p=p->next;
}
printf("请按任意键返回主菜单。
\n");
system("pause");
menu(L);
}
(7)修改航班信息函数
voidmodify(Lairline&L)//修改航班信息
{
system("cls");
charno[20];
intt;
Lairlinep=L->next;
boolflag=false;
for(;p;p=p->next)
{
printf("请输入您要修改的航班号:
");
scanf("%s",no);
if(p&&strcmp(p->airlineNo,no)==0)
{
printf("已查找到航班“%s”,航班信息如下:
\n",no);
printf("航班号起飞时间降落时间抵达城市航班票价票价折扣航班满仓人数剩余票数飞行日期\n");
printf("%s%s%s%s%.2f%.2f%d%d%d\n",p->airlineNo,p->takeOffTime,p->landTime,p->landCity,p->price,p->discount,p->total,p->left,p->day);
printf("请输入航班号、起飞时间、降落时间、抵达城市、航班票价、票价折扣、航班满仓人数、剩余票数、飞行日期:
\n");
scanf("%s%s%s%s%f%f%d%d%d",&p->airlineNo,&p->takeOffTime,&p->landTime,&p->landCity,&p->price,&p->discount,&p->total,&p->left,&p->day);
printf("修改成功!
以下为更新后的数据:
\n航班号起飞时间降落时间抵达城市航班票价票价折扣航班满仓人数剩余票数飞行日期\n");
printf("%s%s%s%s%.2f%.2f%d%d%d\n",p->airlineNo,p->takeOffTime,p->landTime,p->landCity,p->price,p->discount,p->total,p->left,p->day);
break;
}
if(p&&strcmp(p->airlineNo,no)!
=0)
{
printf("航班不存在,是否重新输入?
是
(1)返回主页面(0)\n");
scanf("%d",&t);
if(t==1)
modify(L);
else
menu(L);
}
if(!
p)
{
printf("航班链表为空!
");
}
}
printf("请按任意键返回主菜单。
\n");
system("pause");
menu(L);
}
(8)订票函数
voidbooking(Lairline&L)//订票
{
system("cls");
inti,t;
intflag=0;
Lairlinep;
Lcustomerc;
for(;!
flag;)
{
printf("请输入查询航班的方式:
\n");
printf("航班号
(1),抵达城市
(2),飞行日期(3)\n");
scanf("%d",&i);
switch(i)
{
case1:
p=search_airlineNo(L);flag=1;break;
case2:
p=search_landCity(L);flag=1;break;
case3:
p=search_day(L);flag=1;b