数据结构航空订票系统课程设计报告
C语言数据结构课程设计航空订票实验报告(含源代码)
数据结构课程设计实验报告设计题目__________________________________________________________________ 设计者__________________________________________________________________ 指导老师__________________________________________________________________ 班级___________________________________________________________________ 学号____________________________________________________________________一、设计要求任务通过此系统可以实现如下功能:1.录入航班信息:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据定)2.查询航班:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓);3.订票:(订票情况可以存在一个数据文件中,结构自己设定);4.退票:可退票,退票后修改相关数据文件;5.修改航班信息6.退出程序客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;二、设计概要主界面选择操作项目1.录入航班信息通过单链表这种数据结构,设置了剩余票数,航班号,出发地点,到达地点,起飞日期,出发时间,到达时间,票价。
2.订票输入旅客的姓名,证件号,航班号,和订票张数。
程序中自动查询输入要定的航班号,如果没有则叫其重新输入,有则执行:票数足够则订票成功,票数不充足叫其选择其它航班。
此也采用单链表的数据结构。
数据结构 航空订票 课程报告
课程设计报告课程名称:数据结构课程设计班级:04330102学号:2010043301042姓名:卢晗完成日期:2012年7月6日沈阳航空航天大学北方软件学院课程设计任务书专业名称:计算机科学与技术(软件工程)课程名称:c课程设计设计题目:航空订票系统起止时间:2012年6月26日至2012年7月6日问题描述假设航空订票的业务活动包括:查询航线、客票预订和办理退票等。
设计一个航空客运订票系统,上述业务可以借助计算机完成。
基本要求设民航售票处的计算机系统可以为客户提供下列各项服务:1、对航班进行编辑:具备增加、修改、删除航班信息(航班数据可以存储在一个数据文件中)。
2、查询航线:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3、承办订票业务:根据客户提出的要求(日期、航班号、订票数额)查询该航班票额情况,若尚有余额,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需要重新询问客户要求。
4、承办退票业务:根据客户提供的情况(日期、航班、退票数额),为客户办理退票手续;5、用到的数据结构需要自己自行编写,不得使用系统给定的函数6、需要用到的数据结构:链表7、用户界面友好,操作方便,有相应提示测试数据任意输入一组航班信息,可以进行订票、查询、退票操作;高级要求模拟实际情况,要求可以处理用户重名问题、用户界面友好学生姓名:学号:指导教师:年月日航空订票系统1概要设计该系统的设计由8个模块组成:1)显示界面模块:也可以叫菜单模块,运行程序时用户首先看到的就是这个界面,界面显示出6种航空订票系统的功能,用户可以根据显示的选择自己要用的方式查询信息。
2)输入航班信息模块:此模块是管理员所支配,需要密码进行访问。
3)浏览信息模块:此模块是顾客浏览航空航班细节(包括:起飞时间,到达时间,起飞地点,目的地,票数等)4)修改航班信息:此模块是管理员改变航班的具体信息。
数据结构课程设计报告格式及要求(航空购票系统)
数据结构课程设计报告题目航空客运订票系统专业班级学号姓名指导教师成绩一、设计任务航空客运订票的业务包括查询(航线和客票预订的)信息、客票预订和办理退票等。
基本要求有:(1)系统必须存储的数据信息i.航班信息:飞机抵达城市、航班号、飞机号、起降时间、航班票价、票价折扣、总位置和剩余位置、已订票的客户名单。
ii.客户信息:客户姓名、证件号、座位号。
(2)系统能实现的功能i.承办订票业务:根据客户提出的要求(飞机低达城市、起降时间、订票数量)查询该航班信息(包括票价、折扣和剩余位置),若满足要求,则为客户办理订票手续,输出座位号。
ii.承办退票业务:根据客户提供的情况(航班号、订票数量),为客户办理退票手续。
(3)查询功能i.查询航线信息:根据飞机降落地点,输出下列信息:航班号、飞机号、起降时间、航班票价、票价折扣和剩余位置。
ii.查询客户预订信息:根据客户证件号,输出下列信息:航班号、飞机号和座位号。
提供的参考程序已经基本实现以上功能,但有很多不足之处,要求进行程序改进和完善。
具体任务有:(1)分析参考程序实现了哪些功能?指出存在的缺陷。
(2)从以下几方面完善程序:i.功能上的完善ii.程序结构上的完善iii.程序控制上的完善二、设计要点1、改变了订票系统主界面格式及背景颜色;2、增加了清屏功能,避免语句过多的结果;3、实现了订票与否;4、实现了只能输入正确航班;5、实现了选择性别只能选择男女;6、订票成功余票减少三、算法实现#include<stdio.h>#include <stdlib.h>#include<malloc.h>#include<string.h>#define OK 1#define ERROR 0typedef struct airline{ /* 飞机航班的结构定义*/ char air_num[8]; //航班号char plane_num[8];//飞机号char end_place[20];//抵达城市int total; //总位置int left; //剩余位置struct airline *next;}airline;/*顾客信息的结构定义*/typedef struct customer{char name[8]; //姓名char sex[8]; //性别char id[20]; //身份证char air_num[8]; //航班号int seat_num; //座位号struct customer *next; //指向下一个旅客}customer;/*创建航班链表*/airline *start_air(){airline *a;a=(airline*) malloc(sizeof(airline));if(a==NULL) printf("空间不足");return a;}/*创建顾客链表*/customer *start_cus(){customer *c;c=(customer*)malloc(sizeof(customer));if(c==NULL) printf("空间不足");return c;}/* 修改航班的空余座位信息*/airline *modefy_airline(airline *l,char *air_num){airline *p;p=l->next;for(;p!=NULL;p=p->next){if(strcmp(air_num,p->air_num)==0){p->left++;return l;}printf("NO the airline!");return 0;}}/* 增加航班信息*/int insert_air(airline **p,char *air_num,char *plane_num,char *end_place,int total,int left) {airline *q;q=(airline*)malloc(sizeof(airline));strcpy(q->air_num,air_num);strcpy(q->plane_num,plane_num);strcpy(q->end_place,end_place);q->total=total;q->left=left;q->next=NULL;(*p)->next=q;(*p)=(*p)->next;return OK;}/*增加某航班的顾客信息*/int insert_cus(customer **p,char *name,char *sex,char *id,char *air_num,int seat_num) {customer *q;q=(customer*)malloc(sizeof(customer));strcpy(q->name,name);strcpy(q->sex,sex);strcpy(q->id,id);strcpy(q->air_num,air_num);q->seat_num=seat_num;q->next=NULL;(*p)->next=q;(*p)=(*p)->next;return OK;}/*订票操作*/int book(airline *a,char *air_num,customer *c,char *name,char *sex,char *id){airline *p=a;customer *q=c->next;p=a->next;for(;p->next!=NULL;p=p->next){if(strcmp(p->air_num,air_num)==0)break;}while(q->next!=NULL){q=q->next;}{if(p->left>0){printf("您的座位号是%d",(p->total-p->left+1));printf("\n");insert_cus(&q,name,sex,id,air_num,p->total-p->left+1);--p->left;p=p->next;return OK;}else{printf("没您的座啦!");return 0;}}}/*取消订票信息操作*/int del_cus(customer *c,airline *l,char *name){customer *p,*pr;char air_num[8];pr=c;p=pr->next;while(p!=NULL){if(strcmp(p->name,name)==0||strcmp(p->air_num,air_num)==0){strcpy(air_num,p->air_num);l=modefy_airline(l,air_num);pr->next=p->next;p=pr->next;printf("取消订票成功!\n");return OK;}pr=pr->next;p=pr->next;}printf("没有这个人儿啊\n");return ERROR;}/*查找航班信息操作*/int search_air(airline *head){airline *p=head->next;printf("air_num plane_num end_place total left\n");for(;p!=NULL;p=p->next){printf("%s %-10s %-8s %-8d%-8d\n", p->air_num, p->plane_num,p->end_place,p->total,p->left);}return OK;}/*查找顾客信息操作*/int search_cus(customer *head){struct customer *q=head->next;printf(" name sex id air_num seat_num\n");for(;q!=NULL;q=q->next){printf("%-8s%-8s%-8s%-12s%-d\n",q->name,q->sex,q->id,q->air_num,q->seat_num);}return OK;}/*预先设置航班信息*/int creat_air(airline **l){airline *p=*l;int i=0;char *air_num[3]={"007af","008af","009af"};char *plane_num[3]={"航班1","航班2","航班3"};char *end_place[3]={"美国","德国","法国"};int total[3]={100,100,100};int left[3]={52,54,76};for(i=0;i<3;i++)insert_air(&p,air_num[i], plane_num[i], end_place[i],total[i], left[i]);return OK;}/*预先设置已订票的顾客信息*/int creat_cus(customer **l){customer *p=*l;int i=0;char *name[3]={"张三","李四","王五"};char *sex[8]={"nan","nan","nan"};char *id[20]={"123456","654321","741852"};char *air_num[3]={"007af","008af","009af"};int seat_num[3]={2,5,7};for(i=0;i<3;i++)insert_cus(&p,name[i],sex[i],id[i],air_num[i],seat_num[i]);return OK;}void main(){system("color 8E");int t=1;customer *cus=start_cus();airline *air=start_air();char name[8],air_num[8],ch,m;char sex[8],id[20];creat_air(&air);creat_cus(&cus);search_air(air);while(t==1){printf("\n\n\n");printf("*********************************\n");printf(" * 欢迎来订票哦,亲!*\n");printf(" * 订票----------1 *\n");printf(" * 退票----------2 *\n");printf(" * 查询----------3 *\n");printf(" * 退出----------4 *\n");printf("*********************************\n");scanf("%s",&ch);if(ch=='1'){system("cls");printf("亲,想乘坐哪辆航班嘞:");scanf("%s",air_num);if(strcmp(air_num,"007af")==0||strcmp(air_num,"008af")==0||strcmp(air_num,"009af")==0){printf("亲叫啥嘞:");scanf("%s",name);y1: printf("您的性别(nan or nv):");scanf("%s",sex);if(strcmp(sex,"nan")==0||strcmp(sex,"nv")==0){printf("您的id:");scanf("%s",id);}else {goto y1;}printf("*确认请输入Y否则输入N:");scanf("%s",&m);if(m=='Y'||m=='y'){printf("订票成功!");book(air,air_num,cus,name,sex,id);}else if(m=='n'||m=='N')printf("取消航班成功!\n");else{printf("您的输入有误\n");}} elseprintf("对不起,没有你要找的航班:\n\n");system("pause");}elseif(ch=='2'){system("cls");printf("您不想座哪个航班号啦:");scanf("%s",air);printf("您的姓名是啥来着:");scanf("%s",name);del_cus(cus,air,name);}elseif(ch=='3'){system("cls");search_air(air);printf("\n");search_cus(cus);}elseif(ch=='4'){t=0;}}}四、运行结果分析1.订票系统主界面2、订票成功操作3、订票航班输入错误操作4、选择男女操作5、选择订票是与否操作6、订票成功余票减少五、设计总结这次课程设计使用了C语言来编写程序,使我们的基础知识和数据结构的链表等知识得到了巩固,使我们在实践中得到了锻炼。
航空订票系统(数据库课程设计)
航空订票系统(数据库课程设计)《数据库系统原理》课程设计报告航空订票系统学院:班级:学号:姓名:完成时间:目录一、需求分析--------------------------------------------------------------11、引言-------------------------------------------------------------------------------------------12、项目概述-------------------------------------------------------------------------------------23、需求规定-------------------------------------------------------------------------------------24、运行环境规定-------------------------------------------------------------------------------4二、视图设计--------------------------------------------------------------41、E-R 图----------------------------------------------------------------------------------------42、关系模式-------------------------------------------------------------------------------------53、物理数据模型描述-------------------------------------------------------------------------54、数据流程图----------------------------------------------------------------------------------6三、逻辑结构设计--------------------------------------------------------71、数据表描述----------------------------------------------------------------------------------72、表间联系-------------------------------------------------------------------------------------8四、系统设计--------------------------------------------------------------81、系统功能分析-------------------------------------------------------------------------------82、系统功能模块设计-------------------------------------------------------------------------9五、项目总结--------------------------------------------------------------101、本项目设计的优点-------------------------------------------------------------------------102、项目实现流程-------------------------------------------------------------------------------103、心得体会-------------------------------------------------------------------------------------10一、需求分析1、引言1.1编写目的(1)便于用户、分析人员和软件设计人员进行理解和交流(2)希望系统的外部项(旅客、旅行社、航空公司)均支持目标软件系统的确认。
数据结构课程设计---航空订票系统
数据结构课程设计报告1.航空订票系统1.需求分析试设计一个航空订票系统,基本要求如下:每条航班所涉及的信息有:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,乘员定额,余票量,订定票的客户名单(包括姓名,订票量,舱位等级(头等舱、公务舱、经济仓)以及等候替补的客户名单(包括姓名、所需数量)。
采用链式存储结构。
系统能实现的操作和功能如下:(1)航班信息管理。
(2)查询航线,按以下几种方式查询:①按航班号查询;②按起点站查询;③按终点站查询;④按日期查询;每种查询方式中,查询后输出如下信息:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,余票量。
(3)承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。
若需要,可登记排队候补。
(4)承办退票业务:根据客户提出的情况(日期,航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
2.设计2.1 设计思想(1)数据结构设计typedefstruct keHu//客¨户信息{char nameofKeHu[20];//客户名字int numofPiao;//客¨户需要票的数量int type;//仓位等级1:头等Ì舱2:公务舱3:经济舱struct keHu* next;/下个客户};typedefstruct hangBan{int numofHangBan;//航班号char typeofHB[20];//航班机型¨char startFly[20];//起飞¦机场char endFly[20];//降¦落机场char DataofHB[20];//日期格式为(20120312星期¨一)char startTime[20];//起飞¦时间char endTime[20];//到达时À间float flyTime;//飞行时长float prise;//价格int largeNum;//成员定额int leaveNum;//余票数量keHu *custemer;//乘客信息名单keHu *orderofKeHu;//替补客户};typedefstruct Node{hangBan *exam;//航班信?息¡éint numofN;//航班数量struct Node *next;};(2)算法设计总体设计:在Fly.h文件中设计舱位的信息处理以及订票退票和对舱位信息的管理方面的功能然后在main,h中设计用户界面功能部分。
航空订票系统(数据库课程设计)
《数据库设计与开发Ⅱ》课程设计报告航空订票系统学院:班级:学号:姓名:完成时间:目录一.需求分析 (1)1.引言 (1)2.项目概述 (1)3.需求规定 (2)4.运行环境规定 (4)二.系统结构数据设计 (5)三.视图设计 (8)1.E-R图 (8)2.关系模式 (9)3.数据流程图 (10)四.逻辑结构设计 (11)1.数据表描述 (11)2.程序描述 (12)3.功能描述 (13)五.系统设计 (19)1.系统功能分析 (19)2.系统功能模块设计 (19)六.项目总结 (20)1.本项目设计的优点 (20)2.项目实现流程 (20)3.心得体会 (20)第1 页共22 页一、需求分析1.引言编写本套航空订票系统的《软件规格说明书》的目的在于根据软件需求说明书中的任务概述,需求规定等规划设计出一套可执行软件的结构模型。
1.1编写目的(1)便于用户、分析人员和软件设计人员进行理解和交流(2)希望系统的外部项(旅客、旅行社、航空公司)均支持目标软件系统的确认。
根据需求规格说明书中确立的可测试标准进行测试,并得到确认。
(3)控制系统进化过程1.2项目背景随着社会的发展,人民生活水平的不断提高,人们出行的交通工具也跟随社会的发展而发展起来了。
乘飞机出行的人越来越多。
所以这方面的市场非常大。
所以“机票预订系统”的开发是势在必行。
经过对各方面人士对该系统功能的意见的调查,我们在此基础上确定了旅客与各航空公司所需要的“机票预订系统”。
同时我们会不断更新该系统的功能来满足不断发展的市场需求。
1.3项目描述为各旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入到该系统,系统为旅客安排航班。
当旅客交付了预定金后,系统印出取票通知和帐单交款取票,系统核对无误即印出机票给旅客。
此外为了航空公司能够随时掌握各航向飞机的乘载情况,而能够定期进行查询统计,以便适当调整1.4定义软件需求:IEEE软件工程标准词汇表(1997年)中定义软件需求为:(1)用户解决问题或达到目标所需的条件或权能(Capability)。
航空订票系统C++数据结构课程设计报告
一.需求分析:通过此系统可以实现如下功能:1.航班信息录入每个航班信息包括航班号、起飞时间、降落时间、起飞地点、将落地点、票价、折扣、剩余票量。
通过剩余票量可以确定该航班是否已满。
2.航班信息查询通过航班号或者起飞地点、降落地点查询所需要的航班信息。
3.订票输入姓名和所要订的航班的航班号订票。
4.退票输入姓名和所订的航班的航班号办理退票。
5.修改航班信息输入航班号修改该航班的起飞和降落时间以修改航班的起降时间。
6.退出退出的同时将信息写入文件。
二.总体设计:结构体:struct flight //航班信息{int a1; //航班号string a2; //起飞时间string a3; //降落时间char a4[10]; //起飞城市char a5[10]; //降落城市int a6; //价格int a7; //票价折扣int a8; //余票}fl[10];struct customer //客户信息{char name[10]; //定义字符型数组姓名name[10]int seat; //定义整型变量座位号seatint num; //定义整型变量航班号numchar no[18]; //证件号noint ps; //订票数psstring qfs; //起飞时间qfsstring jls; //降落时间jlschar qfd[10]; //起飞城市qfdchar jld[10]; //降落城市jldint pj; //票价pj}cu[200];使用的函数:void luru(); //声明录入函数void chaxun(); //声明查询函数void chaxun1(); //声明查询方式1函数 void chaxun2(); //声明按查询方式2函数 void dingpiao(); //声明订票函数 void tuipiao(); //声明退票函数 void xiugai(); //声明修改函数 void menu(); //声明主菜单函数 void duqu(); //声明文件读取函数 void tuichu(); //声明退出并保存函数通过各个函数的调用以实现航班信息录入,航班信息查询,订票,退票,修改航班信息。
数据结构航空订票系统课程设计报告
摘要飞机在现代的生活中扮演者非常重要的角色。
它能够快速的把人们送到自己想要去的地方,既快速,又方便。
所以现在坐飞机时很普遍的。
但是都到机场去买票浪费时间,因此,航空订票系统应运而生。
有了航空订票系统,用户可以在该系统进行飞机票的查询,订票,退票等操作。
方便了大家关键词航空订票系统、查询、订票、退票目录摘要 (I)1 需求分析 (2)1.1 需求概述 (2)1.2 需求环境 (3)1.3 功能描述 (3)2 概要设计 (4)2.1 程序功能模块 (4)2.2 程序流程图 (4)2.3 课程设计的思想 (5)3 详细设计 (6)3.1 程序初始化 (6)3.1.1代码功能 (6)3.1.2 功能实现代码 (6)3.2 查询航班信息 (9)3.2.1代码功能 (9)3.2.3 功能实现代码 (11)3.3 订票模块 (12)3.3.1 代码功能 (12)3.3.2 功能实现代码 (12)4 测试与运行 (21)5结束语 (16)6 参考文献 (17)7附录 (18)1 需求分析1.1 需求概述航线管理。
每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量客户管理。
有关订票的客房信息(包括XX、订票量、舱位等级(1,2和3)以及等替补的客房(包括XX、所需标量)。
系统实现主要操作操作和功能。
系统实现的主要操作规程和功能如下:①查询航线。
根据旅客提出的终点站名输出下列信息:航班号、飞机号、飞行日期、余标额。
②承办订票业务。
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队侯补③承办退票业务。
根据客户提供的情况(日期、航班),为客户输退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额满足该客户的要求,则为其订票手续,否则依次询问其他排队候补的客户。
数据结构课程设计之飞机订票系统
青岛理工大学数据结构课程设计报告题目:飞机订票系统院(系):学生姓名:班级:学号:起迄日期:指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:设计一个模拟飞机订票系统,通过此系统可以录入、查询、修改航班情况,完成用户订票和退票功能,并且可以保存客户和航班的资料。
2.基本功能1,录入航班信息。
没个航班的信息包括:航班号,起飞、抵达城市,座位总数,剩余座位数。
数据由使用者输入。
数据存储在txt文件中,采用线性表的链式结构。
2,加载航班和客户信息。
可以自动加载保存在txt文件中的航班和客户的信息。
3,查询航班。
可以通过输入航班号,查询该航班的所有信息。
可以通过输入起飞抵达的城市,查询航班的信息。
4,订票。
客户的信息包括:姓名,证件号,所订票的航班号,座号。
用户输入要订票的航班号,如果该航班未满,则订票成功,并记录客户的信息。
如果该航班已满,则订票失败,输出所有未满的航班信息,供用户选择。
5,退票。
删除退票用户的订票信息,相应的航班的剩余票数增加1。
6,修改航班信息。
用户输入要修改的航班号,和要修改的内容,修改该航班的相应信息。
7,保存操作。
把当前的航班信息,和用户信息分别保存在txt文件中。
8,输出所有客户信息。
按一定的格式输出用户的姓名,证件号码,航班号,座号。
9,输出所有航班信息。
按一定的格式输出所有的航班的航班号,起飞抵达城市,座位总数,剩余座位数。
0,退出系统。
3.输入输出在控制台下,根据提示输入要完成功能的标号,然后在提示下选择性的输入航班号、起飞抵达地、证件号码,或者姓名等。
系统会根据用户的输入输出相应的航班信息或者用户信息。
二、概要设计1.设计思路:对于航班和用户,分别定义不同的数据结构,并且采用线性表的链式结构进行存储。
然后根据要完成的功能,分模块用函数实现。
所用到的算法主要有:链表的创建,增加,遍历,插入,删除。
2.数据结构设计:采用的逻辑结构是线性结构。
存储结构是链式结构。
数据结构(C语言)实验报告_飞机订票系统
《数据结构》课程设计报告一、订票系统【需求分析】本订票系统要能够实现航班情况的录入功能、航班的查询功能、订票功能、退票功能以及管理本系统的功能即能够修改航班信息。
具体分析如下:1、录入功能可以录入航班信息,如录入航班号,到达城市,起飞时间,飞机票数,票价。
2、查询功能可以查询航班的各项信息,如可以查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓,航班号。
3、订票功能可以订票并且记录下乘客的相关信息如记录下乘客,,所订航班的航班号以及所订的票数。
4、退票功能可以退票并且记录乘客的相关信息以及退票信息。
5、修改功能可以根据需要由管理员对航班信息进行修改更正。
【概要设计】1、算法设计:每个模块的算法设计说明如下:(1)录入模块:查找单链表的链尾,在链尾插入一个“航班信息”的新结点。
(2)查询模块:提供两种查方式:按航号和按航线查询,1代表按航号查询,2代表按航线查询。
0则表示退出查询。
顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。
(3)订票模块:查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功,否则失败。
(4)退票模块:输入要退票的乘客以及证件,查找乘客资料的链表中是否有这位乘客,有则删去此结点,并在空位加上1,无则退票失败。
(5)修改模块:输入密码,确认是否有权限对航班信息进行修改,有则在航班信息链表中查找要修改的结点,进行修改,否则不能修改。
2.存储结构设计:(1)航班的信息:为了便于查找和修改,航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞达到的时间、空座和目的的、票价以及限座七个数据项:typedef struct flightnode{char air_num[10]; /*航班号*/char start_time[15]; /*起飞时间*/char end_time[15]; /*到达时间*/char end_place[30]; /*目的地*/int total; /*限座*/int left; /*空座*/int price; /*票价*/struct flightnode *next; /*指向个结点*/}flightnode;(2)旅客的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素typedef struct passengernode{ /*定义乘客资料结点*/char name[20];char ID_num[20];char air_num[20];int seat_num;struct passengernode *next;}passengernode;【详细设计】本系统源程序如下:#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0typedef struct flightnode{ /*定义航班信息结点*/char air_num[10];char start_time[15];char end_time[15];char end_place[30];int total;int left;int price;struct flightnode *next;}flightnode;typedef struct passengernode{ /*定义乘客资料结点*/char name[20];char ID_num[20];char air_num[20];int seat_num;struct passengernode *next;}passengernode;flightnode *head_flight(); /*生成航班信息的头结点*/passengernode *head_passenger(); /*生成乘客资料的头结点*/int CreatFlight(flightnode **l); /*生成航班信息链表*/int CreatPassenger(passengernode **l); /*生成乘客资料链表*/int InsertFlight(flightnode **p,char *air_num,char *start_time,char *end_place,int total,int left,int price); /*插入航班信息的结点*/int InsertPassenger(passengernode **p,char *name,char *ID_num,char *air_num,int seat_num); /*插入乘客资料的结点*/flightnode *modefy_airline(flightnode *l,char *air_num); /*修改航班信息的函数*/int BookTicket(flightnode*a,char *air_num,passengernode *c,char *name,char *ID_num); /*订票函数*/int CancelTicket(passengernode *c,flightnode*l,char *name,char *ID_num); /*退票函数*/ int SearchFlight(flightnode*head); /*查询航班信息函数*/int SearchPassenger(passengernode *head); /*查询乘客信息函数*/void main() /*主函数*/{int p=2; /*p==1时进入主菜单,p==0时退出系统*/passengernode *cus=head_passenger();flightnode *air=head_flight();char name[20],air_num[20],ID_num[30],mima[20],ch;char t[20]="zhengjianze"; /*管理员密码*/clrscr();CreatFlight(&air);CreatPassenger(&cus);while(p==2){printf("\n welcome to the airline system!\n\n please choose the serves below and press the number:\n\n");printf("================================================================\n\n");printf(" 1 -> Book Ticket \n");printf(" 2 -> Cancel Ticket \n");printf(" 3 -> Search Information \n");printf(" 4 -> Exit \n\n");printf("================================================================\n");switch(ch=getch()){case '1':{printf("\n *-------------Booking Ticket-------------*\n"); /*进入订票功能*/ printf("Please input a airline number and press enter for OK:");scanf("%s",air_num);printf("Please input your name and press enter for OK:");scanf("%s",name);printf("Please input your ID number and press enter for OK:");scanf("%s",ID_num);BookTicket(air,air_num,cus,name,ID_num);getch();};break;case '2':{printf(" *-----------------------Canceling Ticket--------------------*\n"); /*进入退票功能*/printf("Please input the cancel name for booking ticket:");scanf("%s",name);printf("Please input the ID for booking ticket:");scanf("%s",ID_num); CancelTicket(cus,air,name,ID_num);};break;case '3':{printf("*---------------Search Information---------------------*\n"); /*进入信息查询功能*/printf(" 1 -> flight information \n" );printf(" 2 -> passenger information\n ");printf(" other -> exit \n");printf("*------------------------------------------------------*\n");if((ch=getch())=='1') /*航班信息查询*/{printf("*------------------ flight information -----------------*\n");SearchFlight(air);}else if(ch=='2'){ /*乘客资料查询*/printf("\n please input the key:");scanf("%s",mima); /*输入管理员密码*/if(strcmp(mima,t)==0){printf("\n*---------------passenger information ---------------*\n\n"); SearchPassenger(cus);}else printf("sorry,the key is wrong");getch();}}break;case '4':{getch(); /*退出系统*/p=0;}break;}}}flightnode *head_flight(){flightnode *a;a=(flightnode *)malloc(sizeof(flightnode));if(a==NULL)a->next=NULL;return a;}passengernode *head_passenger(){passengernode *c;c=(passengernode*)malloc(sizeof(passengernode));if(c==NULL)c->next=NULL;return c;}int CreatFlight(flightnode **l){flightnode *p=*l;int i=0;char *air_num[3]={"flight01","flight02","flight03"};char *start_time[3]={" 08:00"," 12:00"," 16:30"};char *end_place[3]={"Guangzhou","Shenzhen","Shantou"}; /*初始化航班信息*/int total[3]={100,100,100};int price[3]={300,200,250};int left[3]={23,54,76};for(i=0;i<3;i++)InsertFlight(&p,air_num[i],start_time[i],end_place[i],total[i],left[i],price[i]); /*插入航班信息*/return OK;}int CreatPassenger(passengernode **l){passengernode *p=*l;int i=0;char *name[3]={"liming","Ximing","Chongliang"};char *ID_num[3]={"3105006052","3105006054","3105006051"}; /*初始化乘客资料*/ char *air_num[3]={"flight01","flight02","flight03"};int seat_num[3]={12,5,8};for(i=0;i<3;i++)InsertPassenger(&p,name[i],ID_num[i],air_num[i],seat_num[i]); /*插入乘客资料*/ return OK;}int InsertFlight(flightnode **p,char *air_num,char *start_time,char *end_place,int total,int left,int price){flightnode *q;q=(flightnode*)malloc(sizeof(flightnode));strcpy(q->air_num,air_num);strcpy(q->start_time,start_time);strcpy(q->end_place,end_place);q->total=total;q->left=left;q->price=price;q->next=NULL;(*p)->next=q;(*p)=(*p)->next; /*航班信息链的尾插法*/return OK;}int InsertPassenger(passengernode **p,char *name,char *ID_num,char *air_num,int seat_num){passengernode *q;q=(passengernode*)malloc(sizeof(passengernode));strcpy(q->name,name);strcpy(q->ID_num,ID_num);strcpy(q->air_num,air_num);q->seat_num=seat_num;q->next=NULL;(*p)->next=q;(*p)=(*p)->next; /*乘客资料链表的尾插法*/return OK;}flightnode *modefy_airline(flightnode *l,char *air_num)flightnode *p;p=l->next;for(;p!=NULL;p=p->next){if(strcmp(air_num,p->air_num)==0){p->left++;return l;}printf("NO the airline!");return 0;}}int BookTicket(flightnode *a,char *air_num,passengernode *c,char *name,char *ID_num){flightnode *p=a;passengernode *q=c->next;p=a->next;for(;q->next!=NULL;q=q->next);for(;p!=NULL;p=p->next){if(strcmp(p->air_num,air_num)==0){if(p->left>0){printf(" \nSuccessful for Booking ticket.\n\n Y our flight: %s\n Your seat number : %d ",p->air_num,(p->total-p->left+1));printf("\n *-----------------------------------------*");InsertPassenger(&q,name,ID_num,air_num,p->total-p->left+1);p->left--; return OK;}else{printf("seat is full");return 0;}}/*if(strcmp)*/ }printf("Sorry,there isn't the plane,please check the airline number!");printf("\n *-----------------------------------------*");}int CancelTicket(passengernode *c,flightnode *l,char *name,char *ID_num){passengernode *p,*pr;char air_num[20];pr=c;p=pr->next;while(p!=NULL)if(strcmp(p->name,name)==0&&strcmp(p->ID_num,ID_num)==0){strcpy(air_num,p->air_num);l=modefy_airline(l,air_num);pr->next=p->next;p=pr->next;printf("successful for canceling ticket.");printf("\n *-----------------------------------------------------------------*");return OK;}pr=pr->next;p=pr->next;}printf("Sorry,there isn't the customer!");printf("\n *--------------------------------------------------------*");return ERROR;}int SearchFlight(flightnode *head){flightnode *p=head->next;printf(" Flight Start_time Arrival_place Price T otal Left_seat\n\n");for(;p!=NULL;p=p->next){printf(" %s %-10s %-9s %-7d%-6d %-6d\n",p->air_num,p->start_time,p->end_plac e,p->price,p->total,p->left);printf("\n");}printf(" *----------------------------------------------------------*\n\n");return OK;}int SearchPassenger(passengernode *head){struct passengernode *q=head->next;printf(" Name ID Flight Seat_number\n\n");for(;q!=NULL;q=q->next){printf("%-12s %-8s %-5s %d\n",q->name,q->ID_num,q->air_num,q->seat_num);print f("\n");}printf("\n *----------------------------------------------------------*");return OK;}【调试分析】1、调试结果:(1)系统主菜单界面:(2)进入订票的界面:(3)查询信息的界面:选择1,查询航班信息的界面:选择2,输入密码,查询乘客的信息的界面:新增乘客,查询乘客信息:密码错误时:(4)进入退票的界面:名字或者证件错误时:2、时间复杂度分析:本程序运行所耗费的时间主要在于循环语句,for和while语句,其时间复杂度应该为O(n)。
数据结构课程设计 航空客运订票系统
《数据结构课程设计》报告设计题目航空客运订票系统专业班级学号姓名电话完成日期2017.04.13目录1. 问题描述 (2)2. 系统设计 (2)3. 数据结构与算法描述 (4)4. 测试结果与分析 (6)5. 总结 (10)6. 参考文献 (10)附录程序源代码 (10)课程设计题目1. 问题描述基于人们对航空客运使用需求的日益提高,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序是为实现航班情况的查询,订票,退票以及客户信息浏览与票务信息浏览等基本功能。
2. 系统设计2.1 设计目标(1)可以浏览航线信息;包括终点站名、航班号、飞机号、飞行日期、乘员定额和余票量;(2)可以浏览已订票客户信息;包括客户姓名、订票数额和舱位等级;(3)可以查询航线;包括终点站名、航班号、飞机号、飞行日期、乘员定额和余票量;(4)可以办理订票业务;需提供航班号、所需票数、客户姓名和舱位等级,生成客户座位号;(5)可以办理退票业务;提供航班号和客户姓名,即可退票;(6)可以查看剩余票数;(7)要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
2.2 设计思想(1)运行环境(软硬件环境):DEV-C++;(2)输入的形式和输入值的范围:由航空公司输入航线情况并以单链表的形式存储在内存里面;(3)输出的形式描述:通过客户的输入,输出相应内容;(4)功能描述:用户可通过本系统实现对航班的查询、订票和退票功能。
2.3 系统模块划分2.3.1主函数输出菜单界面。
输入指令,显示,敲击回车开始工作。
2.3.2浏览航线信息编写void list()函数实现打印全部航线信息的功能,调用void display()函数实现打印struct airline链表中存储的航线的基本信息的功能。
2.3.2浏览已订票客户信息编写void prtlink()函数实现打印订票乘员名单域的客户名单信息的功能,调用find()函数查询并以指针形式返回。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
攀枝花学院学生课程设计报告摘要摘要飞机在现代的生活中扮演者非常重要的角色。
它能够快速的把人们送到自己想要去的地方,既快速,又方便。
所以现在坐飞机时很普遍的。
但是都到机场去买票浪费时间,因此,航空订票系统应运而生。
有了航空订票系统,用户可以在该系统进行飞机票的查询,订票,退票等操作。
方便了大家关键词航空订票系统、查询、订票、退票目录摘要 (I)1 需求分析 (2)1.1 需求概述 (2)1.2 需求环境 (2)1.3 功能描述 (2)2 概要设计 (3)2.1 程序功能模块 (3)2.2 程序流程图 (3)2.3 课程设计的思想 (3)3 详细设计 (4)3.1 程序初始化 (4)3.1.1代码功能 (4)3.1.2 功能实现代码 (4)3.2 查询航班信息 (6)3.2.1代码功能 (6)3.2.3 功能实现代码 (7)3.3 订票模块 (8)3.3.1 代码功能 (8)3.3.2 功能实现代码 (8)4 测试与运行 (14)5结束语.................................................................................................... . (16)6 参考文献.................................................................................................... .. (17)7附录.................................................................................................... . (18)1 需求分析1.1 需求概述航线管理。
每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量客户管理。
有关订票的客房信息(包括姓名、订票量、舱位等级(1,2和3)以及等替补的客房名单(包括姓名、所需标量)。
攀枝花学院学生课程设计报告需求分析系统实现主要操作操作和功能。
系统实现的主要操作规程和功能如下:①查询航线。
根据旅客提出的终点站名输出下列信息:航班号、飞机号、飞行日期、余标额。
②承办订票业务。
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队侯补③承办退票业务。
根据客户提供的情况(日期、航班),为客户输退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额满足该客户的要求,则为其订票手续,否则依次询问其他排队候补的客户。
1.2 需求环境本课程设计需要的设备为硬件要求和软件配置要求具体要求如下:①硬件要求:一台计算机。
②软件配置:WINDOWS7/VC++6.0。
1.3 功能描述本次课程设计是航空订票系统主要是由查询航班信息,订票还有退票三大主要功能。
除此之外,还有系统的界面等等。
2 概要设计2.1 程序功能模块由需求分析知,本次课程设计是航空订票系统其主要由三大模块构成,即查询模块(这部分由我负责),订票系统模块和退票系统模块构成。
2.2 程序流程图图2.1为该系统总的流程图2.3 课程设计的思想由需求分析知道需要实现几个功能定义了两个结构体。
这两个结构体分别用来表示顾客信息和航班信息。
有结构体可以知道一些基本信息,比如顾客的姓名,定的机票和航班的时间等等信息。
使得实验代码的可读性大大增强。
3 详细设计3.1 程序初始化3.1.1代码功能这一块还是由我负责。
我初始化了五个航班的基本信息。
在初始化程序中,主要是航班的基本信息。
比如航班号,出发时间和剩下的机票数目等等基本信息。
通过运用指针和链表来进行对初始化信息的书写。
在初始化时将三个重点的信息分别初始化为:广州航班号005 飞机号PZH113 机票数120天津航班号004 飞机号PZH121 机票数120北京航班号003 飞机号PZH133 机票数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=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_num,"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 *)malloc(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_num,"PZH122");p->day=3;p->left=120;p->total=120;p->next=q->next;q->next=p;}3.2 查询航班信息3.2.1代码功能此模块主要由我负责,在此模块我实现了查询航班的功能。
当进入查询功能时,通过输入数字用户可以查询航班的基本信息,比如目的地,剩下的机票数目,出发的时间等等基本信息。
如果输入的数字在界面中没有显示则会提示用户没有这次航班。
在这个模块我使用了个switch语句来实现对查询方式的选择。
通过判断输入的数字进入到相对应的查询方式。
如果输入的信息有误的话,系统将会提示用户没有这次航班,需要重新输入。
3.2.2查询模块流程图3.2.2查询模块的流程图在该模块用户可以进行查询功能。
用户根据提示可以按照航班号、飞机号、飞行日期和航班重点来查询航班的基本信息。
这些基本信息包括了飞行航班号、飞机号、剩余票量和处罚日期等等。
在该模块用户必须根据提示进行输入,否则系统会提示输入有误,需要重新输入。
3.2.3 功能实现代码void search() //航班查询系统{int i;int flag=0;airline *p;PR("请输入查询航班的方式:\n");PR("航班号---->1\n");PR("飞机号---->2\n");PR("飞行日期-->3\n");PR("航班终点-->4\n");SC("%d",&i);for(;!flag;)switch(i) //switch语句来进行航班的查询方式{case 1: p=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%8d\n",p->end_addr,p->line_num,p->plant_num,p->day,p->le ft);PR("是否订票(确定请按1)");SC("%d",&i);if(i==1)book();}elsePR("没有该航班\n");}3.3 订票模块3.3.1 代码功能在此模块可以根据提示可以从航班号,飞行日期和终点站来进行订票。