武汉长江工商学院数据结构课程设计报告Word格式文档下载.docx
- 文档编号:18881244
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:18
- 大小:286.71KB
武汉长江工商学院数据结构课程设计报告Word格式文档下载.docx
《武汉长江工商学院数据结构课程设计报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《武汉长江工商学院数据结构课程设计报告Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
图1-1航空客运订票系统功能模块图
2.数据结构设计及用法说明
本系统定义了三个结构体,一个表示已定票客户名单,一个表示等候替补的客户名单,还有一个为航班信息。
同时在结构体之后还定义了一个单链表。
在已定票客户名单中,name1存放客户姓名,reserve表示订票量,具体如下:
typedefstruct//已经订票的客户名单
{
charname1[20];
//客户姓名
intreserve;
//定票量
}name;
在等候替补的客户名单中,name数组用来存放等候客户姓名,necessary存放所需票量的数量,具体如下:
typedefstruct//等候替补的客户名单
charname[20];
intnecessary[20];
//所需票量
}wai;
在航班信息当中,destination表示终点站名,flight表示航班号,num为飞机号,time表示飞行日期,sum表示乘员定额,odd表示余票量,waitno表示已经有的候票客户人数;
同时还定义了订票客户数组namenamelist[50]、以及候票客户数组waiwait[50];
具体如下:
structairline//航班信息,
chardestination[maxsize];
//终点站名
charflight[20];
//航班号
intnum;
//飞机号
chartime;
//飞行日期(星期几)
intsum;
//乘员定额
intodd;
//余票量
namenamelist[50];
//订票客户数组
waiwait[50];
//候票客户数组
intwaitno;
//已经有的候票客户人数
}airplane;
3详细设计和编码
3.1查询模块
进入订票系统,此时有四个功能模块供用户选择,此时是查询功能,这是按目的地查询,根据用户所提供要到的目的地,当所提供目的地与已经录入的航班信息所录入的终点站名相同时,查找成功同时显示所查询的航班的信息,当查找失败是,系统会提示用户输入有误,并要重新查询。
图3-1查询功能流程图
3.2订票模块
进入订票模块的时候,系统提示输入终点站名,客户姓名和所定票量,当用户要订的票数小于所在航班的余票数时,直接给用户订票,并提示订票成功。
当用户要订的票数大于所在航班的余票数时,系统会给出提示,询问用户目前余票量不足,是否进行候补,如果用户选择候补时,就先把现有的票订下,并保存在已订票客户中,剩下的没有订的票就保存在候补客户中。
若没有找到对应的航班号,提示航班号错误,重新输入。
图3-2订票模块流程图
3.3退票模块
进入退票模块时,系统会先让用户输入航班号,并利用同样的查找思路对航班号进行查找,查找失败则提示没有您要找的航班号,查找成功时,然后输入姓名,利用同样的查找方法,查找失败则提示没有您要找的姓名,查找成功则输入要退票的张数,当信息都输入正确时,系统会提示退票成功。
图3-3退票模块流程图
4.实验结果
该系统包括对航班信息的录入creatlist(linklist*l),航班信息的查询seek(linklist*l),订票功能管理booking(linklist*l),以及退票功能模块cancel(linklist*l),具体如下:
4.1航班信息录入
当用户选择1.录入航班信息时,系统会提示用户输入终点站名、航班号、飞机号、飞行日期,同时余票量也是手动输入,并且在输入完成后会显示乘员定额,如图4-1所示:
图4-1航班信息录入图
4.2航班信息查询
根据用户提供的站名进行查找,当查找失败的时候提示用户该航班不存在,否则,输出航班号、飞机号、飞行日期,以及余票量,如图4-2
图4-2查询功能模块图
4.3订票模块
当用户选择3.订票功能管理时,系统提示用户输入终点站,姓名、所定票量,该功能是根据终点站名查找订票航班,当订票数大于余票数时,系统会询问用户是否进入候补状态,询问是否排队等候,当有剩余票时,提示订票成功,如图4-4
图4-3订票功能模块图
图4-4订票功能模块图
4.4退票管理
该功能主要是通过查找要退票的航班,查找到已定客户名单和其详细信息,实现了对于用户已定票数以及用户名的删除,当删除成功的时候,提示用户删除失败,如图4-5
图4-5退票功能模块图
5.体会
航空客运订票系统是对于航空公司订票系统的一种小型模拟,它包括对航班信息的录入,客户信息的查询,订票功能管理,以及取消订票这四个功能模块。
这是继开学来之后第二门课程设计,当然在这之中还是有遇到很多困难。
在做第一门学生信息管理系统的时候,我对于画流程图以及对算法的描述的时候,总是不简洁,而且重点也没说到,因此,在这次做课程设计的时候,对于画流程图和对算法的描述分析格外细心。
不仅仅如此,这次的课程设计题目蕴含了对系统功能分析,即该系统包含哪些功能,怎么去实现它,以及对于这学期所需知识的一个总结。
通过这次课程设计,让我对于结构体的定义,单链表的定义、使用,以及循环语句的使用有了更深入的了解,同时对于做课程设计的第一步有了全新的认识,只要能将所需知识更好使用就可以做到想做的东西。
6.参考文献
[1]雷于生,胡成松.C语言程序设计.北京:
高等教育出版社,2009
[2]严蔚敏,吴伟江。
数据结构。
北京:
清华大学出版社,1997
[3]谭浩强编著.C语言程序设计.北京:
清华大学出版社,1991
[4]谭浩强,张基温,唐永炎编著.C语言程序设计教程.北京:
高等教育出版社,1992
[5]黄扬铭.数据结构.北京:
科学出版社,2001
7.源代码清单
#include<
iostream.h>
malloc.h>
string.h>
stdlib.h>
#definemaxsize50
intnecessary;
typedefairlineelemtype;
typedefstructlnode//建立单链表
elemtypedata;
structlnode*next;
}linklist;
voidcreatlist(linklist*&
l);
voidseek(linklist*l);
voidbooking(linklist*l);
voidcancel(linklist*&
/*-----------------------------------主菜单--------------------------*/
intmenu()
inty;
cout<
<
"
\t-------------------------------------------------------------"
endl;
\t----------------------航空客运订票系统---------------------"
\n\n\t\t\t1.录入航班信息"
\n\n\t\t\t2.查询航班信息"
\n\n\t\t\t3.订票功能管理"
\n\n\t\t\t4.退票办理"
\n\n\t\t\t0.退出"
\n\t-------------------------------------------------"
\n\t---------------------------------------------------"
do
{
cout<
\t请正确选择:
;
cin>
>
y;
}while(y<
1||y>
4);
returny;
}
/*----------------------------------尾插法建表----------------------*/
l)
inti,m,n,j;
linklist*s,*r;
l=(linklist*)malloc(sizeof(linklist));
//创建头结点
r=l;
//r始终指向尾结点,开始时指向头结点
请输入航班数目:
m;
请输入航班信息"
for(i=0;
i<
i++)
s=(linklist*)malloc(sizeof(linklist));
s->
data.waitno=0;
//侯票的人数默认为0
请输入终点站名:
"
cin>
s->
data.destination;
请输入航班号:
data.flight;
请输入飞机号:
data.num;
请输入飞行日期:
data.time;
请输入余票量:
data.odd;
请输入已订客户数:
n;
//s->
data.sum=0;
for(j=0;
j<
j++)
{
cout<
客户姓名:
data.namelist[j].name1;
客户订票量:
data.namelist[j].reserve;
s->
data.sum=s->
//修改航班的已订票客户人数
}
乘员定额:
data.sum;
r->
next=s;
r=s;
}
r->
next=NULL;
/*--------------------------------按终点站名查找----------------------------------*/
voidseek(linklist*l)
linklist*p=l->
next;
//p指向第1个数据结点
charx[maxsize];
请输入要要查找的站名:
x;
while(p!
=NULL&
&
strcmp(p->
data.destination,x)!
=0)//当查询的终点站名不存在
p=p->
//i++;
if(p==NULL)
该航班不存在!
else
该航班信息如下:
航班号为:
p->
data.flight<
//输出航班号
飞机号为:
data.num<
//输出飞机号
飞行日期为:
data.time<
//显示飞行日期
余票量为:
data.odd<
//显示余票量
/*------------------------------------订票管理----------------------------------*/
voidbooking(linklist*l)
//p指向第一个数据元素
chard[50],m[20],t;
intticket,j=0;
cin>
d;
您的姓名:
您所定票量:
ticket;
data.destination,d)!
=0)//根据终点站名查找订票航班
if(p)
if(p->
ticket)//当余票量不足,询问是否排队等候
sorry,余票量不足,您是否排队等候?
Y/N"
t;
if(t=='
Y'
||t=='
y'
)
{
while(p->
data.wait[j].necessary!
=0)//判断候补乘客数组是否为空
j++;
strcpy(p->
data.wait[j].name,m);
//将输入的人的名字存放到候补乘客中
p->
data.wait[j].necessary=ticket-p->
//候补乘客所需票量等于乘客所需票量减去余票量
data.odd=0;
}
else
exit(0);
}
else
while(p->
=0)//判断已定票客户订票量是否为0
strcpy(p->
p->
data.wait[j].necessary=ticket;
//候补客户所需票量等于用于自己输入票量
data.odd-=ticket;
//余票量等于先得余票量减去客户订的票数
订票成功!
/*------------------------------取消订票------------------------------------*/
charname2[20],time1[20],flight1[20];
inti=0,j;
请输入退票客户信息:
name2;
您的飞行日期:
time1;
data.flight,flight1)!
=0)//查找退票航班
while(strcmp(p->
data.namelist[i].name1,name2))//查找具体的退票乘客信息
i++;
for(;
!
data.namelist[i].name1;
i++)//从该航班的已订票数组中删除此乘客
strcpy(p->
data.namelist[i].name1,p->
data.namelist[i+1].name1);
p->
data.namelist[i].reserve=p->
data.namelist[i+1].reserve;
//删除前一名已定客户名单
data.odd+=p->
//修改余票量
if(p->
data.wait[0].name)//判断候票乘客数组是否为空
data.odd>
data.wait[j].necessary;
data.namelist[i+j].name1,p->
data.wait[j].name);
//将候补客户名单复制给已定客户名单
data.namelist[i+j].reserve=p->
//已定客户票量等于候补客户所需票量
退票成功!
voidmain()
linklist*l;
switch(menu())
case1:
creatlist(l);
break;
case2:
seek(l);
case3:
booking(l);
case4:
cancel(l);
case5:
exit(0);
成绩评定
成绩评定:
(百分制)
指导教师签字:
检查时间:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 武汉 长江 工商学院 数据结构 课程设计 报告