航空订票系统实验报告文档格式.docx
- 文档编号:3317712
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:23
- 大小:305.93KB
航空订票系统实验报告文档格式.docx
《航空订票系统实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《航空订票系统实验报告文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
表明产品名及开发人员情况。
三.概要设计
(一)数据类型定义
a)已订票人员的结点:
typedefstructEdNode
{
charEname[15];
//已订客户姓名
intEnum;
//订票数
charEgrade;
//航等号
charELocate[8];
//座位号,形式1-2,表示订了两张票,其一张是1号位,另一张是2号位
b)候补客户人员的结点:
typedefstructIngNode
charIname[15];
intInum;
charIgrade;
}IngNode,*IngList;
C)航班结点:
structFlight//航班结点
charID[7];
//航班号
charEndName[10];
//终点站名
charday[4];
//起飞的日期如表示Mon,其为星期一
intdaytimetoint;
//加入的日期转成数值如Sun,则它为0;
Mon,它为1
intdinger[3];
//各舱等的定额票
intlast[3];
//各舱等的余票量
EdListE;
//已订客户名单的指针
IngQueueI;
//候补客户名单的指针
}F;
(二)函数定义
候补结点队列的一系列函数
函数名:
intInitQueue(IngQueue*Q);
intDeleteQueue(IngQueue*Q,IngList*x);
intEnterQueue(IngQueue*Q,IngNode*x);
intEmptyQueue(IngQueue*Q);
初始条件:
InitQueue(&
Q);
操作结果:
队列初始化
出队列
进队列
判空
在Refund函数暂用的候补栈的一系列函数
voidInitStack(IngStack*S);
intPush(IngStack*S,IngNode*x);
intPop(IngStack*S,IngList*x);
intIsEmpty(IngStack*S);
InitStack(&
S);
栈的初始化
进栈
出栈
判空
已订票客户结点的单链表初始化函数
intInitList(EdList*L);
InitList(&
L);
单链表初始化
主菜单控制函数
intMenu(FlightF[]);
FlightF里面队列,单链表的初始化
(1)航班查询
(2)用户订票
(3)用户退票
(4)开发简介
航班查询函数
intQuery(FlightF[]);
进行航班信息查询
用户订票函数
函数名:
intBook(FlightF[]);
进行用户订票操作
用户退票函数
intRefund(FlightF[]);
进行用户退票操作
开发简介函数
voidIntroduce(FlightF[]);
展现开发信息
各模块的界面菜单的一系列函数
voidBookMenu();
voidQueryMenu();
voidRefundMenu();
订票操作的界面
查询操作的界面
退票操作的界面
(三)
主程序流程
(四)各模块各函数调用
四.详细设计
(一)数据定义
(二)主要算法
intMenu(FlightF[])//主菜单函数
while(YN=='
Y'
||YN=='
y'
)
{
system("
cls"
);
printf("
\n"
\t\t\t数据结构课程设计"
\n\n"
\t\t\t航空订票系统"
\t\t\t(Q)uery\t航班查询\n"
printf("
\t\t\t(B)ook\t用户订票\n"
\t\t\t(R)efund\t用户退票\n"
\t\t\t(I)ntroduce\t开发简介\n"
\t\t\t(E)xit\t退出系统\n"
\n\n请键入您需要的操作——"
scanf("
%c"
&
temp);
getchar();
switch(temp)
{
case'
Q'
:
q'
Query(F);
YN='
N'
;
break;
}
case'
B'
b'
Book(F);
}
……
return1;
订票函数
intBook(FlightF[])//订票函数
charzhongjiezifu[4];
intbiaozhi=1;
intzhongjie;
IngNode*p;
EdNode*q,*s;
while(biaozhi)
BookMenu();
printf("
"
\n\n请输入航班号:
scanf("
%s"
ID);
while(i<
11)
if(strcmp(ID,F[i].ID)==0)
{
flag=1;
break;
i++;
}
if(flag==1)
while(grade<
'
1'
||grade>
3'
printf("
请输入您要订的舱等号(1-3):
grade);
请输入您要订票数额:
%d"
count);
if(count>
F[i].last[grade-'
0'
-1])
很抱歉,您所要求的机票数大于此班机的余票量!
!
您希望列入到候补名单吗?
请输入(Y|N):
scanf("
YN);
if(YN=='
{
printf("
请输入您的姓名:
scanf("
name);
p=(IngNode*)malloc(sizeof(IngNode));
strcpy(p->
Iname,name);
p->
Inum=count;
Igrade=grade;
EnterQueue(&
(F[i].I),p);
}
else
{
\n按B返回主菜单,按R重新订票:
……
}//else
}//if
else
q=(EdNode*)malloc(sizeof(EdNode));
strcpy(q->
Ename,name);
q->
Enum=count;
Egrade=grade;
if(count==1)
//使得已订票结点中的座位charELocate[8]格式化
//将其内容填充为%的形式,其座位号就是一个字符数值
//(如12,代表一张12号位子的票)
}
else。
//使得已订票结点中的座位charELocate[8]格式化
//将其内容填充为%-%形式(如2-3,就是2号、3号两张座位的号;
s=F[i].E;
while(s->
next!
=NULL)
if(strcmp(name,s->
next->
Ename))
s=s->
next;
break;
next=s->
s->
next=q;
\n\n订票成功!
\n您的座位号是——%s\n\n"
q->
ELocate);
}//else
}//if
else
printf("
很抱歉,没有此航班!
}//else
}//while
return1;
}//Book
查询函数
intQuery(FlightF[])
structtm*local;
//系统时间的结构体
time_tt;
t=time(NULL);
local=localtime(&
t);
……
for(;
k<
j;
k++)//以下操作是获得航班离当天的最近一天
%8s%9s%10s%8d%6d%7d\n"
EndName,ID,day,last123);
judge=F[biaoji[k]].daytimetoint-local->
tm_wday;
if(flag)
nearer=judge;
nearday=biaoji[k];
flag=0;
if(nearer<
0&
&
judge<
nearer)
nearday=biaoji[k];
elseif(nearer>
judge>
elseif(judge>
=0&
nearer<
0)
}
printf("
\n\n最近的一趟航班\n\n"
EndName,ID,day,last123);
……
退票函数
intRefund(FlightF[])//退票函数
//以下介绍的是一个人退票之后,而在候补人员中询问订票的情况
while(!
EmptyQueue(&
(F[i].I))//将候补队列的结点依次出队,
{//判断他人退票之后的余票能否给予DeleteQueue(&
(F[i].I),&
r);
//候补队列结点。
if(不能满足候补人员的要求)//如不满足要求,进入S栈;
Push(&
S,r);
//如满足要求,则当前结点成为已订票人员,
temp=(EdNode*)malloc(sizeof(EdNode));
strcpy(temp->
Ename,r->
Iname);
temp->
Egrade=r->
Igrade;
Enum=r->
Inum;
将其座位号填充格式化;
s=F[i].E;
if(strcmp(temp->
Ename,s->
s=s->
else
break;
s->
next=temp;
\n\n候补名单中%s订票成功!
temp->
Ename);
\n%s的座位号是:
%s\n\n"
Ename,temp->
}//else
while(!
IsEmpty(&
S))//把S栈的结点出栈,依次进入候补队列
Pop(&
S,&
EnterQueue(&
(F[i].I),r);
……
五调试分析
(一)空间复杂度分析
此程序中的数据结构有单链表,栈和队列及一维数组。
其空间复杂度均为一维的,O(n).
(二)时间复杂度分析
所以其的时间复杂度均为O(n).
六.用户使用说明
查询
共有有11趟内置航班,具体情况参见该产品的FlightHelp.xls文件。
订票
退票
开发简介
七.测试结果
参见六.用户使用说明(图)
八.附录
(一)各模块的完成人员
数据类形,结构设计:
吴若雪
基于数据结构的栈,队列系列函数:
张莎莎,段美园,刘蒙,赵丹
主菜单函数:
订票函数:
张莎莎,吴若雪
查询函数:
吴若雪,段美园
退票函数:
赵丹,张莎莎
开发简介:
刘蒙,段美园
(二)产品
产品包:
航空订票系统.rar
开发说明书:
航空订票系统开发说明书
产品源代码名:
航空订票系统.cpp
开发文档:
开发成员名单.xls
帮助文档:
帮助.xls
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 订票 系统 实验 报告