(完整版)数据结构课程设计-航空客运订票系统.pdf
《(完整版)数据结构课程设计-航空客运订票系统.pdf》由会员分享,可在线阅读,更多相关《(完整版)数据结构课程设计-航空客运订票系统.pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、成绩评定教师签名嘉应学院计算机学院实验报告课程名称:数据结构课程设计开课学期:2017-2018 学年第 2 学期班级:1503指导老师:钟治初实验题目:航空客运订票系统学号:姓名:上机时间:精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 19 页 - - - - - - - - - - 1.需求分析(1)航空管理。 每条航班所涉及的信息有:终点站名、 航班号、 飞机型号、 飞行周日 (星期几)、乘员定额、余票量。(2)客户管理。有关订票的客户信息(包括姓名、订票量、航位等级(1, 2 和 3
2、) )以及等候替补的客户名单(包括姓名、所需票量)。(3)系统实现的主要操作和功能。系统实现的主要操作和功能如下: 查询航班。根据旅客提出的终点站名输入下列信息:航班号、飞机型号、飞机日期、余票额。 承办订票业务。根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票, 则为客户办理订票手续,输出座位号; 若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队后补。 承办退票业务。根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先查询排在第一的客户,若所退票额能满足该客户的要求,则为其办理订票手续,否则询问其他排队候补的客户。2
3、. 概要设计1)本系统设计了一个含有多个菜单项的主控菜单,系统主控菜单运行界面2)存储结构设计本系统主要采用链表结构类型存储航班信息和订票的乘客信息。航班信息链表结点由10个分量构成,乘客信息链表由5个分量构成。3)系统功能设计本系统分为以下5 个功能模块。(1) 航班管理。航班管理子模块可完成添加新的航班,按终点站点名查询航班,浏览所有航班。(2) 订票办理。在添加了航班的基础上可办理订票业务。乘客根据所需航班输入终点站名和订票量订票。如果订票量超过余票量,则会提示是否成为候补乘客;如果订票成功,则会要求输入订票乘客的姓名及所订票的舱位等级。(3) 退票办理。已办理订票业务的乘客可根据所订票
4、的航班和乘客姓名办理退票业务。、(4) 乘客管理。可以查看已经订票的乘客信息和候补乘客的信息。(5) 退出系统。退出整个航空客运订票系统。3. 模块设计1)模块设计本程序包括主程序模块、菜单选择模块和队列操作模块。主程序模块 - 菜单选择模块 - 队列操作模块2)系统子程序及功能设计本系统共设置14 个函数,其中包括主函数。个函数名及功能说明如下。(1)char Continue( ) /询问是否继续的函数(2)void ErrorMess( ) /操作出错函数(3-1)int Find_Line1( ) /航班核对函数(3-2)int Find_Line2( ) /按航班号查询函数(4)vo
5、id Line_search( ) /按目录地查询航班函数(5)void Line_Add( ) /航班添加函数(6)int Empty_Flight( ) /航班是否为空函数精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 19 页 - - - - - - - - - - (7)int Line_See( ) /航班查看函数(8)void LinemanageMenu( ) /航班管理菜单(9)void bookingMenu( ) /订票办理函数(10)void Display_Reserv
6、e( ) /订票乘客信息(11)void Display_Replace( ) /候补乘客信息(12)void RefundticketMenu( ) /退票办理函数(13)void CustomermagMenu( ) /乘客管理子菜单函数(14)void main( ) /主程序画面函数4. 详细设计1)数据类型定义( 1)乘客信息的结构体定义( 2)航班信息的结构体定义( 3)全局变量定义2)系统主要子程序详细设计( 1)主程序模块设计主函数。设定用户操作界面以及界面的颜色和大小,调用菜单子模块函数。( 2)航班管理模块子菜单界面函数( 3)航班管理的主要工作函数( 4) 订票办理函数,
7、用于办理订票业务5. 测试分析1)航班管理菜单在主菜单下, 用户输入 1 并按下回车键,运行。该子模块可以实现添加新航班,按终点站名查找航班的信息,浏览查看所有航班信息这三项航班管理操作。2)订票业务办理在进行了航班添加之后,即航班不为空时,在主菜单下输入2 并回车办理订票业务,在界面提示下输入订票的相关航班信息和订票客户信息。运行。 如果需要订票数超过余票量,则可选择等待成为候补乘客或选择放弃订票。3)退票业务办理办理订票业务之后,可以办理对应的退票业务。在主菜单下输入3 并按下回车键办理订票业务,在界面提示下输入匹配的退票航班信息和订票客户姓名即可退票成功,运行。4)乘客管理子菜单办理了订
8、票业务之后,系统可以管理办理了订票业务的乘客信息。在主菜单下输入4并按下回车键进入乘客管理菜单界面,运行。在此子功能模块下可以进行查看订票和候补乘客的信息。6. 退出在主菜单下输入5 并按下回车键,即退出“航空客运订票系统”。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 19 页 - - - - - - - - - - 完整代码如下:#include #include #include #include #define MAX 60 /* run this program using the
9、 console pauser or add your own getch, system(pause) or input loop */ typedef struct Customer char Name8; int Amount; char Rank; int IDinfor; struct Customer *Next; Customer; typedef struct Flight char Des_Name10; char Flight_No6; char Plane_No6; int Week_Day; int Customer_Amount; int Free_Amount; i
10、nt Price3; Customer *CustName; Customer *ReplName; struct Flight *Next; Flight,*PFlight; / 全局变量int Customer_Count = 0; Flight *Head = NULL; Flight *p2; Customer *Custp1MAX; Customer *Replp1MAX; int IsEmpty = 1; int IsReplace = 1; Customer *prior; int shouldsave = 0; /1.询问是否继续的函数精品资料 - - - 欢迎下载 - - -
11、 - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 19 页 - - - - - - - - - - char Continue() char answer; while(1) printf(nt 您是否想继续 (Y/N)?); scanf(%s,&answer); system(cls); if(answer = y | answer = Y) return y; else if(answer = n | answer = N) return n; else printf(nt输入有误,请重新输入!); /2.操作出错函数void Er
12、rorMess() printf(nt 对不起,您的操作有误!); getch(); /3-1.核对航班函数 int Find_Line1(PFlight L, char *key) int flag = 0; Flight *p1; p1=L; if(p1 = p2) return flag; while(p1 != p2 & p1 != NULL) if(strcmp(p1 - Flight_No,key) = 0) flag=1; break; p1=p1-Next; return flag; /3-2.按航班号查询函数 int Find_Line2(PFlight L, char *k
13、ey, PFlight *pp, int *Flight_No) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 19 页 - - - - - - - - - - int flag=0; Flight *p1; p1=L; while(p1!=NULL) if(strcmp(p1-Flight_No,key)=0) flag=1; *pp=p1; break; p1=p1-Next; if(p1!=NULL) Flight_No+; return flag; /4. 按目录地查询航班函数 vo
14、id Line_search() char Desname50; Flight *p1=Head; if(Head=NULL) printf(nt没有到达您想要的终点站的航班!); getch(); return; printf(nt请输入终点站名:); scanf(%s,Desname); printf(nt您所查询的航班的信息:n); printf(n_ n); while(p1!=NULL) if(strcmp(p1-Des_Name,Desname)=0) printf(目的地航班号飞机型号星期座位号头等舱价格普通舱价格经济舱价格 n); printf(n%-9s%-8s%-8s%-7
15、d%-8d%-10d%-12d%-8d,p1-Des_Name, p1-Flight_No,p1-Plane_No,p1-Week_Day,p1-Customer_Amount, p1-Price0,p1-Price1,p1-Price2); p1=p1-Next; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 19 页 - - - - - - - - - - printf(n_ n); Continue(); /5. 航班添加函数 void Line_Add() PFlight p,*p1
16、; p1=&Head; while(1) if(Head=NULL) *p1=(PFlight)malloc(sizeof(Flight); (*p1)-Next=NULL; p2=Head; else p1=&p; *p1=(PFlight)malloc(sizeof(Flight); p2-Next=*p1; p2=*p1; printf(nt添加新的航班!n); printf(nt请输入终点站名:); scanf(%s,&p2-Des_Name); while(1) printf(nt请输入唯一的航班号:); scanf(%s,&p2-Flight_No); if(Find_Line1(
17、Head,p2-Flight_No) printf(nt航班号已经存在!n); else break; printf(nt请输入航班号 :); scanf(%s,&p2-Plane_No); while(1) printf(nt请输入航班日期( 请输入 1-7):); scanf(%d,&p2-Week_Day); if(p2-Week_DayWeek_Day7) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 19 页 - - - - - - - - - - printf(nt输入日期有误,
18、请重新输入!n); else break; printf(nt请输入座位数量:); scanf(%d,&p2-Customer_Amount); printf(nt请输入头等舱的价钱:); scanf(%d,&p2-Price0); printf(nt请输入二等舱的价钱:); scanf(%d,&p2-Price1); printf(nt请输入三等舱的价钱:); scanf(%d,&p2-Price2); p2-Free_Amount=p2-Customer_Amount; p2-CustName=NULL; p2-ReplName=NULL; shouldsave=1; if(Continu
19、e()=n) p2-Next=NULL; return; /6. 判断航班是否为空函数 int Empty_Flight() if(Head = NULL) system(cls); printf(nt对不起,航班不存在,按任意键返回!); getch(); return 1; else return 0; /7.航班查看函数 int Line_See() Flight *p1; system(cls); p1=Head; if(Empty_Flight() return 0; printf(nnt 航班信息 :n); 精品资料 - - - 欢迎下载 - - - - - - - - - - -
20、 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 19 页 - - - - - - - - - - printf(n_n); printf(目的地航班号飞机型号星期 座位数头等舱价格普通舱价格经济舱价格n); while(p1 != NULL) printf(n%-9s%-8s%-8s%-7d%-8d%-10d%-12d%-8d,p1-Des_Name, p1-Flight_No,p1-Plane_No,p1-Week_Day,p1-Customer_Amount, p1-Price0,p1-Price1,p1-Price2);p1=p1-Next; printf(n
21、_n); printf(nt按任意键返回!n); getch(); /8.航班管理菜单 void LinemanageMenu() char c; system(cls); while(1) printf(ntt航班管理菜单 :n); printf(n_n); printf(t 1. 添加新的航班 n); printf(t 2. 查询航班 n); printf(t 3. 查看航班 n); printf(t 4. 返回主菜单 n); n); printf(t请选择您想要的服务:); scanf(%s,&c); switch(c) case 1: Line_Add(); break; case 2
22、: Line_search(); break; case 3: Line_See(); break; case 4: return; default: ErrorMess(); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 19 页 - - - - - - - - - - /9.订票办理函数 void bookingMenu() int Ticket_Count,IDinfor,i,flag=0; int Flight_No=0; Flight *p1; Customer *c1; Cust
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 数据结构 课程设计 航空 客运 订票 系统
限制150内