数据结构课程设计:飞机订票系统设计与实现 (里面附有源代码!)

合集下载

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

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

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

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

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

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

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

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

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

第一部分:需求分析1、系统名称:航空客运订票系统航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。

要求在TC或VC环境下设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。

2、要求:(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票量、已经订票的客户名单(包括姓名、订票量)以及等候替补的客户名单(包括姓名、所需票量)。

(2)作为模拟系统,全部数据可以只存放在内存中。

(3)通过此系统可以实现如下功能:①录入功能:可以录入航班情况②查询功能:根据客户提供的终点站名进行查询,可以输出以下信息:航班号、飞机号、星期几飞行和余票量等。

也可以根据航班号,查询飞机某个航线的情况。

③订票功能:根据客户提出的要求(姓名、终点站名、订票数量)查询该航班的余票量情况。

如尚有足够的余票,则为客户办理订票手续;若已满员或余票量少于订票数量,则需要重新询问客户要求,如需要,可登记排队候补。

④退票功能:根据客户提供的情况(姓名、日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,若有人排队,则为排在第一位的客户办理订票手续。

第二部分:系统设计图样一:设计说明1:添加航班:整个航班的信息保存在一个结构体flight中,采用结构体数组,每一个航班信息包含航班号、起飞时间、起飞城市、降落时间、降落城市、余票数量。

航班信息通过lulu()函数进行添加。

添加的信息保存在航班flight结构体数组中。

2:查询航班:查询板块分为两个部分,按姓名查找和按站名查找。

按姓名查找:通过所输入的姓名和已定客户的姓名相匹配,匹配成功则查找成功。

按站名查找:通过所输入的起始站名和终点站名进行匹配,匹配成功则查找成功。

3:订票功能:根据用户的姓名和航班号进行订票,如果所查找的航班号的余票满足用户需要的票数,则订票成功,该信息保存在Customer中,才用结构体数组,包含已定客户的姓名、客户ID、订的票数、起飞时间、起飞城市、降落时间、降落城市、航班号。

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

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

数据结构课程设计---航空订票系统数据结构课程设计航空订票系统一、设计目的:编写一个航空订票系统,可以在系统中录入并修改各个航班的具体情况,帮助乘客准确的查询个航班的最新信息(包括航班号、航班的起始时间和地点。

票价)和各个项目业务的及时办理(包括订票、退票等)。

二、任务:航空客运定票的业务活动包括:查询航线、客票预定和办理退票等。

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

三、功能要求:1) 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)2) 查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3) 订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4) 退票:可退票,退票后修改相关数据文件;5) 客户资料:有姓名,证件号,订票数量及航班情况,订单要有编号;6) 修改航班信息:当航班信息改变可以修改航班数据文件。

四、设计程序:#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 100//最大容量typedef struct Flight//航班信息{char FlightNumber[6];//航班号char SPlace[10];//起始地char DPlace[10];//目的地char Stime[5];//起飞时间char Etime[5];//降落时间int price;//票价int RemnantSeat;//剩余座位数}Flight;typedef struct Order//订单信息{int OrderNumber;//订单编号char PName[10];//乘客姓名char ID[20];//身份证号char FlightNumber[6];//航班号int num;//订票数量}Order;Flight fl[N];Order od[N];int i,j;//两个常用角标变量int lenf=0;//航班数int leno=0;//订单数char ch;//获取用户选择的变量char filenamef[]="flight.txt";//航班文件名char filenameo[]="order.txt";//订单文件名void save()//保存信息{FILE *fp;if((fp=fopen(filenamef,"w"))!=NULL)//打开文件保存航班信息{for(i=0;i<lenf;i++)//写入文件{fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%d\t%d\n",fl[i].FlightNumber,fl[i].S Place,fl[i].DPlace,fl[i].Stime,fl[i].Etime,fl[i].price,fl[i].Remnant Seat);}fclose(fp);//关闭文件}if((fp=fopen(filenameo,"w"))!=NULL)//打开文件保存订单信息{for(i=0;i<leno;i++)//写入文件{fprintf(fp,"%d\t%s\t%s\t%s\t%d\n",od[i].OrderNumber,od[i].PName,od[i ].ID,od[i].FlightNumber,od[i].num);}fclose(fp);//关闭文件}}void load()//读取信息{FILE *fp;if((fp=fopen(filenamef,"r"))!=NULL)//打开文件读取航班信息{i=0;while(!feof(fp))//读取文件{fscanf(fp,"%s%s%s%s%s%d%d",&fl[i].FlightNumber,&fl[i].SPlace,&fl[i]. DPlace,&fl[i].Stime,&fl[i].Etime,&fl[i].price,&fl[i].RemnantSeat);if(!feof(fp))i++;}lenf=i;//航班数量fclose(fp);//关闭文件}if((fp=fopen(filenameo,"r"))!=NULL)//打开文件读订单信息{i=0;while(!feof(fp))//读取文件{fscanf(fp,"%d%s%s%s%d",&od[i].OrderNumber,&od[i].PName,&od[i].ID,&od [i].FlightNumber,&od[i].num);if(!feof(fp))i++;}leno=i;//订单数量fclose(fp);//关闭文件}}int check(char s[])//检查是否重复{int g=0;for(;g<lenf;g++)if(strcmp(fl[g].FlightNumber,s)==0 && g!=i)//对比是否相同相同就说明重复了return g;//表示重复了return -1;//遍历了整个数组都没发现重复的表示没有重复}void input()//录入信息{system("cls");//清屏for(i=lenf;i<N;i++){printf("请输入航班号:");gets(fl[i].FlightNumber);while(check(fl[i].FlightNumber)!=-1)//检查是否重复{printf("航班号重复,请重新输入:");gets(fl[i].FlightNumber);}printf("请输入下列信息:\n");printf("出发地:");gets(fl[i].SPlace);printf("目的地:");gets(fl[i].DPlace);printf("起飞时间:");gets(fl[i].Stime);printf("降落时间:");gets(fl[i].Etime);printf("票价:");scanf("%d",&fl[i].price);printf("剩余座位数:");scanf("%d",&fl[i].RemnantSeat);getchar();//消除回车lenf++;//航班数加1printf("航班信息录入完成! 是否继续录入下一列航班信息?(y/n):");while(1){ch=getchar();getchar();//消除上一步产生的回车符if(ch=='y' || ch=='Y' || ch=='n' || ch=='N')break;elseprintf("请重新输入:");}if(ch=='n' || ch=='N')break;}save();//保存}void modify()//修改信息{char s[20];system("cls");//清屏printf("请输入要修改的航班号:");gets(s);for(i=0;i<lenf;i++)//查询是否存在输入的信息if(strcmp(fl[i].FlightNumber,s)==0)break;//存在结束循环if(i==lenf){printf("没有您输入航班信息,请按回车返回");getchar();return;}printf("请输入新的航班号:");gets(fl[i].FlightNumber);while(check(fl[i].FlightNumber)==1)//检查是否重复 {printf("航班号重复,请重新输入:");gets(fl[i].FlightNumber);}printf("请更新下列信息:\n");printf("出发地:");gets(fl[i].SPlace);printf("目的地:");gets(fl[i].DPlace);printf("起飞时间:");gets(fl[i].Stime);printf("降落时间:");gets(fl[i].Etime);printf("票价:");scanf("%d",&fl[i].price);printf("剩余座位数:");scanf("%d",&fl[i].RemnantSeat);getchar();//消除回车save();//保存printf("修改成功!\n");system("pause");//任意键继续}void book() // 订票{system("cls");//清屏i=leno;printf("请输入您的姓名:");gets(od[i].PName);printf("请输入您的身份证号:");gets(od[i].ID);printf("请输入订票的航班号:");gets(od[i].FlightNumber);for(j=0;j<lenf;j++)if(strcmp(fl[j].FlightNumber,od[i].FlightNumber)==0 )//对比是否相同break;if(j==lenf)// 表示航班不存在{printf("航班号不存在!请按回车返回");getchar();return;}printf("请输入订票数量:");scanf("%d",&od[i].num);fl[j].RemnantSeat-=od[i].num;//新的剩余票数printf("请输入订单编号:");scanf("%d",&od[i].OrderNumber);getchar();//消除回车leno++;//订单数加1save();//保存到文件printf("定票成功。

(完整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();//保存数据};【存储结构设计】采用顺序存储结构,利用动态申请空间实现信息的存储。

数据结构课程教学设计-飞机订票系统设计与实现(里面附有源代码)

数据结构课程教学设计-飞机订票系统设计与实现(里面附有源代码)
修改航班时,需要输入字符型数据选择进行何种修改操作;增加航班时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(float);还需要输入航班是否满仓,值为整型(int)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息);删除航班时,需要输入要删除的航班的航班号;修改航班时间时,需要输入要修改的航班的航班号,修改后的航班起飞时间和抵达时间。
2.2.3 客户退票模块
void cancel(passengerList *&PList,flightnode *&h)函数调用intdelete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num)函数,将相应的顾客结点删除,并修改相应的航班信息。
int isFull; //航班是否满仓
struct flightnode *next;//指向下一个结点
}flightnode;//航班结点
(2)客户的资料:为了便于插入、删除和修改,其采用项:
姓名
证件号
航班号
订票数量
订单号
void find_same_flight(flightnode *l,char *flight_num):在客户订票时,当客户输入的航班号对应的航班已满仓时,提供其他可选航班并输出显示。
void cancel(passengerList *&PList,flightnode *&h):完成客户退票,将客户的订单从客户链表中删除,并修改相应的航班信息。
(2)可以查询某个航线的情况:输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓;输入起飞抵达城市,查询飞机航班情况;

数据结构课程设计:飞机订票系统设计与实现 (里面附有源代码!)

数据结构课程设计:飞机订票系统设计与实现 (里面附有源代码!)

课程设计题目飞机订票系统院系*******专业***************姓名******学号*********指导教师***2012年7月1. 需求分析1.1 问题描述基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票,退票以及航班的查询和修改等基本功能。

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

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

客户订票时,需要输入起飞抵达城市,然后选择航班进行查询,选择航班时需要输入航班号,值为字符串。

客户退票时,需要输入姓名,证件号进行退票操作,值为字符串。

查询某个航班的情况时,需要输入航班号,值为字符串;在查询某个航线的情况时,还可以通过输入起飞抵达城市来查询,值为字符串。

查询某个订单时,需要输入订单号,值为整型(int);或者需要输入客户姓名和证件号,值为字符串。

修改航班时,需要输入字符型数据选择进行何种修改操作;增加航班时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(float);还需要输入航班是否满仓,值为整型(int)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息);删除航班时,需要输入要删除的航班的航班号;修改航班时间时,需要输入要修改的航班的航班号,修改后的航班起飞时间和抵达时间。

1.2.2 输出形式在所有操作后的输出中都显示操作是否正确以及操作后单链表的内容。

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”表示停止录入航班信息)。

数据结构课程设计飞机票订票系统讲解

数据结构课程设计飞机票订票系统讲解

学号成都理工大学计算机科学与技术系数据结构课程设计设计说明书题目订票系统学生姓名班级成绩指导教师(签字)计算机科学与技术系2016 年9 月20 日目录第1章问题描述 (1)(1)录入: (1)(2)查询: (1)(3)订票: (1)(4)退票: (1)1、开发环境 (2)2、组成框图 (2)3、流程图 (3)第3章详细设计 (4)1.根据飞机订票系统的可设要求,要实现以下功能: (4)2.具体的方法及函数调用的思想: (4)struct://它相当于一种记录 (4)3.方法的实现: (5)1)input( ); //录入 (5)2)find( ); //查询,按终点站来查询 (6)3)string time(short begin_hour,char begin_minute); //调用系统时间 (6)4)order( ); //办理订票函数 (6)5)refund( ); //办理退票函数 (6)第4章测试结果及分析 (7)执行结果: (7)参考文献 (10)附录:源代码 (10)1第1章问题描述通过此系统可以实现如下功能:(1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)(2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;(3)订票:可以订票,如果该航班已经无票,可以提供相关可选择航班;(4)退票:订票数量及航班情况。

第2章概要设计1、开发环境系统环境:Microsoft Windows®10 专业版开发环境:Microsoft Visual Studio 2015开发平台:Win64开发语言:C++硬件环境:(1) CPU:Intel Core i5(2)内存:4GB(3)显示卡:NVIDIA GeForce GTX950M2、组成框图3、流程图第3章详细设计1.根据飞机订票系统的可设要求,要实现以下功能:(1)录入:录入航班情况(2)查询:可以查询某个航线的情况可以输入抵达城市,查询飞机航班情况;(3)订票:1)先判断飞机是否起飞,如果发出航班则订票失败,否则可以订机票。

数据结构课程设计_飞机订票系统设计与实现 (里面附有源代码)

数据结构课程设计_飞机订票系统设计与实现 (里面附有源代码)

课程设计题目飞机订票系统院系 *******专业 ***************姓名 ******学号 *********指导教师 ***2012年7月1. 需求分析1.1 问题描述基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票,退票以及航班的查询和修改等基本功能。

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

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

客户订票时,需要输入起飞抵达城市,然后选择航班进行查询,选择航班时需要输入航班号,值为字符串。

客户退票时,需要输入,证件号进行退票操作,值为字符串。

查询某个航班的情况时,需要输入航班号,值为字符串;在查询某个航线的情况时,还可以通过输入起飞抵达城市来查询,值为字符串。

查询某个订单时,需要输入订单号,值为整型(int);或者需要输入客户和证件号,值为字符串。

修改航班时,需要输入字符型数据选择进行何种修改操作;增加航班时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(float);还需要输入航班是否满仓,值为整型(int)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息);删除航班时,需要输入要删除的航班的航班号;修改航班时间时,需要输入要修改的航班的航班号,修改后的航班起飞时间和抵达时间。

1.2.2 输出形式在所有操作后的输出中都显示操作是否正确以及操作后单链表的容。

飞机订票系统(数据结构)

飞机订票系统(数据结构)

假设某机场共有M次航班,第i次航班有ni个座位,且每次航班到达一个目的机场。

设计一个满足该机场需要的用户订票、退票程序#include <stdio.h>#include <string.h>#include <conio.h>#include <fstream>struct air //定义结构体数组{int num;int seat;int count;air *next;};struct air s[3];void init(int); //初始化航班信息void read(); //读取航班信息void save(); //保存航班信息void print(); //输出航班信息void dingpiao(); //订票信息void tuipiao(); //退票信息void main(){init(3);save();int j;printf(" ★---您好,欢迎进入飞机订票系统!---★\n");printf("================================================================ ================\n");do{printf(" -------- ☆ 1.浏览航班信息☆-------- \n\n"" -------- ☆ 2.订票信息☆-------- \n\n"" -------- ☆ 3.退票信息☆-------- \n\n"" -------- ☆0.退出☆-------- \n\n");printf("================================================================ ================\n");printf("机场共有M=3次航班,第i次航班有(n=2)*i个座位,每次航班到达一个目的机场!!!\n");printf("================================================================ ================\n");printf("请在0-3中选择以回车键结束:\n\n");scanf("%d",&j);switch(j){case 1:print(); //读取航班信息break;case 2: dingpiao(); //订票信息break;case 3:tuipiao(); //退票信息break;case 0:;break;}}while(j!=0); //判断结束printf("谢谢使用,再见!\n");}//主函数结束void init(int se) { //初始化模块int i;air *q=&s[0]; //指向头指针for(i=0;i<se;i++){q->num=i+1; //航线编号q->seat=2*(i+1); //第i次航班有ni个座位q->count=q->seat; //剩余座位q->next=&s[i+1]; //指向下一结点q=q->next; //头指针+1}q->next=NULL; //最后一个节点指针设为空}void save()//保存模块程序{int i;int m;FILE *fp,*fp1;//定义文件指针if((fp=fopen("chen.dat","wb"))==NULL)//打开文件并判断是否出错{printf("创建文件失败!\n\n");//打印出错提示getchar();return;}if((fp1=fopen("hao.dat","wb"))==NULL)//打开文件并判断是否出错{printf("创建文件失败!\n\n");//打印出错提示getchar();return;}for(i=0;i<3;i++)if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错printf("向文件输入数据失败!\n\n");fprintf(fp1,"%d",&m);fclose(fp);//关闭文件fclose(fp1);//关闭文件}void read()//从文件读取信息模块{int m;int i;FILE *fp,*fp1;//定义文件指针if((fp=fopen("chen.dat","rb"))==NULL)//打开文件,并判断是否出错{printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示getchar();if((fp1=fopen("hao.dat","rb"))==NULL)//打开文件并判断是否出错{printf("创建文件失败!\n\n");//打印出错提示getchar();return;}fscanf(fp1,"%d",&m);fclose(fp1);//关闭文件for(i=0;i<m;i++){fread(&s[i],sizeof(air),1,fp);//从文件中读取信息}fclose(fp);//关闭文件}void print()//输出航班模块{int se;char w[10];read();//调用读取文件函数printf("航班号座位数剩余票\n");air *q=&s[0];for(se=1;se<4;se++){printf(" %d ",q->num);printf(" %d ",q->seat);printf(" %d ",q->count);printf("\n");q=q->next;}printf("请按任意键回车键结束返回上层菜单以:\n");scanf("%s",w);}void dingpiao()//订票模块int i;int n;char a[10];read();do{printf("请输入您要订的机票的航线编号(1、2、3):\n");scanf("%d",&i);if((i-1)<0||(i-1)>3){printf("请输入有效飞机编号!\n");//判断机票数是否出错}else{air *q=&s[i-1];printf("请输入您要订的机票数以回车键结束:\n");scanf("%d",&n);//读取所订机票数if(n<0){printf("请输入有效的机票数!\n");//判断机票数是否出错break;}if((q->count)!=0&&(q->count)>=n)//判断是否出错{q->count=q->count-n;save();//调用保存函数printf("订票成功!\n\n");break;}if(q->count<n)//判断是否出错{printf("票数不足:\n");break;}printf("是否继续?请输入yes或no以回车键结束:\n");//判断是否继续订票scanf("%s",a);}}while(!strcmp(a,"yes"));//判断结束}void tuipiao()//退票模块{int n;char a[10];int i;do{printf("请输入您要订的机票的航线编号(1、2、3):\n");scanf("%d",&i);if((i-1)<0||(i-1)>3){printf("请输入有效飞机编号!\n");break;}else{air *q=&s[i-1];printf("请输入您要退的机票数目:\n");scanf("%d",&n);//输入所退票数read();int k;k=2*i-(q->count);if(n<0||n>k) //判断票数是否有效{printf("请输入有效的机票数!\n");break;}else{q->count=q->count+n;save(); //调用保存模块printf("退票成功!\n\n");printf("是否继续?请键入yes或no以回车键结束:\n\n");//判断是否继续退票scanf("%s",a);}}}while(!strcmp(a,"yes"));//判断并跳出循环getchar();。

C语言课程设计_飞机订票系统源代码

C语言课程设计_飞机订票系统源代码

#include<stdio.h> //标准输入、输出头文件#include<string.h> //包含字符串函数处理头文件#include<process.h> //包含access函数的头文件#define N 9999 //定义最多的航班数#define PRINT "%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n ",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //宏定义输出格式struct air //定义结构体数组{int num; //定义航班号char start[20]; //航班起始站char over[20]; //终点站char time[10]; //飞行时间int count; //机票数量}s[N];int i,m=0; //定义全局变量char ii[10];void add(); //函数声明增加航班信息函数void print(); //显示航班信息void search(); //查找航班信息void dingpiao(); //订票业务void tuipiao(); //退票void read(); //读取文件void save(); //保存文件void output(); //输出格式void paixu(); //航班排序void chushihua(); //系统初始化void build(); //建立数据文件void paixu1(); //按航班号从小到大排序void paixu2(); //从大到小void main() //主函数{int j;chushihua(); //系统初始化判断是否存在原始数据文件printf(" 欢迎使用飞机订票系统\n"); //打印出系统主界面do{printf("============================================================ ==================== ");printf("1.增加航班信息\n""\t2.浏览航班信息\n""\t\t3.查找航班信息(按航班号)\t\t╮(╯_╰)╭\n""\t\t\t4.航班排序(按航班号)\n""\t\t\t\t5.订票业务\n""\to(︶︿︶)o\t\t\t6.退票业务\n""\t\t\t\t\t\t0.退出\n");printf("======================================================== ======================== ");printf("请在0-6中选择以回车键结束:");scanf("%d",&j);switch(j){case 1: add(); //调用增加航班函数break;case 2:print(); //调用显示模块break;case 3:search(); //调用查找模块break;case 4:paixu(); //调用排序函数break;case 5:dingpiao(); //调用订票模块break;case 6:tuipiao(); //调用退票模块break;case 0: //退出系统save();printf("谢谢使用,再见!");break;}}while(j!=0); //判断是否调用其他函数}void chushihua() //定义系统初始化函数{if(access("hangban.dat",0)){build();}elseread();}void build() //定义建立数据文件函数{FILE *fp; //定义文件指针if((fp=fopen("hangban.dat","wb"))==NULL) //打开文件并判定是否出错{printf("创建文件失败! "); //打印出错提示getchar();return;}printf("请依次输入航班信息(以回车键结束):\n"); //打印提示信息printf("-------------------------------------------------------------------------- \n");for(i=0;i<N;i++){printf("请输入航班号: ");scanf("%d",&s[i].num); //输入航班号printf("请输入起始站: ");scanf("%s",s[i].start); //输入起始站printf("请输入终点站: ");scanf("%s",s[i].over); //输入终点站printf("请输入时间(星期几): ");scanf("%s",s[i].time); //输入时间printf("请输入机票数: ");scanf("%d",&s[i].count); //输入机票数fwrite(&s[i],sizeof(struct air),1,fp);m++;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);if(strcmp(ii,"y")!=0) //判断是否继续添加航班信息{fclose(fp); //关闭文件return;}}}void read() //定义读取文件函数{FILE *fp;if((fp=fopen("hangban.dat","r"))==NULL){printf("创建文件失败! ");getchar();return;}i=0;while(!feof(fp)){fread(&s[i],sizeof(struct air),1,fp); //逐块读取数据i++;m++; //计算存在航班数}m--;fclose(fp);}void save() //定义保存函数{FILE *fp;if((fp=fopen("hangban.dat","wb"))==NULL){printf("创建文件失败! ");getchar();return;}for(i=0;i<m;i++) //逐块保存数据fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);}void add() //定义增加航班信息函数{do{printf("请依次输入您要增加的航班信息(以回车键结束): \n"); //打印提示信息printf("-------------------------------------------------------------------------- \n");printf("请输入航班号: ");scanf("%d",&s[m].num); //读取航班号printf("请输入起始站: ");scanf("%s",s[m].start); //读取起始站printf("请输入终点站: ");scanf("%s",s[m].over); //读取终点站printf("请输入时间: ");scanf("%s",s[m].time); //读取时间printf("请输入机票数: ");scanf("%d",&s[m].count); //读取机票数m++;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);}while(!strcmp(ii,"y")); //判断是否继续添加}void output() //定义输出格式函数{printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n"); //信息标题for(i=0;i<m;i++)printf(PRINT);//打印出信息}void print() //定义显示航班信息函数{printf("\n目前我们有如下航班:\n");output(); //调用输出格式函数printf("\n请按回车键返回上层菜单");getchar();getchar();}void search() //定义查询函数{int n;do{printf("\n请输入航班号:");scanf("%d",&n); //输入查询的航班号for(i=0;i<m;i++){if(s[i].num==n) //按航班号判定输出条件{printf("\n您所查找的航班信息为:\n ");printf("航班号\t\t起始站\t\t终点站\t\t时间\t\t机票数\n\n");printf(PRINT); //显示信息printf("\n查询完毕,按回车键继续");getchar();getchar();return;}}printf("\n对不起,没有您需要的信息!\n ");printf("是否重新查找?请键入y或n以回车键结束");scanf("%s",ii);}while(!strcmp(ii,"y"));//判定是否重新查找}void dingpiao() //定义订票业务函数{int n;char a[10]="y";do{search(); //调用查询模块if(!strcmp(ii,"n")){printf("对不起!没有找到您所需要的航班,所以不能订票。

数据结构毕业课程设计(C语言版)飞机订票系统

数据结构毕业课程设计(C语言版)飞机订票系统

(此文档为word格式,下载后您可任意编辑修改!)———C语言版课题:飞机订票系统和图的遍历的动态演示姓名:学号:班级:指导教师:订票系统1.需求分析任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;2:主要设计思路:1)算法构造流程图:A:主菜单:B:各分块模板的构造流程图:3:功能函数设计:(1):订票系统主菜单函数menu_select()本函数主要构造系统的主菜单,系统需要实现很多功能,并且各个功能需要各自的函数支持,所以通过主菜单可以轻松的进入各个函数下实现各自的功能,故主菜单显得尤为重要。

其实就是通过键盘输入选择项,然后通过scanf接受,在通过swtich判断进入各个选择项。

(2):工作人员管理函数enter()&change()系统需要各个航班的详细信息,所以需要工作人员把信息输入系统里,以供乘客查询订票。

enter()函数的构造就是为了解决这个问题。

而有可能航班线路更改或由于天气等原因飞机的起飞时间发生了更改,故工作人员需要及时更改信息,所以需要构造change()函数。

(3):列出航班信息的函数list()乘客需要查询各个航班的信息,所以通过系统要能调出上面工作人员已经录入好的航班信息,所以构造本函数来实现这个功能。

(4)乘客具体查询函数search()本函数分两个分函数:search1()和search2(),它们分别实现乘客的按航班查询和按出发及抵达城市的两种查询方案。

C++版大大数据结构航空订票系统源代码

C++版大大数据结构航空订票系统源代码

#ifndef _FLIGHT_H_#defi ne _FLIGHT_H_ #in clude<fstream> using n amespace std; struct node{int id;char start[20];char over[20]; float s_time;float o_time;int price;float sale;int ticket;struct node *n ext;};struct people{char n ame[20]; char passpart[20]; intticket;int id;int nu mber;struct people *n ext;};class fly{public:void add();no de* read();int select();void update();void update_ticket(i nt id,i nt u_id);ofstream we;ifstream re;private:node *head;};class user:public fly{public:int add();int in sert();void dele();int user_id;};#en dif#i nclude"iostream"#i nclude"flight.h"#i nclude"fstream"using n amespace std;void fly::add(){int i;node *p=new node;node *s,* n;head=p;we.ope n("flight.txt",ios_base::app|ios_base::b in ary);cout<<" 请依次输入航班信息:"<<e ndl;票数cout<<"航班号起飞地目的地起飞时间降落时间票价折扣"<<e ndl;cin> >p_>id>>p_>start>>p_>over>>p_>s_time>>p_>o_time>>p_>price>>p_>sale»p->ticket;while(p!=NULL){cout<<" 是否再次输入? 1 是 2 否"<<e ndl;cin> >i;if(i==1){s=new node;cin> >s_>id>>s_>start>>s_>over>>s_>s_time>>s_>o_time>>s_>price>>s_>sale>>s->ticket;p_>n ext=s;p=s;p-> next=NULL;}else{p-> next=NULL;p=p->n ext;}}n=head;while( n!=NULL){we.write(re in terpret_cast<char* >(n ),sizeof(struct no de)); n=n->n ext;}we.close();cout<<"录入成功"<<endl;}no de* fly::read(){re.ope n("flight.txt",ios_base::b in ary|ios_base::i n);node *h,*s,*p;h=new node;p=new node;p-> next=NULL;re.read(re in terpret_cast<char*>(p),sizeof(struct no de));h_>n ext=p;while(!re.eof()){s=new node;re.read(re in terpret_cast<char*>(s),sizeof(struct no de));p_>n ext=s;p=s;p-> next=NULL;}re.close();return h;}int fly::select(){node *p,*h;h=read();p=h->n ext;int i;cout<<"您是要按 1 航班号2抵达城市3起飞城市查找? "<<e ndl;cin> >i;if(i==1)cout<<" 请输入航班号"<<endl;cin> >i;for(;;){if(p_>id==i)cout<<"航班号"<<p->id<<""<<p->over<<" 起飞时间"<<p_>s_time<<" 价"<<p->price<<" 折扣"<<p->sale<<"retur n p->ticket;break;}if(p-> next==NULL){cout<<"查无次航班信息"<<endl;break;}p=p->n ext;起飞地"<<p->start<<" 目的地降落时间"<<p->o_time<<" 票票数"<<p->ticket<<endl;}i=0;} if(i==2){char ove[20];cout<<" 请输入抵达城市"<<endl;cin»ove;for(;;)if(strcmp(p_>over,ove)==O)return -1;if(p-> next==NULL){break;"<<p->over<<"价"<<p->price<<"cout<<"航班号"<<p->id<<" 起飞时间"<<p->s_time<<"折扣"<<p->sale<<"起飞地"<<p->start<<" 降落时间 "<<p->o_time<<" 票数"<<p->ticket<<endl;目的地if(i==3){char sta[20];cout<<" 请输入起飞城市"<<endl;cin> >sta;for(;;){if(strcmp(p->start,sta)==O)cout<<"航班号"<<p->id<<" "<<p->over<<"起飞时间"<<p->s_time<<"价"<<p->price<<" 折扣"<<p->sale<<"return -1;}if(p-> next==NULL){}p=p->n ext;起飞地 "<<p->start<<" 目的地降落时间"<<p->o_time<<"票票数"<<p->ticket<<endl;break;}p=p->n ext;}}} void fly::update(){int i;node *p,* n,*h;h=read();p=h->n ext;"<<e ndl;cout<<"请输入您要修改的航班信息的航班号cin> >i;for(;;){if(p->id==i){起飞地 "<<p->start<<" 目的地降落时间 "<<p->o_time<<" 票 票数"<<p->ticket<<endl; "<<e ndl; 起飞时间 降落时间 票价折扣 票数"<<e ndl;cin> >p_>id>>p_>start>>p_>over>>p_>s_time>>p_>o_time>>p_>price>>p_>sa le>>p->ticket;break;}if(p-> next==NULL){ cout<<" 查无此航班信息"<<endl;break;}p=p->n ext;}n=h->n ext;we.ope n("flight.txt",ios_base::tr un c|ios_base::b in ary); while( n!=NULL) { 价"<<p->price<<" 折扣"<<p->sale<<" cout<<" 请输入修改后的航班信息:cout<<" 航班号 起飞地 目的地 cout<<"航班号 "<<p->id<<" "<<p->over<<" 起飞时间"<<p_>s_time<<"we.write(re in terpret_cast<char* >(n ),sizeof(struct no de)); n=n->n ext;}we.close();cout<<"修改成功"<<endl;}void fly::update_ticket(i nt id,i nt u_id){node *p,* n,*h;h=read();p=h->n ext;for(;;){if(p->id==u_id){p->ticket=p->ticket-id;break;}if(p-> next==NULL){break;}p=p->n ext;}n=h->n ext;we.ope n("flight.txt",ios_base::tr un c|ios_base::b in ary);while( n!=NULL){we.write(re in terpret_cast<char* >(n ),sizeof(struct no de)); n=n->n ext;}we.close();}int user::add(){people *p=new people;we.ope n("user.txt",ios_base::app|ios_base::b in ary);cout<<" 请依次输入订票信息:"<<e ndl;cout<<"客户姓名证件号订票数量航班号订单编号"<<endl;cin> >p_ >n ame>>p->passpart»p->ticket>>p->id»p->nu mber;we.write(rei nterpret_cast<char*>(p),sizeof(struct people));we.close();user_id=p->id;cout<<"录入成功"<<endl;return p->ticket;}int user::insert(){int ticket,id;ticket=select();if(ticket==-1){cout<<" 请再次查询确定航班号"<<e ndl;}else{if(ticket==0)cout<<" 该航班无票"<<endl;else{id=add();return id;}}}void user::dele(){int num;re.ope n("user.txt",ios_base::b in ary|ios_base::i n);people *h,*s,*p,* n,*m;h=new people;p=new people;re.read(re in terpret_cast<char*>(p),sizeof(struct people));h_>n ext=p;while(!re.eof()){s=new people;re.read(re in terpret_cast<char*>(s),sizeof(struct people));p_>n ext=s;p=s;p-> next=NULL;}re.close();cout<<"请输入您要删除的客户订单编号"<<e ndl;cin»num;m=h;n=h->n ext;while( n!=NULL){if(n->nu mber==num){m->n ext =n->n ext;p=h->n ext;we.ope n("user.txt",ios_base::b in ary);while(p!=NULL){ we.write(re in terpret_cast<char*>(p),sizeof(struct people)); p=p->n ext;}we.close();cout<<"删除成功"<<endl;break;}n=n->n ext;m=m->n ext;}}#i nclude"iostream"#i nclude"flight.h"#i nclude"fstream" using n amespace std;int mai n(){user a;fly b;int i,s,id;cout<<" 欢迎进入航班订票系统"<<e ndl;cout<<"请选择:"<<e ndl;cout<<"1 航班信息管理2订票信息管理3退出"<<endl;cout<<" 请选择您要实施的操作;"<<e ndl;cin> >i;system("CLS");switch(i){case 1:4 返回cout<<"1 添加航班信息 2 查找航班信息 3 修改航班信息上一层"<<endl;cin> >s;system("CLS");switch(s){case 1:b.add();break;case 2:a.select();break;case 3:a.update();break;default:system("CLS");}break;case 2:cout<<"1 添加订票信息 2 删除订票信息 3 返回上一层"<<endl;cin> >s;system("CLS");switch(s){case 1:id=a.i nsert();a.update_ticket(id,er_id);break;case 2:a.dele();break;case 3:break;}break;case 3:return 0;break;}}。

飞机订票系统,数据结构附代码

飞机订票系统,数据结构附代码

数据结构实验报告实验三专业:[软件学院]学生姓名:[ ]完成时间:2014年5月2日《数据结构》课程设计报告姓名2012 级实验室A109 提交日期2014.4.23 学号4班组成绩指导教师实验题目:飞机订票系统。

设计一个飞机票订票系统,完成对航空客运订票的业务管理,包括客户资料管理、原始数据的录入、航班信息的浏览、根据航班号查询航班信息、根据航线查询航班信息、订票和退票、针对特定的航班号或是航线给出推荐的航班排序。

问题解析(对问题的分析、理解和解题方法):主要考察数据结构中的线性表、队列以及图的各种相关操作,和文件的基本知识以及应用基本知识解决实际问题的能力。

掌握好基本知识,将实际问题一步步分解,得出最终结果。

数据结构选择、算法设计:此次课程设计我们小组成员主要借用C++语言中的类(或是C语言中的结构体)和数组的结合,结合类的成员变量可以多样化的优点和数组的下标拥有类似指针遍历的功能的优点。

将要处理的数据借用文件的处理手段存到结构体数组里从而将数据引进到程序里,其余的拓展操作都按基本的方法处理。

任务分工及进度计划:花费三周时间完成代码编写、数据测试、报告书写等全部任务。

首先小组成员各自仔细研读实验要求,展开讨论,综合俩人的想法,去粗取精,捋出大致的创作思路并给出简单的计划实施流程,整合程序涉及的对象个数和各个对象应包括的成员变量从而给出类的定义,根据类定义给出部分用于测试的原始数据。

站在用户的角度思考主函数开始后的每个步骤从而先写出主函数,所用到的各个方法的函数头给出。

组员分配函数方法编写任务,在仔细研究每个步骤的前提下,做出相应的方法定义,各自完成各自的函数体编码后整合到一起。

对整合后的代码进行初步完善,主要集中于类定义、方法实现、界面设计,补充注释,多次测试几组数据。

上网查询相关知识,补充大脑,完善完美。

用户手册:当用户启动程序后,后台会自动加载原始信息。

服务人员也可以通过更改原始数据文件及时更新航班信息。

数据结构课程设计《订票系统(航空)》报告源代码

数据结构课程设计《订票系统(航空)》报告源代码

数据结构课程设计——《订票系统》目录一、设计任务与要求2b5E2RGbCAP1.1 总体目标与任务要求2p1EanqFDPw1.2 题目选择与目地意义2DXDiTa9E3d1.3 所选题目地主要工作2RTCrpUDGiT二、需求分析 25PCzVD7HxA2.1 用户需求分析 2jLBHrnAILg2.2 功能需求分析 3xHAQX74J0X2.3 系统需求分析 3LDAYtRyKfE三、概要设计 4Zzz6ZB2Ltk3.1 各模块地算法设计说明4dvzfvkwMI13.2 存储结构设计说明9rqyn14ZNXI四、详细设计 11EmxvxOtOco五、源代码 12SixE2yXPq5六、运行结果分析236ewMyirQFL七、收获与体会30kavU42VRUs八、主要参考资料30y6v3ALoS89一、设计任务与要求1.1 总体目标与任务要求制作一个订票系统, 通过此系统可以实现如下功能:1)录入:可以录入航班情况<数据可以存储在一个数据文件中, 数据结构、具体数据自定).2)查询:可以查询某个航线地情况<如 , 输入航班号 , 查询起降时间 , 起飞抵达城市 , 航班票价 , 票价折扣 , 确定航班是否满仓);可以输入起飞抵达城市, 查询飞机航班情况.3)订票:可以订票 , 如果该航班已经无票 , 可以提供相关可选择航班 <订票情况可以存在一个数据文件中 , 结构自己设定) .4 )退票:M2ub6vSTnP可退票 , 退票后修改相关数据文件;客户资料有姓名, 证件号 , 订票数量及航班情况 , 订单要有编号 .5 )修改航班信息:0YujCfmUCw当航班信息改变可以修改航班数据文件. 根据以上功能说明, 设计航班信息 ,订票信息地存储结构, 设计程序完成功能 . eUts8ZQVRd1.2 题目选择与目地意义选择这个题目地原因是 , 订票系统在现实生活中应用很广泛 , 通过这个系统可以使订票、退票等变得简便 . 与传统地人工用纸、笔来记录办理订票、退票等相比 , 使用这个系统也会增加工作效率 . 这个题目做出来地系统还是比较实用地 , 所以我选择了订票系统这个题目 . sQsAEJkW5T完成此系统 , 需要综合运用数据结构课程中学到地几种典型数据结构, 以及程序设计语言 <C 语言) , 自行实现一个较为完整地应用系统地设计与开发. 通过课程设计 , 自己通过系统分析、系统设计、编程调试 , 写实验报告等环节 , 进一步掌握应用系统设计地方法和步骤 , 灵活运用并深刻理解典型数据结构在软件开发中地应用 . 学会将知识应用于实际地方法, 提高分析和解决问题地能力, 增加综合能力. GMsIasNXkA1.3 所选题目地主要工作这个题目地主要工作是使订票系统可以录入航班情况, 查询某个航线地情况、办理订票、办理退票、修改航班信息、查询订票信息等. TIrRGchYzg二、需求分析2.1 用户需求分析用户使用此程序所要完成地工作主要为:查询所有航线信息、查看已订票客户信息、查询航线、办理订票业务、办理退票业务. 通过此系统可以方便地进行上述工作 . 7EqZcWLZNX每条航线所涉及地信息有:终点站名、航班号、飞行时间、票价、乘员定额、余票量 .已订票地客户名单信息包括姓名、订票量、舱位等级<1,2 或 3).等候替补地客户名单信息包括姓名、所需票量.查询航线功能可以根据旅客提出地终点站名输出航班号、飞行时间、票价、乘员定额、余票量 .订票业务功能根据客户提出地要求<航班号、订票数额)查询该航班票额情况, 若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求 .若需要 ,可登记排队候补购票 .lzq7IGf02E退票业务功能根据客户提供地情况 <航班号、姓名)为客户办理退票手续 ,然后查询该航班是否有人排队候补 ,首先询问排在第一地客户 ,若所退票额能满足他地要求 ,则为他办理订票手续 ,否则依次询问其他排队候补地客户 .zvpgeqJ1hk2.2 功能需求分析功能需求分析模块图如图 2.2.1功能模块图:图 2.2.1功能模块图2.3 系统需求分析开发环境: PC机Windows XP 系统使用软件:编写实验报告:Microsoft Office Word画图:亿图制作程序:Microsoft Visual C++ 6.0三、概要设计3.1 各模块地算法设计说明1.浏览航线信息功能 , 调用 display 函数进行输出 . 流程图如图 3.1.1 浏览航线信息流程图:图 3.1.1浏览航线信息流程图:其中 display函数地流程图如图 3.1.2 display函数流程图:图3.1.2 display函数流程图2.浏览已订票客户信息功能, 按顺序输出客户信息链表中地信息. 流程图如图 3.1.3浏览已订票客户信息功能流程图:NrpoJac3v1图 3.1.3浏览已订票客户信息功能流程图3.查询航线功能, 根据客户提出地终点站名输出航线信息. 流程图如图3.1.4查询航线流程图:图 3.1.4查询航线流程图4.办理订票业务功能, 根据客户提出地航线信息等进行订票. 流程图如图3.1.5办理订票业务功能流程图:1nowfTG4KI图 3.1.5办理订票业务功能流程图5.办理退票业务功能, 根据客户提出地航线信息等进行退票. 流程图如图3.1.6办理退票业务功能流程图:fjnFLDa5Zo图 3.1.6办理退票业务功能流程图6.主函数流程图如图 3.1.7主函数流程图:图3.1.7主函数流程图3.2 存储结构设计说明typedef struct wat_ros/*单链队列存储等候替补地客户信息*/ {char name[10]。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计题目飞机订票系统院系*******专业***************姓名******学号*********指导教师***2012年7月1. 需求分析问题描述基于目前人们外出远行频繁,为方便乘客提前买票及优化飞机航空订票服务,需要开发一个飞机订票系统,此程序就是要实现航班情况的录入,查询,订票,退票以及航班的查询和修改等基本功能。

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

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

客户订票时,需要输入起飞抵达城市,然后选择航班进行查询,选择航班时需要输入航班号,值为字符串。

客户退票时,需要输入姓名,证件号进行退票操作,值为字符串。

查询某个航班的情况时,需要输入航班号,值为字符串;在查询某个航线的情况时,还可以通过输入起飞抵达城市来查询,值为字符串。

查询某个订单时,需要输入订单号,值为整型(int);或者需要输入客户姓名和证件号,值为字符串。

修改航班时,需要输入字符型数据选择进行何种修改操作;增加航班时,需要输入航班号,起降时间,起飞抵达城市,值为字符串;还需要输入航班票价,票价折扣,值为浮点型(float);还需要输入航班是否满仓,值为整型(int)(“1”表示已满仓,“0”表示没有满仓);如需要继续录入航班信息,要输入判别信息,值为整型(“1”表示继续录入航班信息,“0”表示停止录入航班信息);删除航班时,需要输入要删除的航班的航班号;修改航班时间时,需要输入要修改的航班的航班号,修改后的航班起飞时间和抵达时间。

输出形式在所有操作后的输出中都显示操作是否正确以及操作后单链表的内容。

其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。

录入航班情况时,输出显示添加航班信息是否成功。

客户订票时,当客户输入起飞抵达城市后,输出可供客户选择的航班信息;客户选择了航班后,输入提示信息告知用户订票是否成功。

客户退票时,输出客户退票成功或者无此客户,无法退票。

查询航班时,输出显示对应的航班信息,或者输出提示信息告知没有相应的航班信息。

查询订单时,输出显示对应的订单信息,或者输出提示信息告知没有相应的订单信息。

修改航班时,输出对应的提示的信息,提示操作是否成功。

功能要求(1)可以录入航班情况,数据存储在一个数据文件中;(2)可以查询某个航线的情况:输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓;输入起飞抵达城市,查询飞机航班情况;(3)可以订票,订票情况存在一个数据文件中(如果该航班已经无票,提供相关可选航班);(4)可退票并且退票后修改相关数据文件;(5)客户资料:姓名,证件号,订票数量及航班情况,订单要有编号;(6)修改航班信息,当航班信息改变可修改航班数据文件;(7)要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。

2. 概要设计数据结构(1)航班的信息:航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞时间、降落时间、起飞城市、抵达城市、航班票价、票价折扣、确定航班单链表如下:每个结点包括数据域和指针域:C语言描述如下:typedef struct flightnode{录入航班信息模块在主函数中输入“1”,调用void add_flight(flightnode *&h)函数,此函数将航班指针*p指向已存在航班链表*h的头结点,利用for(;p->next!=NULL;p=p->next){}使*p指向航线链表的最后一个结点,然后让用户输入航班信息,然后调用void insert_flight(flightnode *&h,char* flight_num,char* start_place,char* end_place,char* start_time,char* end_time,int left,float price,float price_discount,int isFull)函数,用malloc函数申请一个航班结点,并用指针*q指向,将航班信息赋到新申请的结点中,p->next=q;p=p->next;该操作将该结点插入航班链表中。

流程图如下:顾客订票模块在主函数中输入“2”,调用int book(flightnode *&h,passengerList *&PList)函数完成客户的订票。

用航班指针*p指向已存在航班链表*h的头结点的下一个结点,请客户输入起飞抵达城市,分别存于start_place和end_place中。

调用int place_check(flightnode *l,char *start_place,char *end_place)函数,如果函数返回“1”则请客户输入要订的航班号,如果输入的航班号不存在,输出提示信息,如果航班存在则提示客户输入订的票数、客户的姓名和证件号,调用void insert_passengerList(flightnode *&h,passengerList *&PList,char *name,char *ID_num,char *flight_num,int ticket_num)函数,定义航班指针*p=h->next,使用for循环匹配flight_num 和p->flight_num,找到后,执行p->left=p->left-ticket_num,修改相应航班的空座数。

用malloc函数申请一个客户结点,并用指针*q指向,将客户信息和航班号赋到新申请的结点中,PList->rear->next=q;PList->rear=q;该操作将该结点插入客户链表中。

如果该航班已满仓或该航班的空座数不够,输出可供选择的航班,让客户选择,之后调用void insert_passengerList(flightnode *&h,passengerList *&PList,char *name,char *ID_num,char *flight_num,int ticket_num)函数将客户结点插入客户链表中.接上页:int *pr指向客户链表的头结点,用客户结点指针*p指向pr的下一个结点。

使用while循环寻找匹配姓名、证件号、航班号的客户结点,找到后定义航班指针*f=h->next,使用for循环找到匹配航班号的航班结点,执行f->left=f->left+p->ticket_num,修改退票后相应航班结点的空座数,之后执行pr->next=p->next;free(p);删除要退票的客户订单信息。

如果没有找到匹配的客户结点,输出提示信息。

查询航班模块在主函数中输入“4”,调用void flight_check(flightnode *h)函数选择使用哪一种查询方式进行查询。

提示客户输入查询方式,如客户输入“1”,则调用int flight_num_check(flightnode *l,char *flight_num)函数按航班号对航班进行查询,提示客户输入航班号,存于flight_num中;如客户输入“2”,则调用int place_check(flightnode *l,char *start_place,char *end_place)函数按起飞抵达城市对航班进行查询,提示客户输入起飞抵达城市,分别存于start_place 和end_place 中;如客户输入“3”,则调用void check_all_flight(flightnode *l)函数浏览全部航班信息。

在int flight_num_check(flightnode *l,char *flight_num)函数中,定义航班指针*p=h ,使用for 循环匹配flight_num 和p->flight_num ,找到匹配的航班节点后,输出该航班的所有信息。

在int place_check(flightnode *l,char *start_place,char *end_place)函数中,定义航班指针*p=h ,使用for 循环寻找匹配start_place 和start_place 的结点,找到匹配的航班结点后,输出该航班的所有信息。

在void check_all_flight(flightnode *l)函数中,定义航班指针*p=h ,使用for 循环输出所有航flight_num_check 函数的流程图:查询订单模块在主函数中输入“5”,调用void passenger_check(passengerList *PList)函数选择使用哪一种查询方式进行查询。

提示客户输入查询方式,如客户输入“1”,则调用int ID_name_check(passengerList *PList,char *name,char *ID_num)函数按客户的姓名和证件号对订单进行查询,提示客户输入姓名和证件号,分别存于name 和ID_num 中;如客户输入“2”,则调用int order_num_check(passengerList *PList,int order_num)函数按订单号对订单进行查询,提示客户输入订单号,存于order_num中;如客户输入“3”,则调用void check_all_passenger(passengerList *PList)函数浏览全部订单信息。

在int ID_name_check(passengerList *PList,char *name,char *ID_num)函数中,定义客户指针*p= PList->head->next,使用for循环寻找匹配name和ID_num的结点,找到匹配的订单节点后,输出该订单的所有信息。

在int order_num_check(passengerList *PList,int order_num)函数中,定义客户指针*p=PList->head->next,使用for循环寻找匹配order_num的结点,找到匹配的订单结点后,输出该订单的所有信息。

在void check_all_passenger(passengerList *PList)函数中,定义客户指针order_num_check修改航班模块在主函数中输入“6”,调用void modify_flight(flightnode *&h,passengerList *&PList)函数对航班信息进行修改。

相关文档
最新文档