航空客运订票系统Word文档格式.docx
《航空客运订票系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《航空客运订票系统Word文档格式.docx(45页珍藏版)》请在冰点文库上搜索。
![航空客运订票系统Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/ff611640-477b-4696-8e34-58155a258629/ff611640-477b-4696-8e34-58155a2586291.gif)
6)评分标准:
1)完成原理分析:
20分;
2)完成设计过程:
40分;
3)完成代码分析:
20分。
4)个人创新工作:
学生签名:
2012年12月21日
课程设计(论文)评审意见
(1)完成问题分析(20分):
优( )、良( )、中( )、一般( )、差( );
(2)算法思想 (20分):
(3)数据结构 (20分):
(4)测试数据(20分):
(5)回答问题 (20分):
(6)格式规范性及考勤是否降等级:
是( )、否( )
评阅人:
职称:
年月日
前言
“数据结构”是计算机程序设计的重要理论技术基础,它不仅是计算机学科的核心课程,而且已成为其他理工专业的热门选修课。
从课程性质上讲,“数据结构”是一门专业技术基础课。
它的教学要求是:
学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,并初步掌握算法的时间分析和空间分析的技术。
另一方面,本课程的学习过程也是复杂程序设计的训练过程,要求学生编写的程序结构清楚和正确易读,符合软件工程的规范。
目录
正文-3-
一、需求分析-3-
二、个人工作-4-
三、概要设计-5-
四、源程序-7-
五、程序结果-25-
6、课程设计体会.........................................-31-
正文
1、需求分析
随着经济的发展,人们生活水平提高,更多的人选择外出旅游,航空业因此得以快速发展,要面对庞大的游客对乘坐飞机的需求,一个完备的航空客运管理系统是必须的,而且是有效的。
因此,设计和开发一个航空客运订票系统被摆在首位。
我设计的这个航空客运订票系统的业务活动包括:
查询航线、客票预订和办理退票等。
查询航线模块能根据旅客提出的终点站名输出下列信息:
承办订票业务模块将根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余额,则为客户办理办理订票手续,输出座位号;
承办退票业务模块能根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
两个客户名单分别由线性表和队列实现。
为查找方便,已订票客户的线性表按客户姓名有序,并且,为插入和删除方便,应以链表做存储结构。
由于预约人数无法预计,队列也应以链表作为存储结构。
整个系统将各条航线的情况登陆在一张线形表上,航线采用的是顺序存储结构,并按航班有序或终点站有序。
每条航线是这张线形表上的一个记录,其中乘客名单域为指向乘客名单链表的头指针,等候替补的客户名单域为分别指向队头和队尾的指针。
2、个人工作
选择了题目后,我就投入了紧张的工作中,首先,参照老师给定的课程设计任务论文模版,我做了一个简要的提纲,列举了所有我需要做的,同时借鉴了自己上学期做课设的一些经验总结,添加了一些个人的个性元素。
然后,到学校图书馆查询相关资料,把课本中相关知识点勾出来,从网上搜集了有关材料,并与我的同学做了相关讨论,得到了学长学姐的帮助,最后将所得资料加以整合,按照课程设计的任务要求,将程序编写出来,我特意将界面稍微优化了,因而源程序较长,但基本都满足了课题的任务要求。
3、概要设计
(1)主函数流程图:
系统主程序功能显示及流程。
包括主菜单栏,下辖航线管理、订票管理、退票办理、乘客管理等子系统。
(2)航运管理函数流程图:
航线管理的子系统。
可以新增航线以及查询已有航线信息。
(3)订票办理函数流程图:
订票办理的子系统,实现订票功能。
(4)退票办理函数流程图:
退票办理的子系统,实现退票功能。
(5)乘客管理函数流程图:
乘客管理的子系统,可以查询的票乘客的信息和候补乘客的信息。
4、源程序
#include<
iostream.h>
process.h>
string.h>
conio.h>
stdio.h>
iomanip.h>
#defineMAX50
#defineNULL0
typedefstructCustomer//已定票乘客信息
{
charName[7];
//姓名
intAmount;
//定票数
charRank;
//舱位等级
intSeat_No;
//座位号
structCustomer*Next;
}Customer;
typedefstructReplace//替补乘客信息
charSeat_No;
structReplace*Next;
}Replace,*PReplace;
typedefstructFlight//航线信息
charDes_Name[10];
//终点站名
charFlight_No[6];
//航班号
charPlane_No[6];
//飞机号
charWeek_Day;
//飞行周日
intCustomer_Amount;
//乘员定额
intFree_Amount;
//剩余票数
floatPrice[3];
//舱位等级的价格
Replace*ReplName;
//该航班的候补乘客名单
Customer*CustName;
//该航班的已定票乘客名单
structFlight*Next;
//指示下一航线结点
}Flight,*PFlight;
intCustomer_Count=0;
//所有航线的定票乘客总数
Flight*Head;
//航线头指针
Flight*p2;
//航线结点指针
Customer*Custp1[MAX];
//各条航线乘客结点指针
Replace*Replp1[MAX];
//各条航线候补结点指针
intIsEmpty=1;
//是否有定票乘客
intIsReplace=1;
//是否有候补乘客
Customer*prior;
//满足要求的定票乘客的前结点,以作删除操作
//-------启动画面函数----------
voidCover()
{
charline[]={"
━━━━━━━━━━"
};
charbar[]={"
...."
inti,j,k=0,x=0,y=0;
for(i=1;
i<
=strlen(line)/2;
)
{
system("
cls"
);
for(j=0;
j<
9;
j++)//改变行坐标
cout<
endl;
(75-strlen(line))/2;
j++)//改变列坐标
"
"
;
for(j=1;
=i;
j++)//进度显示器
■"
for(x=strlen(line)/2;
x>
i;
x--)
□"
if(k==4)
i++;
j++)//行坐标定位
line;
//输出线条
(65-strlen(bar))/2;
j++)
(i-1)*10<
%Loading"
cout.write(bar,k);
10;
24;
designer:
11软会3班--小龙"
=12;
─"
10000000;
j++);
//延时效果
k++;
if(k>
4)
k=0;
}
}
//---------------菜单模板函数---------------
charModelMenu(char*s[],intItemcount)
inti;
charanswer;
\n\n"
\t\t\t┌──────────────┐"
\t\t\t"
s[0]<
\t\t\t├──────────────┤"
\t\t\t│ │"
\t\t\t│ ┌──────────┐ │"
Itemcount;
i++)
s[i]<
if(i+1!
=Itemcount)
\t\t\t│ ├──────────┤ │"
\t\t\t│ └──────────┘ │"
\t\t\t└──────────────┘"
\t\t\t请输入菜单项前的操作代码:
cin>
answer;
returnanswer;
//---------------主菜单函数---------------
charMainMenu()
char*MenuItem[]={"
│ 航空客运订票系统菜单 │"
"
│ │[1].航线管理│ │"
\
│ │[2].订票办理│ │"
│ │[3].退票办理│ │"
│ │[4].乘客管理│ │"
│ │[5].系统离开│ │"
returnModelMenu(MenuItem,6);
//---------------是否继续函数---------------
charContinue()
while
(1)
{
\t\t"
for(i=0;
15;
\n\t\t\t是否继续(Y/N)?
if(answer=='
y'
||answer=='
Y'
return'
elseif(answer=='
n'
N'
else
\t\t\t输入错误,请重新输入!
//---------------操作出错函数---------------
voidErrorMess()
\n\t\t\t对不起,没有相关菜单项,按任意键继续..."
getch();
//-----------------系统退出-----------------
intExitSystem()
\n\t\t\t你确定是否真要离开系统吗(Y/N)?
return1;
return0;
//--------------操作提示函数-------------
voidprefix(char*Item)
\n\n\t\t\t当前操作:
Item<
//--------------航线查找函数-------------
//Find_Line()为重载函数
intFind_Line(PFlightL,char*key)//引用调用
intflag=0;
//该标志位0表示未找到相关信息,反之即找到,以下标志位同理
Flight*p1;
p1=L;
//赋航线首地址
if(p1==p2)//首航线不作比较
returnflag;
while(p1!
=p2&
&
p1!
=NULL)//本航班号不纳入比较范围,否则会一直提示航线不唯一
if(strcmp(p1->
Flight_No,key)==0)
flag=1;
break;
p1=p1->
Next;
//指向下一航班结点
intFind_Line(PFlightL,char*key,PFlight&
p2,int&
Flight_No)//引用调用
//该标志位0表示未找到相关信息,反之即找到
//赋航线首结点
=NULL)
Flight_No,key)==0)//不包括当前航线
p2=p1;
//指向下一航班结点
if(p1!
=NULL)//遇结束符不作统计范围
Flight_No++;
//-----------------航线添加函数-------------
voidLine_Add()
//建立临时航线结点
if(Head==NULL)//航线为空
p1=p2=newFlight;
//建立首个航线
Head=p2;
p1=newFlight;
//建立航线结点
p2->
Next=p1;
//前一航线结点指向当前航班结点
//保留当前航班结点地址
prefix("
航线增设"
\t\t\t请输入终点站名:
p2->
Des_Name;
while
(1)//数据合法性检验
\n\t\t\t请输入航班号(唯一):
Flight_No;
if(Find_Line(Head,p2->
Flight_No))//存在航班号
\n\t\t\t输入的航班号不唯一!
\n\t\t\t请输入飞机号:
Plane_No;
\n\t\t\t请输入飞行周日(1-7):
Week_Day;
if(p2->
Week_Day<
'
1'
||p2->
Week_Day>
7'
\n\t\t数据输入错误,按任意键继续输入."
\n\t\t\t请输入乘员定额:
Customer_Amount;
\n\t\t\t请输入头等舱票价:
Price[0];
\n\t\t\t请输入普通舱票价:
Price[1];
\n\t\t\t请输入经济舱票价:
Price[2];
Free_Amount=p2->
//剩余票数与乘员定额相同
CustName=NULL;
//该航线定票乘客头指针为空
ReplName=NULL;
//初始候补名单为空
if(Continue()=='
Next=NULL;
//航线的下一结点为空
return;
//------------航线是否为空函数-------------
intEmpty_Flight()
if(Head==NULL)
\n\n\n\n\n\n\n\n\t\t对不起,没有相关航线。
按任意键返回..."
//------------航线查看函数-----------------
voidLine_See()
intDay;
p1=Head;
char*Week_Day[]={"
星期一"
星期二"
星期三"
星期四"
星期五"
星期六"
星期日"
if(Empty_Flight())//航班线为空
航班查看"
┌────┬───┬───┬────┬────┬────┬────────┐"
│││││││票价 │"
│终点站名│航班号│飞机号│飞行周日│乘员定额│剩余票数├──┬──┬──┤"
│ │ │ │ │ │ │头舱│普舱│经舱│"
├────┼───┼───┼────┼────┼────┼──┼──┼──┤"
=NULL)
Day=p1->
Week_Day-'
0'
-1;
//数字转换相应星期数
│"
setiosflags(ios:
:
left)<
setw(8)<
p1->
Des_Name<
│"
setw(6)<
Flight_No<
\
Plane_No<
Week_Day[Day]<
│"
setw(5)<
Customer_Amount<
Free_Amount<
setw(4)<
Price[0]<
Price[1]<
Price[2]<
└────┴───┴───┴────┴────┴────┴──┴──┴──┘"
\n\t\t\t按任意键返回子菜单..."
voidSub1Menu()
│航空客运航线管理子菜单│"
│ │[1].航线增设│ │"
│ │[2].航线查看│ │"
│ │[3].返回主菜单│ │"
switch(ModelMenu(MenuItem,4))
case'
{Line_Add();
break;
2'
{Line_See();
3'
{return;
default:
{ErrorMess();
//---------------订票办理函数---------------
voidSub2Menu()
intTicket_Count,Seat_No,i,flag=0;
intFli