飞机订票系统 第1页 共30页
飞机订票系统
学生姓名:兰海军 指导老师:易禹
摘 要 本系统主要是为了方便用户飞机订票,能使用户方便快捷的了解各航线信息。本系统设置了航线创建功能、浏览航班信息和查询航线信息功能、订票退票功能及查看剩余票数功能。在该系统当中,系统开发平台是Windows XP,程序设计设计语言采用Visual C++,数据库采用Microsoft Access,程序运行平台为Windows XP。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以在应用中解决实际问题。
关键词 Access;Visual C++;飞机订票
目录
1问题描述与分析...................................... 2 2数据结构设计描述 .................................... 3 3软件结构设计(系统功能模块图) ....................... 3 4算法设计思想 ....................................... 3 5调试分析 ........................................... 6 6总结 .............................................. 12 7参考文献 .......................................... 13 8附录(源程序清单) ................................. 14
飞机订票系统 第 2 页 共 30 页
1问题描述与分析
飞机订票系统要求可以实现如下功能:可以录入航班情况,可以查询某个航线的情况,如输入飞机到达城市,查询飞机航班情况;可以订票、退票。从问题的描述分析,该飞机定票系统必须具备以下几个功能模块:
1) 航线创建功能模块:包括终点站名、航班号、分机号、飞行日期、乘员定额、及余票量,准载人数等信息.。
2) 浏览航班信息功能模块:查看创建的所有航线信息。
3) 查询航线信息功能模块:可通过航班号查询,也可通过飞机到达地点查询。 4) 订票功能模块:包括航班号、定票数量、订票客户姓名、舱位等级、身份证号码。
5) 退票功能模块:不满意所订的票时可进行退票,退票时需输入订票客户的姓名。 5) 查看剩余票数功能模块:对剩余用户可以订的票的数量进行查询并排序,便于其他用户订票。
7) 退出系统功能模块:退出系统。
所以采用如下方案: 1) 本系统以菜单方式工作
2) 航线创建功能,我们定义了一个结构体Plane作为所有信息的录入单元且其录入的相应信息应是以Plane作为数据单元进行存储的,然后对该创建的链表调用insert()函数,存储到数据文件中去.采用链表作为存储结构功能的实现--输入;
3) 订票功能模块中我们应对乘客需要订的航班进行查找,看是否可以满足乘客所需的票,若可以则为乘客订票,并修改相应航班的剩余票数,退票功能模块则应查询机票数据文件,先用指针在文件中找到相应的要退的票,即把该订票单元结构体删除并修改退票航班的剩余票数即可;
4) 航班信息和订票信息的查看功能--输出查询航班(按航班号或抵达城市查询)
2
飞机订票系统 第 3 页 共 30 页
2数据结构设计描述
本程序我采用了结构体,线性表存储,文件和链表存储结构。
3软件结构设计(系统功能模块图)
图3-1整体结构框图
4算法设计思想
4.1. 数据类型定义
调用头文件,定义文件指针 #include
3
飞机订票系统 第 4 页 共 30 页
{ char name[10];/*姓名*/ char ID[18];/*身份证号*/ int req_amt;/*订票量*/ struct wat_ros *next;
}qnode,*qptr; //定义结构体指针变量 void main();
void insert(); //添加航班信息函数 航班的基本信息其数据结构为: struct airline
{ char ter_name[10];/*终点站名 */ char air_num[10];/*航班号*/ char plane_num[10];/*飞机号*/ char date[7];/*飞行日期(星期几)*/ int tkt_amt;/*乘员定额*/ int tkt_sur;/*余票量*/
linklist *order;/*乘员名单域,指向乘员名单链表的头指针*/
linkqueue wait;/*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/
}lineinfo;
3) 定义定票的乘客基本信息
typedef struct ord_ros { char name[10];/*客户姓名*/ char ID[18];/*身份证号*/ int ord_amt;/*订票量*/ int grade;/*舱位等级*/ struct ord_ros *next; }linklist;
4.2. 主要模块内部设计(我主要负责录入模块和修改模块)_
4.2.1、录入航班信息模块(创建链)
4
飞机订票系统 第 5 页 共 30 页
1) 本模块是对程序中的insert()函数的详细说明——链表的存储结构,存储到数据单链表中去,
该模块的算法如下: void insert() {
for (int i=0;i printf(\请输入航班%d信息(共%d条):\ scanf(\num,(air+i)->date,&(air+i)->tkt_amt,&(air+i)->tkt_sur); } 4.2.2、查看和查询航班信息模块 由于航班的录入和保存是由链表存储结构进行的,并且是保存在单链表中,所以此查询就可通过链表查询,在查看便是将其文件中所有的航班信息进行输出,而查询我们可根据航班号和航班抵达的城市匹配查看,在查询中将需要查询的航班号和文件阅读时指针所指的值进行比较,从而匹配输出; 4.2.3 订票模块 先根据数据定义进行订票时信息的输入,在定票时应先按乘客想要定的航班号或者抵达城市查询,并按乘客欲定的票的数目与查询数目进行比较,若此比较结果大于或等于0,则输出乘客可以定票,在修改航班信息中该航班的数量,且在整个定票系统中,所有的定票都用链表进行存储管理; 4.2.4退票模块 在退票系统中即对航班票的数据文件进行管理,所以可先按照查询航班票的方法,若查询到的票的信息和乘客此时要求退票的信息相匹配,则删除相应的该票的节点,再修改其航班信息; 5