飞机订票系统设计与实现 (里面附有源代码!)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计题目飞机订票系统
院系*******
专业***************
姓名******
学号*********
指导教师***
2012年7月
1. 需求分析
1.1 问题描述
基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票,退票以及航班的查询和修改等基本功能。本课程设计的题目为:飞机订票系统。
1.2 基本要求
1.2.1 输入的形式和输入值的范围
录入航班信息时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(float);还需要输入航班是否满仓,值为整型(int)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息)。
客户订票时,需要输入起飞抵达城市,然后选择航班进行查询,选择航班时需要输入航班号,值为字符串。
客户退票时,需要输入姓名,证件号进行退票操作,值为字符串。
查询某个航班的情况时,需要输入航班号,值为字符串;在查询某个航线的情况时,还可以通过输入起飞抵达城市来查询,值为字符串。
查询某个订单时,需要输入订单号,值为整型(int);或者需要输入客户姓名和证件号,值为字符串。
修改航班时,需要输入字符型数据选择进行何种修改操作;增加航班时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(float);还需要输入航班是否满仓,值为整型(int)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息);删除航班时,需要输入要删除的航班的航班号;修改航班时间时,需要输入要修改的航班的航班号,修改后的航班起飞时间和抵达时间。
1.2.2 输出形式
在所有操作后的输出中都显示操作是否正确以及操作后单链表的内容。其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。
录入航班情况时,输出显示添加航班信息是否成功。
客户订票时,当客户输入起飞抵达城市后,输出可供客户选择的航班信息;客户选择了航班后,输入提示信息告知用户订票是否成功。
客户退票时,输出客户退票成功或者无此客户,无法退票。
查询航班时,输出显示对应的航班信息,或者输出提示信息告知没有相应的航班信息。
查询订单时,输出显示对应的订单信息,或者输出提示信息告知没有相应的订单信息。
修改航班时,输出对应的提示的信息,提示操作是否成功。
1.2.3 功能要求
(1)可以录入航班情况,数据存储在一个数据文件中;
(2)可以查询某个航线的情况:输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓;输入起飞抵达城市,查询飞机航班情况;
(3)可以订票,订票情况存在一个数据文件中(如果该航班已经无票,提供相关可选航班);
(4)可退票并且退票后修改相关数据文件;
(5)客户资料:姓名,证件号,订票数量及航班情况,订单要有编号;
(6)修改航班信息,当航班信息改变可修改航班数据文件;
(7)要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
2. 概要设计
2.1 数据结构
(1)航班的信息:航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞时间、降落时间、起飞城市、抵达城市、航班票价、票价折扣、确定航
单链表如下:
每个结点包括数据域和指针域:
C语言描述如下:
typedef struct flightnode{
char air_num[10];//航班号
char start_time[15];//起飞时间
char end_time[15];//抵达时间
char start_place[20];//起飞城市
char end_place[20]; //降落城市
int left; //空座数
float price; //票价
float price_discount;//票价折扣
int isFull; //航班是否满仓
}flightnode;//航班结点
(2)客户的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元
每个结点包括数据域和指针域:
C 语言描述如下:
typedef struct passengernode{//定义客户资料结点 char name[20]; //姓名 char ID_num[20]; //证件号 char flight_num[10];//航班号 int order_num; //订单号 int ticket_num;
//订票数量
struct passengernode *next;//指向下一个结点 }passengernode;
(3)客户链表:每个数据元素包括头指针和尾指针两个数据项: 每个结点包括两个指针域:
C 语言描述如下:
typedef struct passengerList{ passengernode *head; passengernode *rear; }passengerList;
2.2 程序模块
2.2.1 录入航班信息模块
void add_flight(flightnode *&h)调用void insert_flight(flightnode *&h,char*
flight_num,char* start_place,char* end_place,char* start_time,char* end_time,int left,float price,float price_discount,int isFull)函数,将新航班结点插入航班链表中。
2.2.2 客户订票模块
int book(flightnode *&h,passengerList *&PList)函数调用int
insert_passenger(passengernode *&h,char *name,char *ID_num,char *flight_num,int ticket_num,int order_num)函数,将新客户结点插入客户链表中。