航空客运订票系统
姓名:XXX 班级:XXXX 学号:XXXXXXXXX
目录
TOC \o "1-5" \h \z 一、问题描述 ..1
二、设计要求…??1
\o "Current Document" 三、数据结构设计??2
\o "Current Document" 四、详细设计程序??3
五、运行与测试…… 9
六、收获及体会 ??13
一、问题描述
设计一个航空客运订票系统,为乘客提供各种航空客运信息服务。
二、设计要求
每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日(星期几)、乘员定额、 余票量、已订票的客户名单(包括姓名、订票量、舱位等级 1, 2或3)以及等候替补的客户 名单(包括姓名、所需票量);
系统能实现的操作和功能如下:
a)查询航线:
根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的
日期和余票额;
b)承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户
办理订票手续,
输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。若需要,可登记排
队候补;
c)承办退票业务:
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队 候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则 依次询问其他排队候补的客户。
三、数据结构设计
a)等候替补的客户名单(包括姓名、所需票量)
typedef struct wat_ros
{ char name[10];/* 姓名 */
int req_amt;/* 订票量 */
struct wat_ros *n ext;
}qno de,*qptr;
typedef struct pqueu
{ qptr front;/*等候替补客户名单域的头指针*/
qptr rear;/*等候替补客户名单域的属指针*/
}li nkqueue;
b) 订票的客户名单(包括姓名、订票量、舱位等级1,2或3)
typedef struct ord_ros
{ char name[10];/* 客户姓名 */
int ord_amt;/* 订票量 */
int grade;/* 舱位等级 */
struct ord_ros *n ext;
}li nklist;
C)每条航线所涉及的信息:终点站名、航班号、飞机号、飞行日(星期几) 、乘员定额、余 票量、已订票的客户名单、以及等候替补的客户名单
struct airli ne
{ char zong_name[10];/* 终点站名 */
char air_num[10];/* 航班号 */
char plane_num[10];/* 飞机号 */
char date[7];/*飞行日期(星期几)*/
int tkt_amt;/* 乘员定额 */
int tkt_sur;/* 余票量 */
linklist *order;/*乘员名单域,指向乘员名单链表的头指针*/
linkqueue wait;/*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/
}li nei nfo;
四、详细设计程序
主函数:
int menu _select()
/*菜单界面*/
{ int c;
char s[20];
prin tf("\n\t\t航空客运订票系统\n");
prin tf("******************************************\n");
printf(”
1.
浏览航线信息\n");
printf(”
2.
浏览已订票客户信息
\n")
printf(”
3.
查询航线\n");
printf(”
4.
办理订票业务\n");
printf(”
5.
办理退票业务\n");
printf(”
6.
查看剩余票数并排序
\n")
prin tf("
0.
退出系统\n");
prin tf("*******************************************\n")?
do{
printf(" 请选择:”);
scan f("%s",s);
c=atoi(s);
}while(c<0||c>7);
return c;
}
void mai n()
{
start=air;
for(;;)
{
switch(me nu _select())
{
case 1:list();break;
case 2:prtli nk();break;
case 3:search();break;
case 4:order();break;
case 5:retur n_tkt();br