航空订票系统 数据结构程序设计实验报告3
实验3 数据结构C++写 航空订票系统

#include <stdlib.h>#include <string.h>#include <conio.h> /*通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作*/#include <iomanip.h>#include <iostream.h>#define MAXSIZE 5 /*定义航线数量,可修改*/typedef struct wat_ros /*单链队列存储等候替补的客户信息*/{char name[10]; /*姓名*/int req_amt; /*订票量*/struct wat_ros *next;}qnode,*qptr;typedef struct pqueue /*等候替补的客户名单*/{qptr front; /*等候替补客户名单域的队头指针*/qptr rear; /*等候替补客户名单域的队尾指针*/}linkqueue;typedef struct ord_ros /*乘员名单*/{char name[10]; /*客户姓名*/int ord_amt; /*订票量*/int grade; /*舱位等级*/struct ord_ros *next;}linklist;struct airline{char ter_name[10]; /*抵达城市*/char air_num[10]; /*航班号*/char time[10]; /*飞机时间*/char pri[7]; /*票价*/int tkt_amt; /*乘员定额*/int tkt_sur; /*余票量*/linklist *order; /*乘员名单域,指向乘员名单链表的头指针*/linkqueue wait; /*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/}lineinfo;struct airline *start;void display(struct airline *info) /*打印每条航线的基本信息*/{cout<<info->ter_name<<setw(5)<<info->air_num<<"\t"<<setw(5)<<info->time<<"\t"<<s etw(5)<<info->pri<<"\t"<<setw(5)<<info->tkt_amt<<"\t"<<setw(5)<<info->tkt_sur<<e ndl;}void list() /*打印全部航线信息*/{struct airline *info;int i=0;info=start;cout<<"终点站名"<<" "<<"航班号"<<" "<<"飞行时间"<<" "<<"票价"<<" "<<"乘员定额"<<" "<<"余票量"<<endl;while(i<MAXSIZE){display(info); /*调用display函数来输出*/info++;i++;}cout<<endl;}void search() /*根据客户提出的终点站名输出航线信息*/{struct airline *info,*find();char name[10]; /*要抵达的城市名称*/int i=0;info=start;cout<<"请输入要抵达城市的名称:";cin>>name;while(i<MAXSIZE){if(!strcmp(name,info->ter_name)) //有该站名strcmp则返回,if(!0)即break,字符串比较函数搜索{break;}info++;i++;}if(i>=MAXSIZE) /*没有匹配的航线*/{cout<<"对不起,没有这条航线!"<<endl;}{cout<<"终点站名"<<" "<<"航班号"<<" "<<"飞行时间"<<" "<<"票价"<<" "<<"乘员定额"<<" "<<"余票量"<<endl;display(info); /*调用display函数输出航线信息*/}}struct airline *find() /*根据系统提出的航班号查询并以指针形式返回*/{struct airline *info;char number[10]; /*查询的航班号*/int i=0;info=start;cout<<"请输入航班号:";cin>>number;while(i<MAXSIZE){if(!strcmp(number,info->air_num)) /*有匹配航班*/{return info;}info++;i++;} /*无匹配航班*/cout<<"对不起,没有这条航线!"<<endl;return NULL;}void prtlink() /*打印订票乘员名单域的客户名单信息*/{linklist *p;struct airline *info;info=find();p=info->order;if(p!=NULL) /*按顺序输出客户信息链表*/{cout<<"客户姓名订票数额舱位等级"<<endl;while(p){cout<<p->name<<"\t"<<setw(7)<<p->ord_amt<<"\t"<<setw(8)<<p->grade<<endl;p=p->next;}else /*没有人订这个航班*/cout<<"该航线没有客户信息!"<<endl;}linklist *insertlink(linklist *head,int amount,char name[],int grade) /*增加订票乘员名单域的客户信息*/{linklist *p1,*new1;p1=head;new1=new linklist();if(!new1) /*存储空间不足*/{cout<<"\nOut of memory!!"<<endl;return NULL;}strcpy(new1->name,name);new1->ord_amt=amount;new1->grade=grade;new1->next=NULL;if(head==NULL) /*若原订票客户信息为空*/{head=new1;new1->next=NULL;}else{head=new1;}new1->next=p1;return head;}linkqueue appendqueue(linkqueue q,char name[],int amount) /*增加排队等候的客户名单域*/{qptr new1;new1=new qnode();strcpy(new1->name,name);new1->req_amt=amount;new1->next=NULL;if(q.front==NULL) /*若原排队等候客户名单域为空*/{q.front=new1;}else{q.rear->next=new1;}q.rear=new1;return q;}void order() /*办理订票业务*/{struct airline *info;int amount,grade; /*订票数量,舱位等级*/char name[10]; /*要订的航班号*/info=start;if(!(info=find())) /*根据客户提供的航班号进行查询,如为空,退出该模块*/ {return;}cout<<"请输入您需要的票数:";cin>>amount;if(amount>info->tkt_amt) /*若客户订票额超过乘员定票总额,退出*/ {cout<<"对不起,您输入票数已经超过乘员定额!"<<endl;return;}if(amount<=info->tkt_sur) /*若客户订票额末超过余票量,订票成功并等记信息*/{int i;cout<<"请输入您的姓名:";cin>>name;cout<<"请输入您需要的舱位等级(1,2或):";cin>>grade;info->order=insertlink(info->order,amount,name,grade); /*在订票乘员名单域中添加客户信息*/for(i=0;i<amount;i++) /*依次输出该订票客户的座位号*/{//printf("%s的座位号是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1); cout<<name<<"的座位号是:"<<info->tkt_amt-info->tkt_sur+i+1<<endl;}info->tkt_sur-=amount; /*该航线的余票量应减掉该客户的订票量*/ cout<<"祝您乘坐愉快!";}else /*若满员或余票额少于订票额,询问客户是否需要进行排队等候*/{char r;cout<<"没有这么多票了,您需要排队等候吗?(Y/N)"<<endl;r=getch();cout<<r;if(r=='Y'||r=='y'){cout<<"\n请输入您的姓名:"<<endl;cin>>name;info->wait=appendqueue(info->wait,name,amount); /*在排队等候乘员名单域中添加客户信息*/cout<<"\n注册排队成功!"<<endl;}else{cout<<"\n欢迎您再次订购!"<<endl;}}}void return_tkt() //退票模块{struct airline *info;qnode *t,*back,*f,*r;int grade;linklist *p1,*p2,*head;char cusname[10];if(!(info=find())) //调用查询函数,根据客户提供的航线进行搜索{return;}head=info->order;p1=head;cout<<"请输入你的姓名:"<<endl;cin>>cusname;while(p1!=NULL) //根据客户提供的姓名到订票客户名单域进行查询{if(!strcmp(cusname,p1->name)){break;p2=p1;p1=p1->next;}if(p1==NULL) //若未找到,退出本模块{cout<<"对不起,您没有订过票!"<<endl;return;}else //若信息查询成功,删除订票客户名单域中的信息{if(p1==head){head=p1->next;}else{p2->next=p1->next;}info->tkt_sur+=p1->ord_amt;grade=p1->grade;cout<<"退票成功!"<<p1->name<<endl;delete p1;}info->order=head; //重新将航线名单域指向订票单链表的头指针f=(info->wait).front; //f指向排队等候名单队列的头结点r=(info->wait).rear; //r指向排队等候名单队列的尾结点t=f; //t为当前满点条件的排队候补名单域while(t){if(info->tkt_sur>=info->wait.front->req_amt) //若满足条件者为头结点{int i;info->wait.front=t->next;cout<<"订票成功!"<<t->name<<endl;for(i=0;i<t->req_amt;i++) //输出座位号{cout<<"的座位号是:"<<t->name<<info->tkt_sur-i<<endl;}info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade);//插入到订票客户名单链表中delete t;break;back=t;t=t->next;if((info->tkt_sur)>=(t->req_amt)&&t!=NULL)//若满足条件者不为头结点{int i;back->next=t->next;cout<<"订票成功!"<<t->name<<endl;for(i=0;i<t->req_amt;i++) // 输出座位号{//printf("<%s>'s seat number is:%d\n",t->name,(info->tkt_sur)-i); cout<<"seat number is:"<<t->name<<info->tkt_sur-i<<endl;}info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade);//插入到订票客户名单链表中delete t;break;}if(f==r){break;}}}int menu_select() /*菜单界面*/{int c;char s[20];cout<<"订票系统"<<endl;cout<<"******************************"<<endl;cout<<"1.查看航线信息"<<endl;cout<<"2.查看已订票客户信息"<<endl;cout<<"3.查询航线"<<endl;cout<<"4.办理订票业务"<<endl;cout<<"5.办理退票业务"<<endl;cout<<"6.退出系统"<<endl;cout<<"******************************"<<endl;do{cout<<"请选择(1-6):"<<endl;cin>>s;c=atoi(s); // 将字符串转换成一个整数并返回结果,需要导入头文件#include <stdlib.h>}while(c<1||c>6);return c;}void main(){struct airline air[MAXSIZE]= /*初始化航线信息*/{{"Beijing","1","1200","860",30,30},{"Shanghai","2","1000","770",20,20},{"Nanjing","3","1330","960",10,10},{"London","4","1700","760",50,50},{"dalian","5","1400","550",40,40}};start=air;for(;;) /*无限循环(除非用户选择.退出)*/ {//system("cls"); /*清空屏幕*/switch(menu_select()){case 1:list(); /*打印全部航线信息*/break;case 2:prtlink(); /*浏览已订票客户信息*/break;case 3:search(); /*查询航线*/break;case 4:order(); /*订票*/break;case 5:return_tkt(); /*退票*/break;case 6:cout<<"感谢您的使用,再见!"<<endl; /*退出系统*/exit(0); /*正常退出程序*/}cout<<"任意键继续..."<<endl;getch(); /*任意键继续*/}}。
C语言数据结构课程设计航空订票实验报告(含源代码)

数据结构课程设计实验报告设计题目__________________________________________________________________ 设计者__________________________________________________________________ 指导老师__________________________________________________________________ 班级___________________________________________________________________ 学号____________________________________________________________________一、设计要求任务通过此系统可以实现如下功能:1.录入航班信息:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据定)2.查询航班:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓);3.订票:(订票情况可以存在一个数据文件中,结构自己设定);4.退票:可退票,退票后修改相关数据文件;5.修改航班信息6.退出程序客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;二、设计概要主界面选择操作项目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中设计用户界面功能部分。
C语言数据结构课程设计航空订票实验报告(含源代码)

数据结构课程设计实验报告设计题目__________________________________________________________________ 设计者__________________________________________________________________ 指导老师__________________________________________________________________ 班级___________________________________________________________________ 学号____________________________________________________________________一、设计要求任务通过此系统可以实现如下功能:1.录入航班信息:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据定)2.查询航班:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓);3.订票:(订票情况可以存在一个数据文件中,结构自己设定);4.退票:可退票,退票后修改相关数据文件;5.修改航班信息6.退出程序客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能;二、设计概要主界面选择操作项目1.录入航班信息通过单链表这种数据结构,设置了剩余票数,航班号,出发地点,到达地点,起飞日期,出发时间,到达时间,票价。
2.订票输入旅客的姓名,证件号,航班号,和订票张数。
程序中自动查询输入要定的航班号,如果没有则叫其重新输入,有则执行:票数足够则订票成功,票数不充足叫其选择其它航班。
此也采用单链表的数据结构。
机票预定系统实验报告

机票预订系统实验报告姓名:潘凯学号:19专业:通信工程一、目的用面向对象分析、设计方法来分析机票系统。
二、主要内容及问题需求分析:为方便旅客,某航空公司拟开发一个机票预订系统。
旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。
功能需求该系统主要分为五大功能:系统管理、新增、修改、查询和系统维护。
机票预定系统的总目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的机票预定系统,实现航空公司的机票销售的自动化的计算机系统,为企业的决策层提供准确、精细、迅速的机票销售信息。
三、使用环境操作系统:Windows XP建模工具:StarUML、Microsoft Visio四、设计内容1-1、用例模型图用例模型图说明:机票预订系统主要使用的对象是旅行社管理员。
管理员根据顾客填写的目的地和时间信息,将其输入系统,系统根据相关信息进行处理,则系统其中的一个功能即用例就是接收顾客信息。
顾客需要用取票单去航空公司取票,系统由管理员输入的信息来识别,则系统的另一个功能即用例就是预定管理员输入信息符合的票。
1-2、类图类图说明:为此系统定义了4个类,分别是顾客类,管理员类,航空公司类,机票类。
各个类对应的属性和操作方法在图中已表示出,目前应该还是有很多不完善的地方,在后期再加以修改。
1-3、对象图对象图说明:对象图是根据设置的类图而设置的。
一个对象就是类的一个具体实例,本例中设置了一个custom的取票操作,详细信息在图中已经设置,根据顾客的相关信息和操作,系统会调用相应的类的对象来处理,在本例中不一定会全部都涉及。
1-4、顺序图顺序图说明:顺序图用来描述对象之间动态的交互关系,着重体现对象间消息传递的时间顺序。
机票预订系统实验报告

机票预订系统报告班级:医药软件工程13姓名:曹立学号:1305541102目录(1)需求分析1.系统概述2.系统运行环境3.功能需求描述(2)总体及总体设计1.开发与设计的总体思想2.系统模块结构图及设计3.系统流程描述4.界面设计5.数据库设计(3)设计总结1引言1.1 编写的目的需求分析说明书提供用户与开发人员对开发软件的共同理解,使用户与开发单位就该系统的功能定义、环境需求达成共识,是今后各阶段设计工作的基础和依据,也是本阶段评审和测试阶段确认与验收的依据。
本需求分析的读者对象包括客户、业务人员需求分析人员、测试人员、用户文档编写人和项目管理人员。
1.2 背景人们在网上预订机票越来越普遍,能提供网上预订服务的网站也越来越多,如:携程旅行网等,但这些网站提供的服务并非实时的,而是在人工干预的基础上完成的。
为了提升企业效益,特开发此网上预订机票系统。
1.3定义SQL SERVER: 系统服务器所使用的数据库管理系统(DBMS)SQL: 一种用于访问查询数据库的语言事务流:数据进入模块后可能有多种路径进行处理一需求分析1.系统概述《网上机票预订系统》运行于Internet环境,提供远程机票预订功能,包括远程航班信息查询,机票预订与确认等;使用《网上机票预订系统》可使机票订购过程简单化、电子化、数字化,节省常规过程所不必要的资源浪费。
该软件要实现方便用户提前预定机票,提前知晓航班信息的功能,为了减少用户到机场现场买票导致的未能买到较为合适机票所浪费时间的现象。
航空公司为给旅客乘机提供方便,需要开发一个机票预定系统。
各个旅行社把预定机票的旅客信息(姓名、性别、工作单位、身份证号码(护照号码)、旅行时间、旅行始发地和目的地,航班舱位要求等)输入到系统中,系统为旅客安排航班。
当旅客交付了预订金后,系统打印出取票通知和帐单给旅客,旅客在飞机起飞前一天凭取票通知和帐单交款取票,系统核对无误即打印出机票给旅客。
(完整word版)飞机订票系统实验报告

(完整word版)飞机订票系统实验报告实验题目:订票系统实验目的:1.了解并掌握数据结构的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
实验要求:●任务:通过此系统可以实现如下功能:●录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)●查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;●订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;●退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
●修改航班信息:当航班信息改变可以修改航班数据文件实验主要步骤:航班端(一)输入航班信息,add()增加航班信息,并保存到save().(二)修改信息,在xiugai()函数里,输入要修改的航班号,选择修改的内容,如修改时间,地点并保存。
客户端(一)输入起始站和终点站,在两者都符合的条件下在search ()函数里查找,并输出航班信息。
(二)订票:用search(),判断是否有符合的航班,有则输出并进行订票,还有输入客户信息。
(三)退票:调用search(),用它的返回值判断是否有符合的航班,有则输入,并删除客户信息。
1)在主函数里先了调用chushihua(),确定有hangban.dat 文件,并让客户或航班端选择相应的模块。
2)定义订票业务函数,在这个函数中首先调用了search 函数查找需要订票的航班,用search函数的返回值判断是否有该航班。
实验报告三(详细设计)

实验序号及实验名称实验三软件项目的详细设计一、实验题目:飞机订票管理系统二、任务概述(1)软件项目整体描述:航空公司为方便旅客,需开发一个机票预定系统。
为便于旅客由旅行社代替航空公司负责为旅客定票,旅行社把预定机票的旅客信息,包括姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。
旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。
并要求客户机的界面要单明了,易于操作,服务器程序利于维护。
(2)运行环境要求:系统将由两部分程序组成,安装在各旅行社客户机上的客户程序及航空公司内的数据服务器程序。
根据调研得知所有旅行社的计算机配置均在Pentium 4级别以上,客户程序应能够在Pentium 4级别以上, Win XP环境下运行。
(3) 条件与限制:软件开发人员在开发的工程中,使用java进行系统开发,使用SQL Sever2005版本数据库。
(4)需求概述:航班查询所需数据:终点站名称(文本数据)。
订票管理所需数据:航班号、订票数额、日期、客户名称、省份证号码、性别退票管理所需数据:日期、航班号。
改签管理所需数据:日期、航班号、起飞时间。
三、逻辑结构设计(1)数据库表①destine(订票人信息表)在此数据表中存放的是订票人的其他信息,如:所乘坐的航班号、所乘坐的机舱等级等信息。
订票人的信息表要与航班信息表有所关联。
在该信息表中包含以下字段:destine_id(订票人身份证号码)、flight_no(航班号)、destine_count(订票数量)、destine_date(定票日期)、destine_status(订票状态)、destine _id (订票人身份证号码)、destine_phone(订票人联系电话)、destine_address(订票人地址)、destine_sex(订票人性别)、destine_age(订票人年龄)等字段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#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]; //用来选择是否继续的变量 以上就是我的总体设计思路。 (3) 详细设计: 在本次的课程设计中我负责编制的是初始化、建立数据文 件、数据文件读取、数据文件保存、增加航班信息、订票、退票 业务函数的编写。以下是我的负责部分的详细设计内容: 1) 定义系统初始化函数 模块功能:设立一个初始化函数来得到航班信息。具体设计是第 一次运行程序时自动生成保存航班信息的文件,并输入初始航班信 息,待第二次开始就可以直接读取该文件获得已有的航班信息并可直 接使用。运用了access函数判断文件是否存在。该函数源代码为: 数据文件 是否存在 输入航班信息并建立新数据文件保存下来 从已有的数据文件读取已有的航班信息
/*定义数据结构*/ /*乘客信息*/ typedef struct { char number[10];/*编号*/ char id[20]; /*证件号*/ char name[10]; /*姓名*/ int count; /*订票数*/ char flightname[10];/*乘坐航班号*/ }GUEST; /*航班信息*/ typedef struct {char planenumber[10];/*航班号*/ char Take_off_city[20];/*起飞城市*/ char Arrived_in_city[20];/*抵达城市*/ char takeoff_time[20];/*起飞时间*/ char Landing_time[20];/*降落时间*/ int shipping; /*舱位数*/ char price[5]; /*票价*/ char discount[5]; /*折扣*/ GUEST guest[20]; int sit; }FLY; /*菜单函数,函数返回值为整数,代表所选的菜单项*/ menu_select() { int c; printf("按任意键返回主菜单\n");/*提示压任意键继续*/ getch(); /*读入任意字符*/ printf(" Welcome to\n\n"); printf(" Tickets Booking System\n\n"); printf(" ********************MENU****************\n\n");
将此函数放在整个系统得推出选项中,这样就只在每次退出系统的时 候进行一次保存,将此次对文件修改的所有新信息都一次保存下来。 这样就实现了整个系统运行时进行一次读取,推出时一次保存的设 计,大大简便了文件的调用和读取。保存函数运用到的知识点与读取 函数大致相同。此函数的源代码为: 有关文件读取、写入和保存的函数定义完了就开始设计与题目要 求直接相关的函数了。 5) 定义订票业务函数 在这个函数中首先调用了search函数查找需要订票的航班。运用if 语句实现订票时的多种情况:订票数输入不正确、飞机票数不足等情 况。订票成功时运用s[i].count=s[i].count-n;将已被订的机票数减去,以 显示新的即时航班信息 6) 定义退票业务函数: 与订票函数相类似,只做稍稍修改就行退票成功是用 s[i].count=s[i].count+n; 将航班的剩余票数加上去以显示即时航班信 息。 7) 定义主函数 主函数主要就是提供系统的主菜单界面供用户选择。运行主函数 时首先调用chushihua函数判定数据文件是否存在、是否要进行初始航 班信息输入;若已存在则进入主界面菜单供用户选择,运用swich语句 对用户的不同选择来调用各功能的函数。并用do…while语句循环实现 能够让用户进行多次的选择。 程序: #include<dos.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 2英爱
(1) 设计目的: 假定民航机场共有n个航班,每个航班有一航班号、确定的航线 (起始站、终点站)、确定的飞行时间(星期几)和一定的成员订 额。设计一飞机订票系统,使之能提供下列服务: 1、航班信息录入功能(航班信息用文件保存) 包括航班号、起始站、重点站、机票数等; 2、航班信息浏览功能 3、按航班号排序 4、查询航线:按航班号查询 5、承办订票和退票业务(可选项) (2) 总体设计: 编写一个飞机订票系统的程序,使该系统能够实现对航班信息的录 入、浏览、排序、查询以及订票、退票的功能。根据题目要求,首先 要制作一个主菜单显示出各个操作的提示可供用户选择,进而一步步 地深入操作。根据主菜单的内容再进一步编制具体操作的函数,各个 功能均用专门编制的函数来完成。这就是看到题目后的最初的思路。 在这附上总体模块设计图: 因为飞机订票系统含有各航班的各项信息,如航班号、航线、飞行 时间、机票数目等必要信息,所以就决定用刚学不久的结构体数组来 存放航班的各项信息,根据题目要求定义如下结构体类型: 头文件包含、全局变量定义和结构体定义源代码: #include<stdio.h> //标准输入、输出头文件 #include<string.h> //包含字符串函数处理头文件 #include<process.h> //包含access函数的头文件 #define N 1000 //定义最多的航班数
Y
初始化 结束 N
void chushihua() //初始化函数 { if(access("hangban.dat",0)) build(); else read(); }
2) 定义建立新数据文件的函数 系统初始化后,没有寻找到数据文件,则进行新建数据文件,此 函数的作用就是进行新建文件数据的录入。运用到了文件指针的定义 FILE *fp,文件的打开fopen和关闭fclose、成块读写函数中的fwrite; 运用for循环进行各组数据的输入,用m++记录下输入的航班数量,并 运用if语句判断是否输入下一条航班信息,若不继续则返回主界面。该 函数的源代码为: 3) 定义读取文件内航班信息的函数 系统初始化之后,若原始数据文件存在,则进行文件内航班信息 的读取,以供接下来程序中的各个函数来使用。在该函数中同样运用 到了文件指针FILE *fp、文件的打开fopen和关闭fclose、成块读写函数 中的fread、文件结束检测函数feof同时配合while语句控制文件的读 取;m++记录下读取到的航班数量等。 4) 定义保存函数 因为在飞机订票系统中涉及到飞机的订票和退票业务,还有按航 班号的排序功能,所以我就定义了这个保存函数来保存下每次运行系 统后对整个订票系统涉及到的资料的修改。为了简便程序,我就准备
printf(" 0. 输入航班信息\n"); printf(" 1. 列出航班的信息\n"); printf(" 2. 按航班号查询航班信息\n"); printf(" 3. 按城市来查询航班\n"); printf(" 4. 订票程序\n"); printf(" 5. 退票系统\n"); printf(" 6. 修改飞机航班的信息\n"); printf(" 7. 保存文件\n"); printf(" 8. 读取和下载文件\n"); printf(" 9. 退出\n"); printf(" *****************************************\n\n"); do{ printf("\n 输入你的选择项(0~9):"); /*提示输入选项*/ scanf("%d",&c); /*输入选择项*/ }while(c<0||c>9); /*选择项不在~9之间重输*/ return c; /*返回选择项,主程序根据该数调用相应的函数*/ } /*输入函数*/ int enter(FLY t[]) { int i,k,n,m,w,j; char *s; printf("输入航线总数(n<=40):");/*输入航线总数*/ scanf("%d",&n); while(n>40||n<0) { printf("输入错误!!再次输入(0<n<=40):");/*输入航线总数*/ scanf("%d",&n); } printf(" 输入航班的信息\n\n");/*提示信息*/ printf("航班号起飞城市 降落城市 出发时间 降落时间 剩下的座位 价 格 折扣\n"); printf("-----------------------------------------------------------------------------\n");
实 验 报 告
课程名称 数据结构综合设计实验 实验项目 航空订票系统
系 ______ 专 ___
别___ 业___
_计算机学院 _ 网络工程
班级/学号_网工 1202/2012011411___ 学生姓名 _______王宇涵 __________ 实验日期 _2014年6月6日 成 绩 _______________________