文章目录
- 一、系统简介
- 1、业务活动
- 2、操作和功能
- 二、系统功能模块图
- 1、系统功能模块图
- 2、函数功能模块
- 三、详细描述
- 1、数据结构
- 2、设计思路
- 四、运行结果
- 1、查询所有航班
- 2、根据起点终点搜索航班
- 3、订票
- 4、退票
- 5、管理员添加航班
- 6、管理员删除航班
- 五、课程设计总结
- 1、 系统中实现哪些功能,哪些特点?
- 2、系统不足有哪些?
- 六、源代码
一、系统简介
1、业务活动
航空客运订票的业务活动包括:查询航班、搜索航班、订票、退票和插入和删除等。每条航线所涉及的信息有:起点、终点、编号、飞机号、飞行日期、总载客、余票量、1级余量和2级余量。
2、操作和功能
①查询航班:直接打印出所有航班飞行的信息(起点、终点、编号、飞机号、飞行日期、总载客、余票量、1级余量和2级余量),方便客户订票或者退票。
②搜索航班:根据乘客提供的起点站和终点站,输出对应信息的航班,方便乘客订票,以及排队等候订票。
③订票:
(1)订票功能:输入航班编号,需要定的票数,你想要定的舱位等级,姓名身份证号,星期几这些信息,如果该飞机该舱位还有空余,则订票成功,并输出乘客所有的机位。如果位置不够,就输出该航班的订票情况,并且询问客户是否改变计划,选乘其他航班。
(2)由起点和终点搜索航班:根据乘客输入的起点和终点站信息,输出对应航班的信息。
(3)搜索所有航班:打印出所有航班的信息。
(4)由编号查询航班:根据乘客输入的航班编号,输出该航班的信息。
(5)返回上一级。
④退票:
(1)办理退票:由乘客输入的姓名,身份证号,以及飞行的日期,若输入的信息完全对应,则退票成功。否则输出信息不正确。
(2)返回上一级。
⑤录入和删除:
(1)录入:输入航班信息(起点、终点、编号、飞机号、飞行日期、总载客、余票量、1级余量和2级余量),若该航班不存在,则插入航班链表,若航班已经存在,就输出信息不正常。
(2)删除:直接输入航班编号,若存在就直接删除,若不存在则提示不存在该航班。
(3)返回上一级。
二、系统功能模块图
1、系统功能模块图
2、函数功能模块
- 函数包含关系
- 函数注解
主函数包含函数
①initFlight(); 初始化一个航班链表。
②Create(Phangban flight1); 将flight1中的信息全部录入到链表中。
③menu(); 主菜单页面(1.查询航班。2.搜索航班。3.订票。4.退票。5. 录入与删除)。
Create函数包含函数
①strcpy(char a,char b); 将flight中的信息复制到链表。
②initCusLinkList(CList &cusLinkList); 初始化已订票乘客指针链表,方便存入链表。
③initQueue(LinkQueue &q); 初始化带头结点的链队列,便于排队侯票预定。
菜单函数包含函数
①printfall(pFlight); 打印出全部航班信息(起点、终点、编号、飞机号、飞行日期、总载客、余票量、1级余量和2级余量)。
②sousuoFace(); 搜索界面(1.搜索航班。2.返回上一级)。
③dingpiaoFace(); 订票界面(1.订票。2.由起点和终点搜索航班。3.搜索所有航班。4.通过航班编号查询客户。5.返回上一级)。
④tuipiaoFace(); 退票界面(1.办理退票。2.返回上一级)。
⑤charushanchuFace(); 插入和删除新节点界面(1.增加航班。2.删除航班。3.返回上一级)。
查询界面函数包含
①printfall(hangban *pflight); 直接输出内存中全部函数信息。
搜索界面函数包含
①sousuoflight(); 通过输入起点和终点站信息,搜索出对应航班信息。
订票界面函数包含
①dingpiao(); 输入你想要定的航班编号,以及你的个人信息,若对应航班还有剩余,则订票成功。若没有剩余,推荐定其他航班或者进入预定队列。
②sousuoflight(); 根据乘客输入的起点和终点搜索对应航班,并打印出来,方便看机位是否还有剩余。
③printfall(pFlight); 打印出全部航班信息。
④pricusInfo(); 输出已经订购该航班的乘客的姓名,身份证号,以及订票等级。
退票界面函数包含
①tuipiao(); 退票功能,通过对比乘客输入的姓名,身份证号,飞行日期,判断是否为该编号飞机的乘客,若对比正确,则可以退票,对应的订票乘客链表删除该信息。
插入删除界面函数包含
①zengjiaFlight(); 增加航班函数,增加航班信息(起点、终点、编号、飞机号、飞行日期、总载客、余票量、1级余量和2级余量)。
②shanchuFlight(); 删除航班函数,输入想要删除的编号,若该航班存在,直接将航班链表该航班删除。
其他函数
①initCusLinkList(CList &cusLinkList); 初始化已订票乘客指针链表。
②initQueue(LinkQueue &q); 初始化带头结点的链队列,队列便于插入预定客户。
③hangban *find(); 输入一个航班编号,查询航班是否存在,若存在就将信息通过结构体指针返回。
④CList addlink(CList &head, int need, char name[], char id[],char day[],int grade); 将订票的客户的订票数量,姓名,身份证号,飞行日期以及订票等级增加到已经订票的用户链表中。
⑤fightinfo(hangban *p); 输出p节点的航班信息(起点、终点、编号、飞机号、飞行日期、总载客、余票量、1级余量和2级余量)。
⑥LinkQueue enqueue(LinkQueue &q, char name[], int need, char id[]); 将排队等候订票的乘客名字已及身份证号入队。
⑦int duibiFlight(hangban *flight, char ID[]); 对比航班的编号,避免增加时重复。
三、详细描述
1、数据结构
typedef struct CNode {char name[20];//姓名int num;//订票数 char ID[20];//身份证char day[20];//飞行日期int dengji;//舱等级CNode *next;
} CNode, *CList;//乘客节点typedef struct HbNode {char name[20];//姓名char ID[20]; //身份证int num;//预定数量 struct HbNode *next;
} QhbNode, *Phb;//候补队列中的节点typedef struct Queue {Phb front;//等候替补客户名单域的头指针Phb rear;//等候替补客户名单域的尾指针
} LinkQueue;//候补队列typedef struct Cxinxi{char name[20];//姓名char ID[20]; //身份证char day[20];int num;//订票量
} Cxinxi;//封装乘客的姓名和订票量和身份证,用于候补客户出队时把关键字返回 typedef struct hangban {char qidian[20];//起点站名char zhongdian[20];//终点站名char hbID[20];//航班编号 char hbnum[20];//飞机号char day[20];//飞行日期(星期几)int maxnum;//总票数int less;//总余票量int lessgrade1; //等级1剩余量int lessgrade2; //等级2剩余量hangban *next;CList cusLinkList;//乘员名单域,指向乘员名单链表的头指针LinkQueue wQgrade1;//等级1候补,等候替补的客户名单域,指向一个队列LinkQueue wQgrade2;//等级2候补,等候替补的客户名单域,指向一个队列
} hangban, hangbanNode, *Phangban;//航班节点
2、设计思路
四、运行结果
1、查询所有航班
2、根据起点终点搜索航班
3、订票
4、退票
5、管理员添加航班
6、管理员删除航班
五、课程设计总结
1、 系统中实现哪些功能,哪些特点?
1.查询所有的航班信息,并打印出来。
2.输入起点站和终点站,能够准确找到对应的所有航班,并输出这些航班所有的信息。
3.订票功能
(1)通过输入您想要订购的航班编号,若还有空位,输入你的个人信息(姓名,身份证号,订票等级,订票数量,飞行时间),就可以成功订票,对应航班空位减少。若没有空位,可以向你推荐订购其他航班,或者进入预定队列中,有空位置时就可以订票。
(2)由起点和终点搜索航班。
(3) 搜索所有的航班信息,将所有航班信息答打印出来。
(4)通过输入航班的编号输出所有已经定购这个航班的用户信息。
4.退票功能:通过输入订单编号,并且输入你的个人信息(姓名,身份证号,飞行日期),若存在该用户订购该航班,就可以退票。若不存在订购该航班,返回错误。
5.增加和删除航班:
(1)增加航班节点:先输入航班编号,经过对比函数对比,已经存在该航班就返回错误。不存在就可以输入节点信息(起点、终点、编号、飞机号、飞行日期、总载客、余票量、1级余量和2级余量),插入到已经订票客户链表之中。
(2)删除航班节点:输入想要删除的航班编号,若存在就直接从链表中删除,不存在就返回错误。
2、系统不足有哪些?
1.航班信息直接存在内存中,增加或者删除航班不方便。
2.不能批量增加或删除航班信息或者已经订票客户信息。
3.不能自动为顾客提供相同航线的不同机次的航班,只能通过顾客自己查询。
4.候补时没有询问排在前面的顾客是否满足该航班,是否订购错误,而是直接将候补人员插在队尾。
六、源代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>typedef struct CNode {char name[20];//姓名int num;//订票数 char ID[20];//身份证char day[20];int dengji;//舱等级CNode *next;
} CNode, *CList;//乘客节点typedef struct HbNode {char name[20];//姓名char ID[20]; //身份证int num;//预定数量 struct HbNode *next;
} QhbNode, *Phb;//候补队列中的节点typedef struct Queue {Phb front;//等候替补客户名单域的头指针Phb rear;//等候替补客户名单域的尾指针
} LinkQueue;//候补队列typedef struct Cxinxi{char name[20];//姓名char ID[20]; //身份证char day[20];int num;//订票量
} Cxinxi;//封装乘客的姓名和订票量和身份证,用于候补客户出队时把关键字返回 typedef struct hangban {char qidian[20];//起点站名char zhongdian[20];//终点站名char hbID[20];//航班编号 char hbnum[20];//飞机号char day[20];//飞行日期(星期几)int maxnum;//总票数int less;//总余票量int lessgrade1; //等级1剩余量int lessgrade2; //等级2剩余量hangban *next;CList cusLinkList;//乘员名单域,指向乘员名单链表的头指针LinkQueue wQgrade1;//等级1候补,等候替补的客户名单域,指向一个队列LinkQueue wQgrade2;//等级2候补,等候替补的客户名单域,指向一个队列
} hangban, hangbanNode, *Phangban;//航班节点void initFlight(); //初始化航班链表
hangban *find(); // 输入编号返回对应信息
int initQueue(LinkQueue &q);//初始化队列
int initCusLinkList(CList &cusLinkList);//初始化订票乘客链表
CList addlink(CList &head, int need, char name[], char id[],char day[], int grade);
//将订票成功的乘客节点加入到已订票链表
void sousuoflight();//由起点终点搜索航班
void pricusInfo();//输出已经订票的函数
void dingpiao();// 订票函数
void fightinfo(hangban *p);//输出对应节点信息
LinkQueue enqueue(LinkQueue &q, char name[], int need, char id[]);
//将等待的客户入队
void tuipiao();// 退票
void sousuoFace();// 搜索界面
void dingpiaoFace();// 订票界面
void tuipiaoFace(); //退票界面
void printfall(hangban *pflight);//打印全部航班信息
int menu();// 菜单界面函数
void charushanchuFace(); //插入和删除
int zengjiaFlight();//增加航班
int shanchuFlight();// 删除航班
void sousuoFlight();//由起点和终点搜索对应航班
int Create(Phangban flight1);//将航班信息插入到链表中
int duibiFlight(hangban *flight, char flightCodeID[]);
// 对比插入航班标号,防止标号重复 hangban *pFlight;//全局节点变量 //初始输入的航班信息
hangban flight1[16] = {{"上海", "北京", "1", "A1111", "星期一", 200, 200, 90},{"北京", "武汉", "2", "B8942", "星期三", 200, 200, 100},{"武汉", "广州", "3", "C5465", "星期六", 200, 200, 100},{"广州", "福州", "4", "D5645", "星期五", 200, 200, 100},{"福州", "长沙", "5", "E4986", "星期一", 200, 200, 100},{"长沙", "杭州", "6", "F6545", "星期四", 200, 200, 100},{"杭州", "郑州", "7", "G3993", "星期二", 200, 200, 100},{"郑州", "南京", "8", "H6533", "星期一", 200, 200, 100},{"南京", "西安", "9", "I9662", "星期五", 200, 200, 100},{"西安", "重庆", "10", "J8526", "星期日", 200, 200, 100},{"重庆", "成都", "11", "K6863", "星期二", 200, 200, 100},{"成都", "昆明", "12", "L6666", "星期天", 150, 80, 80},{"昆明", "贵阳", "13", "M6546", "星期三", 100, 100, 40},{"贵阳", "厦门", "14", "N6562", "星期六", 200, 200, 100},{"厦门", "南宁", "15", "K9896", "星期三", 200, 200, 100},{"南宁", "北京", "16", "B8665", "星期一", 200, 100, 100},};void initFlight()// 初始化航班链表{pFlight = (hangban *) malloc(sizeof(hangban));if (pFlight == NULL) exit(0);pFlight->next = NULL;
}int Create(Phangban flight1)// 将已有航班信息插入链表 {hangban *p = pFlight, *q;for (int i=0; i < 16; i++) {q = (hangban *) malloc(sizeof(hangban));if (q == NULL)return 0;strcpy(q->qidian, flight1[i].qidian);//利用链表把每个信息录入 strcpy(q->zhongdian, flight1[i].zhongdian);strcpy(q->hbID, flight1[i].hbID);strcpy(q->hbnum, flight1[i].hbnum);strcpy(q->day, flight1[i].day);q->maxnum = flight1[i].maxnum;q->less = flight1[i].maxnum;q->lessgrade1 = flight1[i].lessgrade1;q->lessgrade2 = flight1[i].maxnum - flight1[i].lessgrade1;initCusLinkList(q->cusLinkList); //初始化已经订票乘客链表initQueue(q->wQgrade1);// 将两种等级的票入队 ,方便后面预定排队 initQueue(q->wQgrade2);q->next = p->next;p->next = q;}return 1;
}int initCusLinkList(CList &cusLinkList)//初始化已订票乘客指针链表
{CList q = cusLinkList;cusLinkList = (CNode *) malloc(sizeof(CNode));cusLinkList->next = NULL;
}int initQueue(LinkQueue &q)//初始化带头结点的链队列
{QhbNode *p;p = (QhbNode *) malloc(sizeof(QhbNode));if (p == NULL) {printf("内存不足\n");return 0;}p->next = NULL;q.front = q.rear = p;//队空 return 1;
}void sousuoflight() //有起点和终点搜索对应航班
{char qidian[10];char zhongdian[10];int flag = 0;printf("请输入起点站名:");scanf("%s", qidian);printf("请输入终点站名:");scanf("%s", zhongdian);struct hangban *p;p = pFlight->next;printf("起点 终点 编号 飞机号 飞行日期 总载客 余票量 1级余量 2级余量 \n");while (p != NULL) {if ((strcmp(qidian, p->qidian) == 0) && (strcmp(zhongdian, p->zhongdian) == 0) )
// 对比输入的起点和终点,推荐航班 {flag = 1;printf("%4s %4s %2s %5s %8s %5d %5d %6d %4d\n",p->qidian,p->zhongdian,p->hbID,p->hbnum, p->day,p->maxnum, p->less, p->lessgrade1, p->lessgrade2);}p = p->next;}printf("\n\n");if (flag == 0)printf("不存在该航班! \n");
}void dingpiao() // 订票函数
{struct hangban *info;int need, grade;int num;//剩余的等级1数目或者等级2数目char name[20];char id[20];char day[20];info = find();//输入想订的航班,看是否还有空位置,并返回复制节点 if (info == NULL){printf("不存在该航班!\n");dingpiao();}printf("请输入您想要定得票数:");scanf("%d", &need);if (need <= 0 ) {printf("请输入您想要定得票数:");scanf("%d", &need);}printf("请输入您的票的舱位等级(1或2):");scanf("%d", &grade);if (grade == 1)num = info->lessgrade1;elsenum = info->lessgrade2;if (need <= num) //订票数小于剩余数 {int i;printf("请输入您的姓名:");scanf("%s", name);printf("请输入您的身份证号码:");scanf("%s", id);printf("请输入你的飞行周期:");scanf("%s",day); CList head = info->cusLinkList; addlink(head, need, name, id,day,grade);//订票成功,插入成员名单链表for (i = 0; i < need; i++)printf("%s 的座位号是: %d\n", name, info->maxnum - info->less + i + 1);info->less -= need;if (grade == 1)info->lessgrade1 -= need;elseinfo->lessgrade2 -= need;printf("\n订票成功!\n");} else{char r;printf("该等级的票不足,以下为该航班乘客信息\n");fightinfo(info);//输出该航班的订票信息 printf("是否改变订票计划?Y/N\n");r = getch();printf("%c", r);if (r == 'Y' || r == 'y') //改变计划,重新选择航班{dingpiao();//返回订票主页面 } else {printf("\n您需要排队等候吗?(Y/N)");r = getch();printf("%c", r);if (r == 'Y' || r == 'y') {//不改变计划,排队候票printf("\n请输入您的姓名(排队订票):");scanf("%s", name);printf("\n请输入您的身份证(排队订票):");scanf("%s", id);if (grade == 1) //进入1等舱排队队列{info->wQgrade1 = enqueue(info->wQgrade1, name, need, id);} else //进入2等舱排队队列{info->wQgrade2 = enqueue(info->wQgrade2, name, need, id);}printf("\n排队成功!\n");} }}}hangban *find()//根据自己输入的航班标号查询是否存在并返回节点
{char number[10];int i = 0;printf("请输入航班编号: ");scanf("%s", number);hangban *p = pFlight->next; //头结点的下一个节点开始遍历while (p != NULL) {if (!strcmp(number, p->hbID))return p;p = p->next;}return NULL;
}CList addlink(CList &head, int need, char name[], char id[],char day[],int grade)
//插入到已经订票客户链表
{CList new1;//创建一个新节点 new1 = (CNode *) malloc(sizeof(CNode));if (new1 == NULL) {printf("\n内存不足\n");return NULL;}strcpy(new1->name, name);strcpy(new1->ID, id);strcpy(new1->day,day);new1->num = need;new1->dengji = grade;new1->next = head->next;//头插入法加入成员名单域head->next = new1;return head;
}void fightinfo(hangban *p)//输出p节点的航班信息
{printf("起点 终点 编号 飞机号 飞行日期 总载客 余票量 1级余量 2级余量 \n");printf("%4s %4s %2s %5s %8s %5d %5d %6d %4d\n",p->qidian,p->zhongdian,p->hbID,p->hbnum, p->day,p->maxnum, p->less, p->lessgrade1, p->lessgrade2);printf("\n\n");}LinkQueue enqueue(LinkQueue &q, char name[], int need, char id[])
//入队,增加排队等候的客户名单域
{Phb new1;new1 = (Phb) malloc(sizeof(QhbNode));strcpy(new1->name, name);strcpy(new1->ID, id);new1->num = need;new1->next = NULL;q.rear->next = new1;q.rear = new1;return q;
}void tuipiao() //退票功能
{struct hangban *info;int grade;CNode *p1, *p2, *head;//p1为遍历指针,p2指向p1的前驱char name[20];//客户姓名char id[20];//客户身份证char day[20];info = find();//复制节点信息给info,find函数根据航班编号返回该航班节点的指针while (info == NULL){printf("没有这个航班, 请重新输入\n");tuipiao();}head = info->cusLinkList;//head为该航班的的乘员名单域的头指针p1 = head->next; //带头结点的指针,head->next 开始遍历printf("请输入你的姓名: ");scanf("%s",name);printf("请输入你的身份证号码: ");scanf("%s", id);printf("请输入飞行周期: ");scanf("%s",day);p2 = head;//根据客户姓名搜索客户是否订票while (p1 != NULL) {//对比姓名和身份证 if ((strcmp(name, p1->name) == 0) && (strcmp(id, p1->ID) == 0)&&(strcmp(day, p1->day) == 0)) break;p2 = p1;p1 = p1->next;}if (p1 == NULL) {printf("对不起,你没有订过票或姓名和身份证,与飞行周期不对应\n");return;} else {//退票成功//从乘客名单域中移除该节点grade = p1->dengji;p2->next = p1->next;//加回该航班的剩余票info->less += p1->num;if (grade == 1) {info->lessgrade1 += p1->num;} else {info->lessgrade2 += p1->num;}printf("%s 成功退票!\n", p1->name);free(p1);}
}void charushanchuFace()//插入删除节点函数
{int a2;printf("\n");printf("\n");printf("\n");printf("\n");printf(" 插入与删除\n");printf("***********************************************************\n");printf(" 1.增加航班 \n");printf(" 2.删除航班 \n");printf(" 3.返回上一级 \n");printf("***********************************************************\n");printf(" 请输入你要办理的业务:");scanf("%d", &a2);switch (a2) {case 1:zengjiaFlight();//增加航班节点函数 charushanchuFace();break;case 2:if (1 == shanchuFlight())//删除航班节点函数 {printf("删除成功\n");} else {printf("没有这个航班,删除失败!\n");};charushanchuFace(); case 3:menu();break;default:charushanchuFace();}
}int zengjiaFlight()//增加航班函数
{hangbanNode *q;//定义q为新增加的航班结点的指针的形参hangban *p = pFlight;int y = 1;while (y != 0) {q = (hangbanNode *) malloc(sizeof(hangbanNode));if (q == NULL)return 0;printf("\t\t请依次输入以下内容\n");printf("\t\t请输入航班编号\n");scanf("%s", q->hbID);int t = duibiFlight(pFlight, q->hbID);//判断添加的航班编号是否已经存在 if (t == 0) { printf("该航班编号已经存在,请重新输入航班编号\n");continue;}printf("\t\t请输入起点站名\n");scanf("%s", q->qidian);printf("\t\t请输入终点站名\n");scanf("%s", q->zhongdian);printf("\t\t请输入编号\n");scanf("%s", q->hbnum);printf("\t\t请输入飞行日期\n");scanf("%s", &q->day);printf("\t\t请输入乘客定额\n");scanf("%d", &q->maxnum);q->less = q->maxnum;printf("\t\t请输入1等票数目\n");scanf("%d", &q->lessgrade1);q->lessgrade2 = q->maxnum - q->lessgrade1;//1等票 = 总票数目 - 2等 initCusLinkList(q->cusLinkList);//初始化initQueue(q->wQgrade1);//将两种等级的票入队,方便等候计算 initQueue(q->wQgrade2);q->next = p->next;p->next = q;printf("\t\t是否继续录入航班信息(任意数字继续,0表示停止)。\n");printf("\t\t请输入:");scanf("%d", &y);}return 0;
}int shanchuFlight()// 删除航班函数 {char ID[20];printf("请输入航班ID\n");scanf("%s",ID);Phangban pre = pFlight;Phangban p = pre->next;while (p != NULL) {if (!strcmp(ID, p->hbID)) {pre->next = p->next;free(p);return 1;}pre = p;p = p->next;}return 0;}int duibiFlight(hangban *flight, char ID[])
//对比航班的编号,防止增加航班时,出现重复
{hangban *p = flight;while (p != NULL){if (!strcmp(ID, p->hbID)) {return 0;//航班ID重复}p = p->next;}//ID不重复return 1;}void sousuoFace() //搜索界面
{int a2;printf("\n");printf("\n");printf("\n");printf("\n");printf(" 搜索航班\n");printf("***********************************************************\n");printf(" 1.搜索航班 \n");printf(" 2.返回上一级 \n");printf("***********************************************************\n");printf(" 请输入您的选择:");scanf("%d", &a2);switch (a2) {case 1:sousuoflight();//输入起点和终点搜索航班 system("PAUSE");sousuoFace();break;case 2:menu();break;default:sousuoFace();}
}void dingpiaoFace() //订票界面
{int a3;printf("\n");printf("\n");printf(" 订票\n");printf("***********************************************************\n");printf(" 1.订票 \n");printf(" 2.由起点和终点搜索航班 \n");printf(" 3.搜索所有航班 \n");printf(" 4.通过航班编号查询客户 \n");printf(" 5.返回上一级 \n");printf("***********************************************************\n");printf(" 请输入你要办理的业务:");scanf("%d", &a3);switch (a3) {case 1://订票dingpiao();system("PAUSE");dingpiaoFace();break;case 2://输入起点和终点查询sousuoflight();system("PAUSE");dingpiaoFace();break;case 3:printfall(pFlight);system("PAUSE");dingpiaoFace();break;case 4: //查到客户的姓名和订票量pricusInfo();system("PAUSE");dingpiaoFace();break;case 5:menu();break;default:dingpiaoFace();}
}void tuipiaoFace()//退票模块界面
{int a3;printf("\n");printf("\n");printf(" 退票\n");printf("***********************************************************\n");printf(" 1.办理退票 \n");printf(" 2.返回上一级 \n");printf("***********************************************************\n");printf(" 请输入你要办理的业务:");scanf("%d", &a3);switch (a3) {case 1:tuipiao();system("PAUSE");tuipiaoFace();break;case 2:menu();break;default:tuipiaoFace();}
}void pricusInfo()//输出订购该航班乘客的姓名,票数,等级
{CList p;hangban *info;info = find();//由输入的航班编号查询航班是否存在,并将节点复制给info if (info == NULL) {printf("没有这个航班\n");return;}//头结点的下一个节点开始遍历p = info->cusLinkList->next;if (p != NULL) {printf("客户姓名 订票数额 舱位等级(1经济舱,2商务舱)\n");while (p) {printf("%s\t\t%d\t%d\n", p->name, p->num, p->dengji);p = p->next;}} elseprintf("该航班没有客户信息!!\n");
}void printfall(hangban *pflight)//打印全部航班信息
{hangban *p;p = pflight->next;printf("起点 终点 编号 飞机号 飞行日期 总载客 余票量 1级余量 2级余量 \n");while (p != NULL) {printf("%4s %4s %2s %5s %8s %5d %5d %6d %4d\n",p->qidian,p->zhongdian,p->hbID,p->hbnum, p->day,p->maxnum, p->less, p->lessgrade1, p->lessgrade2);p = p->next;}printf("\n\n");
}int main()
{initFlight();//初始化航班链表 Create(flight1);//将航标信息插入链表 menu(); //菜单return 0;
}int menu()//菜单界面函数
{int i;do{{system("color 9e");printf("\n");printf("\n");printf(" 航空订票系统\n");printf("***********************************************************\n");printf(" 1. 查询航班 \n");printf(" 2. 搜索航班 \n");printf(" 3. 订票 \n");printf(" 4. 退票 \n");printf(" 5. 录入与删除 \n");printf("***********************************************************\n");printf(" 输入需要办理的业务:");scanf("%d", &i);}switch (i) {case 1:printfall(pFlight);//打印全部航班信息 system("PAUSE");menu();break;case 2: sousuoFace();// 搜索界面 system("PAUSE");menu();break;case 3:dingpiaoFace();//订票界面 system("PAUSE");menu();break;case 4:tuipiaoFace();//退票界面 system("PAUSE");menu();break;case 5:charushanchuFace();//插入和删除新节点 system("PAUSE");menu();break;default:menu();//返回主菜单 }}while(0);
}