航空售票系统c语言学位论文.docx
- 文档编号:4101919
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:37
- 大小:126.63KB
航空售票系统c语言学位论文.docx
《航空售票系统c语言学位论文.docx》由会员分享,可在线阅读,更多相关《航空售票系统c语言学位论文.docx(37页珍藏版)》请在冰豆网上搜索。
航空售票系统c语言学位论文
提供全套毕业设计,欢迎咨询
《C语言程序设计》
课
程
设
计
报
告
-----航空售票系统
目录
第1章功能需求描述2
1.1需求分析2
1.2功能列表与说明3
1.3操作界面及操作说明4
第2章设计描述7
2.1任务分解说明7
2.2数据结构设计说明7
2.3函数接口即函数调用关系9
第3章算法描述10
3.2按航班号查询函数11
3.3按飞机号查询函数12
3.4按飞行日期查询函数13
3.5按航班终点查询函数14
3.7显示航班客户信息函数17
3.8管理员操作函数19
3.9订票系统函数20
3.10排队订票系统函数22
3.11退票系统函数23
3.12航班查询函数25
第4章开发过程描述27
4.1源代码27
4.2编译过程错误分析41
4.3调试错误分析42
4.4运行结果及说明42
第5章设计心得体会46
第1章功能需求描述
1.1需求分析
随着科技的发展和人们生活水平的日益提高,人们在不断追求更加快捷的交通方式以满足人们快节奏的生活方式,航空系统在交通系统中已扮演着一个越来越重要的角色。
然而,交通的快捷离不开信息的快捷。
随着计算机的发展和普及,人们的生活方式发生了巨大的改变,计算机在代替和延伸脑力劳动方面发挥着越来越重要的作用。
在交通系统中,有大量的数据需要被处理,而这些工作有人来完成几乎是不可能的,而交给计算机处理,就可以很好地满足我们的需求。
航空售票管理系统可以根据乘客和管理人员的要求,进行方便快速的查询、购票、退票和管理等工作。
1.2功能列表与说明
**********************欢迎进入航空售票系统**********************
显示所有航线==>1
查询航线信息==>2
订票业务==>3
退票业务==>4
管理系统==>5
退出系统==>0
****************************************************************
清除屏幕信息==>9
请按上面指引操作:
系统共设有5个功能并以菜单方式工作,上图为功能列表图。
功能分别包括以下5个方面:
(1)每条航线所涉及的信息有:
终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);
(2)查询航线:
根据旅客提出的终点站名输出下列信息:
航班号、飞机号、星期几飞行、最近一天航班的日期和余票额;
(3)订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户班里订票手续,输出作为好;若已满或者余票少于订票额,则需要重新询问客户要求。
若需要,可等级排队侯补;
(4)退票业务:
根据客户提供的情况(航班),为客户办理退票手续,然后查询该航班是否有人排队侯补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队侯补的客户。
(5)管理员系统:
通过密码认证后可查看所有航班的订票情况,可根据需要增加新的航线。
1.3操作界面及操作说明
(1)显示所有航线
终点站航班号飞机号飞行日期余票量
北京00125869341120
上海00226821542120
广州00345589343120
天津00436678944120
系统面向用户显示所有航线信息,为用户提供各个航班的信息,供用户参考。
(2)查询航线信息
请输入查询航班的方式:
航班号--->1
终点站--->2
飞行日期->3
用户根据需要可选择三种查询方式,输入“1”,按航班号查询,系统提示输入要查询的航班号;输入“2”,按终点站查询,系统提示输入要查询的终点站名;输入“3”,按飞行日期查询,系统提示输入要查询的飞行日期。
(3)订票业务
请输入查询航班的方式:
航班号--->1
终点站--->2
飞行日期->3
3
请输入飞行日期1
终点站航班号飞机号飞行日期余票量
北京00125869341120
请输入订票数量:
请输入舱位等级(1/2/3):
请输入您的名字:
订票成功,座位号为1—1
用户根据所查询的信息,选择相应的航班,系统提示输入订票数量,舱位等级以及用户姓名,最后系统自动提示“订票成功”。
(4)退票业务
请输入航班号:
请输入您的名字:
退票信息:
姓名/终点站/票数
确认要退票?
()
是
(1)
否(0)
1
退票成功
用户在退票时,按系统提示输入航班号,用户姓名,系统则会自动显示出用户要退的票的信息,然后选择是否退票,选择“1”退票,选择“2”不退票。
(5)管理员操作界面
请输入管理员密码:
(houkaiyang)
请选择操作
查询航班订票情况
(1)
增加新航班
(2)
1
请输入新航班号:
管理员在进入内部管理界面时,根据提示输入密码,进入之后,选择“1”,查询航班订票情况,选择“2”,增加新航班。
第2章设计描述
2.1任务分解说明
(1)分析系统中链表的设计,用来记录航班信息。
(2)根据问题描述,设计链表;
(3)完成系统中各个信息的定义;
(4)完成系统的应用模块;
(5)功能调试;
(6)完成系统设计报告。
2.2数据结构设计说明
航空售票系统
退出系统
退票业务
查询航线信息
显示所有航线
管理系统
订票业务
本系统中“航线”只用一条单链表记录,故采用全局变量,减少参数的传递。
(1)、定义“航线”类型
ADTLairline{
数据对象:
D={ai|ai∈航线链表集,i=1,2,3……,n,n>=0}
数据关系:
R1={
基本操作:
Lairlinesearch_line()//按航班号查找航班
Lairlinesearch_plant()//按飞机号查找航班
Lairlinesearch_day()//按飞行日期查找航班
Lairlinesearch_addr()//按航班终点查找航班voidguide()//主菜单界面
voidinsert_line()//插入新航班
voidprint_customer(airline*p)//显示航班客户信息
voidadmin()//进入管理员操作系统
voidbook()//订票系统
voidwaited(airline*p)//排队订票系统
voidrefund()//退票系统
voidsearch()//航班查询系统
voidInitLine()//初始化航线信息
voidprintline()//显示所有航班信息
}ADTLairline
(2)、主程序
voidmain()
{
初始化;
do{
接受命令;
处理命令(调用相应函数);
}while(“命令”!
=“退出”);
}
(3)、调用关系
函数模块
主程序模块
2.3函数接口即函数调用关系
main()
guide()
admin()
refund()
book()
search()
printline()
waited(p))
search_line()
search_addr()
search_day()
search_plant()
printcustomer()p)
)
printcustomer(p)
第3章算法描述
3.1主函数
主程序流程图,如图3—1
开始
flag=1
主菜单界面
初始化航线
gatchar
7
flag=0
6
清除屏幕
4
退票业务
5
管理界面
3
订票业务
2
查询航线
1
显示航线
flag
真
假
结束
图3—1
3.2按航班号查询函数
按航班号查询函数流程图,如图3—2
开始
chara[5]
airline*p
P=L—>next
输入航班号a
p
假
真
!
strcmp(a,p—>line_num
假
p=p—>next
结束
图3—2
3.3按飞机号查询函数
按飞机号查询函数流程图,如图3—3
开始
chara[8]
airline*p
P=L—>next
输入飞机号a
p
假
!
strcmp(a,p—>plant_num)
假
真
p=p—>next
结束
图3—3
3.4按飞行日期查询函数
按飞行日期查询函数流程图,如图3—4
开始
inta
airline*p
P=L—>next
输入飞行日期a
p
假
真
a=p—>day
假
真
p=p—>next
结束
图3—4
3.5按航班终点查询函数
按航班终点查询函数流程图,如图3—5
开始
chara[20]
airline*p
P=L—>next
输入航班终点a
p
假
!
strcmp(a,p—>end_addr)
假
真
p=p—>next
结束
图3—53.6插入新航班函数流程图
插入新航班函数流程图,如图3—6
开始
airline*p,*q
flag=1
flag
真
q=(Lairline)malloc(sizeof(airline)))
输入航班号
p=L
p—>next
假
strcmp(p—>next—>line_num,
q—>line_num)>=0
真
假
p=p—>next
P—>next&&strcmp(p—>next—>line_num,q—>line_num)=0
假
真
输入飞行日期,飞机号,
终点站
航班已存在,请重新输入
结束
图3—6
3.7显示航班客户信息函数
显示航班客户信息函数流程图,如图3—7
开始
customer*c
p—>book
假
真
c=p—>booked
输入已订票客户信息
c
假
真
输入c—>num,c—>name
c=c—>next
输出“暂时没有客户订票”
p—>wait
假
c=p—>wait
真
输出排队订票客户信息
c
假
真
输出c—>num,c—>name
输出“暂时没有客户订票”
c=c—>next
结束
图3—7
3.8管理员操作函数
管理员操作函数流程图,如图3—8
开始
inti,flag,tag
chara[20],airline*p
输入管理员密码
i=0
i<3
假
真
!
strcmp(a,”houkaiyang”)
假
真
密码错误
i++
i=3
真
假
tag=1
tag
假
真
返回主界面
选择进行的操作
结束
图3—8
3.9订票系统函数
订票系统函数流程图,如图3—9
开始
airline*p
customer*cst,*c
输入查询航班方式
p
输出航班信息
cst=(customer*)malloc(sizeof(customer)))
输入订票数量,舱位等级,名字
cst—>num<=p—>left
cst—>next=p—>booked
p—>booked=cst
p—>left=p—>left—cst—>num
订票成功,座位号为:
余票不足
没有该航班
结束
图3—9
3.10排队订票系统函数
排队订票函数流程图,如图3—10
开始
intflag
customer*q,*q0,*h
airline*p
!
p—>wait
p—>left>0&&q—>next
真
假
q—>next—>num
left
真
假
您正在排队订票,现在有票,是否订
真
flag
假
真
q0=q—>next,q—>next=q—>next—>next
q0—>next=p—>booked,p—>booked=q0
p—>left=p—>left—q0—>num
订票成功
q=q—>next
p—>wait=h—>next
结束
图3—10
3.11退票系统函数
退票系统函数流程图,如图3—11
开始
intflag,chara[20]
airline*p
customer*c,*c1
p=search_line()
c=p—>booked
!
p
真
假
没有该航班
输入您的姓名
!
p—>booked—>name
真
没有找到您的信息
假假
输出退票信息
flag
假
!
strcmp(a,c—>next—name)
真
p—>booked=p—>booked—>next
p—>left=p—>left+c—>num
free(c)
真真
!
c—>next
假
真
对不起,没有找到您的信息
退票成功
返回主界面
结束
图3—11
3.12航班查询函数
航班查询函数流程图,如图3—12
开始
inti,flag=0
airline*p
输入查询航班方式
!
flag
假
真
i
2
p=search_plant()
flag=1
其他
操作错误,重新输入
4
p=search_addr()
flag=1
3
p=search_day()
flag=1
1
p=search_line()
flag=1
p
假
真
没有该航班
输出航班信息
结束
图3—12
第4章开发过程描述
4.1源代码
#include
#include
#include
#include
#definePRprintf
#defineSCscanf
typedefstructcustomer{//客户信息
charname[20];//客户姓名
intnum;//订票量
intlevel;//舱位等级
customer*next;
}customer,*Lcustomer;
typedefstructairline{//航线信息
charend_addr[20];//航线终点
charline_num[5];//航班号
charplant_num[8];//飞机号
intday;//飞行日期
inttotal;//定员
intleft;//剩余票数
customer*booked;//已定客户信息
customer*wait;//排队等候订票信息
airline*next;
}airline,*Lairline;
airline*L;//将航班信息定义为全局变量,减少参数传递
Lairlinesearch_line()//按航班号查找航班
{
chara[5];
airline*p;
p=L->next;
PR("请输入航班号");
SC("%s",a);
for(;p;p=p->next)
if(!
strcmp(a,p->line_num))break;
returnp;
}
Lairlinesearch_plant()//按飞机号查找航班
{
chara[8];
airline*p;
p=L->next;
PR("请输入飞机号");
SC("%s",a);
for(;p;p=p->next)
if(!
strcmp(a,p->plant_num))break;
returnp;
}
Lairlinesearch_day()//按飞行日期查找航班
{
inta;
airline*p;
p=L->next;
PR("请输入飞行日期");
SC("%d",&a);
for(;p;p=p->next)
if(a==p->day)break;
returnp;
}
Lairlinesearch_addr()//按航班终点查找航班
{
chara[20];
airline*p;
p=L->next;
PR("请输入航班终点");
SC("%s",a);
for(;p;p=p->next)
if(!
strcmp(a,p->end_addr))break;
returnp;
}
voidguide()//主菜单界面
{
PR("**********************欢迎进入航空售票系统**********************\n");
PR("\t\t显示所有航线==>1\n");
PR("\t\t查询航线信息==>2\n");
PR("\t\t订票业务==>3\n");
PR("\t\t退票业务==>4\n");
PR("\t\t管理系统==>5\n");
PR("\t\t退出系统==>0\n");
PR("**************************************************************\n");
PR("\t\t清除屏幕信息==>9\n\n");
PR("请按上面指引操作:
\t");
}
voidinsert_line()//插入新航班
{
airline*p,*q;
intflag=1;
for(;flag;)
{
q=(Lairline)malloc(sizeof(airline));
PR("请输入航班号:
");
SC("%s",q->line_num);
for(p=L;p->next;p=p->next)
if(strcmp(p->next->line_num,q->line_num)>=0)
break;
if(p->next&&strcmp(p->next->line_num,q->line_num)==0)
{
PR("航班已存在,请重新输入\n");
continue;
}
PR("请输入飞行日期:
");
SC("%d",&q->day);
PR("请输入飞机号:
");
SC("%s",q->plant_num);
PR("请输入终点站:
");
SC("%s",q->end_addr);
q->total=120;
q->left=120;
q->booked=NULL;
q->wait=NULL;
q->next=p->next;
p->next=q;
PR("增加航班成功,是否继续增加\n继续
(1)\n返回(0)");
SC("%d",&flag);
}
}
voidprint_customer(airline*p)//显示航班客户信息
{
customer*c;
if(p->booked)
{
c=p->booked;
PR("已定票客户信息\n票数\t/\t客户姓名\n");
for(;c;c=c->next)
PR("%5d\t/\t%s\n",c->num,c->name);
PR("\n\n");
}
else
PR("暂时没有客户订票\n\n");
if(p->wait)
{
c=p->wait;
PR("排队订票客户信息\n票数\t/\t客户姓名\n");
for(;c;c=c->next)
PR("%5d\t/\t%s\n",c->num,c->name);
PR("\n\n");
}
else
PR("暂时没有客户排队订票\n\n");
}
voidadmin()//进入管理员操作系统
{
inti,flag,tag;
chara[20];
airline*p;
PR("请输入管理员密码:
(houkaiyang)");
for(i=0;i<3;i++)
{
SC("%s",a);
if(strcmp(a,"houkaiyang"))
{
PR("\t\t======密码错误======\n\n");
i++;
}
elsebreak;
}
if(i==3)
{guide();return;}
for(tag=1;tag;)
{
PR("请选择操作\n查询航班订票情况
(1)\n增加新航班
(2)\n");
SC("%d",&flag);
if(flag==1)
{
p=search_line();
if(p)
print_customer(p);
else
PR("没有找到该航班\n");
}
elseif(flag==2)
insert_line();
else
PR("操作错误,请按提示操作\n");
PR("请选择操作\n继续
(1)\n退回主菜单(0)\n");
SC("%d",&tag);
}
guide();
}
voidbook()//订票系统
{
inti;
intflag=0;
airline*p;
customer*cst,*c;
PR("请输入查询航班的方式:
\n");
PR("航班号--->1\n");
PR("终点站--->2\n");
PR("飞行日期->3\n");
for(;!
flag;)
{
SC("%d",&i);
switch(i)
{
case1:
p=search_line();flag=1;break;
case2:
p=se
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 售票 系统 语言 学位 论文