数据结构课程设计航空订票系统样本

合集下载

航班信息查询系统

航班信息查询系统

《数据结构》课程设计书---飞机订票系统班级:完成人:指导老师:开始时间:完成时间:一、任务内容制作一个简单的飞机订票系统二、功能要求1.录入.可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)2.查询.(1)可以查询某个航线的情况(如,输入航班号,查询抵达城市,航班票数信息,是否满仓);(2)可以输入起飞抵达城市,查询飞机航班情况;(3)订票:(订票情况可以存在一个数据文件中,结构自己设定)(4)退票:可退票,退票后修改相关数据文件;(5)修改航班信息:当航班信息改变可以修改航班数据文件四、源程序清单#include<stdio.h>#include<stdlib.h>#include<string.h>#define FLIGHTAMOUNT 200//最大航班数#define SEATAMOUNT 500//最大座位数struct flightstruct{char flightnumber[20];//航班号char finishingline[20];//终点站char date[20]; //日期unsigned maxamount;//总票数unsigned remainders;//剩余票数unsigned seatstate[SEATAMOUNT];//座位数组,贮存座位信息}flight[FLIGHTAMOUNT];void main(){char flag;//提供选择菜单的变量void open(FILE *fp);//打开文件函数void save(FILE *fp);//保存信息函数void built(FILE *fp);//建立文件函数void manage();//输入、管理信息函数void insert(FILE *fp);//插入信息函数void remend(FILE *fp);//修改信息函数void delet(FILE *fp);//删除信息函数void delet_all(FILE *fp);//删除所有信息函数void scan();//浏览信息函数void select();//查询信息函数void booktickets();//订票函数void print_info(unsigned);//输出打印信息函数void sendbacktickets();//退票函数do{printf("\n\t************************飞机订票系统****************************\n");printf("\n\t----------------------------主菜单-------------------------------\n");printf("\t**************-1--信息管理信息浏览--2-****************\n");printf("\t**************-3--信息查询订票系统--4-****************\n");printf("\t**************-5--退票系统退出系统--0-****************\n");p rintf("\n\t-----------------------------------------------------------------\n");do{scanf("%c",&flag);}while(flag!='1'&&flag!='2'&&flag!='3'&&flag!='4'&&flag!='5'&&flag!='0');switch(flag){case '1':manage();break;case '2':scan();break;case '3':select();break;case '4':booktickets();break;case '5':sendbacktickets();break;case '0':;break;}}while(flag!='0');}/**********打开文件 "flightinfomaition.dat"***********/void open(FILE *fp){unsigned i;if((fp=fopen("flightinfomaition.dat","r"))==NULL)//以只读方式打开{printf(" 打开文件失败!\n");exit(0);}for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0");i++) if(fread(&flight[i],sizeof(struct flightstruct),1,fp)!=1){printf(" 文件读取错误!\n");exit(0);}fclose(fp);}/***********************保存设置*******************/void save(FILE *fp){unsigned i;char incept;printf("是否保存?(Y/N):");do{incept=getchar();}while(!(incept=='Y'||incept=='y'||incept=='N'||incept=='n'));if(incept=='Y'||incept=='y'){if((fp=fopen("flightinfomaition.dat","r+"))==NULL)//以读写方式打开{printf(" 打开文件失败!\n");exit(0);}for(i=0;i<FLIGHTAMOUNT;i++)if(fwrite(&flight[i],sizeof(struct flightstruct),1,fp)!=1){printf(" 保存失败!\n");exit(0);}printf(" 保存成功!\n");}fclose(fp);}/*********************管理信息*********************/void manage(){FILE* fp=NULL;char incept;printf("**************************欢迎进入信息管理系统*********************\n");do{p rintf("\n--------------------------------------------------------------------\n");printf("请选择:\n\t 1--建立新文件\n\t 2--插入信息\n\t 3--修改信息\n\t 4--删除信息\n\t 5--删除全部\n\t 0--退出\n");p rintf("--------------------------------------------------------------------\n");do{incept=getchar();}while(incept!='1'&&incept!='2'&&incept!='3'&&incept!='4'&&incept!='5'&&incept!='0');switch(incept){case '1':built(fp);break;case '2':insert(fp);break;case '3':remend(fp);break;case '4':delet(fp);break;case '5':delet_all(fp);break;case '0':return;}printf("继续进行管理?(Y/N)");do{incept=getchar();}while(!(incept=='Y'||incept=='y'||incept=='N'||incept=='n'));}while(incept=='Y'||incept=='y');}/**********建立一个名为"flightinfomaition.dat"的文件************/void built(FILE*fp){unsigned i,j;//建立一个名为"flightinfomaition.dat"文件,用于存贮航班信息if((fp=fopen("flightinfomaition.dat","w"))==NULL){printf(" 文件建立失败!\n");exit(0);}elseprintf("文件建立成功!\n");//文件信息初始化for(i=0;i<FLIGHTAMOUNT;i++){ //将所有信息内容置为0strcpy(flight[i].flightnumber,"0");strcpy(flight[i].finishingline,"0");strcpy(flight[i].date,"0");flight[i].maxamount=0;for(j=0;j<flight[i].maxamount;j++)flight[i].seatstate[j]=0;}save(fp);//保存所改变的信息insert(fp);//插入航班信息}/***********************插入信息************************/ void insert(FILE *fp){unsigned i;char flightnumber[20];open(fp);//在系统可容纳的数据范围之内循环for(i=0;i<FLIGHTAMOUNT;i++)//当所循环到的位置为空时写入新信息if(strcmp(flight[i].flightnumber,"0")==0){printf("请输入航班号(输入“0”结束):");scanf("%s",flightnumber);if(strcmp(flightnumber,"0")==0)break;else{strcpy(flight[i].flightnumber,flightnumber);printf("请输入终点站 :");scanf("%s",flight[i].finishingline);printf("请输入日期 :");scanf("%s",flight[i].date);printf("请输入总票数 :");do{scanf("%d",&flight[i].maxamount);if(flight[i].maxamount<0||flight[i].maxamount>SEATAMOUNT)printf(" 输入错误!\n 请输入正确的数字:");}while(flight[i].maxamount<0||flight[i].maxamount>SEATAMOUNT);flight[i].remainders=flight[i].maxamount;}}save(fp);}/*******************************修改信息*****************************/void remend(FILE *fp){unsigned i,j,maxamount;char flag;char flightnumber[20],finishingline[20],date[20];open(fp);do{printf("查询航班号?(Y/N):");do{scanf("%c",&flag);}while(!(flag=='y'||flag=='Y'||flag=='N'||flag=='n'));if(flag=='y'||flag=='Y')select(fp);printf("请输入航班号:");scanf("%s",flightnumber);f or(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0")&&strcmp(flight[i].flightnumber, flightnumber);i++);if(!strcmp(flight[i].flightnumber,flightnumber)){printf("输入“0”将不做修改\n");printf("请输入新的航班号:");scanf("%s",flightnumber);if(strcmp(flightnumber,"0"))strcpy(flight[i].flightnumber,flightnumber);printf("请输入新的终点站:");scanf("%s",finishingline);if(strcmp(finishingline,"0"))strcpy(flight[i].finishingline,finishingline);printf("请输入新的时间:");scanf("%s",date);if(strcmp(date,"0"))strcpy(flight[i].date,date);printf("请输入新的票数:");do{scanf("%d",&maxamount);if(maxamount<0||maxamount>SEATAMOUNT){printf("输入错误!请重新输入票数:");}}while(maxamount<0||maxamount>SEATAMOUNT);if(maxamount!=0)flight[i].maxamount=maxamount;flight[i].remainders=flight[i].maxamount;for(j=0;j<flight[i].maxamount;j++)flight[i].seatstate[j]=0;save(fp);}elseprintf("没有找到“%s”次航班!",flightnumber); printf("是否继续?(Y/N):");do{scanf("%c",&flag);}while(!(flag=='y'||flag=='Y'||flag=='N'||flag=='n'));}while(flag=='y'||flag=='Y');}/************************************删除信息***********************************/ void delet(FILE *fp){unsigned i;char flag;char flightnumber[20];open(fp);do{printf("查询航班号?(Y/N):");do{scanf("%c",&flag);}while(!(flag=='y'||flag=='Y'||flag=='N'||flag=='n'));if(flag=='y'||flag=='Y')select(fp);printf("请输入航班号:");scanf("%s",flightnumber);f or(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0")&&strcmp(flight[i].flightnumber, flightnumber);i++);if(!strcmp(flight[i].flightnumber,flightnumber)){for(;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0");i++){strcpy(flight[i].flightnumber,flight[i+1].flightnumber);strcpy(flight[i].finishingline,flight[i+1].finishingline);strcpy(flight[i].date,flight[i+1].date);flight[i].maxamount=flight[i+1].maxamount;flight[i].remainders=flight[i+1].remainders;}printf("删除成功!\n");save(fp);}elseprintf("删除是败!没有找到“%s”航班!",flightnumber);printf("是否继续?(Y/N):");do{scanf("%c",&flag);}while(!(flag=='y'||flag=='Y'||flag=='N'||flag=='n'));}while(flag=='y'||flag=='Y');}/*****************删除所有信息**********************/void delet_all(FILE *fp){char incept;unsigned i,j;printf(" 这个操作将删除所有信息!\n");printf("是否继续?(Y/N)");do{incept=getchar();}while(!(incept=='Y'||incept=='y'||incept=='N'||incept=='n'));if(incept=='Y'||incept=='y'){open(fp);for(i=0;i<FLIGHTAMOUNT;i++){strcpy(flight[i].flightnumber,"0");strcpy(flight[i].finishingline,"0");strcpy(flight[i].date,"0");flight[i].maxamount=0;for(j=0;j<flight[i].maxamount;j++)flight[i].seatstate[j]=0;}save(fp);}}/***************************浏览信息*****************************/void scan(){FILE *fp=NULL;unsigned i;open(fp);printf("***********************欢迎进入信息浏览系统************************************\n\n");printf("序号| 航班号 | 终点站 | 时间 |票数|剩余|\n");for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0");i++){p uts("------------------------------------------------------------------------------");p rintf("%4d|%-20s|%-20s|%-20s|%-4d|%-4d|\n",i+1,flight[i].flightnumber,flight[i].finishing line,flight[i].date,flight[i].maxamount,flight[i].remainders);}puts("------------------------------------------------------------------------------\n");}/*********************查询信息************************************/void select(){FILE *fp=NULL;unsigned i;int j;char incept;char flightnumber[20],finishingline[20],date[20];open(fp);printf("\n*************************欢迎进入信息查询系统*************************\n");do{j=0;p uts("----------------------------------------------------------------------\n");printf("请选择一种查询方式:\n");printf("\t 1--航班号\n\t 2--终点站\n\t 3--时间\n\t 4--浏览全部\n\t 0--退出\n");p uts("----------------------------------------------------------------------\n");do{incept=getchar();}while(!(incept=='1'||incept=='2'||incept=='3'||incept=='4'||incept=='0'));switch(incept){case '1':{printf("请输入航班号:");scanf("%s",flightnumber);for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0")!=0;i++)if(strcmp(flight[i].flightnumber,flightnumber)==0){print_info(i);j=1;}if(j==0)printf("对不起!没有找到“%s”航班.\n",flightnumber);}break;case '2':{printf("请输入终点站:");scanf("%s",finishingline);for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0");i++) if(!strcmp(flight[i].finishingline,finishingline)){print_info(i);j=1;}if(j==0)printf("对不起!飞往“%s”的航班没有找到.\n",finishingline);}break;case '3':{printf("请输入日期:");scanf("%s",date);for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,"0");i++) if(!strcmp(flight[i].date,date)){print_info(i);j=1;}if(j==0)printf("对不起!“%s”的航班没有找到.\n",date);};break;case '4':scan();break;case '0':return;}printf("是否继续查询?(Y/N)");do{incept=getchar();}while(!(incept=='Y'||incept=='y'||incept=='N'||incept=='n'));}while(incept=='Y'||incept=='y');}/*****************用于select函数输出打印提示信息*********************/void print_info(unsigned i){puts("------------------------------------------------------------------------------");printf("序号| 航班号 | 终点站 | 时间 |票数|剩余|\n");puts("------------------------------------------------------------------------------");printf("%4d|%-20s|%-20s|%-20s|%-4d|%-4d|\n",i+1,flight[i].flightnumber,flight[i].finishingline,flight[i].date,flight[i].maxamount,flig ht[i].remainders);puts("------------------------------------------------------------------------------");}/****************************订票函数****************************/void booktickets(){FILE *fp=NULL;unsigned amount,i,j;char flag,flightnumber[20];printf("****************************欢迎进入订票系统******************************\n");do{open(fp);printf("输入“s”查询(任意键跳过):");getchar();//接收上面语句的回车scanf("%c",&flag);if(flag=='s')select(fp);printf("输入“y”退出订票(任意键继续):");getchar();scanf("%c",&flag);if(flag=='y')break;printf("请输入航班号:");scanf("%s",flightnumber);for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,flightnumber);i++);if(!strcmp(flight[i].flightnumber,flightnumber)){if(flight[i].remainders==0)printf("对不起!没有票.\n");else{printf("请输入订票数量:");do{scanf("%d",&amount);if(amount<0||amount>flight[i].remainders)printf(" 输入错误!\n 请输入正确的数据:");}while(amount<0||amount>flight[i].remainders);for(j=0;j<flight[i].maxamount&&(amount--)>0;j++)if(flight[i].seatstate[j]==0){flight[i].seatstate[j]=1;flight[i].remainders--;}save(fp);}}elseprintf("没有找到“%s”航班!\n",flightnumber);printf("是否继续订票?(Y/N):");do{flag=getchar();}while(!(flag=='Y'||flag=='y'||flag=='N'||flag=='n'));}while(flag=='y'||flag=='Y');}/****************************退票函数******************************/void sendbacktickets(){FILE *fp=NULL;unsigned i,j,seatnumber;char flag,flightnumber[20];printf("****************************欢迎进入退票系统***********************\n");do{open(fp);printf("请输入航班号:");scanf("%s",flightnumber);for(i=0;i<FLIGHTAMOUNT&&strcmp(flight[i].flightnumber,flightnumber);i++);if(!strcmp(flight[i].flightnumber,flightnumber)){printf("请输入座位号:");do{scanf("%d",&seatnumber);if(seatnumber<0||seatnumber>flight[i].maxamount)printf("输入错误!\n请重新输入座位号:");}while(seatnumber<0||seatnumber>flight[i].maxamount);for(j=0;j<flight[i].maxamount&&seatnumber!=j+1;j++);if((seatnumber==j+1)&&(flight[i].seatstate[j]==1)){flight[i].seatstate[j]=0;flight[i].remainders++;save(fp);}elseprintf(" 输入错误!\n");}elseprintf(" 没有找到“%s”航班!\n",flightnumber);printf("是否继续退票?(Y/N):");do{flag=getchar();}while(!(flag=='Y'||flag=='y'||flag=='N'||flag=='n'));}while(flag=='y'||flag=='Y');}五、效果图1.主菜单以及信息管理界面2.信息浏览界面3订票系统界面.4.退票系统界面六、总结和体会通过本次实践我们收获颇多。

C++数据结构课程设计订票系统

C++数据结构课程设计订票系统

XXXXXXXXXX项目名称:航空信息管理系统学生姓名:XXXXXX 学号:XXXXXXXXX 班级:XXXXXX 指导教师:XXX目录1.系统需求分析 (1)2.数据结构设计及用法说明 (2)3.详细设计和编码 (3)3.1订票模块 (3)3.2退票模块 (6)3.3录入模块 (7)3.4查询模块 (8)4.实验结果 (9)4.1主菜单界面 (9)4.2查询功能模块 (9)4.3订票功能模块 (10)4.4退票功能模块 (10)4.5录入航班信息模块 (10)5.体会 (11)参考文献 (12)附录:源程序清单 (13)1.系统需求分析本次课程设计要求使用C语言编写一个航空客运订票系统程序,根据所有内容都可以只在内存中运行可得知该模拟的航空客运订票系统不需要用文件保存相关输入,运行过程中的数据。

同时该航空客运订票系统要求模拟实际航空订票系统,具有查询航线,客票预订,办理退票,录入航班信息等基本功能。

查询航线功能根据实际分析应该具有通过用户输入的要查询终点站名输出该终点站的终点站,航班号,飞机号,飞行日期,剩余票量的功能。

订票功能应当设计能够根据用户输入的姓名和终点站,查询该终点站的余票并提示剩余票数,之后让用户输入需要订购的票数并执行相关操作。

退票功能可设计成要求用户输入姓名和航班号来查找该用户的的订票信息并打印,再询问是否退票。

录入功能是必要的,用来录入航班节点信息。

2.数据结构设计及用法说明根据该航空信息管理系统的功能要求,应当设计菜单模块,查询模块,订票模块,退票模块,录入信息模块等几个基本模块,main函数里调用菜单模块打印选项菜单,然后用switch case 接收用户选择,并依此跳转到相应模块执行。

同时,为达到能够执行一个模块后继续返回主菜单执行而不是直接退出的目的设计将菜单模块及相应子功能模块放入for死循环里,当输入5则直接退出程序。

按该系统的功能分析得出存放在系统中各项数据不需要使用排序功能,因而使用链表保存数据比用顺序表和数组要便捷并且占用内存少,所以定义linklist类型,内部有data,next 指针2个数据。

(完整word版)航空公司订票系统

(完整word版)航空公司订票系统

数据结构与算法设计课程设计【设计题目】航空公司订票系统【问题描述】编写一个咸阳航空公司订票大厅的一个订票系统,可以在系统中录入并修改各个航班的具体情况,帮助乘客准确的查询各航班的最新信息(包括航班号、航班的起始时间和地点、票价)和各项业务的及时办理(包括订票、退票等)。

该系统用可以用C++的类编写。

【软件功能】1.输入航班信息并保存到磁盘2.浏览航班信息3.修改航班信息并保存到磁盘4.查找航班5.删除航班信息6.订票7.退票【算法思想】1先定义一个乘客基本信息的类包含乘客的姓名、证件号、订票数量及所乘的航班号(注:每个航班有固定的人数限制,若满额则提示其他可供选择的航班。

2建立一个功能类,包括对航班信息和乘客订票信息的录入及修改的函数,其中订票信息采用单链表的顺序存储方式存储。

另外还包括对信息的查询和修改的功能函数,乘客退票的函数。

并将最终的改动结果通过i/O流写入磁盘文件保存。

3编写主函数,对编写的航班系统进行全面测试,对用户界面采用人性化的菜单方式。

【类的设计】定义一个航班的类class plane{friend class customer;//友元类public:void input(); //插入航班信息void print(); //打印航班信息void save(); //保存航班信息void read(); //读取航班信息void search(); //查找航班信息void Delete(); //删除航班信息void book(); //订票void back(); //退票void xiugai(); //修改航班信息private:int num;//航班号char start_place[20];//起点站char arrive_place[20];//终点站char time[10];//起降时间int count;//机票数量}];定义一个顾客信息的类class customer{friend class plane;//友元类protected:I nt id;//身份证号char name[10];//姓名int customer_num;//订票数量public:void read1();//读取数据void save1();//保存数据};【存储结构设计】采用顺序存储结构,利用动态申请空间实现信息的存储。

航空客运订票系统-数据结构课程设计

航空客运订票系统-数据结构课程设计

课程设计报告设计名称:数据结构课程设计选题名称:航空客运订票系统专业班级:计算机科学与技术系(院):计算机工程学院设计时间:设计地点:软件工程实验室、教室指导教师评语:成绩:签名:年月日1.课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。

2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。

2.课程设计任务与要求:任务根据教材《数据结构-C语言描述》(耿国华主编)和参考书《数据结构题集(C语言版)》(严蔚敏、吴伟民主编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。

设计题目从任务书所列选题表中选取,每班每题不得超过2人。

学生自选课题学生原则上可以结合个人爱好自选课题,要求课题有一定的深度与难度,有一定的算法复杂性,能够巩固数据结构课程所学的知识。

学生自选课题需在18周前报课程设计指导教师批准方可生效。

要求:1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。

前期准备工作完备与否直接影响到后序上机调试工作的效率。

在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。

2、设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。

3、程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释;4、每位同学需提交可独立运行的程序;5、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);6、课程设计实践作为培养学生动手能力的一种手段,单独考核。

订票系统数据结构课程设计

订票系统数据结构课程设计

订票系统数据结构课程设计一、课程目标知识目标:1. 让学生理解订票系统中的基本数据结构,掌握线性表、树和图等数据结构在订票系统中的应用。

2. 使学生掌握如何使用数据结构优化订票系统的查询和存储效率,了解不同数据结构在系统性能上的影响。

3. 引导学生学会分析订票系统中的数据关系,并能运用所学知识设计合理的数据结构。

技能目标:1. 培养学生运用所学数据结构知识解决实际问题的能力,能够根据需求设计并实现订票系统中的数据结构。

2. 提高学生的编程实践能力,使其能够熟练运用编程语言实现订票系统相关功能。

3. 培养学生团队协作和沟通能力,能在项目中进行有效分工与协作。

情感态度价值观目标:1. 激发学生对数据结构学习的兴趣,培养其探究精神,提高学习积极性。

2. 培养学生的责任心,使其认识到数据结构在实际应用中的重要性,增强对技术应用的敬畏之心。

3. 引导学生树立正确的价值观,认识到科技进步对生活的影响,培养其热爱科学、服务社会的精神。

课程性质:本课程为高二年级信息技术课程,旨在让学生结合实际应用,深入理解数据结构知识,提高编程实践能力。

学生特点:学生已具备一定的数据结构基础,对编程有一定了解,具备基本的编程能力,但实际应用经验较少。

教学要求:结合订票系统实际应用场景,引导学生运用所学数据结构知识,培养其解决实际问题的能力。

教学过程中注重理论与实践相结合,强化编程实践,提高学生的综合运用能力。

通过项目合作,培养学生的团队协作和沟通能力。

二、教学内容1. 订票系统概述:介绍订票系统的基本功能、业务流程及在生活中的应用。

教材章节:第二章 数据结构在实际应用中的优势2. 数据结构基础知识回顾:线性表、树和图的基本概念、存储结构及操作方法。

教材章节:第三章 线性表;第四章 树;第五章 图3. 订票系统中的数据结构应用:a. 线性表在航班信息存储和查询中的应用b. 树在航空公司组织结构及航班层级关系表示中的应用c. 图在航班网络及航线规划中的应用教材章节:第六章 数据结构在实际应用中的案例分析4. 数据结构优化订票系统性能:分析不同数据结构在查询、存储等方面的性能差异,探讨优化策略。

C语言数据结构课程设计航空订票实验报告(含源代码)

C语言数据结构课程设计航空订票实验报告(含源代码)

数据结构课程设计实验报告设计题目__________________________________________________________________ 设计者__________________________________________________________________ 指导老师__________________________________________________________________ 班级___________________________________________________________________ 学号____________________________________________________________________一、设计要求任务通过此系统可以实现如下功能:1.录入航班信息:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据定)2.查询航班:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓);3.订票:(订票情况可以存在一个数据文件中,结构自己设定);4.退票:可退票,退票后修改相关数据文件;5.修改航班信息6.退出程序客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;二、设计概要主界面选择操作项目1.录入航班信息通过单链表这种数据结构,设置了剩余票数,航班号,出发地点,到达地点,起飞日期,出发时间,到达时间,票价。

2.订票输入旅客的姓名,证件号,航班号,和订票张数。

程序中自动查询输入要定的航班号,如果没有则叫其重新输入,有则执行:票数足够则订票成功,票数不充足叫其选择其它航班。

此也采用单链表的数据结构。

飞机订票系统数据结构课程设计 c++开发

飞机订票系统数据结构课程设计 c++开发

分类号编号华北***大学North China Institute of Water Conserva n cy and Hydroelectric Power 课程设计题目飞机订票系统院系信息工程专业计算机科学与技术姓名****学号2011170000指导教师*****2012年7月6 日目录1. 需求分析 (3)1.1 问题描述 (3)1.2 基本要求 (3)1.2.1 输入的形式和输入值的范围 (3)1.2.2 输出形式 (3)1.2.3 功能要求 (4)2. 概要设计 (4)2.1 数据结构 (4)2.2 程序模块 (5)2.2.1 录入航班信息模块 (5)2.2.2 客户订票模块 (5)2.2.3 客户退票模块 (6)2.2.4 查询航班模块 (6)2.2.5 查询订单模块 (6)2.2.6 修改航班模块 (6)2.3 各模块之间的调用关系以及算法设计 (6)2.3.1 各模块之间的调用关系 (6)2.3.2 算法设计 (7)3. 详细设计 (8)3.1 录入航班信息模块 (8)3.2 顾客订票模块 (9)3.3 顾客退票模块 (11)3.4 查询航班模块 (13)3.5 查询订单模块 (14)3.6 修改航班模块 (15)4. 测试与分析 (16)4.1 合法数据的测试 (16)4.2 非法数据的测试 (19)5. 用户使用说明 (20)5.1 运行环境 (20)5.2 主要功能 (20)5.3 操作注意事项 (20)5.4 业务流程 (21)6. 总结 (21)参考文献 (22)附录:程序源代码 (22)1. 需求分析1.1 问题描述基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票,退票以及航班的查询和修改等基本功能。

本课程设计的题目为:飞机订票系统。

1.2 基本要求1.2.1 输入的形式和输入值的范围录入航班信息时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(float);还需要输入航班是否满仓,值为整型(int)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息)。

数据结构课程设计航空订票系统

数据结构课程设计航空订票系统

航空客运订票系统的设计与实现一、设计目的:设计一个航班订票系统,提高对信息管理、信息查找和排序算法的应用能力。

二、问题的描述:航空客运订票的业务包括查询航线和客票预定的信、客票预定和办理退票等,设计一个程序以使上述任务借助计算机完成。

三、数据结构的设计://航线结构struct airline{char cityname[15]; //终点站char airnum[15]; //航班号char planenum[15]; //飞机号char qjtime[15]; //起降时间int price; //价格int disc; //折扣int num; //总座位数int rempla; //剩余位置(票数)linklist *order;linkqueue wait;}line;//定义链表队列typedef struct wait{char name[6];int ordnum;struct wait *next;} qnode,*qptr;//无票时其余等候买票队列typedef struct listqueue{qptr front; //对头qptr rear; //队尾}linkqueue;typedef struct order{char name[15]; //客户姓名char crenum[15]; //证件号char airnum[15]; //航班号char planenum[15]; //飞机号int ordnum; //订票数量int rempla; //剩余位置int num; //总座位数char qjtime[15]; //起降时间struct order *next;}linklist;建立了航班的终点站,航班号,飞机号,起降时间,价格,折扣,总座位数,剩余位置,指向客户信息truct order指针,等候买票的队列的结构体信息。

建立了客户的客户姓名,证件号,航班号,飞机号,订票数量,剩余位置,总座位数,起降时间,链接下一位的指针的结构体信息。

(完整版)数据结构课程设计-航空客运订票系统

(完整版)数据结构课程设计-航空客运订票系统

嘉应学院计算机学院实验报告课程名称:数据结构课程设计开课学期:2017-2018学年第2学期班级:1503指导老师:***实验题目:航空客运订票系统学号:姓名:上机时间:1.需求分析(1)航空管理。

每条航班所涉及的信息有:终点站名、航班号、飞机型号、飞行周日(星期几)、乘员定额、余票量。

(2)客户管理。

有关订票的客户信息(包括姓名、订票量、航位等级(1,2和3))以及等候替补的客户名单(包括姓名、所需票量)。

(3)系统实现的主要操作和功能。

系统实现的主要操作和功能如下:①查询航班。

根据旅客提出的终点站名输入下列信息:航班号、飞机型号、飞机日期、余票额。

②承办订票业务。

根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队后补。

③承办退票业务。

根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先查询排在第一的客户,若所退票额能满足该客户的要求,则为其办理订票手续,否则询问其他排队候补的客户。

2.概要设计1)本系统设计了一个含有多个菜单项的主控菜单,系统主控菜单运行界面2)存储结构设计本系统主要采用链表结构类型存储航班信息和订票的乘客信息。

航班信息链表结点由10个分量构成,乘客信息链表由5个分量构成。

3)系统功能设计本系统分为以下5个功能模块。

(1)航班管理。

航班管理子模块可完成添加新的航班,按终点站点名查询航班,浏览所有航班。

(2)订票办理。

在添加了航班的基础上可办理订票业务。

乘客根据所需航班输入终点站名和订票量订票。

如果订票量超过余票量,则会提示是否成为候补乘客;如果订票成功,则会要求输入订票乘客的姓名及所订票的舱位等级。

(3)退票办理。

已办理订票业务的乘客可根据所订票的航班和乘客姓名办理退票业务。

、(4)乘客管理。

可以查看已经订票的乘客信息和候补乘客的信息。

航空客运订票系统课程设计(数据结构)

航空客运订票系统课程设计(数据结构)

XXXXXXXXX计算机技术系项目名称:航空客运订票系统学生姓名:XX学号:班级:10801指导教师:年月日目录1.系统需求分析 (3)1.1问题分析 (3)1.2任务意义 (3)2. 数据结构设计及用法说明 (4)3. 详细设计和编码 (5)3.1.主菜单 (5)3.2.录入航空信息 (5)3.3输出航空信息 (6)3.4订票 (7)3.5退票 (7)4. 实验结果 (9)4.1菜单函数的功能测试 (9)4.2录入函数的功能测试 (9)4.3查询航班函数的功能测试 (11)4.4订票功能地测试 (12)致谢 (17)参考文献 (18)附录:源程序清单 (19)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++数据结构课程设计报告

航空订票系统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、所需标量)。

系统实现主要操作操作和功能。

系统实现的主要操作规程和功能如下:①查询航线。

根据旅客提出的终点站名输出下列信息:航班号、飞机号、飞行日期、余标额。

②承办订票业务。

根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队侯补③承办退票业务。

根据客户提供的情况(日期、航班),为客户输退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额满足该客户的要求,则为其订票手续,否则依次询问其他排队候补的客户。

数据结构课程设计 航空客运订票系统

数据结构课程设计 航空客运订票系统

《数据结构课程设计》报告设计题目航空客运订票系统专业班级学号姓名电话完成日期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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构
课程设计报告
设计题目: 航空客运订票系统
院系计算机学院
年级 xxxxx
学生 xxx
学号 xxxxxxxxxxx
指导教师 xxxxxxxxxxx
起止时间 9-6/9-13
9月10日星期二
目录
一、课程设计目的3
二、需求分析3
三、概要设计
1.设计步骤 4 2.系统整体结构图 5 3.功能模块及调用关系说明 5
四、详细设计和源代码
1.实现概要设计中定义数据的存储结构 6
2.查询航线信息功能的算法设计 7
3.订票功能的算法设计 9
4.退票功能的算法设计 12
5.录入功能的算法设计 14
6.总航线预览功能的程序源代码 15
五、调试分析
1.各功能的具体实例分析 16
2.实验过程中出现的问题及解决方法 20
六、课程设计总结20
七、参考资料21
一、课程设计目的
(1) 熟练使用 C 语言编写程序, 解决实际问题;
(2) 了解并掌握数据结构与算法的设计方法, 具备初步的独立分析和设计能力;
(3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
航空订票系统:
( 1) 熟练掌握链表存储结构及其建立过程和常见操作;
( 2) 熟练掌握队列的建立过程和常见操作;
(3)学会自己调试程序的方法并掌握一定的技巧。

二、需求分析
问题描述: 航空客运订票的业务活动包括: 查询航线、客票预订和办理退票等。

试设计一个航空客运订票系统, 以使上述业务能够借助计算机来完成。

设计任务: 经过此系统能够实现如下功能:
录入: 能够录入航班情况( 数据能够存储在一个数据文件中, 数据结构、具体数据自定)
查询: 能够查询某个航线的情况( 如, 输入航班号, 查询起降时间, 起飞抵达城市, 航班票价, 票价折扣, 确定航班是否满仓) ; 能够输入起飞抵达城市, 查询飞机航班情况; 根据旅客提出的终点站名输出下列信息: 航班号、飞机号、星期几飞行, 最近一天航班的日期和余票额;
订票: ( 订票情况能够存在一个数据文件中, 结构自己设定) 根据客户提出的要求( 日期、航班号、订票数额) 查询该航班票额情况, 若尚有余额, 则为客户办理订票手续, 输出座位号; 若已满员或余票额少于订票额, 则需要重新询问客户要求。

若需要, 可预约登记排队等候。

如果该航班已经
无票, 能够提供相关可选择航班;
退票: 根据客户提供的情况( 日期、航班、退票数额) , 为客户办理退票手续, 然后查询该航班是否有人预约登记, 首先询问排在第一的客户, 若所退票额能满足她的要求, 则为她办理订票手续, 否则依次询问其它排队预约的客户……退票成功后修改相关数据文件。

客户资料有姓名, 证件号, 订票数量及航班情况, 订单要有编号。

修改航班信息: 当航班信息改变能够修改航班数据文件
要求: 根据以上功能说明, 设计航班信息, 订票信息的存储结构, 设计程序完成功能。

测试数据: 由学生任意指定, 但报告上要求写出多批数据测试结果。

实现提示: 每条航线应包含的信息有: 终点站名、航班号、飞机号、飞行日期( 星期几) 、乘员定额、余票额、已订票的客户名单( 包括姓名、订票额、座位号) 和预约登记的客户名单( 包括日期、姓名、所需票额) 。

这最后两项显然是一个线性表和一个队列。

为查找方便、已订票客户的线性表应按客户姓名有序, 而且, 为插入和删除方便, 应以链表作存储结构。

由于预约人数无法预料, 队列也应以链表作存储结构。

整个系统需汇总各条航线的情况登录在一张线性表上, 由于航线基本不变, 可采用顺序存储结构, 并按航班有序或按终点站名有序。

每条航线是这张表上的一个记录, 包含上述八个域, 其中乘员名单域为指向乘员名单链表的头指针, 预约登记客户名单域为分别指向队头和队尾的指针。

选做内容: 当客户订票要求不能满足时, 系统可向客户提供到达同一目的地的其它航线情况。

三、概要设计
1.设计步骤
1) 分析问题, 给出数学模型, 设计相应的数据结构。

提示:
(1)己订票的客户名单能够用线性表来实现。

为查找方便, 线性表应按照客户姓名有序,
而且为了插入和删除的方便, 应以链表作为存储结构。

(2)等候替补的客户名单能够用队列来实现。

由于预约人数无法预计, 因此队列也应以链表作为存储结构。

(3)需将输入的航班情况登录到一张线性表上(用顺序存储结构或链表存储结构)。

为了查询的方便, 能够将航班情况按照航班有序或按照终点站名有序建立线性表。

每条航线是这张线性表的一个记录, 包含上述8个域, 其中已订票的客户名单域是指向己订票的客户名单链表的头指针, 等候替补的客户名单域是指向队头和队尾的指针。

2) 算法设计
在已经选择好数据结构的前提下, 为解决问题设计算法。

( 1) 确定所需模块
对于稍复杂的程序设计, 要充分利用模块化程序设计方法, 自顶向下, 逐步细化, 在整体思路确定的情况下, 考虑所需模块数, 各模块完成功能以及模块之间的数据联系和调用关系。

( 2) 各子模块功能描述
给出主要模块的算法描述, 用流程图或伪代码表示。

( 3) 模块之间的调用关系
3) 源程序清单
为了提高工作效率, 充分利用上机调试程序的时间, 要求学生在上机之前给
出源程序清单。

4) 用测试数据去验证算法及程序的正确性
5) 算法分析
经过上机调试, 源程序运行正确, 而且实现算法要求的功能, 解决课程设计题目中给出的问题后, 分析算法的时间复杂度和空间复杂度。

2.系统整体结构图( 功能模块图)
图 1.系统整体结构图
3.功能模块及调用关系说明
( 1) 总航线信息预览: 经过调用display()预览已经建立的全部航线的相关信息( 航班号、飞机号、终点站、飞行日期、定额、余票数、排队等候人数) , 预览完返回主菜单。

( 2) 查询单条航线信息: 根据乘客提出的终点站名或航班号调用Search()函数来查询并输出此条航线的相关信息( 航班号、飞机号、终点站、飞行日期、定额、余票数、已订票乘客名单、排队等候乘客名单) 。

而且
查询完后询问乘客是否订票, 是就调用订票Book()函数来为乘客进行订票, 否就返回主菜单。

( 3) 办理订票业务: 客户先输入的终点站名、订票数、姓名信息再来调用订票Book()函数, Book()函数根据客户提供的终点站名查询到该航线信息, 若客户订票额末超过余票量, 订票成功并登记信息, 在订票乘员名单链表中添加乘客的信息; 如果暂时余票数不足是, 询问客户是否要排队等侯, 如果是, 则在排队等候的队列中增加该乘客的订票信息。

( 4) 办理退票业务: 调用tuipiao()查询函数, 根据客户提供的航线进行搜索根据客户提供的姓名到订票客户名单域进行查询。

退票成功后, 重新将航线名单域指向订票单链表的头指针。

根据队列中从出的客户信息判断是否满足要求, 如果满足, 则将该客户的信息插入到乘客信息链表中。

( 5) 录入航班信息: 调用CreatPlane( ) 函数, 根据输入的航班的相关的信息( 航班号、飞机号、终点站、飞行日期、定额、余票数) , 将此航班加入到原来的航班组中。

( 6) 退出系统
四、详细设计和源代码
1.实现概要设计中定义数据的存储结构
( 1) 已订票乘客信息( 单链表)
typedef struct Cust //已订票乘客信息
{
char Name[15]; //乘客姓名
char number[10]; //乘客所乘飞机航班号
char end[15]; //乘客终点站。

相关文档
最新文档