1、数据结构航空订票系统课程设计报告摘 要之马矢奏春创作创作时间:二零二一年六月三十日飞机在现代的生活中饰演者非常重要的角色.它能够快速的把人们送到自己想要去的处所, 既快速, 又方便.所以现在坐飞机时很普遍的.可是都到机场去买票浪费时间, 因此, 航空订票系统应运而生.有了航空订票系统, 用户可以在该系统进行飞机票的查询, 订票, 退票等把持.方便了年夜家关键词 航空订票系统 、查询、订票、退票5结束语.166 参考文献.177附录.181 需求分析1.1 需求概述航线管理.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量 客户管理.有关订票的客房信息(包括
2、姓名、订票量、舱位品级(1,2和3)以及等替补的客房名单(包括姓名、所需标量). 系统实现主要把持把持和功能.系统实现的主要把持规程和功能如下:1查询航线.根据旅客提出的终点站名输出下列信息:航班号、飞机号、飞行日期、余标额.2承办订票业务.根据客户提出的要求(航班号、订票数额)查询该航班票额情况, 若有余票, 则为客户规画订票手续, 输出座位号;若已满或者余票少于订票额, 则需要重新询问客户要求;若需要, 可等待排队侯补3承办退票业务.根据客户提供的情况(日期、航班), 为客户输退票手续, 然后查询该航班是否有人排队候补, 首先询问排在第一的客户, 若所退票额满足该客户的要求, 则为其订票手
3、续, 否则依次询问其他排队候补的客户.1.2 需求环境本课程设计需要的设备为硬件要求和软件配置要求具体要求如下:硬件要求:一台计算机.软件配置:WINDOWS7/V.1.3 功能描述本次课程设计是航空订票系统主要是由查询航班信息, 订票还有退票三年夜主要功能.除此之外, 还有系统的界面等等.2 概要设计2.1 法式功能模块由需求分析知, 本次课程设计是航空订票系统其主要由三年夜模块构成, 即查询模块(这部份由我负责), 订票系统模块和退票系统模块构成.2.2 法式流程图 该法式开始运行后 进如航空订票系统 用户可以进行航班 信息的查询, 订票 和退票把持.2.3 课程设计的思想 由需求分析知道
4、需要实现几个功能界说了两个结构体.这两个结构体分别用来暗示顾客信息和航班信息.有结构体可以知道一些基本信息, 比如顾客的姓名, 定的机票和航班的时间等等信息.使得实验代码的可读性年夜年夜增强.3 详细设计3.1 法式初始化代码功能这一块还是由我负责.我初始化了五个航班的基本信息.在初始化法式中, 主要是航班的基本信息.比如航班号, 动身时间和剩下的机票数目等等基本信息.通过运用指针和链表来进行对初始化信息的书写.在初始化时将三个重点的信息分别初始化为:广州 航班号005 飞机号PZH113 机票数120天津 航班号004 飞机号PZH121 机票数120北京 航班号003 飞机号PZH133
5、机票数120上海 航班号002 飞机号PZH132 机票数120成都 航班号001 飞机号PZH122 机票数1203.1.2 功能实现代码void InitLine() /初始化航线信息airline *p,*q; /航线L=(airline *)malloc(sizeof(airline);L-booked=NULL;L-wait=NULL;L-next=NULL;strcpy(L-end_addr,00000000); /终点站strcpy(L-line_num,000); /航班号strcpy(L-plant_num,0000000); /飞机号L-day=L-left=L-total
6、=0;q=L;p=(airline *)malloc(sizeof(airline);/广州p-booked=NULL;p-wait=NULL;strcpy(p-end_addr,广州);strcpy(p-line_num,005);strcpy(p-plant_num,PZH113);p-day=5;p-left=120;p-total=120;p-next=q-next;q-next=p;p=(airline *)malloc(sizeof(airline);/天津p-booked=NULL;p-wait=NULL;strcpy(p-end_addr,天津);strcpy(p-line_n
7、um,004);strcpy(p-plant_num,PZH121);p-day=4;p-left=120;p-total=120;p-next=q-next;q-next=p; p=(airline *)malloc(sizeof(airline);/北京p-booked=NULL;p-wait=NULL;strcpy(p-end_addr,北京);strcpy(p-line_num,003);strcpy(p-plant_num,PZH133);p-day=1;p-left=120;p-total=120;p-next=q-next;q-next=p; p=(airline *)mallo
8、c(sizeof(airline);/上海p-booked=NULL;p-wait=NULL;strcpy(p-end_addr,上海);strcpy(p-line_num,002);strcpy(p-plant_num,PZH132);p-day=2;p-left=120;p-total=120;p-next=q-next;q-next=p; p=(airline *)malloc(sizeof(airline);/成都p-booked=NULL;p-wait=NULL;strcpy(p-end_addr,成都);strcpy(p-line_num,001);strcpy(p-plant_n
9、um,PZH122);p-day=3;p-left=120;p-total=120;p-next=q-next;q-next=p; 3.2 查询航班信息代码功能此模块主要由我负责, 在此模块我实现了查询航班的功能.当进入查询功能时, 通过输入数字用户可以查询航班的基本信息, 比如目的地, 剩下的机票数目, 动身的时间等等基本信息.如果输入的数字在界面中没有显示则会提示用户没有这次航班.在这个模块我使用了个switch语句来实现对查询方式的选择.通过判断输入的数字进入到相对应的查询方式.如果输入的信息有误的话, 系统将会提示用户没有这次航班, 需要重新输入.在该模块用户可以进行查询功能.用户根据
10、提示可以依照航班号、飞机号、飞行日期和航班重点来查询航班的基本信息.这些基本信息包括了飞行航班号、飞机号、剩余票量和惩罚日期等等.在该模块用户必需根据提示进行输入, 否则系统会提示输入有误, 需要重新输入.3.2.3 功能实现代码void search() /航班查询系统 int i; int flag=0; airline *p; PR(请输入查询航班的方式:n); PR(航班号-1n); PR(飞机号-2n); PR(飞行日期-3n); PR(航班终点-4n); SC(%d,&i); for(;!flag;) switch(i) /switch语句来进行航班的查询方式 case 1: p=
11、search_line();flag=1;break; case 2: p=search_plant();flag=1;break; case 3: p=search_day();flag=1;break; case 4: p=search_addr();flag-=1;break; default:PR(把持毛病,请重新输入n);break; if(p) PR(终点站 航班号 飞机号 飞行周日 余票量n);PR(%-20s%10s%10s%8d%8dn,p-end_addr,p-line_num,p-plant_num,p-day,p-left);PR(是否订票(确定请按1));SC(%d,
12、&i);if(i=1)book();else PR(没有该航班n);3.3 订票模块3.3.1 代码功能在此模块可以根据提示可以从航班号, 飞行日期和终点站来进行订票.如果订票时余票缺乏所需要的票的数目时就可以进行排队购票选择.3.3.2 功能实现代码void book() /订票系统 int i; int flag=0; airline *p; customer *cst,*c; PR(请输入查询航班的方式:n); PR(航班号-1n); PR(终点站-2n); PR(飞行日期-3n); for(;!flag;) SC(%d,&i); switch(i) /运用一个switch语句进行航班查
13、询 case 1: p=search_line();flag=1;break; case 2: p=search_addr();flag=1;break; case 3: p=search_day();flag=1;break; default:PR(把持毛病,请重新输入n);break; if(p) PR(终点站 航班号 飞机号 飞行周日 余票量n); PR(%-20s%10s%10s%8d%8dn,p-end_addr,p-line_num,p-plant_num,p-day,p-left); cst=(customer *)malloc(sizeof(customer); PR(请输入订
14、票数量:); SC(%d,&cst-num); PR(请输入舱位品级(1/2/3)); SC(%d,&cst-level); PR(请输入您的名字); SC(%s,cst-name); if(cst-numleft) cst-next=p-booked; p-booked=cst; p-left=p-left-cst-num; PR(订票胜利, 座位号为%d%dn,p-total-p-left-cst-num+1,p-total-p-left); else/当需要的飘得数量年夜于剩余的票数的时候进行询问是否进行排队购票 PR(余票缺乏, 是否排队等待n是(y)n否(n)n); SC(%d,&f
15、lag); if(flag) if(!p-wait) cst-next=p-wait; p-wait=cst; else c=p-wait; for(;c-next;c=c-next); cst-next=c-next; c-next=cst; else PR(没有该航班n); guide();排队订票时的排队订票系统:void waited(airline *p) /排队订票系统 int flag; customer *q,*q0,*h; if(!p-wait) return; q=(customer *)malloc(sizeof(customer); q-level=0; q-num=1
16、23; strcpy(q-name,00000); q-next=p-wait; h=q; for(;p-left0&q-next;) if(q-next-numleft) PR(%s, 您正在排队定%d张票, 现有票, 是否定n是(y)n否(n)n,q-next-name,q-next-num); SC(%d,&flag); if(flag) q0=q-next; q-next=q-next-next; q0-next=p-booked; p-booked=q0; p-left=p-left-q0-num; PR(排队订票胜利nn); else q=q-next; else q=q-next
17、; p-wait=h-next;在此模块, 用户可以根据系统的提示进行退票把持.当进行退票把持时需要进行信息的核对, 如果正确, 打印出信息, 再询问是否退票.void refund() /退票系统 int flag; char a20; airline *p; customer *c,*c1; p=search_line(); c=p-booked; if(!p) PR(没有该航班nn); guide(); return; PR(请输入您的姓名); SC(%s,a); if(!p-booked-name) /进行信息的查找判断是否有用户的信息 PR(对不起, 没有找到您的信息nn); gui
18、de(); return ; if(!strcmp(a,p-booked-name) /核对完信息后输出要退票乘客的信息 PR(退票信息n姓名/终点站/票数n%s/%s/%dn,p-booked-name,p-end_addr,p-booked-num); PR(确认要退票n是(y)n否(n)n); scanf(%d,&flag); if(flag) p-booked=p-booked-next; p-left=p-left+c-num; free(c); PR(退票胜利nn); waited(p); guide(); else for(;c-next;c=c-next) if(!strcmp
19、(a,c-next-name) break; if(!c-next) PR(对不起, 没有找到您的信息nn); guide(); return ; else PR(退票信息n姓名/终点站/票数n%s/%s/%dn,c-next-name,p-end_addr,c-next-num);PR(确认要退票?n是(y)n否(n)n);/询问是否退票 scanf(%d,&flag); if(flag) c1=c-next; c-next=c-next-next; p-left=p-left+c1-num; free(c1); PR(退票胜利nn); waited(p); guide(); 以上三个模块是
20、改法式最主要的功能实现的代码.初度之外还有部份其他显示模块.4 测试与运行由需求分析可知该法式运行后实现功能后的结果.此处是功能界面, 用户可以依照提示进行把持进行查询功能时:进行查询模块式会显示出查询方式, 依照查询方式可以准确的获得航班的信息进行订票模块时:在此处模块, 订票可以根据提示进行购票, 可以订多张票, 输入舱位的品级和订票人名字排队订票系统:如果该航班剩余的票量小于所要购买的数量, 则会提示是否进行排队购票.退票系统:在该模块, 进行退票把持时, 系统会进行信息的核对, 如果正确, 将会显示客户的信息.然后提示是否退票.5 结束语 此次数据结构课程设计为航空订票系统.在写法式的
21、时候还是遇到了很多的问题.有些功能怎么也实现不了.经过和同学的探讨还有上网查找资料, 最后终于克服了这些问题, 胜利的运行出了法式.通过这次学习, 使我对编写法式的兴趣更年夜了.除此之外, 此次课程设计帮我们熟练地运用所学习的知识, 还让我们熟练的去融合他们, 写出一个全新的法式来.在这次课程设计中要衷心的感谢老师对我们的帮手, 使得我们对所学知识的熟练运用.总而言之, 这次的课程设计既有趣又训练了我们对知识的运用.6参考文献1阮宏一, 鲁静数据结构课程设计C/C+描述.电子工业出书社3袁蔚敏.数据结构 清华年夜学出书社 7 源代码源代码:#include#include#include#in
22、clude#define PR printf#define SC scanftypedef struct customer /客户信息 char name20; /客户姓名 int num; /订票量 int level; /舱位品级 customer *next;customer,*Lcustomer;typedef struct airline /航线信息 char end_addr20; /航线终点 char line_num5; /航班号 char plant_num8; /飞机号 int day; /飞行日期 int total; /定员 int left; /剩余票数 custom
23、er *booked; /已定客户信息 customer *wait; /排队等待订票信息 airline *next;airline,*Lairline;airline *L; /将航班信息界说为全局变量, 减少参数传递Lairline search_line() /按航班号查找航班 char a5; airline *p; p=L-next; PR(请输入航班号); SC(%s,a); for(;p;p=p-next) if(!strcmp(a,p-line_num) break; return p;Lairline search_plant() /按飞机号查找航班 char a8; ai
24、rline *p; p=L-next; PR(请输入飞机号); SC(%s,a); for(;p;p=p-next) if(!strcmp(a,p-plant_num) break; return p;Lairline search_day() /按飞行日期查找航班 int a; airline *p; p=L-next; PR(请输入飞行日期); SC(%d,&a); for(;p;p=p-next) if(a=p-day) break; return p;Lairline search_addr() /按航班终点查找航班 char a20; airline *p; p=L-next; PR
25、(请输入航班终点); SC(%s,a); for(;p;p=p-next) if(!strcmp(a,p-end_addr) break; return p;void guide() /主菜单界面 PR( -航空订票客服系统-n); PR(=n); PR(tt显示所有航线= 1n); PR(tt查询航线信息= 2n); PR(tt订票业务 = 3n); PR(tt退票业务 = 4n); PR(tt退出系统 = 0n); PR(=n); PR(tt清除屏幕信息= 9nn); PR(请按上面指引把持:t);void print_customer(airline *p) /显示航班客户信息 customer *c; if(p-booked) c=p-booked; PR(已定票客户信息n票数t/t客户姓名n); for(;c;c=c-next) PR(%5dt/t%sn,c-num,c-name); PR(nn); else PR(暂时没有客户订票nn); if(p-wait)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1