数据结构 程序设计 机票管理系统.docx
《数据结构 程序设计 机票管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构 程序设计 机票管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
![数据结构 程序设计 机票管理系统.docx](https://file1.bdocx.com/fileroot1/2023-4/17/891447e6-1b21-448f-95f0-ea4a3f64afa1/891447e6-1b21-448f-95f0-ea4a3f64afa11.gif)
数据结构程序设计机票管理系统
学号
天津城市建设学院
数据结构课程设计
设计说明书
机票管理系统
起止日期:
2011年12月12日至2011年12月16日
学生姓名
班级
成绩
指导教师(签字)
电子与信息工程系
2011年12月16日
天津城市建设学院
课程设计任务书
2011—2012学年第1学期
电子与信息工程系软件工程专业班级
课程设计名称:
数据结构课程设计
设计题目:
机票管理系统
完成期限:
自2011年12月12日至2011年12月16日共1周
设计依据、要求及主要内容(可另加附页):
一、设计目的
熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。
二、设计要求
(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;
(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。
凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;
(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;
(4)认真编写课程设计报告。
三、设计内容
机票管理系统
1)问题描述
一机场每天有n个航班,每个班次都有一班次号(1、2、3…n),固定的起飞时间,固定的路线(起始站、终点站),大致的飞行车时间,固定的额定载客量。
如
班次起飞时间起点站终点站飞行时间额定载量已定票人数
18:
00天津广汉2145130
26:
30天津成都0.5140140
37:
00天津成都0.5140120
410:
00天津成都0.5140120
…
试设计一个机票管理系统,对机场的售票情况进行管理。
2)基本要求
功能要求:
(1)录入班次信息(信息用文件保存),可不定时地增加班次数据;
(2)浏览班次信息,可显示出所有班次当前状况(如果当前系统时间超过了某班次的起飞时间,则显示“此班已发出”的提示信息)。
(3)查询路线:
可按班次号查询,可按终点站查询;
(4)售票和退票功能
A:
当查询出已定票人数小于额定载量且当前系统时间小于起飞时间时才能售票,自动更新已售票人数
B:
退票时,输入退票的班次,当本航班飞机未发出时才能退票,自动更新已售票人数。
一、需求分析
本课程设计的名称是机票管理系统,本系统主要是描述了机票管理的一些具体情况,包括录入航班、查询情况和订票以及退票,查询航班号是否存在,确定订票管理根据飞机的载量判断是否有剩余的载量,当载量小于飞机的载量可以订票,有特殊情况发生时会伴随着退票的发生。
这就是产生订票系统产生的原因。
二、问题求解
当我们遇到飞机订票这件事情的时候,我们通常发生的地点是飞机场,首先,我们应该到售票大厅去购买飞机票,因此,我根据我学过的C++中学过的函数定义,它相当于其他高级语言中的高级记录。
1
8:
00
天津
广汉
2
145
130
2
6:
30
天津
成都
0.5
140
140
3
7:
00
天津
成都
0.5
140
120
4
10:
00
天津
成都
0.5
140
120
首先就要查询是否有该路线的票,如果有的话则进行购买,即要通过把信息录入accept()方法来实现。
则要录入航班号(prn),起飞时间(qifei),飞行时间(shijian),起始站(from),终点站(to)等。
在查找chaxun()方法中,首先定义航班号*getprn指针,然后读入文件信息,输入要查询的航班号用指针查询,用strcmp()是用来比较字符串的大小,它的返回值是char类型。
用accept写入信息并存入文件passenger.txt,在读取dis()方法中,读取已有的航班,航班mainmune()输出。
订票时,首先应输入飞机航班号(cin>>prn),因为事先在列表里存储了四个航班信息,输入的订票数量。
根据订票的数量和载量做对比strcmp,如果小于载量就可以订票,则订票成功,返回"订票成功",返回是输出mainmune()。
退票时,首先输入航班号prn(),确认退票,就可以显示退票成功。
输出mainmune。
三、总体设计
1.程序设计组成框图
录入信息
浏览信息
查询路线
订票和退票
2.程序设计流程图
四、详细设计
1.根据订票管理系统的可设要求,要实现以下功能:
(1)录入:
录入航班情况
(2)查询:
根据航班号进行查询
(3)订票:
1)当有余票时显示剩余票数,则可以订票成功,如果没有载量,则订票失败。
2)当系统时间小于起飞时间的方法没有时间。
(4)退票:
1)当飞机没有起飞,则可以退票成功。
2.具体的方法及函数调用的思想:
(1)函数实现:
可以通过以下的声明来建立如图的数据类型
charprn[20];
charqifei[20];
charfrom[20];
charto[20];
charshijian[20];
charzailiang[20];
intpiaoshu;
{}里的变量依次表示为:
航班号,起飞时间,起始站点,终点站名,飞行时间,载量,已订票人数;
1
8:
00
天津
广汉
2
145
130
2
6:
30
天津
成都
0.5
140
140
3
7:
00
天津
成都
0.5
140
120
4
10:
00
天津
成都
0.5
140
120
3.方法的实现:
1)accept();//写入信息并存入文件
因为可设要求把数据存储在文件中,所以必须编写此保存方法,
写入实现方式:
ofstreamout("passenger.txt",ios:
:
app);//输出方式打开文件,写入数据添加在文件末尾
2)dis();//从文件读取信息并显示
read方法是用来读取airpline.txt文件中航班数据的,ios:
in以输入方式打开文件
保存("passenger.txt")目录下。
并且在目录里显示信息。
3)chaxun();//查询,按航班号来查询
根据已有的飞机信息来依据航班号信息来查询航班。
查询到并输出列表。
4)dingpiao();//订票函数
可以根据航班的载量来判定是否可以订票。
如果当查询出已定票人数小于额定载量,则可以订票,输出订票成功。
5)tuipiao();//订票函数
当订票的时候,首先要输入要订票的航班号,因此在这之后应读入在系统中的航班的航班号,航班有没有起飞做对比,则可以办理退票。
五、调试与测试
1.录入信息时
定义的是字符型,注意输入的时候不能输入别的类型。
否则不能识别。
2.系统时间小于起飞时间的功能没有实现
自己经过反复的试着把这功能实现,但是最后都是无功而返,经过同学咨询同学也模糊,由于我的类方法实现的,很难定义结构体时间函数,由于这个功能的缺陷,本人改编将系统的时间在主函数里定义,测试时候显示出来了
(
structtm*newtime;
chartmpbuf[128];
time_tlt1;
time(<1);
newtime=localtime(<1);
strftime(tmpbuf,128,"TODASY9月%d%A%H:
%M\n",newtime);
printf(tmpbuf);
),由于个人能力有限,时间有限,根据老师的要求最后决定是自己用C++实现的(本人操作实现)。
自己知道怎么实现的思路但是实际操作还是差点,另外在类中很难实现,但是要把这功能加上根据本人能力。
由于时间关系,这部分功能未能实现。
六、关键源程序清单和执行结果
1.源程序:
#include
#include
#include
#include
usingnamespacestd;
classAirplay//定义类
{public:
charprn[20];
charqifei[20];
charfrom[20];
charto[20];
charshijian[20];
charzailiang[20];
intpiaoshu;
public:
voidgetdetail()
{
cout<<"请输入航班号:
";
cin>>prn;
cout<<"请输入起飞时间:
";
cin>>qifei;
cout<<"请输入起点:
";
cin.ignore();
cin.getline(from,20);
cout<<"请输入终点:
";
cin.getline(to,20);
cout<<"请输入飞行时间:
";
cin>>shijian;
cout<<"请输入载量:
";
cin>>zailiang;
cout<<"请输入订票数:
";
cin>>piaoshu;
}
voiddisplay()
{
cout<<"航班号\t起飞\t起点\t终点\t飞行\t载量\t订票数"<}
voidprint()//显示信息
{
cout<}
char*getPrn()
{
returnprn;
}
};
voidmainmune()
{
cout<<"------------------------------------"<cout<<"***********机票管理系统*************"<cout<<"------------------------------------"<cout<<"1.)录入机票信息"<cout<<"2.)显示所有信息"<cout<<"3.)按航班号查询"<cout<<"4.)售票的功能"<cout<<"5.)退票的功能"<cout<<"6.)退出"<cout<<"pleasechoice:
"<}
voidaccept()//写入信息并存入文件
{
system("cls");
mainmune();
Airplayrai;
ofstreamout("passenger.txt",ios:
:
app);//输出方式打开文件,写入数据添加在文件末尾
rai.getdetail();
out.write((char*)&rai,sizeof(rai));
out.close();
}
voiddis()//从文件读取信息并显示
{
system("cls");
mainmune();
Airplayrai;
ifstreamin("passenger.txt");
rai.display();
while(in.read((char*)&rai,sizeof(rai)))
{
rai.print();
}
in.close();
}
voidchaxun()//按航班号查询
{
system("cls");
mainmune();
charprns[20];
Airplayrai;
cout<<"输入航班号:
";
cin>>prns;
fstreamfs("passenger.txt",ios:
:
in|ios:
:
out);
while(fs.read((char*)&rai,sizeof(rai)))
{
if(strcmp(prns,rai.getPrn())==0)
{
rai.display();
rai.print();
fs.close();
break;
}
}
}
voidshoupiao()//售票的功能
{
system("cls");
mainmune();
inti;
charj[20];
cout<<"要定的航班:
";
cin>>j;
cout<<"顾客订票数:
";
cin>>i;
system("cls");
mainmune();
Airplayrai;
ifstreamin("passenger.txt");
rai.display();
while(in.read((char*)&rai,sizeof(rai)))
{
if(strcmp(j,rai.getPrn())==0)
{
rai.print();
rai.piaoshu+=i;
}
}
cout<<"订票成功";
}
voidtuipiao()//退票的功能
{
system("cls");
mainmune();
charh[20];
cout<<"顾客退票的班次:
";
cin>>h;
system("cls");
mainmune();
Airplayrai;
ifstreamin("passenger.txt");
rai.display();
while(in.read((char*)&rai,sizeof(rai)))
{
if(strcmp(h,rai.getPrn())==0)
{
rai.print();
rai.piaoshu-=1;
}
}
cout<<"退票成功";
}
voidmain()//主函数
{
structtm*newtime;
chartmpbuf[128];
time_tlt1;
time(<1);
newtime=localtime(<1);
strftime(tmpbuf,128,"TODASY9月%d%A%H:
%M\n",newtime);
printf(tmpbuf);
intchoice;
while(true)
{
mainmune();
cin>>choice;
switch(choice)
{
case1:
accept();
break;
case2:
dis();
break;
case3:
chaxun();
break;
case4:
shoupiao();
break;
case5:
tuipiao();
break;
case6:
exit(0);
}
}
}
2.执行结果:
查询:
售票:
退票:
退出:
七、参考文献
1.王红梅.数据结构.清华大学出版社
2.王红梅.数据结构学习辅导与实验指导.清华大学出版社
3.严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社