1、武汉理工大学数据结构课程设计说明书1航空客运订票系统1 问题描述航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。1.1 每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级 1,2 或 3)以及等候替补的客户名单(包括姓名、所需票量)1.2 作为示意系统,全部数据可以只放在内存中1.3 系统能实现的操作和功能如下:1.3.1 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额1.3.2 承办订
2、票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补1.3.3 承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户2 概要设计2.1 存储结构设计typedef struct Al_Custom /已订票客户char name15;/姓名int count;/订票量int level;/舱位等级Al_Custom *
3、next;/下一节点指针Al_Custom,*Al_CustomLink;typedef struct Wait_Custom/等候替补的客户武汉理工大学数据结构课程设计说明书2char name15;/姓名int count;/所需票量Wait_Custom *next;/下一节点指针Wait_Custom;typedef struct Wait_Queue/等待队列Wait_Custom *front;/队列头指针Wait_Custom *rear;/尾指针Wait_Queue;typedef struct Flight/航线char terminus15;/终点站名char flight
4、_no10;/航班号char plane_no10;/飞机号int week;/飞行周日int count;/乘客定额int rest;/余票量Al_CustomLink Al_link;/指向成员名单链表的头指针Wait_Queue wait_queue;/等待替补队列Flight;2.2 主要算法设计2.2.1 主程序模块:void main()初始化;do武汉理工大学数据结构课程设计说明书3接受命令;处理命令;while(命令!=“退出“);2.2.2 查询航线模块实现查询功能void findFlight()提示输入要查询航线的终点站名;如果存在该航线,则输出该航线信息;否则提示不存在
5、该航线;2.2.3 承办订票业务模块实现订票功能void dingpiao()提示输入航班号和订票数;若不存在该航班号,则提示不存在该航线;否则如果有余票,则办理业务;否则提示没有足够的余票,询问是否候补;若是,则排队候补;2.2.4 承办退票业务模块实现退票功能void tuipiao()提示输入航班号和飞行周日;确认航班号和飞行周日都存在,并且客户有订票,则 执行退票;为排队候补的客户办理订票业务;武汉理工大学数据结构课程设计说明书4否则提示有误2.3 测试用例设计2.3.1 航线 3 条:1001 hp001 shanghai 2 50 1002 hp002 beijing 5 5010
6、03 hp003 guangzhou 7 502.3.2 查询航线:shanghai 2.3.3 承办订票业务:航班号 1001 数额 30 姓名 chengangjie 舱位等级 22.3.4 承办订票业务:航班号 1001 数额 23 姓名 zhenxi 舱位等级 32.3.5 承办退票业务:姓名 chengangjie 航班号 1001 飞行周日 22.3.6 查询航线:终点站名:shanghai3 调试分析3.1 本次的设计比较困难,需要实现较多的功能,所以在调试过程中不太顺利,主要是指针的修改。经过反复调试以后才得以解决。3.2 本程序航线采用数组的存储结构,每条航线包含 8 个域,
7、其中乘员名单域为指向乘员名单链表的头指针,等候替补的客户名单域为分别指向对头和对尾的指针。3.3 订票函数是在退票业务模块中使用4 经验和体会通过这次的程序设计,进一步理解了链表和队列结构的实现和应用。尤其需要注意的是:对于指针的修改要仔细,否则会发生意想不到的结果。5 源程序清单和运行结果5.1 程序清单#include#include#include#include武汉理工大学数据结构课程设计说明书5#include#define FLIGHT_NUM 100/航线最大数量typedef struct Al_Custom /已订票客户char name15;/姓名int count;/订票
8、量int level;/舱位等级Al_Custom *next;/下一节点指针Al_Custom,*Al_CustomLink;typedef struct Wait_Custom/等候替补的客户char name15;/姓名int count;/所需票量Wait_Custom *next;/下一节点指针Wait_Custom;typedef struct Wait_Queue/等待队列Wait_Custom *front;/队列头指针Wait_Custom *rear;/尾指针Wait_Queue;typedef struct Flight/航线char terminus15;/终点站名ch
9、ar flight_no10;/航班号char plane_no10;/飞机号武汉理工大学数据结构课程设计说明书6int week;/飞行周日int count;/乘客定额int rest;/余票量Al_CustomLink Al_link;/指向成员名单链表的头指针Wait_Queue wait_queue;/等待替补队列Flight;void Custom_init(Al_CustomLink L-next=0;void Custom_insert(Al_CustomLink memcpy(void*)newnode,newnode-next=p-next;p-next=newnode;v
10、oid copyCustomLink(Al_CustomLink Al_CustomLink q;Al_Custom *pnew;Custom_init(dest);q=dest;while(p-next)武汉理工大学数据结构课程设计说明书7pnew=new Al_Custom;memcpy(pnew,p-next,sizeof(Al_Custom);pnew-next=0;q-next=pnew;q=pnew;p=p-next;void Waiter_init(Wait_Queue Q.front-next=0;void Waiter_En(Wait_Queue memcpy(newnode
11、,newnode-next=0;Q.rear-next=newnode;Q.rear=newnode;bool Waiter_De(Wait_Queue 武汉理工大学数据结构课程设计说明书8memcpy(Wait_Custom *p=Q.front-next;Q.front-next=p-next;if(Q.rear!=Q.front)Q.rear=Q.front;delete p;custom.next=0;return true;void copyWait_Queue(Wait_Queue Waiter_init(dest);while(p-next)Waiter_En(dest,*p);
12、p=p-next;int flight_no;/航线数量Flight flightFLIGHT_NUM;/航线数组void initFlight(Flight 武汉理工大学数据结构课程设计说明书9strncpy(char*)Custom_init(f.Al_link);Waiter_init(f.wait_queue);void initFlight()/初始化航线数组flight_no=0;char ch=0;strncpy(char*)flight,for(int i=0;i=i+1;j-)memcpy(void*)(memcpy(void*)(武汉理工大学数据结构课程设计说明书10Cus
13、tom_init(flighti+1.Al_link);Waiter_init(flighti+1.wait_queue);copyCustomLink(flighti+1.Al_link,f.Al_link);copyWait_Queue(flighti+1.wait_queue,f.wait_queue);flight_no+;void init()int m;coutm;for(int i=1;if.flight_no;coutf.plane_no;coutf.terminus;coutf.week;coutf.count;f.rest=f.count;insertFlight(f);武
14、汉理工大学数据结构课程设计说明书11printf(“n“);int findbyname(char terminus15)/根据终点站名查找for(int i=0;iterminus;int index=findbyname(terminus);if(index=-1)printf(“该航线不存在!n“);return ;coutnext-countnext-namecount=p-next-count;武汉理工大学数据结构课程设计说明书13flightindex.rest-=p-next-count;strcpy(pnew-name,p-next-name);docoutnext-namep
15、new-level;while(pnew-levellevel3);pnew-next=flightindex.Al_link-next;flightindex.Al_link-next=pnew;Wait_Custom *q=p-next;p-next=q-next;if(flightindex.wait_queue.rear=q)flightindex.wait_queue.rear=p;delete q;void dingpiao()/承办订票业务子模块char no10;/航班号int count;/订票量coutnocount;int index=findbyno(no);if(in
16、dex=-1)cout=count)/尚有余票Al_Custom *pnew=new Al_Custom;coutpnew-name;coutpnew-level;pnew-count=count;pnew-next=0;flightindex.rest-=count;pnew-next=flightindex.Al_link-next;flightindex.Al_link-next=pnew;else/没有余票coutpnew-name;pnew-count=count;武汉理工大学数据结构课程设计说明书15pnew-next=0;flightindex.wait_queue.rear-n
17、ext=pnew;flightindex.wait_queue.rear=pnew;coutnamename;coutnoweek;bool isfind=false;for(int index=0;indexnext)if(strcmp(p-next-name,name)=0)武汉理工大学数据结构课程设计说明书16isfind=true;Al_Custom *q=p-next;p-next=q-next;flightindex.rest+=q-count;coutnext;if(!isfind)cout4);switch(ch)case 1:findFlight();break;case 2
18、:dingpiao();break;case 3:tuipiao();break;case 4:break;while(ch!=4);武汉理工大学数据结构课程设计说明书185.2 运行结果:5.2.1 输入航线:5.2.2 查询航线:5.2.3 承办订票业务:武汉理工大学数据结构课程设计说明书195.2.4 承办退票业务:计算机专业毕业设计开发环境:ASP.NET,VB,VB.NET VF,java 等,数据库:SQL。包括:开题报告、程序、论文、答辩 PPT,所有程序都是通过答辩的优秀作品,质量保证。也可代做。我是哈尔滨工业大学计算机专业毕业的学生我卖的毕业设计都是新做出来的而且是学生亲手做的符合学生要求如果你在别的店卖来的都是很专业的人员做的一看就不是学生自己亲手做出来的,而且其他店不提供售后我们提供售后服务及技术支持和答辩技巧.Q Q:982465840旺旺:诚信源代码之家 电话:13836381662店铺地址: 全天在线 各位学弟学妹联系我.本店购设计的优点: 1 价格合理便宜2 提供技术支持3 售后服务好武汉理工大学数据结构课程设计说明书204 成交速度快当时就可以完成调试功能5 东西齐全 (开题论文代码程序答辩 PPT 售后服务)6 作品都是获得优秀的产品( 保证质量)5.2.5 查询航线:武汉理工大学数据结构课程设计说明书21