航空公司售票系统(沈航C语言课设)报告及代码

合集下载

航空售票系统C课程设计源代码

航空售票系统C课程设计源代码

#include <string.h>#include <iostream.h>#define M 5//每种飞机票的总数目#define N 3//飞机票的总数目class Plane{private:char name[40];//终点站名int number;//航班号int Number;//飞机号int week;//星期几飞行int day;//日期int left;//余票额int n;//与数组flag一起确定客户订票状态public:int flag[20];//订票状态数组,-1为预订票,1为已定票,0为初始化状态Plane()//构造函数{name[0]='\0';number=0;Number=0;week=0;day=0;left=M;n=0;//数组从0开始计数for(int i=0;i<20;i++)flag[i]=0;}void init()//初始化每种飞机票{cout<<"请输入终点站名:";cin>>name;cout<<"请输入航班号:";cin>>number;cout<<"请输入飞机号:";cin>>Number;cout<<"请输入星期几飞行:";cin>>week;cout<<"请输入航班的日期:";cin>>day;}~Plane(){};//析构函数char *getname(){return name;}//获得终点站名int getnumber(){return number;}//获得航班号int getNumber(){return Number;}//获得飞机号int getweek(){return week;}//获得星期几飞行int getday(){return day;}//获得日期int getleft(){return left;}//获得余票额int getn(){return n;}//获得旅客数目void inleft(int n){left=left+n;}//余票额增加函数void deleft(int n){left=left-n;}//余票额减少函数void inn(){n++;}//旅客数目增加函数};Plane pl[N];int showmenu();//菜单函数void start();//初始化函数void query();//查询函数void make();//订票函数void back();//退票函数int main(){cout<<"这是民航售票处的计算机系统程序"<<endl;start();while(1){int choice;choice=showmenu();switch(choice){case 1:query();break;case 2:make();break;case 3:back();break;case 0:return 0;default:cout<<"你敲错了!\n";}}return 0;}int showmenu(){int ch;cout<<endl;cout<<"请选择你要执行的功能"<<endl;cout<<"1:查询航线"<<endl;cout<<"2:承办订票业务"<<endl;cout<<"3:承办退票业务"<<endl;cout<<"0:退出程序的运行"<<endl;cin>>ch;return ch;}void start(){for(int i=0;i<N;i++){pl[i].init();cout<<endl;}}void query(){int i,num=0;char name[40];cout<<endl;cout<<"请输入终点站名:";cin>>name;for(i=0;i<=N;i++)if(strcmp(name,pl[i].getname())==0){num++;cout<<"航班号:"<<pl[i].getnumber()<<endl;cout<<"飞机号:"<<pl[i].getNumber()<<endl;cout<<"星期:"<<pl[i].getweek()<<"飞行"<<endl;cout<<"航班日期:"<<pl[i].getday()<<endl;cout<<"余票额:"<<pl[i].getleft()<<endl;break;}if(num==0)cout<<"没有此航班"<<endl;}void make(){int number,n,sitnumber,nu,ch,num=0;cout<<"请输入航班号:";cin>>number;cout<<"请输入订票数额:";cin>>n;for(int i=0;i<N;i++)if(number==pl[i].getnumber()){num++;if(n<=pl[i].getleft()){cout<<"此航班有票"<<endl;pl[i].deleft(n);pl[i].inn();pl[i].flag[pl[i].getn()]=1;for(i=0;i<n;i++){cout<<"座位号";cin>>sitnumber;}}else{cout<<"余票额少于订票额,请重新输入订票数额,"<<"订票数额应该少于或等于"<<pl[i].getleft();cin>>nu;if(nu<=pl[i].getleft()){cout<<"此航班有票"<<endl;pl[i].deleft(nu);pl[i].inn();pl[i].flag[pl[i].getn()]=1;for(i=0;i<N;i++){cout<<"座位号";cin>>sitnumber;}}else{cout<<"是否需要预约"<<endl;cout<<"是(1) 否(2)"<<endl;cin>>ch;switch(ch){case 1:pl[i].inn();pl[i].flag[pl[i].getn()]=-1;break;case 2:break;default:cout<<"你敲错了!"<<endl;}}}}if(num==0)cout<<"没有此航班"<<endl;}void back(){int number,day,n,nu,sitnumber,num=0;//航班号,日期,退票数目,订票数目,座位号,标志量cout<<"请输入日期:";cin>>day;cout<<"请输入航班:";cin>>number;for(int i=0;i<N;i++)if((day==pl[i].getday())&&(number==pl[i].getnumber()))//日期与航班是否满足{num++;//日期与航班满足cout<<"输入退票数目";cin>>n;cout<<"退票成功"<<endl;pl[i].inleft(n);//该种飞机票增加,即已退票for(int j=0;j<=pl[i].getn();j++)//顺序查询客户订票状态{if(pl[i].flag[j]==-1)//客户是否为预定状态{cout<<"有预约订票,请输入订票数额:";cin>>nu;if(nu<=pl[i].getleft())//余票额是否满足要求{cout<<"此航班有票"<<endl;pl[i].flag[j]=1;cout<<"订票成功"<<endl;pl[i].deleft(nu);for(int k=0;k<nu;k++){cout<<"座位号"<<" ";cin>>sitnumber;}cout<<"余票额为"<<pl[i].getleft()<<endl;}}elsecout<<"没有预约订票!"<<"余票额为"<<pl[i].getleft()<<endl;}}if(num==0)cout<<"没有此票"<<endl;}。

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

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

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

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

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

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

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

3.退票要旅客输入订单号,查询航班号,没有此航班号则叫旅客核对。

有则执行:1)查询旅客的航班2)修改航班的剩余票数。

3)删除旅客订票信息。

4)退票成功,显示剩余票数。

4.查询输入航班号,有与之匹配的航班则输出之,没有则说没有此航班5.修改航班信息查询到要修改的航班,然后直接进行修改6.退出程序三、设计中主要用到的结构体typedef struct P//旅客机票信息{char name[10];//姓名int ordernum;//机票编号char num[10];//旅客证件号struct P *next;int ticketnum;//订票张数int flightn;//航班号}person;typedef struct node//航班信息{ int ticket;//剩余票数int flightnum;//航班号char startadd[20];//出发地点char arriveadd[20];//到达地点char startdate[20];//出发日期char starttime[10];//出发时间char arrivetime[10];//到达时间int price;//票价struct node *next;}LinkList;四、主要函数void dingpiao(LinkList *&L,person *&p)//订票函数void write(LinkList *&L)//航班信息录入函数void showF(LinkList *fn)//展示航班信息的函数void showT(LinkList *L1,person *p1)//展示机票信息的函数void tuipiao(LinkList *&L,person *p)//退票函数void xiugai(LinkList *&L)//修改航班信息的函数void scr()//主界面函数void chaxun(LinkList *&L)//查询函数int main()//主函数,定义为int型五、变量说明1.在主函数中LinkList *h 表示航班节点person *p 表示机票信息节点2.在其他函数中一般也用 r,p,f等表示链表指针i j m等表示int变量六、演示截图1.航班信息录入2.订票3.退票4.查询5.修改航班信息6.主界面、七、实验心得体会1.巩固和加深了对数据结果的理解,提高综合运用本课程所学知识的能力2.培养了我选用参考书,查阅手册及及文献资料的能力。

航空订票系统课程设计(c语言)

航空订票系统课程设计(c语言)

航空订票系统课程设计(c语言)一、教学目标本课程旨在通过学习航空订票系统的开发,让学生掌握C语言编程的基本概念和方法,培养学生的实际编程能力和问题解决能力。

具体目标如下:1.理解C语言的基本语法和数据结构。

2.掌握函数的定义和调用。

3.学习面向对象编程的基本概念。

4.能够使用C语言编写简单的程序。

5.能够运用面向对象编程的思维解决实际问题。

6.能够独立完成航空订票系统的开发。

情感态度价值观目标:1.培养学生的团队合作意识和沟通能力。

2.培养学生的创新思维和问题解决能力。

3.培养学生对编程语言和计算机科学的兴趣和热情。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数的定义和调用,以及面向对象编程的基本概念。

具体安排如下:1.C语言的基本语法和数据结构(2课时)。

2.函数的定义和调用(2课时)。

3.面向对象编程的基本概念(2课时)。

4.航空订票系统的开发实践(4课时)。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

1.讲授法:用于讲解C语言的基本语法、数据结构和函数的定义和调用。

2.讨论法:用于讨论面向对象编程的基本概念,促进学生之间的交流和思考。

3.案例分析法:通过分析航空订票系统的案例,让学生理解和应用所学的编程知识。

4.实验法:通过实际编写程序和开发航空订票系统,培养学生的实际编程能力和问题解决能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选择一本适合学生水平的C语言编程教材。

2.参考书:提供相关的编程参考书籍,供学生自主学习。

3.多媒体资料:制作相关的教学PPT和视频,帮助学生更好地理解和掌握知识。

4.实验设备:提供计算机实验室,让学生能够实际编写程序和进行实验。

五、教学评估本课程的评估方式将包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。

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

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

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

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

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

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

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

C语言课程设计报告飞机订票系统

C语言课程设计报告飞机订票系统

C语言课程设计报告飞机订票系统摘要本文是关于C语言课程设计报告飞机订票系统,它具有灵活的菜单,可以让用户轻松查看有关航班信息的详细信息,并用于购买操作。

本文旨在概述程序的全部运行流程,运用相关编程技术来实现订票系统。

关键词:C 语言课程设计,飞机订票系统,编程技术1 引言随着科技的不断发展,传统的人工订票系统已经不能满足人们的复杂需求,订票系统需要采用新技术来改进,以适应现代用户的需求。

为了建立一个高效的订票系统,我们开发了一个飞机订票系统。

它具有基于菜单式界面的灵活性,可以有效地实现飞机航班信息的查询,购票和航班信息的管理。

本报告着重介绍了构筑飞机订票系统的过程,旨在介绍编程技术以及每个模块的函数、功能实现,并概述程序的全部运行流程。

2 技术框架编写本程序的主要语言是C,采用层次功能模块结构设计,分为用户界面,数据管理,查询服务,支付服务和关系维护四个主要模块。

(1)用户界面用户界面模块主要实现功能是提供用户访问的菜单界面,用户可以在输入信息后,访问系统并根据输入信息获取反馈,进行下一步操作。

(2)数据管理数据管理包含数据结构和文件管理模块,它用来存储和管理航班信息、乘客信息等有关数据,数据在使用后可以及时写入文件。

(3)查询服务查询服务模块提供用户查询航班信息所必需的功能,根据用户输入的查询条件,提供精确的查询结果。

(4)支付服务支付服务模块用来实现订票系统和外围支付系统或服务的接口,以进行订票支付操作,以保证系统订票的安全性。

(5)关系维护关系维护模块主要负责订票系统的关系维护,保证数据的一致性,以及相联的航班和乘客信息之间的一致性。

3 设计实现(1)用户界面模块用户界面模块主要是用户与系统的交互界面,用C语言的标准输入输出实现,通过“while-switch”语句实现对不同功能的跳转。

(2)数据管理模块数据管理模块采用数组和二维字符串实现,能够有效地存储和进行订票,查询,修改和删除数据。

(完整word版)C语言课程设计——航空售票系统范文

(完整word版)C语言课程设计——航空售票系统范文

本模板是课程设计报告模板,请各位同学认真阅读以下要求:1.页删除)2.3.本设计报告左侧装订。

在虚线处装订.4.在课程设计封皮一页上用已经设置好的宋体四号来填写各个项目.5.在课程设计评定表一页上用宋体小四填写班级、学号、姓名、项目组、项目组长、项目组组员、本人工作简介。

组长评语一栏应由组长来给出。

6.在课程设计任务书一页的开头应按照给定的设置(黑体三号)填写好你的班级,在第五项时间安排里面应用宋体五号加粗来填写好日期范围。

7.从程序基本框架结构图开始到设计报告的最后一页都要求有页眉,内容为你的课程设计题目,宋体小五居中。

页脚中的页码已经设置好,同学们不必改动.8.在程序基本框架结构图采用WORD中的自选图形绘制程序基本框架结构图,也就是程序流程图。

9.在程序设计说明书中应该描述程序的设计思想,重点描述自己做的那部分的设计思想。

字体用宋体小四。

10.在代码清单中打印程序已经调试好的可运行的程序代码。

要求字体为宋体五号。

(页数可增加)11.报告的最后一部分是设计总结,应在程序代码之后另起一页,主要写通过一周课程设计你自己的体会,包括你学到了什么,哪里遇到了困难解决的办法以及今后的目标。

字体用宋体小四。

12.报告的各个部分都可以不为规定的一页,自己可增加页数,但要保证开始另外一项要另起一页。

13. 服务课程名称:本科添写:C语言;/专科添写:计算机语言(c)14. 报告完成后,要更新目录.方法为:单击目录左侧,选定整个目录后,按F9键更新目录。

课 程 设 计目录C 语言课程设计成绩评定表 .............................C 语言课程设计任务书 ....................................程序设计思路 ..................程序基本框架结构图 .................... 错误!未定义书签。

系统运行界面截图 ....................... 错误!未定义书签。

c语言程序设计飞机,C语言程序设计――飞机订票系统

c语言程序设计飞机,C语言程序设计――飞机订票系统

c语⾔程序设计飞机,C语⾔程序设计――飞机订票系统《C语⾔程序设计――飞机订票系统》由会员分享,可在线阅读,更多相关《C语⾔程序设计――飞机订票系统(7页珍藏版)》请在⼈⼈⽂库⽹上搜索。

1、C语⾔程序设计飞机订票系统代码如下:”#include stdio.h#include stdlib.h#include string.h#define LEN sizeof (struct plane)#define MAX 10;struct planechar destination12;char num10;char time12;int price;int amount;typedef struct plane PLANE;PLANE a100;void menu();void input();void search();void preserve();void planeadd()。

2、;void delplane();void main()system(cls);menu();void menu()char *menu = * 欢迎进⼊飞机订票系统*, a:输⼊航线 , b:查询航线 , c:退订票系统 , d:追加航线 , e:删除航线 , f: 退出 ,* ;int i;char NO;int quit = 0;dosystem(cls);for (i = 0; i9; i+)printf(n%s,menui);printf(n请输⼊服务代码a,b,c,d,e或fn);NO = getchar();switch (NO)casea: input(); break;ca。

3、seb: search(); break;casec: preserve(); break;cased: planeadd(); break;casee: delplane(); break;casef: quit = 1; break; while (!quit);void input()int i, n;FILE *fp;system(cls);if (fp = fopen(D:file, wb) = NULL)printf(error!n); exit(0);printf(n请输⼊航班总数n:);scanf(%d, &n);printf(n请按下⾯提⽰输⼊航班信息:起点站:沈阳);for。

c语言航班售票系统课程设计报告航班售票系统

c语言航班售票系统课程设计报告航班售票系统

计算机科学与技术系课程设计报告2008~2009学年第二期课程程序设计语言Ⅱ课程设计课程设计名称航班售票系统一、课程设计题目课程设计名称:航班售票系统设计内容:设计一个航班售票系统系统,能够对航空公司的售票进行管理。

航空公司的售票系统主要包括:航线信息、订票业务、退票业务。

任务和要求1.航线信息:每条航线包括航班号,飞机号,目的地,订票数,余票数,共5项。

现有3条航线:目的地北京,上海,广州。

飞机可乘100人(初始定票数为0,余票数为100)。

将这些信息存入文件中。

2.订票业务:(1).客户信息包括姓名,航班号,座位号(初始为0),假设已有3个客户信息存入文件。

(2).有新客户订票时,先输入姓名和航班号,查询情况,如果还有余票,就为这个客户办理订票手续,分给客户一个座位号,然后写入文件,并修改文件,若无余票,则输出客户已满3.退票业务:根据客户提出的航班号,办理退票,从文件中删除这个客户的信息,并修改中相应的航线的订票数和余票数输出全部航线的信息和全部客户信息,退出系统。

二、问题的分析首先这是一个管理系统,有两个大类乘客和飞机,所以要定义2个类,又因为需要进行文件的操作,那么可以再定义2个类,乘客信息类,飞机信息类用于储存多个信息。

界面操作当然需要用switch语句实现,case时调用到函数。

三、算法的设计我设计的这个航空管理系统运用到了条件判断,switch语句,循环语句,类与对象,对象数组,对象指针,类与类的嵌套,文件的写入写出等知识点。

整体的构思:设计了四个类飞机信息库类,乘客类,乘客信息库类。

飞机类包含了飞机的一些基本属性,有航班号,飞机号,目的地,余票数,已定票数等信息class Flight //飞机类{private:int note; //删除标记 1:已删,0:未删int flightnum; //航班号int planenum; //飞机号char destination[20]; //目的地int bookednum; //已定票数int refundnum; //余票public:Flight():bookednum(0),refundnum(100){}char *getdes(){return destination;}int getnote(){return note;}int getflightnum(){return flightnum;}int getplanenum(){return planenum;}void setrefund() //订票后对余票和已定票数的操作{bookednum++;refundnum--;}void delrefund() //退票后对余票和已定票数的操作{bookednum--;refundnum++;}void setname(char de[]){strcpy(destination,de);}void delplane() //删除飞机的操作{note=1;}void addplane(int n,int m, char *de) //增加飞机{note=0;flightnum=m;planenum=n;strcpy(destination,de);}void list(){cout<<"飞机号"<<" "<<" 航班号"<<" "<< "目的地"<<" "<<"已定票数"<<" "<<"剩余票数"<<endl;cout<<planenum<<" "<<setw(5)<<flightnum<<""<<setw(10)<<destination<<" "<<setw(5)<<bookednum<<" "<<setw(5)<<refundnum<<endl;}};飞机信息库类内嵌了一个飞机类的对象数组作为飞机信息库类的私有成员,每一个飞机的信息都是一个对象,都储存在了飞机类的对象数组中,通过这个数组进行对单个或多个飞机对象属性的一些操作,飞机信息库类中还包括界面操作选择的程序,其中还有信息的写入文件,读取文件中的数据的功能class FDatabase //飞机信息库类{private:int top; //记录数组下标Flight Fl[Maxp]; //飞机类的对象数组public:FDatabase(){Flight f;top=-1;fstream file("airline.dat",ios::in); //文件打开while(1){file.read((char *)&f,sizeof(f));if(!file)break;top++;Fl[top]=f;}file.close();}void clear() //清楚所有航班的操作{top=-1;cout<<"航班信息已删除!"<<endl;}int addplane(int n,int m,char *de) //增加飞机{Flight *fl=query(n);if(fl==NULL){top++;Fl[top].addplane(n,m,de);return 1;}return 0;}Flight *query(int pflightnum) //对象指针用于查找等操作{for(int i=0;i<=top;i++)if(Fl[i].getflightnum()==pflightnum && Fl[i].getnote()==0) return &Fl[i];return NULL;}Flight *query1(int pplanenum){for(int i=0;i<=top;i++)if(Fl[i].getplanenum()==pplanenum && Fl[i].getnote()==0) return &Fl[i];return NULL;}void list(){for(int i=0;i<=top;i++)if(Fl[i].getnote()==0)Fl[i].list();}void planedata();~FDatabase(){fstream file("airline.dat",ios::out);for(int i=0;i<=top;i++)if(Fl[i].getnote()==0)file.write((char *)& Fl[i],sizeof(Fl[i]));file.close();}};乘客类包含了乘客的一些基本属性,有姓名,航班号,座位号,客户编号等属性class Passenger //乘客类{private:int note; //删除标记 1:已删,0:未删int flightnum; //航班号char name[20]; //乘客姓名int ID; //乘客编号int seatnum; //座位号public:Passenger():seatnum(0){}char *getname(){return name;}int getnote() //返回删除标记{return note;}int getID(){return ID;}void setname(char na[]) //修改姓名{strcpy(name,na);}int getseatnum(){return seatnum;}void addbook(int n,char *na,int id,int seat) //订票操作{note=0;flightnum=n;ID=id;seatnum=seat;strcpy(name,na);}void delpassenger() //删除乘客信息{note=1;}void list() // 显示乘客信息{cout<<"客户姓名"<<" "<<"客户编号"<<" "<<"已定航班号"<<" "<<"座位号"<<endl;cout<<name<<" "<<setw(5)<<ID<<" "<<setw(5)<<flightnum<<" "<<setw(5)<<seatnum<<endl;}};乘客信息库类与飞机信息库类实现的功能原理类似,记录了乘客类的对象数组。

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

沈阳航空航天大学课程设计报告课程设计名称:C语言课程设计课程设计题目:航空公司售票系统院(系):计算机学院专业:计算机科学与技术班级:学号:姓名:指导教师:***完成日期:2013年3月25日目录第1章需求分析 (1)1.1题目的内容与要求 (1)1.1.1课程设计内容 (1)1.2题目分析 (1)第2章概要设计 (3)2.1数据结构的设计 (3)2.2总体结构 (3)第3章详细设计 (5)3.1数据结构设计 (5)3.2输入航班模块 (6)3.3取消航班模块 (6)3.4浏览全部航班信息模块 (7)3.5航班查询模块 (9)3.6订票模块 (11)3.7退票模块 (12)3.8改签模块 (13)3.9浏览已售信息模块 (14)3.10保存文件模块 (14)3.11加载本地文件模块 (15)第4章调试分析 (17)4.1问题一 (17)4.1.1问题描述 (17)4.1.2解决方法 (17)4.2问题二 (18)4.2.1问题描述 (18)4.2.2解决方法 (18)4.3问题三 (18)4.3.1问题描述 (18)4.3.2解决方法 (18)第5章使用说明与执行结果 (19)5.1航空公司售票系统主菜单 (19)5.2输入新航班 (19)5.3取消航班 (20)5.4浏览航班 (21)5.5航班查询 (22)5.6订票 (23)5.7退票 (24)5.8改签 (25)5.9保存文件 (27)5.10加载本地文件模块 (27)参考文献 (29)附录(程序清单) (30)第1章需求分析1.1题目的内容与要求1.1.1课程设计内容(1)通过设计一个航空售票系统,实现查询、购票、改签或退票等功能。

(2)每张机票应包含所属航空公司、起始地、目的地、舱位、价格、起飞时间等信息;(3)用户可查询宠起始地起飞到目的地的所有航空公司的当日航班的机票信息及剩余数量;(4)用户可按规定取消所定机票或改签下一趟航班;(5)可增加某一航线等;(6)有界面友好易于使用的菜单。

1.2 题目分析随着时代的进步,科技的发展。

人们生活水平的不断提高。

因此如今航空行业十分发达,为了满足乘客需求,如果不能快速的办理业务,那么很有可能为公司带来负面影响。

所以开发本程序,方便航空公司,也方便乘客。

本系统实现了添加、修改、查询、删除、订票和退票等航空售票的功能,总体可以快速的了解到想要查的航空信息与相关机票。

本系统的开发与研制是运用C语言进行设计完成的。

根据课程设计任务书,航空公司售票系统需要实时存入和修改航班信息以及订票的用户信息,譬如增加和删除航班以及修改用户信息。

综合任务书及对航空公司售票实际情况的考虑,本系统采用结构体数组。

本系统在开始时建立航班和用户两个结构体,定义了两个结构体数组,方便进行数据的动态修改。

在主页面中运用switch选择语句,通过从键盘输入不同的指令进入各自的程序功能模块。

除了航空公司售票系统所必须具备的航班浏览、查询,订票、退票和改签功能,考虑到本系统需要较高的安全性,因为这里面存的都是重要的信息,所以不能轻易的被别人所盗取。

其次还有稳定性,如果该系统的稳定性不好,总是丢文件,那么信息也会丢失,所以稳定性能一定要过关,特别加入了将信息保存到文件中与加载本地文件中所保存的信息等功能,提高了系统的安全性与稳定性。

从程序设计要求以及用户的体验操作角度考虑,本系统可以分成如下几个功能模块:(1)输入航班模块(2)取消航班模块(3)浏览全部航班模块(4)航班查询模块(5)订票模块(6)退票模块(7)改签模块(8)浏览已售信息模块(9)保存文件模块(10)加载本地文件模块第2章概要设计2.1 数据结构的设计本程序采用结构体数组。

根据课程设计任务书,航空公司售票系统需要实时存入和修改航班信息以及订票的用户信息,譬如增加和删除航班以及修改用户信息。

运用结构体数组,更加方面进行数据的操作。

因此,本系统在开始时建立航班和用户两个结构体,定义了两个结构体数组,方便进行数据的动态修改。

2.2总体结构通过航空售票系统可以快速的构建航空信息服务列表,并且可以对此列表可以进行一些列快速准确的操作,比如删除、修改、订票、退票、保存和载入本地文件等等,使客户与工作人员能够快速熟练的掌握此程序。

综合以上分析,本程序主要分为十个模块(功能模块图见图2.1):输入航班模块、取消航班模块、浏览全部航班模块、航班查询模块、订票模块、退票模块、改签模块、浏览已售信息模块、保存文件模块、加载本地文件模块。

(1)输入航班模块:输入新的航班信息。

(2)取消航班模块:删除某一班航班。

(3)浏览全部航班模块:浏览全部的航班信息。

(4)航班查询模块:按照时间或地点查询指定的航班。

(5)订票模块:用户买票。

(6)退票模块:用户退掉已买的机票。

(7)改签模块:用户根据自己的需求改签所需的航班。

(8)浏览已售信息模块:浏览已经买到票的用户信息及已购买的航班代号。

(9)保存文件模块:将航班及买票的用户信息保存到本地。

(10)加载本地文件模块:在再次使用本系统时,将本地已存的航班及已买票的用户信息读到程序中。

图2.1 系统功能模块图第3章详细设计3.1数据结构设计本次课程设计选用结构体作为主要的数据结构。

建立了plane和user两个结构体。

定义了plane ti[]、user si[]两个结构体数组。

主要用到的数据类型有字符数组和整型。

航空公司、航班代号、飞机起飞地点、降落地点、时间、用户姓名、所买的航班代号均用字符数组存储,分别使用20、10、10、10、15、20、20的最大长度。

舱位、飞机最大乘客人数、票价、已售票数、用户身份证号以整型存储。

建立的结构体如下:struct plane{char Company[20]; //所属航空公司char ID[10]; //航班代号char BePlace[10]; //飞机起飞地点char EnPlace[10]; //飞机降落终点char data[15]; //飞机起飞时间int cangwei; //舱位int max; //飞机最大乘客人数int price; //飞机票价int num; //飞机已售票数}struct user{char name[20]; //用户姓名int number; //身份证号char id[20]; //所买的航班代号}3.2输入航班模块输入要添加的航班数,再进入添加航班子模块中进行输入航班信息操作,输入对应的航班信息。

流程图如图2.2所示。

图2.2 输入航班模块流程图注释:(1)n:航班的数目(2)n1:新增加的航班数目(3)循环输入航班信息3.3取消航班模块根据所输入的航班代号,找到其在数组中所对应的位置,进行删除操作。

同时重新整理ti[]数组。

流程图如图2.3所示。

图2.3 取消航班模块流程图注释:(1) i:控制循环次数(2) ti[i].ID:航班代号3.4浏览全部航班信息模块通过for循环控制语句,循环输出ti[]数组中储存的所有的航班信息。

流程图如图2.4所示。

图2.4 浏览全部航班信息流程图注释:(1)i:控制循环次数3.5航班查询模块航班查询模块分为两个子模块:时间查询模块与终点查询模块。

前者是通过用户输入的飞机起飞时间通过与ti[]中保存的航班信息中的ti[i].data进行比较,找到对应的航班班次,输出该航班的信息。

后者是通过从键盘输入的终点地名与ti[]数组中保存的航班信息中的ti[i].EnPlace进行比较,找到对应的航班并将其输出。

时间查询模块流程图如图2.5.1所示,终点查询模块流程图如2.5.2所示。

图2.5.1 时间查询模块流程图图2.5.2 终点查询模块流程图注释:(1) i:控制循环3.6订票模块输入用户姓名、身份证号,查询要购买的机票,如果有余票则购买,并将该航班的航班代号存入到用户的结构体数组si[i].id,如果没有余票或没有要购买的航班,则返回,不保存用户信息。

流程图如图2.6所示。

图2.6 订票模块流程图3.7退票模块输入用户姓名、身份证号以及已购买的机票的航班代号。

通过输入的航班代号与ti[i].ID和si[i].id比较,找到对应项,执行ti[i].num--,删除该用户信息。

流程图如图2.7所示。

图2.7 退票模块流程图3.8改签模块输入用户姓名、身份证号以及需要改签的航班的代号,先进行退票操作然后进行买票操作,买票成功后修改对应的si[i].id一项。

流程图如图2.8所示。

图2.8 改签模块流程图3.9浏览已售信息模块使用for循环控制语句,顺序输出结构体数组si[]中保存的数据。

流程图如图2.9所示。

图2.9 浏览已售信息模块流程图3.10保存文件模块定义指针变量,用fopen函数打开两个“只写”的文件ticket.txt、sale.txt,成功后将所建立信息区的起始地址赋给指针变量,使用fwrite分别将航班信息与已售的信息存入两个文件中。

流程图如图2.10所示。

图2.10 保存文件模块流程图3.11加载本地文件模块用fopen函数分别打开ticket.txt、sale.txt两个文件,并使用fread分别读入两个文件所保存的信息。

流程图如图2.11所示。

图2.11 加载本地文件模块调试分析第4章调试分析调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。

调试的任务是及时改正测试过程中发现的软件错误。

具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。

然后仔细研究推断代码以确定问题的原因,并设法改正。

调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。

本系统调试过程中遇到问题和解决方法如下:4.1问题一4.1.1问题描述在程序第一次检查时,由于自己开始时没有对任务书进行细致的研读,没有结合实际情况分析,程序整体没有加入用户这一模块。

导致整个程序显得非常粗糙、使程序不具备完整性,丢失了用户这一重要信息。

4.1.2解决方法经过考虑和细致的分析,在程序开头又引入了struct user这个结构体,结构体中包含买票者的姓名、身份证号以及所买的航班代号等信息。

结构体如下:struct user{char name[20]; //用户姓名int number; //身份证号char id[20]; //所买的航班代号}同时建立了结构体数组user si[]。

在下面的订票、退票、改签模块加入了增加、删除或修改用户信息的子模块,调试分析同时在保存文件模块与加载本地文件模块同样增加了保存和加载用户信息的子模块。

随后进行了一系列的调试工作使程序正常运行,使重要的信息得以保存,保证了程序的安全性与稳定性。

相关文档
最新文档