数据结构课程设计_飞机订票系统设计与实现 (里面附有源代码)
C语言数据结构课程设计航空订票实验报告(含源代码)
数据结构课程设计实验报告设计题目__________________________________________________________________ 设计者__________________________________________________________________ 指导老师__________________________________________________________________ 班级___________________________________________________________________ 学号____________________________________________________________________一、设计要求任务通过此系统可以实现如下功能:1.录入航班信息:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据定)2.查询航班:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓);3.订票:(订票情况可以存在一个数据文件中,结构自己设定);4.退票:可退票,退票后修改相关数据文件;5.修改航班信息6.退出程序客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;二、设计概要主界面选择操作项目1.录入航班信息通过单链表这种数据结构,设置了剩余票数,航班号,出发地点,到达地点,起飞日期,出发时间,到达时间,票价。
2.订票输入旅客的姓名,证件号,航班号,和订票张数。
程序中自动查询输入要定的航班号,如果没有则叫其重新输入,有则执行:票数足够则订票成功,票数不充足叫其选择其它航班。
此也采用单链表的数据结构。
航空客运订票系统数据结构课程设计源代码
第一部分:需求分析1、系统名称:航空客运订票系统航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。
要求在TC或VC环境下设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
2、要求:(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票量、已经订票的客户名单(包括姓名、订票量)以及等候替补的客户名单(包括姓名、所需票量)。
(2)作为模拟系统,全部数据可以只存放在内存中。
(3)通过此系统可以实现如下功能:①录入功能:可以录入航班情况②查询功能:根据客户提供的终点站名进行查询,可以输出以下信息:航班号、飞机号、星期几飞行和余票量等。
也可以根据航班号,查询飞机某个航线的情况。
③订票功能:根据客户提出的要求(姓名、终点站名、订票数量)查询该航班的余票量情况。
如尚有足够的余票,则为客户办理订票手续;若已满员或余票量少于订票数量,则需要重新询问客户要求,如需要,可登记排队候补。
④退票功能:根据客户提供的情况(姓名、日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,若有人排队,则为排在第一位的客户办理订票手续。
第二部分:系统设计图样一:设计说明1:添加航班:整个航班的信息保存在一个结构体flight中,采用结构体数组,每一个航班信息包含航班号、起飞时间、起飞城市、降落时间、降落城市、余票数量。
航班信息通过lulu()函数进行添加。
添加的信息保存在航班flight结构体数组中。
2:查询航班:查询板块分为两个部分,按姓名查找和按站名查找。
按姓名查找:通过所输入的姓名和已定客户的姓名相匹配,匹配成功则查找成功。
按站名查找:通过所输入的起始站名和终点站名进行匹配,匹配成功则查找成功。
3:订票功能:根据用户的姓名和航班号进行订票,如果所查找的航班号的余票满足用户需要的票数,则订票成功,该信息保存在Customer中,才用结构体数组,包含已定客户的姓名、客户ID、订的票数、起飞时间、起飞城市、降落时间、降落城市、航班号。
(完整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();//保存数据};【存储结构设计】采用顺序存储结构,利用动态申请空间实现信息的存储。
C语言数据结构课程设计航空订票实验报告(含源代码)
数据结构课程设计实验报告设计题目__________________________________________________________________ 设计者__________________________________________________________________ 指导老师__________________________________________________________________ 班级___________________________________________________________________ 学号____________________________________________________________________一、设计要求任务通过此系统可以实现如下功能:1.录入航班信息:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据定)2.查询航班:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓);3.订票:(订票情况可以存在一个数据文件中,结构自己设定);4.退票:可退票,退票后修改相关数据文件;5.修改航班信息6.退出程序客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;二、设计概要主界面选择操作项目1.录入航班信息通过单链表这种数据结构,设置了剩余票数,航班号,出发地点,到达地点,起飞日期,出发时间,到达时间,票价。
2.订票输入旅客的姓名,证件号,航班号,和订票张数。
程序中自动查询输入要定的航班号,如果没有则叫其重新输入,有则执行:票数足够则订票成功,票数不充足叫其选择其它航班。
此也采用单链表的数据结构。
飞机订票系统数据结构课程设计 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”表示停止录入航班信息)。
飞机订票系统(数据结构)
假设某机场共有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语言课程设计_飞机订票系统源代码
#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++)
void transport::book()//订票系统
{
transport y;
transportNode p;
static int i=0;//静态变量存储上次订票信息
static int j=0;//静态变量存储上次排队信息
static int k=1;
p.s[j].m=0;
void bounce();//实现退票功能
private:
transportNode *head;
};
transport::transport()
{
head=new transportNode;
head->next=NULL;
}
void transport::chest()//实现查询功能
{
char a[10];//输入的地址
cout<<"*通过目的地查询请按1 *"<<endl;
cout<<"*订票请按2 *"<<endl;
cout<<"*退票请按3 *"<<endl;
cout<<" *退出请按其他键*"<<endl;
cout<<" ------------------------------------------------------------"<<endl;
求,则为客户办理订票手续,否则依次询问其他排队候补的客户。
二、需求分析
1)运行环境(软、硬件环境)
Winxp 32位 visual C++6.0
数据结构毕业课程设计(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(),它们分别实现乘客的按航班查询和按出发及抵达城市的两种查询方案。
数据结构课程设计 航空客运订票系统
《数据结构课程设计》报告设计题目航空客运订票系统专业班级学号姓名电话完成日期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()函数查询并以指针形式返回。
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;}}。
飞机订票系统(C语言代码及流程图)
目录第一部分源程序---------------------------------------------------3第二部分函数流程图--------------------------------------------11 menu()-----------------------------------------------------12 enter()-----------------------------------------------------13 input()-----------------------------------------------------14 browse()---------------------------------------------------15 menu1()---------------------------------------------------16 order()-----------------------------------------------------17 search_time()---------------------------------------------18 search_end()----------------------------------------------19 search()----------------------------------------------------20 book()------------------------------------------------------21 back()------------------------------------------------------22 save()------------------------------------------------------23 load()------------------------------------------------------24 第三部分心得体会------------------------------------------------25第一部分:源程序#include <stdio.h>#include <string.h>#include <stdlib.h>#define N 1000typedef struct plane{char ID[10]; /*航班代号*/char BePlace[10];/*飞机起飞地点*/char EnPlace[10];/*飞机降落终点*/char data[15];/*飞机起飞时间*/int max;/*飞机最大乘客人数*/int price;/*飞机票价*/int num;/*飞机已售票数*/}PLANE;PLANE ti[N];int n;/*当前的航班数目*/void menu();void menu1();void input(int i){printf("请输入航班代号:\n");scanf("%s",ti[i].ID);printf("请输入起飞地点:\n");scanf("%s",ti[i].BePlace);printf("请输入降落地点:\n");scanf("%s",ti[i].EnPlace);printf("请输入起飞时间:\n");scanf("%s",ti[i].data);printf("请输入航班的最大载客人数:\n");scanf("%d",&ti[i].max);printf("请输入航班的票价:\n");scanf("%d",&ti[i].price);ti[i].num=0;}void enter(){int i;system( "cls" );printf("请输入航班的数目(0-%d)?:",N);scanf("%d",&n); /*要输入的记录个数*/printf("\n请输入数据\n\n");for(i=0;i<n;i++){printf("\n请输入第%d 航班记录.\n",i+1);input(i); /*调用输入函数*/}getchar();menu();}void printf_one(int i) /*显示一个记录的函数*/{printf("%11s %6s %10s %6s %6d %6d %6d",ti[i].ID,ti[i].BePlace,ti[i].EnPlace ,ti[i].data,ti[i].price,ti[i].max,ti[i].num);}void browse(){int i;system( "cls" );puts("\n--------------------------------------------------------------------");printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");for(i=0;i<n;i++){printf_one(i);printf("\n");}getchar();getchar();menu();}void order() /*排序模块(按平均成绩)*/{int i,j;struct plane s;system( "cls" );for(i=0;i<n;i++) /*冒泡法排序*/{for(j=i+1;j<n;j++)if(strcmp(ti[i].data,ti[j].data)>0){s=ti[i];ti[i]=ti[j];ti[j]=s;}}browse();}void search_time(){int i,m=0;struct plane s;system( "cls" );printf("\n\nEnter the time:");scanf("%s",s.data); /*输入出发的时间*/puts("\n--------------------------------------------------------------------");printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");for(i=0;i<n;i++){if(strcmp(s.data,ti[i].data)==0){m++;if((m!=0)&&(m%10==0)) /*目的是分屏显示*/{printf("\n\nPress any key to contiune . . .");getchar();puts("\n\n");}printf_one(i);printf("\n");/*调用显示一个记录的函数*/}}puts("\n--------------------------------------------------------------------");getchar(); /*按任意健*/getchar();menu1();}void serch_end(){int i,m=0;struct plane s;system( "cls" );printf("\n\nEnter the end Place:");scanf("%s",s.EnPlace); /*输入要到达的地方*/puts("\n--------------------------------------------------------------------");printf("\n\t航班代号起飞地点降落地点起飞时间票价最大乘客已售票数\n");for(i=0;i<n;i++){if(strcmp(ti[i].EnPlace,s.EnPlace)==0){m++;if((m!=0)&&(m%10==0)) /*目的是分屏显示*/{printf("\n\nPress any key to contiune . . .");getchar();puts("\n\n");}printf_one(i);printf("\n");/*调用显示一个记录的函数*/}}puts("\n--------------------------------------------------------------------");getchar(); /*按任意健*/getchar();menu1();}void menu1(){int n,w1;do{system( "cls" ); /*清屏*/puts("\t\t\t\t 飞机售票操作!\n\n");puts("\t\t*********************MENU*********************\n\n");puts("\t\t\t\t1.按照时间排序");puts("\t\t\t\t2.按照时间查找航班");puts("\t\t\t\t3.按照地点查找航班");puts("\t\t\t\t4.返回主菜单");puts("\n\n\t\t**********************************************\n");printf("Choice your number(1-4): [ ]\b\b");scanf("%d",&n);if(n<1||n>4) /*对选择的数字作判断*/{w1=1;printf("your choice is not between 1 and 4,Please input again:");getchar();getchar();}else w1=0;} while(w1==1);/*选择功能*/switch(n){case 1:order();break;case 2:search_time();break;case 3:serch_end();break;case 4:menu();break;}}int search() /*查找模块*/{int i,k;struct plane s;k=-1;system( "cls" );printf("\n\n请输入要订票的起飞地点:");scanf("%s",s.BePlace); /*输入要到达的地方*/printf("\n\n请输入要订票的降落地点:");scanf("%s",s.EnPlace);printf("\n\n请输入要订票的起飞时间:");scanf("%s",s.data); /*输入出发的时间*/for(i=0;i<n;i++) /*查找要修改的数据*/{if(strcmp(s.BePlace,ti[i].BePlace)==0&&strcmp(s.EnPlace,ti[i].EnPlace)==0&&strcmp(s.dat a,ti[i].data)==0){k=i; /*找到要修改的记录*/printf_one(k);break; /*调用显示一个记录的函数*/}}if(k==-1){printf("\n\nNO exist!");return -1;}elsereturn k;}void book(){int i;system( "cls" );printf("欢迎进入售票窗口!\n");i=search();if(i!=-1){if(ti[i].num>=ti[i].max){printf("\n该趟航班票已售完!");}else{ti[i].num++;printf("\n订票成功!\n");}}elseprintf("该航班不存在!\n");getchar();getchar(); /*按任意健*/menu();}void back(){int i,k=-1;struct plane s;system( "cls" );printf("欢迎进入退票窗口!\n");printf("\n\n输入航班代号:");scanf("%s",s.ID); /*输入要到达的地方*/for(i=0;i<n;i++) /*查找要修改的数据*/{if(strcmp(s.ID,ti[i].ID)==0){k=i; /*找到要修改的记录*/printf_one(k);break; /*调用显示一个记录的函数*/}}if(k==-1){printf("\n\nNO exist!");}else{ti[i].num--;printf("\n退票成功!\n");}getchar(); /*按任意健*/getchar(); /*按任意健*/menu();}void save(){int w=1;FILE *fp;int i;system( "cls" );if((fp=fopen("D:\\我的文档\\桌面\\ticket.txt","wt"))==NULL) /*以输出打开方式,在此前的记录被覆盖*/{printf("\nCannot open file\n");return ;}for(i=0;i<n;i++)if(fwrite(&ti[i],sizeof(struct plane),1,fp)!=1){printf("file write error\n");w=0;}if(w==1){printf("file save ok!\n");}fclose(fp);getchar();getchar();menu();}void load(){FILE *fp;int i,w;w=1;system( "cls" );if((fp=fopen("D:\\我的文档\\桌面\\ticket.txt","rt"))==NULL){printf("\nCan not open file\n");w=0;return;}n=0;for(i=0;!feof(fp);i++){fread(&ti[i],sizeof(struct plane),1,fp);n++;}n=n-1;fclose(fp);if(w==1)printf("Load file ok!");getchar();getchar();menu();}void menu(){int n,w1;do{system( "cls" ); /*清屏*/ /*清屏*/puts("\t\t\t\t 飞机售票管理系统!\n\n");puts("\t\t*********************MENU*********************\n\n");puts("\t\t\t\t1.输入新航班");puts("\t\t\t\t2.浏览");puts("\t\t\t\t3.航班操作");puts("\t\t\t\t4.订票");puts("\t\t\t\t5.退票");puts("\t\t\t\t6.保存");puts("\t\t\t\t7.载入");puts("\t\t\t\t8.退出");puts("\n\n\t\t**********************************************\n");printf("Choice your number(1-8): [ ]\b\b");scanf("%d",&n);if(n<1||n>8) /*对选择的数字作判断*/{w1=1;printf("your choice is not between 1 and 8,Please input enter to choice again:");getchar();getchar();}else w1=0;} while(w1==1);/*选择功能*/switch(n){case 1:enter();break; /*输入模块*/case 2:browse();break; /*浏览模块*/case 3:menu1();break; /*查找模块*/case 4:book();break; /*订票模块*/case 5:back();break; /*退票模块*/case 6:save();break; /*保存模块*/case 7:load();break; /*加载模块*/case 8:exit(0);}}void main(){menu();}第二部分:函数流程图(2)enter函数流程图第三部分:心得体会(1)开始对c语言只是一种零散的认识,作为一个c语言的初学者对编程没有明确的概念,只是对语句的格式与编程规定有了一个初步了解。
飞机订票系统,数据结构附代码
数据结构实验报告实验三专业:[软件学院]学生姓名:[ ]完成时间:2014年5月2日《数据结构》课程设计报告姓名2012 级实验室A109 提交日期2014.4.23 学号4班组成绩指导教师实验题目:飞机订票系统。
设计一个飞机票订票系统,完成对航空客运订票的业务管理,包括客户资料管理、原始数据的录入、航班信息的浏览、根据航班号查询航班信息、根据航线查询航班信息、订票和退票、针对特定的航班号或是航线给出推荐的航班排序。
问题解析(对问题的分析、理解和解题方法):主要考察数据结构中的线性表、队列以及图的各种相关操作,和文件的基本知识以及应用基本知识解决实际问题的能力。
掌握好基本知识,将实际问题一步步分解,得出最终结果。
数据结构选择、算法设计:此次课程设计我们小组成员主要借用C++语言中的类(或是C语言中的结构体)和数组的结合,结合类的成员变量可以多样化的优点和数组的下标拥有类似指针遍历的功能的优点。
将要处理的数据借用文件的处理手段存到结构体数组里从而将数据引进到程序里,其余的拓展操作都按基本的方法处理。
任务分工及进度计划:花费三周时间完成代码编写、数据测试、报告书写等全部任务。
首先小组成员各自仔细研读实验要求,展开讨论,综合俩人的想法,去粗取精,捋出大致的创作思路并给出简单的计划实施流程,整合程序涉及的对象个数和各个对象应包括的成员变量从而给出类的定义,根据类定义给出部分用于测试的原始数据。
站在用户的角度思考主函数开始后的每个步骤从而先写出主函数,所用到的各个方法的函数头给出。
组员分配函数方法编写任务,在仔细研究每个步骤的前提下,做出相应的方法定义,各自完成各自的函数体编码后整合到一起。
对整合后的代码进行初步完善,主要集中于类定义、方法实现、界面设计,补充注释,多次测试几组数据。
上网查询相关知识,补充大脑,完善完美。
用户手册:当用户启动程序后,后台会自动加载原始信息。
服务人员也可以通过更改原始数据文件及时更新航班信息。
数据结构课程设计:飞机订票系统设计与实现(里面附有源代码!)
课程设计题目飞机订票系统院系*******专业***************姓名******学号*********指导教师***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 输出形式在所有操作后的输出中都显示操作是否正确以及操作后单链表的内容。
数据结构课程设计《订票系统(航空)》报告源代码
数据结构课程设计——《订票系统》目录一、设计任务与要求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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计题目飞机订票系统院系 *******专业 ***************姓名 ******学号 *********指导教师 ***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 输出形式在所有操作后的输出中都显示操作是否正确以及操作后单链表的容。
其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。
录入航班情况时,输出显示添加航班信息是否成功。
客户订票时,当客户输入起飞抵达城市后,输出可供客户选择的航班信息;客户选择了航班后,输入提示信息告知用户订票是否成功。
客户退票时,输出客户退票成功或者无此客户,无法退票。
查询航班时,输出显示对应的航班信息,或者输出提示信息告知没有相应的航班信息。
查询订单时,输出显示对应的订单信息,或者输出提示信息告知没有相应的订单信息。
修改航班时,输出对应的提示的信息,提示操作是否成功。
1.2.3 功能要求(1)可以录入航班情况,数据存储在一个数据文件中;(2)可以查询某个航线的情况:输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓;输入起飞抵达城市,查询飞机航班情况;(3)可以订票,订票情况存在一个数据文件中(如果该航班已经无票,提供相关可选航班);(4)可退票并且退票后修改相关数据文件;(5)客户资料:,证件号,订票数量及航班情况,订单要有编号;(6)修改航班信息,当航班信息改变可修改航班数据文件;(7)要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
2. 概要设计2.1 数据结构(1)航班的信息:航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞时间、降落时间、起飞城市、抵达城市、航班票价、票价折扣、确定航单链表如下:每个结点包括数据域和指针域:C语言描述如下:typedef struct flightnode{char air_num[10];//航班号char start_time[15];//起飞时间char end_time[15];//抵达时间char start_place[20];//起飞城市char end_place[20]; //降落城市int left; //空座数float price; //票价float price_discount;//票价折扣int isFull; //航班是否满仓struct flightnode *next;//指向下一个结点}flightnode;//航班结点(2)客户的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元每个结点包括数据域和指针域:C语言描述如下:typedef struct passengernode{//定义客户资料结点char name[20]; //char ID_num[20]; //证件号char flight_num[10];//航班号int order_num; //订单号int ticket_num; //订票数量struct passengernode *next;//指向下一个结点}passengernode;(3)客户链表:每个数据元素包括头指针和尾指针两个数据项:每个结点包括两个指针域:C语言描述如下:typedef struct passengerList{passengernode *head;passengernode *rear;}passengerList;2.2 程序模块2.2.1 录入航班信息模块void add_flight(flightnode *&h)调用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)函数,将新航班结点插入航班链表中。
2.2.2 客户订票模块int book(flightnode *&h,passengerList *&PList)函数调用intinsert_passenger(passengernode *&h,char *name,char *ID_num,char *flight_num,int ticket_num,int order_num)函数,将新客户结点插入客户链表中。
2.2.3 客户退票模块void cancel(passengerList *&PList,flightnode *&h)函数调用intdelete_passenger(passengerList *&PList,flightnode *&h,char *name,char *ID_num)函数,将相应的顾客结点删除,并修改相应的航班信息。
2.2.4 查询航班模块void flight_check(flightnode *h)调用void check_all_flight(flightnode *h)函数进行所有航班信息浏览,调用int place_check(flightnode *h,char*start_place,char *end_place)函数按起飞抵达城市对航班进行查询,调用intflight_num_check(flightnode *h,char *flight_num)按航班号对航班进行查询。
2.2.5 查询订单模块void passenger_check(passengerList *PList)调用voidcheck_all_passenger(passengerList *PList)函数进行所有订单信息浏览,调用int order_num_check(passengerList *PList,int order_num)函数按订单号对订单进行查询,调用int ID_name_check(passengerList *PList,char *name,char *ID_num)按客户和证件号对订单进行查询。
2.2.6 修改航班模块增加航班时,void modify_flight(flightnode *&h,passengerList *&PList)函数调用void add_flight(flightnode *&h)函数,将新航班信息结点插入航班链表中。
删除航班时,void modify_flight(flightnode *&h,passengerList *&PList)函数调用void delete_flight(flightnode *&h,passengerList *&PList)函数将相应的航班信息删除,并删除相应的订单信息。
修改航班时间时,void modify_flight(flightnode *&h,passengerList *&PList)函数修改指定航班的起飞抵达时间。
2.3 各模块之间的调用关系以及算法设计2.3.1 各模块之间的调用关系2.3.2 算法设计void init_flight(flightnode *&h):要建立一个以h为头结点的空链表,录入航班信息和增加航班后将航班结点插入该链表。
void init_passengerList(passengerList *&pList):建立一个带有头指针和尾指针的空链表,存储带有顾客信息的结点。
void save_flight(flightnode *h):保存航班信息到指定数据文件中。
void load_flight(flightnode *&h):从存储航班信息的文件导入航班信息到航班链表中。
void save_passenger(passengerList *PList):保存客户信息到指定数据文件中。
void load_passenger(passengerList *&PList):从存储客户信息的文件导入客户信息到客户链表中。
void add_flight(flightnode *&h):录入航班信息后调用insert_flight函数增加航班。
void insert_flight(flightnode *&h,char* flight_num,char* start_place,char* end_place,char* start_time,char* end_time,int left,float price,floatprice_discount,int isFull):在录入航班情况或增加新的航班后,将新的航班结点插入到航线链表中。
int book(flightnode *&l,passengerList *&PList):要完成客户订票,将客户结点插入客户链表中,并修改相应的航班信息。