东华大学数据结构设计C语言航空订票系统.docx
《东华大学数据结构设计C语言航空订票系统.docx》由会员分享,可在线阅读,更多相关《东华大学数据结构设计C语言航空订票系统.docx(36页珍藏版)》请在冰豆网上搜索。
东华大学数据结构设计C语言航空订票系统
东华大学数据结构课程设计
实验报告
实验名称:
航空订票系统
指导教师:
目录
一、设计题目……………………………………………………(3)
二、任务…………………………………………………………(3)
三、功能要求和测试数据……………………………………(3)
四、需求分析……………………………………………………(4)
4.1宏观需求分析………………………………………(4)
4.2具体需求分析………………………………………(4)
5、概要设计……………………………………………………(5)
5.1系统的流程框图…………………………………………(5)
5.2系统各函数的功能、相互调用关系…………………(6)
6、详细设计……………………………………………………(8)
6.1各变量的定义和作用………………………………(8)
6.2系统各函数的功能…………………………………(8)
7、调试分析……………………………………………………(21)
8、用户手册…………………………………………………(22)
九、测试结果……………………………………………………(22)
十、心得体会与参考文献………………………………………(22)
设计题目
航空订票系统
任务
航空客运定票的业务活动包括:
查询航线、客票预定和办理退票等。
试设计一个航空客运定票系统,以使上述业务可以借助计算机来完成。
功能要求
1)录入:
可以录入航班情况
2)查询:
可以查询某个航线的情况(如输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
3)订票:
(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果
该航班已经无票,可以提供相关可选择航班;
4)退票:
可退票,退票后修改相关数据文件;
5)客户资料:
有姓名,证件号,订票数量及航班情况,订单要有编号;
6)修改航班信息:
当航班信息改变可以修改航班数据文件。
测试数据
航班数据
航班号
出发
城市
到达
城市
起飞
时间
到达
时间
价格
折扣率(%)
总票数
剩余
票数
MU5103
上海虹桥
北京
7:
00
9:
20
1063
94
20
2
CA1590
上海虹桥
北京
8:
55
11:
15
864
75
20
0
FM9307
上海虹桥
广州
10:
30
12:
50
608
48
20
5
HO1241
上海浦东
青岛
19:
50
21:
20
418
56
20
11
3U8964
上海浦东
成都
15:
45
19:
05
922
57
20
1
客户数据
姓名
证件号
订票数
航班号
张三丰
31000012
1
3U8964
张翠山
31000025
1
FM9307
张无忌
31000033
1
MU5103
需求分析
宏观需求分析
●采用现有的软硬件环境及先进的管理系统方案,从而达到充分利用现有资源,提高系统应用效果的目的。
●尽量达到系统操作过程中的直观、方便、实用、安全等要求。
●系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。
●系统应具备维护功能,及时根据用户需求进行数据的添加、删除、修改等操作。
具体需求分析
菜单是应用程序中非常重要的组成部分,通过菜单,应用程序可以实现不同的功能,通过本系统的设计,可以实现应用程序的菜单。
(1)程序运行时,首先给出两个菜单选项的内容和输入提示:
管理员进入输入1,客户进入输入2。
用户输入1或者2,以不同身份进入系统,如果输入1和2以外的其他字符,则显示输入错误,请重新输入。
(2)若用户选择是管理员身份进入,需要输入密码(首次设定密码为1111),验证正确后,则可进入系统,显示如下7个菜单选项(后有截图)。
若密码验证错误,则提示密码错误,并返回主界面让用户重新选择身份。
1.输入航班信息2.查询航班信息3.输入乘客信息4.查询乘客信息
5.修改航班信息6.查找航线7.返回上一界面
(3)若用户是以客户身份进入,则进入系统后,将显示如下7个菜单选项(后有截图)。
进入系统后,用户可以根据需要输入选项实现不同功能。
若输入其它字符,则显示输入错误,
1.查询航班信息2.输入乘客个人信息3.查询乘客个人信息
4.订票信息5.退票信息6.查找航线7.返回上一界面
(4)用户根据需要输入(1-7),若输入其他字符,则提示输入错误,要求重新选择。
(5)用户选择(1-7)实现不同功能,如果要返回上级菜单界面,则需要根据提示操作返回。
概要设计
4.1系统的流程框图
图1系统流程框图
(二)实现函数的具体功能:
(通过定义函数来实现客户端订票,退票等功能)
structair
{
charairnum[20];//航班号
charset_off[20];//起飞的城市
charget_to[20];//终点城市
charstart_time[20];//起飞时间
chararrive_time[20];//到达时间
floatprice;//票价
floatdiscount;//折扣
intticketnum;//票的编号
intticketleft;//剩余的票数
}air[A];
structcustomer
{
charcustnum[20];//证件号
charname[40];//姓名
intticketnum;//票的编号
charairnum[20];//航班
intbooknum;//预定的票号
}cust[C];
voidcustomermenu()//创建客户账户界面
voidair_print();//查询航班信息
voidinput_cust();//输入乘客个人信息
voidyanzheng();//客户信息验证,相当于密码
voidkehu_print();//乘客查询自己的个人信息
voidbookticket();//订票信息
voidtuipiao();//退票信息
voidsearch();//查找航线
voidguanliyuanmenu();//创建管理员账户界面
voidinput_air();//输入航班信息
voidcust_print();//管理员查询所有乘客信息
voidchange();//航线修改系统。
voidmain();//主函数,选择进入管理员界面或客户界面。
本系统要用到的库函数:
#include
#include
#include
程序调用关系
customermenu()调用了voidair_print(),voidinput_cust(),voidkehu_print(),voidbookticket(),voidtuipiao(),voidsearch()。
guanliyuanmenu()调用了voidinput_air(),voidair_print(),voidinput_cust();voidcust_print(),voidchange(),voidsearch()。
bookticket()和tuipiao()调用了voidyanzheng();
详细设计
/*各变量的定义和作用*/
#include
#include
#include
#defineA6/*航线数*/
#defineB15/*用于循环体中的返回模块,常量*/
#defineC5/*顾客数*/
#defineCoutair[i].airnum<<""<staticintf=0;/*输入航线数时控制变量*/
staticintg=0;/*输入顾客数时控制变量*/
staticinth=0;/*订票时的控制变量*/
staticints=0;/*订票与退票时控制变量*/
structair
{
charairnum[20];/*航班号*/
charset_off[20];/*起飞城市*/
charget_to[20];/*到达城市*/
charstart_time[20];/*起飞时间*/
chararrive_time[20];/*到达时间*/
floatprice;/*票价*/
floatdiscount;/*折扣率*/
intticketnum;/*总票数*/
intticketleft;/*剩余票数*/
}air[A];
structcustomer
{
charcustnum[20];/*证件号*/
charname[40];/*姓名*/
intticketnum;/*订票数*/
charairnum[20];/*航班号*/
intbooknum;/*订单编号*/
}cust[C];
/*2:
系统各函数的功能*/
voidmain()/*主函数选择进入管理员界面或客户界面*/
{
intj;
voidcustomermenu();
voidguanliyuanmenu();
for(;;)
{
cout<<"***管理人员进入请输入1,客户进入请输入2,退出请输入0***"<cin>>j;
if(j>=0&&j<=2)//判断输入数字是否在规定范围内
{
switch(j)//选择登录账户类型
{
case1:
//登陆管理员账户
{
charp[]={"1111"};
charm[5];
cout<<"请输入密码";
cin>>m;
if(strcmp(m,p)==0)//验证密码正确与否
{
system("cls");/*清屏功能,美化界面*/
guanliyuanmenu();break;
}//调用管理员账户信息
else
cout<<"密码错误!
!
!
重新选择按键"<break;
}
case2:
//登陆客户账户
{
system("cls");/*清屏功能,美化界面*/
customermenu();
break;
}
case0:
//登陆客户账户
{
exit(0);
break;
}
}
}
}
}
voidcustomermenu()/*创建客户账户界面*/
{
voidair_print();
voidcust_print();
voidinput_cust();
voidinput_air();
voidsearch();
voidbookticket();
voidchange();
voidtuipiao();
voidkehu_print();
inti,j;
cout<<"★***客户订票系统***★"<cout<<"*********************************************"<for(i=0;i
{
cout<<"1.查询航班信息2.输入乘客个人信息"<cout<<"3.查询乘客个人信息4.订票信息"<cout<<"5.退票信息6.查找航线"<cout<<"7.返回上一界面"<cout<<"**************************************"<cin>>j;
switch(j)
{
case1:
air_print();
break;
case2:
input_cust();
break;
case3:
kehu_print();
break;
case4:
bookticket();
break;
case5:
tuipiao();
break;
case6:
search();
break;
case7:
i=B-1;
break;
default:
cout<<"输入出错"<}
}
cout<<"谢谢使用!
"<}
voidguanliyuanmenu()/*创建管理员账户界面*/
{
voidair_print();
voidcust_print();
voidinput_cust();
voidinput_air();
voidsearch();
voidbookticket();
voidchange();
voidtuipiao();
intj,i;
cout<<"★***管理员航线管理系统***★"<cout<<"***********************************"<for(i=0;i
{
cout<<"1.输入航班信息2.查询航班信息"<<<"3.输入乘客信息4.查询乘客信息"<<<"5.修改航班信息6.查找航线"<<<"7.返回上一界面"<cout<<"*********************************************"<cin>>j;
switch(j)
{
case1:
input_air();
break;
case2:
air_print();
break;
case3:
input_cust();
break;
case4:
cust_print();
break;
case5:
change();;
break;
case6:
search();
break;
case7:
i=B-1;
break;
default:
cout<<"输入出错";
}
}
}
voidinput_air()/*输入航班信息*/
{
inti,j=0,k;
cout<<"请依次输入各航班信息:
"<cout<<"***************************************************"<for(i=0;i{cout<<"请输入航班号:
"<cin>>air[i].airnum;
cout<<"请输入出发城市:
"<cin>>air[i].set_off;
cout<<"请输入到达城市:
"<cin>>air[i].get_to;
cout<<"请输入起飞时间:
"<cin>>air[i].start_time;
cout<<"请输入到达时间:
"<cin>>air[i].arrive_time;
cout<<"请输入机票价格:
"<cin>>air[i].price;
cout<<"请输入机票折扣率:
"<cin>>air[i].discount;
cout<<"请输入机票总票数:
"<cin>>air[i].ticketnum;
cout<<"请输入机票剩余票数:
"<cin>>air[i].ticketleft;
cout<<"第"<<++f<<"个航线信息已经输入完毕是否继续?
按1继续,按0返回上一界面";
cin>>k;
if(k==0)
break;
}
}
voidair_print()/*查询并输出所有航班信息*/
{
inti;
if(f==0)cout<<"航班信息未输入,请管理员输入"<else
{
cout<<"航班号出发城市到达城市起飞时间到达时间";
cout<<"价格折扣率总票数剩余票数"<}
for(i=0;i{
cout<cout<}
}
voidinput_cust()/*输入客户个人信息*/
{
intk;
{
inti;
if(f==0)cout<<"航班信息未输入,请管理员输入"<else
cout<<"请依次输入各客户信息:
"<for(i=0;i{
i=g;/*程序错误点,顾客信息输出最后一行乱码,输入三行,只输出两行
加入此语句已改正,原因是先管理员界面,后客户界面输入时会使i=0,
而g是静态变量,其值非0,导致输入出错*/
cout<<"请输入客户证件号:
"<cin>>cust[i].custnum;
cout<<"请输入客户姓名:
"<cin>>cust[i].name;
cout<<"请输入客户订票数:
"<cin>>cust[i].ticketnum;
cout<<"请输入航班号:
"<cin>>cust[i].airnum;
cout<<"请输入订单标号:
"<cin>>cust[i].booknum;
cout<<"第"<<++g<<"个客户信息已经输入完毕。
按1继续,按0返回上级";
cin>>k;
if(k==0)
{
break;
}}}
}
voidcust_print()
{
inti;
if(g==0)cout<<"客户信息未输入,请管理员输入"<elsecout<<"证件号姓名订票数航班号订单标号"<for(i=0;i{
cout<}
}
voidkehu_print()/*用于客户个人信息输出,添加验证功能*/
{
inti,k=0;//控制变量k
charcustnum[20];/*证件号*/
charname[40];
if(g==0)cout<<"客户信息未输入,请管理员输入"<else
{
cout<<"为确保是顾客本人操作,请输入您的证件号和姓名验证"<cin>>custnum;
cout<<"请输入您的姓名:
"<cin>>name;
for(i=0;iif(strcmp(cust[i].custnum,custnum)==0&&strcmp(cust[i].name,name)==0)
{
cout<<"证件号姓名订票数航班号订单标号"<cout<k++;
}
if(k==0)cout<<"验证出错,请核对个人信息,系统自动返回上一界面"<}
}
voidsearch()
{/*根据用户的选择,根据不同的需求查找条件的
航线。
(如给定航班号,或者给定
起点城市和终点城市*/
inti,j=0,l;
charcity1[20],city2[20],num[20];
if(f==0)cout<<"航班信息未输入,请管理员输入"<else
{
for(l=0;l{
{
cout<<"请选择查找方式:
"<cout<<"1.按航班号查找"<cout<<"2.按出发到达城市查找"<cout<<"0.返回上一级"<}
cin>>i;
switch(i)
{
case0:
l=A;
break;
case1:
cout<<"请输入航班号:
"<cin>>num;
for(i=0;iif(strcmp(air[i].airnum,num)==0)//按航班号判断输出条件
{
cout<"<cout<<"航班号起始站终点站时间机票数"<cout<j++;
continue;
}
if(j==0)cout<<"查找失败,无此航线!
"<break;
case2:
cout<<"请输入出发城市:
"<cin>>city1;
cout<<"请输入到达城市:
"<cin>>city2;
for(i=0;i{
if(strcmp(air[i].set_off,city1)==0&&strcmp(air[i].get_to,city2)==0)//相等
{