1、C+课程设计概要扬州大学信息工程学院课程设计报告课程名称 C+课程设计 设计题目 航空公司在线订票系统 学生姓名 张格伟 班 级 网络1501 班 学 号 151305131 指导老师 严芬 2016年6月一、设计任务与要求制作一个订票系统,通过此系统可以实现如下功能: 1)浏览航线信息: 显示预先输入的航班信息; 2)查询: 可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况。 3)订票: 可以订票,如果该航班已经无票,可以提供相关可选择航班(订票情况可以存在一个数据文件中,结构自己设定)。 4)
2、退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。二、需求分析2.1 功能需求分析功能需求分析模块图如图2.2.1 功能模块图:图2.2.1 功能模块图2.2 系统需求分析开发环境:PC机Windows 8.1系统Visual C+ 6.0三、功能模块3.1 各模块的算法设计说明1浏览航线信息功能,调用display函数进行输出。2浏览已订票客户信息功能,按顺序输出客户信息链表中的信息。流程图如图3.1.1 浏览已订票客户信息功能流程图:图3.1.1 浏览已订票客户信息功能流程图3查询航线功能,根据客户提出的终点站名输出航线信息。流程图如图3.1.
3、2 查询航线流程图:图3.1.2 查询航线流程图4办理订票业务功能,根据客户提出的航线信息等进行订票。流程图如图3.1.3 办理订票业务功能流程图:图3.1.3 办理订票业务功能流程图5办理退票业务功能,根据客户提出的航线信息等进行退票。流程图如图3.1.4 办理退票业务功能流程图:图3.1.4 办理退票业务功能流程图6主函数流程图如图3.1.7 主函数流程图:图3.1.7 主函数流程图3.2 存储结构设计说明typedef struct wai_cli /*单链队列存储等候替补的客户信息*/ char name10; /*姓名*/ int req_amt; /*订票量*/ struct wa
4、i_cli *next; qnode,*qptr;typedef struct pqueue /*等候替补的客户名单*/ qptr front; /*等候替补客户名单域的队头指针*/ qptr rear; /*等候替补客户名单域的队尾指针*/linkqueue;上述单链队列用来存储排队等候的客户名单,这样可以通过队先进先出的特点来进行操作。先排队的客户可以先订票成功。typedef struct pas_list /*乘员名单*/ char name10; /*客户姓名*/ int ord_amt; /*订票量*/ int grade; /*舱位等级*/ struct pas_list *ne
5、xt;linklist;上述单链表用来存储乘员的信息,包括姓名、订票量、舱位等级。struct airline /*航线信息*/ char ter_name10; /*抵达城市*/ char air_num10; /*航班号*/char laughtime10; /*起飞时间*/ char arrivetime10; /*到达时间*/ char pri7; /*票价*/ int tkt_amt; /*乘员定额*/ int tkt_left; /*余票量*/ linklist *order; /*乘员名单域,指向乘员名单链表的头指针*/ linkqueue wait; /*等候替补的客户名单域,
6、分别指向排队等候名单队头队尾的指针*/lineinfo;这个结构体存储了航线信息,包括抵达城市、航班号、飞行时间、票价、乘员定额、余票量等。#define MAXSIZE 8 /*定义航线数量,可修改*/航线信息存储在“f1.txt”文件里,程序刚开始进行导入即可。四、源代码#include #include #include #include #include #include #define MAXSIZE 8 /*定义航线数量,可修改*/using namespace std;typedef struct wai_cli /*单链队列存储等候替补的客户信息*/ char name10;
7、/*姓名*/ int req_amt; /*订票量*/ struct wai_cli *next; qnode,*qptr;typedef struct pqueue /*等候替补的客户名单*/ qptr front; /*等候替补客户名单域的队头指针*/ qptr rear; /*等候替补客户名单域的队尾指针*/linkqueue;typedef struct pas_list /*乘员名单*/ char name10; /*客户姓名*/ int ord_amt; /*订票量*/ int grade; /*舱位等级*/ struct pas_list *next;linklist;struc
8、t airline char des_name10; /*抵达城市*/ char air_num10; /*航班号*/ char laughtime10; /*起飞时间*/ char arrivetime10; /*到达时间*/ char pri7; /*票价*/ int tkt_amt; /*乘员定额*/ int tkt_left; /*余票量*/ linklist *order; /*乘员名单域,指向乘员名单链表的头指针*/ linkqueue wait; /*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/lineinfo;struct airline *start;void
9、 display(struct airline *info) /*打印每条航线的基本信息*/ coutdes_namettair_numtlaughtimettarrivetimetprit tkt_amttt tkt_leftendl;void list() /*打印全部航线信息*/ struct airline *info; int i=0; info=start; coutendl; cout*N代表第二天endl; cout终点站名t航班号t起飞时间 到达时间t票价t乘员定额t余票量endl; while(iMAXSIZE) display(info); /*调用display函数来输
10、出*/ info+; i+; coutendlendl;void search() /*根据客户提出的终点站名输出航线信息*/ struct airline *info,*find(); char name10; /*要抵达的城市名称*/ int i=0; info=start; coutname; while(ides_name) /*有该站名strcmp则返回,if(!0)即break*/ break; info+; i+; if(i=MAXSIZE) /*没有匹配的航线*/ cout对不起,没有这条航线!endl; else cout终点站名t航班号t起飞时间 到达时间t票价t乘员定额t
11、余票量endl; display(info); /*调用display函数输出航线信息*/ struct airline *find() /*根据系统提出的航班号查询并以指针形式返回*/ struct airline *info; char number10; /*查询的航班号*/ int i=0; info=start; coutnumber; while(iair_num) /*有匹配航班*/ return info; info+; i+; /*无匹配航班*/ cout对不起,没有这条航线!order; if(p!=NULL) /*按顺序输出客户信息链表*/ cout客户姓名 订票数额 舱
12、位等级endl; while(p) coutnamet ord_amtttgradenext; else /*没有人订这个航班*/ cout该航线没有客户信息!endl;linklist *insertlink(linklist *head,int amount,char name,int grade) /*增加订票乘员名单域的客户信息*/ linklist *p1,*new1; p1=head; new1=(linklist*)malloc(sizeof(linklist); if(!new1) /*存储空间不足*/ coutendlOut of memory!name,name); new1-ord_amt=amount; new1-grade=grade; new1-next=NULL; head=new1; new1-next=p1;return head;linkqueue appendqueue(linkqueue q,char name,int amount) /*增加排队等候的客户名单域*/ qptr new1; new1=(qptr)malloc(sizeof(qnode); strcpy(new1-name,name); new1-req_amt=amount; new1-next=NULL; if(q.front=
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1