1、 本科生课程设计报告书本科生课程设计报告书 题题 目目 航空客运订票系统航空客运订票系统 姓姓 名名 学学 号号 学学 院院 信息工程学院信息工程学院 专专 业业 计算机计算机 指导教师指导教师 XXXXXXXXXXXX 完成日期:完成日期: 2012-XX-XX 航空客运订票系统航空客运订票系统 1 需求分析需求分析 【问题描述】 试设计一个航空客运订票系统,方便乘客通过购票系统购买自己的所需要的飞机票, 而航空客运订票的业务活动包括:1查询航线;2客票预订;3办理退票。 【系统能实现的功能】 录入:由设计者录入航班情况,数据存储在文件中; 查询航线:由用户输入终点站名,出发时间,输出下列信
2、息: 所有可能的航班号,当天航班的余票数目; 承办订票业务:根据用户提出的要求(航班号、出发时间、订票数额)查询 该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;已满员或余票额少 于订票额,则需重新询问客户是否需要进入预约人数中。 承办退票业务:根据用户提供的情况(日期、航班、票数等),为客户办理 退票手续。然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票数目 能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。 【测试实例】 例子某客户输入订票信息:北京到上海 ,2014 年 5 月 3 日,所需票数 3 张;系统输 出:所有可能航班号 1000
3、,1001,1002 余票分别为 40 张,50 张,55 张;该客户选择航 班号为 1000 的航班;则该航班余票变为 37 张; 2 概要设计概要设计 航线的情况和已订票客户登录在一张线性表上,分别用顺序表和单链表实现; ADT list 数据对象 :D = ai | ai ElemSet,i = 1,2,n,n=0 查询航线 选择定票 办理退票 登陆系统 退出系统 数据关系 :R1 = |ai-1,aiD,i = 2, ,n 基本操作 : InitList70219( 初始条件:队列 Q 已存在,且非空; 操作结果:取队列的队头元素,用 e 返回; 航空系统用到的其他的函数: void
4、entry70219(); 操作结果:初始化录入功能 void search70219(); 初始条件:初始化录入成功 操作结果:通过始发地和终点站查询 void book70219(); 初始条件:初始化录入成功 操作结果:实现订票 void returnticket70219(); 初始条件:已经成功预订机票; 操作结果:实现退票; int main() int n; do /主界面 printf(“n 欢迎使用航空客运订票系统n“); printf(“n=1. 录入功能 =n“); printf(“n=2. 查询功能 =n“); printf(“n=3. 订票功能 =n“); print
5、f(“n=4. 退票功能 =n“); printf(“n=5. 退出 =n“); scanf(“%d“, printf(“n“); switch(n) case 1: entry70219();/录入功能 break; case 2: search70219();/查询功能 break; case 3: book70219();/订票功能 break; case 4: returnticket70219();/退票功能 break; default :exit(0);/退出 while(n=1|n=2|n=3|n=4); return 0; 3 详细设计 已订票客户的单链表存储结构 typed
6、ef struct booked char name20;/订票客户姓名 int bookednum;/该客户已订票数 struct booked *next_1;/指向下一客户的 booked,*LinkList; 预约客户的队列存储结构 typedef struct yuyue char name20;/预约客户姓名 int yuyuenum;/该客户预约票数 struct yuyue *next_2;/指向下一客户的 yuyue,*Qnode; typedef struct Qnode front;/队头指针 Qnode rear;/队尾指针 LinkQueue; 每条航线是这张表上的一个记录,包含 8 个域、其中乘员名单域为指向乘员名单链表 的头