C语言飞机订票系统课程设计
UML可视化建模(航空订票系统)

《可视化建模与UML》课程结业报告课题名称: 航空客运订票系统建模姓名: ***学号: *******班级:****: ***完成日期: 2013.06.16目录第一章概述 (3)1.1系统开发的摸底和开发背景 (3)1.2系统功能 (3)1.3系统结构框架 (4)1.4开发环境 (5)第二章用例模型 (6)2.1用例模型简介 (6)2.2用例图的的含义及其作用 (6)2.3用例图及用例描述 (7)第三章类模型 (10)3.1类模型简介 (10)3.2类图的作用 (10)3.3类图 (11)第四章交互模型 (13)4.1交互模型简介 (13)4.2序列图简介 (13)4.3序列图的作用 (13)4.4序列图描述及其序列图 (14)第五章行为模型 (20)5.1行为模型简介 (20)5.1.1活动图简介 (20)5.1.2活动图的作用 (20)5.1.3状态图简介 (21)5.1.4状态图的作用 (21)5.2行为模型图 (21)5.2.1活动图及其描述 (21)5.2.2状态图及其描述 (23)第六章构件图和部署图 (25)6.1构件图简介 (25)6.2部署图简介 (25)第七章课程学习小结 (27)7.1课程小结 (27)7.2学习心得 (27)参考文献 (28)第一章概述1.1系统开发的摸底和开发背景随着科技与经济的发展,越来越多的人选择乘飞机,这跟我国的经济增长有很大关系,人们在追求快节奏的生活方式,所以做飞机无疑成了首选。
而且随着网络的盛行,航空订票系统就显得尤为重要,我们开发这个系统主要是为了方便大家,让大家能够快速、清晰、准确地了解航班信息,而不至于像以前那样排队等候,从而避免耽搁乘客大量的等待时间。
航空客运业务诞生已有进一个世纪了,作为现有交通工具中最方便快捷的一种,它确实地给大家的生活、出行带来了极大的方便。
随着航空客运业务多年来的发展,其售票业务也同样不断地发展。
1.2系统功能机票预订系统是在现代社会生活节奏不断加快,对机票预订工作的自动化和准确化要求也日益强烈的背景下,为了实现机票预订工作的网络化,以及实现网络查询和统计一体化而开发的管理信息系统。
数据库课程设计-机票预订系统

《数据库原理》课程设计机票预订管理系统学院:计算机与信息科学学院专业:计算机科学与技术班级:计科1303姓名学号:XXX 13203403XX指导教师:高金华职称讲师完成时间:2015年12月《数据库原理》课程设计 (1)1系统概述 (3)2数据库设计 (4)2.1 需求分析 (4)2.2 概念结构设计 (7)2.3 逻辑结构设计 (10)2.4 物理结构设计 (11)2.5 设计小结 (15)3应用程序设计 (16)3.1 需求分析 (16)3.2 概要设计 (19)3.3 详细设计 (20)3.4 系统测试 (32)3.5 设计小结 (38)1 系统概述随着全球进入信息化时代,航空公司为了适应当前越来越激烈的竞争,增强公司的信息化程度,提高公司的售票管理的效率,就建立起了相应的航空预订票系统,成功实现提高了航空系统的售票效率和管理水平。
在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的机票预定系统,实现航空公司的机票销售的自动化的计算机系统,为企业的决策层提供准确、精细、迅速的机票销售信息。
根据可行性研究的结果和客户的要求,分析现有情况及问题。
随着社会发展的不断地进步,人民消费水平的不断地提高,致使民航事业不断壮大,乘坐民航的消费者越来越多,因此机票的预定也越显重要,航空公司为方便客户出行,需开发一个机票预定系统。
根据预定机票的客户信息,包括姓名、性别、身份证号码、出行时间、出行目的地等,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班2 数据库设计2.1 需求分析2.1.1 数据流图2.1.2 数据词典表2-1 plane飞机信息表表2-2 flight航班信息表表2-3 ticket 机票表表2-4 passenger 旅客表表2-5 buy购买表表2-6 manager 管理员表2.1.3 加工说明我们的系统需要六个实体:(1)飞机实体实体名:plane角色:关于飞机的信息属性:飞机编号,座位数主键:飞机编号(2)航班实体实体名:flight角色:航班信息属性:航班编号,出发地,目的地,起飞时间,到达时间主键:航班编号(3)机票实体实体名:ticket角色:机票信息属性:航班号,机舱等级,座位号,机票价格,余票数主键:座位号(4)旅客实体实体名:passenger角色:旅客信息属性:旅客名,旅客性别,身份证,手机号,密码主键:旅客名(5)机票购买实体实体名:buy角色:旅客购买机票后的信息属性:旅客名,航班号,机舱等级,座位号,机票价格,购买数量(6)管理员实体实体名:manager角色:管理员信息属性:管理员名,密码2.2 概念结构设计2.2.1 E-R图根据需求分析抽象出信息结构,可得该系统的E-R图。
航空订票系统代码

include <iostream.h>include <string.h>void FlightInsert; //增加路线void FlightDelete;//删除路线void FlightLookup;//航班查询void FlightRework;//航班路线修改void FlightBuyticket;//买票void FlightCancelticket;//取消订票void Flightclean;//清空void MainMenu;//主函数void Display;//显示订票信息typedef struct Customer //已定票乘客信息{char Name10; //姓名int Amount; //定票数int Level; //舱位等级int SeatNum; //座位号char FlightNum10; //所定航班号struct Customer next;}Customer;typedef struct Replace //侯补乘客信息{char Name10; //姓名eint Amount; //定票数int Level; //舱位等级char FlightNum10; //所定航班号struct Replace next;}Replace;typedef struct Flight //航班路线信息{char From10; //起点站名char Des10; //终点站名char FlightNum10; //航班号char PlaneNum10; //航班char Week20; //飞机周日int Ration; //乘员定额int FreeTicket; //剩余票数float Price3; //票价int ReplacePas; //候补乘客数Replace ReplName; //该航班的候补乘客名单Customer CustName; //该航班的已定票乘客名单struct Flight next; //指示下一航班路线结点}Flight;PFlight;int Ration=0; //乘客总数Flight head; //建立航班路线头结点Flight rear; //建立航班路尾结点Customer Cusrear;Replace Reprear;void MainMenu{int i=0;while i=8{cout<<endl;cout<<" 欢迎使用航空订票系统"<<endl;cout<<" "<<endl;cout<<" 按1增加航班路线 "<<endl;cout<<" "<<endl;cout<<" 按2查询航班路线 "<<endl;cout<<" "<<endl;cout<<" 按3修改航班路线 "<<endl;cout<<" "<<endl;cout<<" 按4预订飞机票 "<<endl;cout<<" "<<endl;cout<<" 按5退订飞机票 "<<endl;cout<<" "<<endl;cout<<" 按6清空系统 "<<endl;cout<<" "<<endl;cout<<" 按7已订票名单 "<<endl;cout<<" "<<endl;cout<<" 按8 退出系统 "<<endl;cout<<" "<<endl;cout<<" 提示:当前为主菜单"<<endl;cin>>i;switchi{case 1:FlightInsert;break; //增加航班路线case 2:FlightLookup;break; //查询航班路线case 3:FlightRework;break; //修改航班路线case 4:FlightBuyticket;break; //预订飞机票case 5:FlightCancelticket;break; //退订飞机票case 6:Flightclean;break; //清空系统case 7:Display;break;case 8:;break;default:cout<<"提示:抱歉;请选择正确的操作"<<endl;cout<<endl;cout<<endl;break;}}}void FlightInsert //航班录入{/int i=2;whilei=1{/Flight p;p=new Flight;cout<<"正在设定新的路线"<<endl;cout<<endl;cout<<"1.请设定起点站名:"<<endl;cin>>p->From;cout<<"2.请设定终点站名:"<<endl;cin>>p->Des;cout<<"3.请设定航班号:"<<endl;cin>>p->FlightNum;cout<<"4.请设定飞机号:"<<endl;cin>>p->PlaneNum;cout<<"5.请设定飞行周日:"<<endl; cin>>p->Week;cout<<"6.请设定乘员定额:"<<endl; cin>>p->Ration;p->FreeTicket=p->Ration;cout<<"7.请设定一等舱的价格:"<<endl; cin>>p->Price0;cout<<"8.请设定二等舱的价格:"<<endl; cin>>p->Price1;cout<<"9.请设定三等舱的价格:"<<endl; cin>>p->Price2;p->ReplName=new Replace;p->CustName=new Customer;p->CustName->next=NULL;p->ReplName->next=NULL;p->ReplacePas=0;rear->next=p;rear=p;rear->next=NULL;cout<<"设置成功"<<endl;cout<<""<<endl;cout<<endl;/cout<<"按1返回主菜单按2继续"<<endl;cin>>i;}/}void FlightLookup //查询航班号{Flight p;q;char FlightNum10;p=head;int i=0;while i=1{cout<<"请输入需要查询的航班号:"<<endl;cin>>FlightNum;while p->next && strcmpp->next->FlightNum;FlightNum{p=p->next;}q=p->next;if q==NULL{cout<<"提示:对不起;不存在此航班号;请核实您的信息"<<endl;}else{cout<<"以下是您所查的车次信息:"<<endl;cout<<""<<endl;cout<<" 1.航班号: "<<q->FlightNum<<endl;cout<<" 2.飞机号: "<<q->PlaneNum<<endl;cout<<" 3.起点站: "<<q->From<<endl;cout<<" 4.目的地: "<<q->Des<<endl;cout<<" 5.飞机周日: "<<q->Week<<endl;cout<<" 6.成员定额: "<<q->Ration<<endl;cout<<" 7.剩余票数: "<<q->FreeTicket<<"张"<<endl;cout<<" 8.候补乘客数:"<<q->ReplacePas<<"人"<<endl;cout<<" 9.一等舱的价格: "<<q->Price0<<"元"<<endl;cout<<" 10.二等舱的价格:"<<q->Price1<<"元"<<endl;cout<<" 11.三等舱的价格:"<<q->Price2<<"元"<<endl;cout<<""<<endl;}cout<<"您还需要其他的操作么 "<<endl;cout<<endl;cout<<"按1返回主菜单按2继续操作"<<endl;cin>>i;cout<<""<<endl;cout<<endl;}}void FlightRework //修改航班路线信息{int Customer_Number ;Flight p;q;char FlightNum10;int i=0;int a=1;p=head;cout<<"请输入需要修改的航班:"<<endl;cin>>FlightNum;while p->next&&strcmpp->next->FlightNum;FlightNum {p=p->next;}q=p->next;if q==NULL{cout<<"提示:对不起;不存在此航班;请核实您的信息"<<endl;}else{whilea{cout<<" 请输入需要修改的数据"<<endl;cout<<""<<endl;cout<<" 按1航班号"<<endl;cout<<""<<endl;cout<<" 按2飞机号"<<endl;cout<<""<<endl;cout<<" 按3起始站cout<<""<<endl;cout<<" 按4目的地"<<endl;cout<<""<<endl;cout<<" 按5每周出站日期"<<endl;cout<<""<<endl;cout<<" 按6成员定额"<<endl;cout<<" "<<endl;cout<<" 按7一等舱的价格"<<endl;cout<<""<<endl;cout<<" 按8二等舱的价格"<<endl;cout<<"cout<<" 按9三等舱的价格"<<endl;cout<<""<<endl;cout<<" 按10退出"<<endl;cout<<""<<endl;cout<<" "<<endl;cin>>i;switchi{case 1:cout<<"1.请输入航班号:"<<endl;cin>>q->FlightNum;break;case 2:cout<<"2.请输入飞机号:"<<endl;cin>>q->PlaneNum;break;case 3:cout<<"3.请输入起始站:"<<endl;cin>>q->From;break;case 4:cout<<"4.请输入目的地:"<<endl;cin>>q->Des;break;case 5:cout<<"5.请输入飞机周日:"<<endl;cin>>q->Week;break;case 6:cout<<"6.请输入乘员定额:"<<endl;Customer_Number=q->Ration-q->FreeTicket;cin>>q->Ration;q->FreeTicket=q->Ration-Customer_Number;break ;case 7:cout<<"7.请输入一等舱的价格:"<<endl;cin>>q->Price0;break;case 8:cout<<"8.请输入二等舱的价格:"<<endl;cin>>q->Price1;break;case 9:cout<<"9.请输入三等舱的价格:"<<endl;cin>>q->Price2;break;case 10:a=0;break;default:cout<<"提示:对不起;请选择正确的操作"<<endl;cout<<endl;cout<<endl;break;}}}}void FlightBuyticket //订票{int Ticket_Amount;void BuyticketPFlight ;int ;void BuyreplacePFlight ;int ;int ;Flight p;q;char Des10;int i=2;while i=1{cout<<"请输入目的地:"<<endl;cin>>Des;p=head;while p->next&&strcmpp->next->Des;Des{p=p->next;}q=p->next;if q==NULL{cout<<"提示:对不起;不存在此航班;请核实您的信息"<<endl;}else{whilei=1{cout<<"请输入需要购买的票数:"<<endl;cin>>Ticket_Amount;whileTicket_Amount==0 && Ticket_Amount<0{cout<<"提示:对不起;请输入正确的票数"<<endl;cout<<endl;cout<<"请输入需要够买的票数:"<<endl;cin>>Ticket_Amount;}if Ticket_Amount<=q->FreeTicket{Buyticketq;Ticket_Amount;}else{int n;cout<<"提示:抱歉剩余票数小于定票数;是否需要列入候补名单按1是按2否"<<endl;cin>>n;Buyreplaceq;Ticket_Amount;n;}cout<<endl;cout<<"按1返回主菜单按2继续"<<endl;cin>>i;}}}}void FlightCancelticket //退票{void BuyticketPFlight ;int ;Flight p;q;Customer h;j;char FlightNum6;char Customer_Name10;int Replace1_Amount; //候补第一个人的定票数int i;cout<<""<<endl;while i=1{cout<<"请输入需要退定的航班号:"<<endl;cin>>FlightNum;p=head;while p->next&&strcmpp->next->FlightNum;FlightNum{p=p->next;}q=p->next;if q==NULL{cout<<"提示:对不起;不存在此航班;请核实您的信息"<<endl; }else{while i=2{cout<<"请输入所查姓名:"<<endl;cin>>Customer_Name;h=q->CustName;while h->next&&strcmph->next->Name;Customer_Name{h=h->next;}j=h->next;ifj==NULL{cout<<"提示:对不起;查无此人;请核实您的信息"<<endl;cout<<endl;}else{ifj->next==NULL{ //当删除最后一个结点Cusrear=h;}h->next=h->next->next;q->FreeTicket+=j->Amount;delete j;cout<<"提示:退票成功"<<endl;ifq->ReplName->next=NULL{Replace1_Amount=q->ReplName->next->Amount;if Replace1_Amount<=q->FreeTicket{Replace rep;rep=q->ReplName->next;Customer Cus2;Cus2=new Customer;Cus2->SeatNum=q->Ration-q->FreeTicket+1;strcpyCus2->FlightNum; q->FlightNum ;strcpyCus2->Name; rep->Name ;Cus2->Amount=rep->Amount;Cus2->Level=rep->Level;cout<<"提示:"<<endl;cout<<endl;cout<<"候补乘客:"<<rep->Name<<" 已经成功买票 "<<endl;cout<<endl;cout<<"航班号:"<<Cus2->FlightNum<<endl;cout<<"舱位等级为:"<<rep->Level<<"1一等舱;2二等舱;3三等舱"<<endl;cout<<"座位号为:"<<endl;forint i=1;i<=rep->Amount;i++{cout<<"No."<<Cus2->SeatNum++<<" ";}cout<<endl;if q->CustName->next==NULL{Cusrear=q->CustName;Cusrear->next=Cus2;Cusrear=Cus2;Cusrear->next=NULL;}else{Cusrear->next=Cus2;Cusrear=Cus2;Cusrear->next=NULL;}q->FreeTicket-=rep->Amount;q->ReplName->next=q->ReplName->next->next;q->ReplacePas--;delete rep;}}}break;}}cout<<"按1返回主菜单;或按任意键返回继续退票操作"<<endl;cout<<endl;cin>>i;}}void Flightclean//清空{head->next=rear->next;cout<<"提示:系统已经清空"<<endl;cout<<endl;}void BuyticketPFlight q;int Ticket_Amount //买票{int n=Ticket_Amount;Customer Cus2;Cus2=new Customer;Cus2->SeatNum=q->Ration-q->FreeTicket+1;strcpyCus2->FlightNum; q->FlightNum ;Cus2->Amount=Ticket_Amount;cout<<"1.请输入姓名:"<<endl;cin>>Cus2->Name;cout<<"2.请输入购买票的类型:"<<endl;cout<<"按1一等舱;按2二等舱;按3三等舱"<<endl; cin>>Cus2->Level;cout<<"提示:订票成功"<<endl;cout<<endl;cout<<"舱位等级:"<<" "<<Cus2->Level<<endl; cout<<"座位号为:"<<endl;forint i=1;i<=Ticket_Amount;i++{cout<<"No."<<Cus2->SeatNum++<<" ";}cout<<endl;if q->CustName->next==NULL{Cusrear=q->CustName;Cusrear->next=Cus2;Cusrear=Cus2;Cusrear->next=NULL;}else{Cusrear->next=Cus2;Cusrear=Cus2;Cusrear->next=NULL;}q->FreeTicket-=Ticket_Amount;}void BuyreplacePFlight q;int Ticket_Amount;int n //进入候补队列{Replace Rep2;Rep2=new Replace;ifn==1{q->ReplacePas+=Ticket_Amount;strcpyRep2->FlightNum;q->FlightNum;Rep2->Amount=Ticket_Amount;cout<<"1.请输入姓名:"<<endl;cin>>Rep2->Name;cout<<"2.请输入购买票的类型:"<<endl;cout<<"按1一等舱;按2二等舱;按3三等舱"<<endl;cin>>Rep2->Level;ifq->ReplName->next==NULL{Reprear=q->ReplName;Reprear->next=Rep2;Reprear=Rep2;Reprear->next=NULL;}else{Reprear->next=Rep2;Reprear=Rep2;Reprear->next=NULL;}}}void Display//显示订票信息{cout<<"提示:抱歉;该项目还在开发"<<endl;cout<<endl;int i;cout<<"按1返回至主菜单"<<endl;cin>>i;whilei=1{break;}/Customer h;j;char Customer_Name10;int i;while i=2{cout<<"请输入所查姓名:"<<endl;cin>>Customer_Name;h=q->CustName;while h->next&&strcmph->next->Name;Customer_Name{h=h->next;}j=h->next;ifj==NULL{cout<<"提示:对不起;查无此人;请核实您的信息"<<endl;cout<<endl;}else{cout<<}///Customer p;//cout<<"已买票的乘客有:"<<endl;//cout<<endl;//cout<<"姓名:"<<p->Name<<"航班号:"<<p->FlightNum<<"订票数:"<<p->Amount<<endl;//cout<<"舱位等级:"<<p->Level<<"座位号"<<p->SeatNum;//Flight q;//char FlightNum10;//cout<<"以下是您所查的车次信息:"<<endl;//cout<<""<<endl;//cout<<" 姓名: "<<q->Name<<endl;//cout<<" 航班号: "<<q->FlightNum<<endl;//cout<<" 飞机号: "<<q->PlaneNum<<endl;//cout<<" 起点站: "<<q->From<<endl;//cout<<" 目的地: "<<q->Des<<endl;//cout<<" 飞机周日: "<<q->Week<<endl;//cout<<" 舱位等级: "<<q->Level<<endl;}include "AirLineSystem.h" include<iostream.h>void main //主程序{Cusrear=new Customer;Reprear=new Replace;head=rear=new Flight;head->next=NULL;MainMenu;}。
数据结构课程设计--航班信息查询与检索系统

一、设计题目设计一个航班信息查询与检索系统。
二、基本要求1、每个航班记录包括八项:航班号、起始站、终点站、班期、起飞时间、到达时间、飞机型号、票价。
2、要有输入模块3、对航班信息进行排序与查找。
三、运行环境CPU:奔腾3;操作系统:Windows 98;编程工具:TC2.0。
四、算法设计思想1、设计思路根据题目所要求,程序必须实现航班信息的录入和查询。
程序首先定义了一个用于储存航班信息的数据类型,再由用户录入航班数据,在录入的同时并对数据进行排序,最后执行数据查询和检索。
在查询设计中,使用二分查找法对排好序的航班数据按航班号实现快速查找,按起点站、终点站、起飞时间、到达时间查找的则采用顺序查询方法。
2、流程图3、各函数说明(1)、一趟数字字符分配函数void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e)(2)、一趟数字字符收集函数void collect(slnode *sl,int i,arrtype_n f,arrtype_n e)(3)、一趟字母字符分配函数void distribute_c(slnode *sl,int i,arrtype_c f,arrtype_c e)(4)、一趟字母字符收集函数void collect_c(slnode *sl,int i,arrtype_c f,arrtype_c e)(5)、链式基数排序函数void radixsort(sllist &l)(6)、按指针链重新整理静态链表void arrange(sllist &l)//重新整理(7)、二分查找函数int binsearch(sllist l,keytype key[]) (8)、顺序查找函数void seqsearch(sllist l,keytype key[],int i) (9)、查询检索菜单控制程序void searchcon(sllist l)(10)、录入航班数据函数void inputdata(sllist &l)(11)、主函数void main()五、源代码#include "stdafx.h"#include <stdio.h>#include <string.h>#define maxspace 100#define keylen 7#define radix_n 10#define radix_c 26typedef char keytype;typedef struct{char start[6];char end[6];char sche[10];char time1[5];char time2[5];char model[4];int price;}infotype;typedef struct{keytype keys[keylen];infotype others;int next;}slnode;typedef struct{slnode sl[maxspace];int keynum;int length;}sllist;typedef int arrtype_n[radix_n];typedef int arrtype_c[radix_c];void distribute(slnode *sl,int i,arrtype_n f,arrtype_n e) {int j,p;for(j=0;j<radix_n;j++){f[j]=e[j]=0;}for(p=sl[0].next;p;p=sl[p].next){j=sl[p].keys[i]%48;if(!f[j])f[j]=p;elsesl[e[j]].next=p;e[j]=p;}}void collect(slnode *sl,int i,arrtype_n f,arrtype_n e) {int j,t;for(j=0;!f[j];j++);sl[0].next=f[j];t=e[j];while(j<radix_n-1){for(j=j+1;j<radix_n-1&&!f[j];j++);if(f[j]){sl[t].next=f[j];t=e[j];}}sl[t].next=0;}void distribute_c(slnode *sl,int i,arrtype_c f,arrtype_c e) {int j,p;for(j=0;j<radix_c;j++){f[j]=e[j]=0;}for(p=sl[0].next;p;p=sl[p].next){j=sl[p].keys[i]%65;if(!f[j])f[j]=p;elsesl[e[j]].next=p;e[j]=p;}}void collect_c(slnode *sl,int i,arrtype_c f,arrtype_c e) {int j,t;for(j=0;!f[j];j++);sl[0].next=f[j];t=e[j];while(j<radix_c-1){for(j=j+1;j<radix_c-1&&!f[j];j++);if(f[j]){sl[t].next=f[j];t=e[j];}}sl[t].next=0;}void radixsort(sllist &l)//链式{int i;arrtype_n fn,en;arrtype_c fc,ec;for(i=0;i<l.length;i++)l.sl[i].next=i+1;l.sl[l.length].next=0;for(i=l.keynum-1;i>=2;i--){distribute(l.sl,i,fn,en);collect(l.sl,i,fn,en);}for(i=1;i>=0;i--){distribute_c(l.sl,i,fc,ec);collect_c(l.sl,i,fc,ec);}}void arrange(sllist &l) //重新整理{int p,q,i;slnode temp;p=l.sl[0].next;for(i=1;i<l.length;i++){while(p<i)p=l.sl[p].next;q=l.sl[p].next;if(p!=i){temp=l.sl[p];l.sl[p]=l.sl[i];l.sl[i]=temp;l.sl[i].next=p;}p=q;}}int binsearch(sllist l,keytype key[]){int low,high,mid;low=1;high=l.length;while(low<=high){mid=(low+high)/2;if(strcmp(key,l.sl[mid].keys)==0)return mid;else if(strcmp(key,l.sl[mid].keys)<0)high=mid-1;elselow=mid+1;}return 0;}void seqsearch(sllist l,keytype key[],int i){int j,k,m=0;printf("*************************************************************\n"); printf("* 航班号起点站终点站航班期起飞时间到达时间机型票价*\n"); for(j=1;j<=l.length;j++){switch(i){case 2:k=strcmp(key,l.sl[j].others.start);break;case 3:k=strcmp(key,l.sl[j].others.end);break;case 4:k=strcmp(key,l.sl[j].others.time1);break;case 5:k=strcmp(key,l.sl[j].others.time2);break;}if(k==0){m=1;printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[j].keys,l.sl[j].others.start,l.sl [j].others.end,l.sl[j].others.sche,l.sl[j].others.time1,l.sl[j].others.time2,l.sl[j].others.model,l.sl[j].others.price);}}if(m==0)printf("* 无此航班信息,可能是输入错误!*\n");printf("*************************************************************\n"); }void searchcon(sllist l){keytype key[keylen];int i=1,k;while(i>=1&&i<=5){printf("\********************\n");printf(" * 航班信息查询系统*\n");printf(" ********************\n");printf(" * 1.航班号*\n");printf(" * 2.起点站*\n");printf(" * 3.终点站*\n");printf(" * 4.起飞时间*\n");printf(" * 5.到达时间*\n");printf(" * 0.退出系统*\n");printf(" ********************\n");printf(" 请选择(0-5):");scanf("%d",&i);printf("\n");switch(i){case 1:printf("输入要查询的航班号(字母要大写):");scanf("%s",key);k=binsearch(l,key);printf("*************************************************************\n"); if(k==0)printf("* 无此航班信息,可能是输入错误!*\n");else{printf("* 航班号起点站终点站航班期起飞时间到达时间机型票价*\n"); printf("* %-8s%-7s%-6s%-11s%-9s%-7s%-5s%4d *\n",l.sl[k].keys,l.sl[k].others.start,l.sl[k].others.end,l.sl[k].others.sche,l.sl[k].others.time1,l.sl[k].others.time2,l.sl[k].others.model,l.sl[k].others.price);}printf("*************************************************************\n"); break;case 2:printf("输入要查询的航班起点站名:");scanf("%s",key);seqsearch(l,key,i);break;case 3:printf("输入要查询的航班终点站名:");scanf("%s",key);seqsearch(l,key,i);break;case 4:printf("输入要查询的航班起飞时间:");scanf("%s",key);seqsearch(l,key,i);break;case 5:printf("输入要查询的航班到达时间:");scanf("%s",key);seqsearch(l,key,i);break;case 0:printf("\n\n\n 再见\n\n\n");}}}void inputdata(sllist &l){int i=++l.length;char yn='y';while(yn=='y'||yn=='Y'){printf("航班号起点站终点站航班期起飞时间到达时间机型票价\n"); scanf("%s%s%s%s%s%s%s%d",l.sl[i].keys,l.sl[i].others.start,l.sl[i].others.end,l.sl[i].others.sche,l.sl[i].others.time1,l.sl[i].others.time2,l.sl[i].others.model,&l.sl[i].others.price);++i; getchar();radixsort(l);arrange(l);printf("继续输入吗?y/n:");scanf("%c",&yn);}l.length=i-1;}void main(){sllist l;l.keynum=6;l.length=0;inputdata(l);searchcon(l);}六、运行结果1、录入航班信息编译后运行,显示:航班号起点站终点站航班期起飞时间到达时间机型票价录入:MU4594昆明西安 1.3.5.6 10151140 3281160↙显示:继续输入吗?y/n:录入:y↙显示:航班号起点站终点站航班期起飞时间到达时间机型票价录入:SC7425青岛海口 1.3.6 19202120 DH41630↙显示:继续输入吗?y/n:录入:n↙2、航班信息查询录入航班信息后,屏幕显示:********************* 航班信息查询系统********************** 1.航班号** 2.起点站** 3.终点站** 4.起飞时间** 5.到达时间** 0.退出系统*********************请选择(0-5):录入:1↙显示:输入要查询的航班号(字母要大写):录入:MU4594↙显示:航班号起点站终点站航班期起飞时间到达时间机型票价MU4594-昆明-西安-1.3.5.6 -1015 -1140 -328 -1160 录入:2↙显示:输入要查询的航班起点站名:录入:青岛↙显示:航班号起点站终点站航班期起飞时间到达时间机型票价SC7425-青岛-海口-1.3.6 -1920-2120 -DH4-1630↙录入:2↙显示:输入要查询的航班起点站名:录入:广州↙显示:* 无此航班信息,可能是输入错误!*七、收获与体会本设计的重点和难点是在于对航班数据的排序和查找,以链式基数排序为主线,用到了二分查找和顺序查找等知识,还有建立静态链表等。
航空订票系统设计报告

一绪论11.1 课题背景及现状 (1)1.2 开发工具介绍 (1)二需求分析 (2)(一)航空售票系统的数据需求(二)数据字典(三) 主要数据流图三概要设计 (6)四逻辑设计 (7)五详细设计 (7)(一)基本查询语句(二) 程序流图中某些加工实现采用IPO图的方式描述(三)数据库的逻辑结构设计六测试结果 (12)七小结 (17)参考文献 (18)附录(主要源代码) (19)一绪论1.1 课题背景及现状随着旅游业的逐渐的成熟发达,航空客运量大幅度的提高,国内国际的旅游航班的增加,这些都对航空的信息管理系统提出了更高的要求,所以要不断的完善更新航空售票系统,提高航空售票系统的工作效率。
航空公司为方便旅客,需开发一个订票系统。
系统的操作者是有登录密码和用户名的售票员。
系统要实现的基本功能是航班的调整,售票,订票,取票,退票,乘客信息的管理,乘客购票的统计;而系统在以后扩展时还可以实现的功能有:对机组工作人员的管理,预定机票的送票情况管理等。
此系统的开发由我们分模块完成,而我所负责的模块是实现系统的航班调整,售票,订票,退票,取票,航班查询功能。
举一个旅客订票的例子:预定机票的旅客信息,包括姓名、性别、地址、证件号、目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。
旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。
并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。
航空售票系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点1.2 开发工具介绍本次课程设计应用的开发工具主要是用java语言和SQL Server 2005 。
数据结构课程设计源代码(完整版)

算法与数据结构课程设计报告设计题目:专业班级学生学号指导教师2014年第1学期第一部分:需求分析1、系统名称:航空客运订票系统航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。
要求在TC或VC环境下设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
2、要求:(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票量、已经订票的客户名单(包括姓名、订票量)以及等候替补的客户名单(包括姓名、所需票量)。
(2)作为模拟系统,全部数据可以只存放在内存中。
(3)通过此系统可以实现如下功能:①录入功能:可以录入航班情况②查询功能:根据客户提供的终点站名进行查询,可以输出以下信息:航班号、飞机号、星期几飞行和余票量等。
也可以根据航班号,查询飞机某个航线的情况。
③订票功能:根据客户提出的要求(姓名、终点站名、订票数量)查询该航班的余票量情况。
如尚有足够的余票,则为客户办理订票手续;若已满员或余票量少于订票数量,则需要重新询问客户要求,如需要,可登记排队候补。
④退票功能:根据客户提供的情况(姓名、日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,若有人排队,则为排在第一位的客户办理订票手续。
第二部分:系统设计图样一:设计说明1:添加航班:整个航班的信息保存在一个结构体flight中,采用结构体数组,每一个航班信息包含航班号、起飞时间、起飞城市、降落时间、降落城市、余票数量。
航班信息通过lulu()函数进行添加。
添加的信息保存在航班flight结构体数组中。
2:查询航班:查询板块分为两个部分,按姓名查找和按站名查找。
按姓名查找:通过所输入的姓名和已定客户的姓名相匹配,匹配成功则查找成功。
按站名查找:通过所输入的起始站名和终点站名进行匹配,匹配成功则查找成功。
3:订票功能:根据用户的姓名和航班号进行订票,如果所查找的航班号的余票满足用户需要的票数,则订票成功,该信息保存在Customer中,才用结构体数组,包含已定客户的姓名、客户ID、订的票数、起飞时间、起飞城市、降落时间、降落城市、航班号。
航空订票系统代码

Airline.h#pragma once#include<string>using std::string;#include<iostream>using std::istream;using std::ostream;#include<string>using std::endl;using std::cout;using std::cin;#include"DataStructure.h"#include"Passenger.h"class AirLine;ostream &operator<<(ostream &output ,const AirLine& line);class AirLine{friend void InitAirLine(AirLine *line);friend ostream &operator<<(ostream &output,const AirLine& line); public:AirLine(void);~AirLine(void);string GetEndPoint();int GetSeatNum(int);int GetSeatRemain(int);void SetSeatRemain(int num,int whickWeek);string GetFlightNum(void);void InsertPassenger(Passenger& temp);bool IsFly(int whichWeek) const;void InsertAwait(Passenger& temp);bool DeletePassenger(Passenger&);int IfAwaitBook(int tiNum, int whichWeek);private:string endPoint;string flightNum;string airNum;bool week[8];int seatNum[8];int seatRemain[8];MyList<Passenger> pList;MyQueue<Passenger> pQueue;};Airline.cpp#include"AirLine.h"AirLine::AirLine(void){for(int i=0;i<8;i++)week[i]=false;}AirLine::~AirLine(void){}string AirLine::GetEndPoint(){return endPoint;}ostream &operator<<(ostream &output,const AirLine &line){output<<"终点站: "<<line.endPoint<<"\n\n"<<"航班号: "<<line.flightNum<<"\n\n"<<"飞机号: "<<line.airNum<<"\n\n"<<"剩余票数:\n";for(int i=1;i<8;i++)if(line.IsFly(i))output<<"周"<<i<<" "<<line.seatRemain[i]<<endl;string weekName[8]={" ","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sund ay"};output<<"飞行日:";for(int i=1;i<8;i++)if(line.week[i])output<<weekName[i]<<"\t";cout<<endl;return output;}int AirLine::GetSeatNum(int whichWeek){return seatNum[whichWeek];}int AirLine::GetSeatRemain(int whichWeek){return seatRemain[whichWeek];}void AirLine::SetSeatRemain(int num,int whichWeek) {seatRemain[whichWeek]-=num;}string AirLine::GetFlightNum(void){return flightNum;}void AirLine::InsertPassenger(Passenger& temp) {pList.InsertNode(temp);}bool AirLine::IsFly(int whichWeek) const{return week[whichWeek];}void AirLine::InsertAwait(Passenger& temp){pQueue.EnQueue(temp);}bool AirLine::DeletePassenger(Passenger& temp) {seatRemain[temp.GetWeek()]+=temp.GetTickets();return pList.DeleteNode(temp);}int AirLine::IfAwaitBook(int tiNum, int whichWeek) {if(pQueue.Empty())return 0;Passenger node,tnode;MyQueue<Passenger> tempQueue;while(!pQueue.Empty()){pQueue.DnQueue(node);if(node.GetTickets()<tiNum&&node.GetWeek()==whichWeek) break;tempQueue.EnQueue(node);}while(!tempQueue.Empty()){tempQueue.DnQueue(tnode);pQueue.EnQueue(tnode);}if(node.GetTickets()<tiNum&&node.GetWeek()==whichWeek) return node.GetTickets();elsereturn 0;}Passenger.h#pragma once#include<string>using std::string;enum TicketGrade{AA,BB,CC};class Passenger{public:~Passenger(void);Passenger(const string &passengerName=" ",int tick=0,int g=1,int w=1);bool operator==(Passenger & d);int GetTickets();int GetWeek();private:string name;int tickets;TicketGrade grade;int flightWeek;};Passenger.cpp#include"Passenger.h"Passenger::~Passenger(void){}Passenger::Passenger(const string &passengerName,int tick,int g,int w) {name=passengerName;tickets=tick;switch(g){case 1:grade=AA;break;case 2:grade=BB;break;case 3:grade=CC;break;default:break;}flightWeek=w;}bool Passenger::operator==(Passenger & d){if(d.tickets!=tickets)return false;if(!=name)return false;if(d.flightWeek!=flightWeek)return false;if(d.grade!=grade)return false;return true;//TODO: insert return statement here }int Passenger::GetTickets(){return tickets;}int Passenger::GetWeek(){return flightWeek;}DataStructure.h#include<cstdlib>//LQNode classtemplate<typename T>class MyList;template<typename T>class MyQueue;template<typename T>class LQNode{friend class MyList<T>;friend class MyQueue<T>;public:LQNode();LQNode(T);~LQNode();private:T data;LQNode<T> *next;};template<typename T> LQNode<T>::LQNode(){//data=T(0);next=NULL;}template<typename T> LQNode<T>::LQNode(T node) {data=node;next=NULL;}template<typename T> LQNode<T>::~LQNode(){}//MyList classtemplate<typename LT> class MyList{public:MyList();~MyList();void InsertNode(LT &);bool DeleteNode(LT &);private:LQNode<LT> *head;};template<typename LT> MyList<LT>::MyList(){head=new LQNode<LT>;head->next=NULL;}template<typename LT>MyList<LT>::~MyList(){}template<typename LT>void MyList<LT>::InsertNode(LT &temp){LQNode<LT> *node=new LQNode<LT>(temp);node->next=head->next;head->next=node;}template<typename LT>bool MyList<LT>::DeleteNode(LT &temp){LQNode<LT> *p,*q;p=head->next;q=head;while(p!=NULL){if(p->data==temp){q->next=p->next;free(p);return true;}q=p;p=p->next;}return false;}//MyQueue classtemplate<typename QT>class MyQueuepublic:MyQueue();~MyQueue();void EnQueue(QT &);void DnQueue(QT &);bool Empty();private:LQNode<QT> *front;LQNode<QT> *rear;};template<typename QT>MyQueue<QT>::MyQueue(){front=rear=new LQNode<QT>;}template<typename QT>MyQueue<QT>::~MyQueue(){}template<typename QT>void MyQueue<QT>::EnQueue(QT &temp){LQNode<QT> *node=new LQNode<QT>(temp);rear->next=node;node->next=NULL;rear=rear->next;}template<typename QT>void MyQueue<QT>::DnQueue(QT &temp){if(Empty())cout<<"对空"<<endl;elsetemp=front->next->data;return;}template<typename QT>bool MyQueue<QT>::Empty()return front->next==NULL;}Main.cpp#include"AirLine.h"#include<iostream>using std::cout;using std::cin;using std::endl;#include<iomanip>using std::setw;using std::setfill;void InitAirLine(AirLine *line);void InquireAirLine(AirLine* line);void BookTicket(AirLine *line);void ReturnTicket(AirLine *line);void IfAwait(AirLine &line,int tiNum,int whichWeek);void TransactBookTicket(AirLine &line,int tiNum,int whichWeek);void IfBookTicket(AirLine *line,string fiNum,int tiNum,int whichWeek); bool IsQuit();const int size=7;const int maxSeatNum=120;int main(){AirLine line[size];int select;InitAirLine(line);bool flag=false;while(!flag){cout<<"-------------------------------------------------------------------"<<endl;cout<<" 航空客运订票系统"<<endl;cout<<" 1 查询航线"<<endl<<" 2 订票业务"<<endl<<" 3 退票业务"<<endl;cout<<"-------------------------------------------------------------------"<<endl;cin>>select;while(cin.fail()||select<1||select>3){cout<<"输入错误,重新输入"<<endl;cin.clear();cin.ignore();cin>>select;}switch(select){case 1:InquireAirLine(line);break;case 2:BookTicket(line);break;case 3:ReturnTicket(line);break;default:cout<<"error";break;}system("pause");flag=IsQuit();system("cls");}return 0;}bool IsQuit(){char change;cout<<"是否退出该系统Y/y是N/n否"<<endl;while(true){cin>>change;switch(change){case'Y':case'y':return true;break;case'n':case'N':return false;break;default:cout<<"输入错误,重新输入"<<endl;break;}}return true;}void InquireAirLine(AirLine *line){string inquirePoint;cout<<"输入终点名:"<<endl;cin>>inquirePoint;for(int i=0;i<size;i++)if(line[i].GetEndPoint()==inquirePoint){cout<<line[i];return;}cout<<"对不起,没有到达该地的航班"<<endl; }void BookTicket(AirLine *line){int tiNum;int whichWeek;string fiNum;cout<<"输入航班号:"<<endl;cin>>fiNum;for(int i=0;i<size;i++)if(line[i].GetFlightNum()==fiNum){cout<<line[i];cout<<"输入订票额:"<<endl;cin>>tiNum;while(cin.fail()){cout<<"输入错误,重新输入"<<endl;cin.clear();cin.ignore();cin>>tiNum;}if(tiNum>maxSeatNum){cout<<"对不起,本公司暂时没有这么大的客机,请分开订票"<<endl;return;}cout<<"输入订票时间:"<<endl;cout<<"1星期一、星期二..."<<endl;cin>>whichWeek;while(cin.fail()||whichWeek>8||whichWeek<1||!line[i].IsFly(whichW eek)){cout<<"输入错误,重新输入"<<endl;cin.clear();cin.ignore();cin>>whichWeek;}if(tiNum>line[i].GetSeatRemain(whichWeek))IfAwait(line[i],tiNum,whichWeek);elseTransactBookTicket(line[i],tiNum,whichWeek);return;}cout<<"对不起,没有到达该地的航班"<<endl;}void ReturnTicket(AirLine *line){cout<<"为您办理退票业务:"<<endl;string fiNum;int whichWeek;int tiNum;int i;string name;cout<<"输入名字"<<endl;cin>>name;cout<<"输入航班号:"<<endl;cin>>fiNum;for(i=0;i<size;i++)if(line[i].GetFlightNum()==fiNum)break;if(i==size){cout<<"无此航班,请核对后输入"<<endl;return;}cout<<"输入订票时间:"<<endl;cout<<"1星期一、星期二..."<<endl;cin>>whichWeek;while(cin.fail()||whichWeek>8||whichWeek<1||!line[i].IsFly(whichW eek)){cout<<"输入错误,重新输入"<<endl;cin.clear();cin.ignore();cin>>whichWeek;}cout<<"输入订票额:"<<endl;cin>>tiNum;while(cin.fail()){cout<<"输入错误,重新输入"<<endl;cin.clear();cin.ignore();cin>>tiNum;}Passenger temp(name,tiNum,1,whichWeek);if(line[i].DeletePassenger(temp)==true){cout<<"办理退票完毕,谢谢合作"<<endl;IfBookTicket(line,fiNum,tiNum,whichWeek);}elsecout<<"您没有订票或输入信息错误,请核实后办理"<<endl; }void IfAwait(AirLine &line,int tiNum,int whichWeek){cout<<"空座不够,是否排队候补?Y/y是N/n否"<<endl;char change;bool flags=true;while(flags){cin>>change;switch(change){case'Y':case'y':{flags=false;Passenger temp(" ",tiNum,1,whichWeek);line.InsertAwait(temp);cout<<"已为您登记排队候补,请耐心等候"<<endl;}break;case'n':case'N':flags=false;cout<<"谢谢合作,再见。
UML-建模设计-航-空-订-票-系-统

UML 建模设计航空订票系统姓名:卫飞班级:1528学号:201515614375一、背景1.1背景概述随着知识经济的到来,人类已经逐步进入信息化社会,信息增长的速度越来越快,人们希望利用先进的管理理论方法手段来得到并处理越来越多的信息,以提高工作效率和管理水平。
由于信息资源对人们生活的重要性,不断提高信息的收集,传输,加以利用等活动,日益成为人们社会生活的重要组成部分。
网上机票预订管理系统的产生和发展正好满足人们的这种需求1.2 主要组成及功能1、新用户注册,新用户可以注册,注册时输入用户名可以查询用户可不可用,可用就可以注册,注册时可以判断用户输入的密码和验证密码是否相同,相同才给以注册,如果满意可以点注册,注册成功后用户可以选择不用在回到登陆界面,可以直接陆到用户主界面,以后就可以用这个用户登录了,如果不满意,点取消,所有信息清空,重新输入。
2、验证登陆名密码,正确进入主菜单,根据登录时所选的登录方式(客户、管理员)的不同分别对用户设定不同的访问权限(如果是输入的客户用户名和密码正确,选择以客户方式登陆则主界面里面的管理员界面不能用,如果输入的是管理员的相应用户密码正确,以管理员的方式登陆则管理员界面可用)不正确则清空登录框,最多可以输入三次,三次不正确系统会自动关闭3.我的航班界面。
你可以点击你想查询的有关机票的信息的按钮(舱位信息查询,客机信息查询,航线查询,客户类型信息查询)获得相关信息的表,根据表的内容,你可以在下面的下拉框中选择你要定的票信息,点确定后在下面会显示你的机票的相关内容,如果满意可以点击订票,把相关信息添加到机票数据库表中,如果不满意,可以点重置,所有信息清空,再重新选择。
4.退票功能。
用户可以根据用户信息表中的我的机票信息查询,找出机票号,在输入到机票号查询里,点击查询获得你的机票信息以及价格显示,点击退票则在数据库机票信息表中删除本条信息二、使用Rose绘制图分别有:用例图、类图、包图、顺序图、协作图、状态图、活动图、组件图、部署图情景:机票预订系统是某航空公司推出的一款网上选票系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言飞机订票系统课程设计 第一章 绪论 1.1:项目背景描述 1、课程设计性质与目的: C语言程序设计是一门实践性很强的课程。C程序课程设计是学习C语言 程序设计的非常重要的实践环节,通过本课程设计使学生进一步巩固课堂所 学,全面熟悉,掌握C语言程序设计的基本方法和技巧,进一步提高编写程 序、分析程序及上机操作、调试程序的能力,让学生加深理解,提高动手操作能力及分析问题和解决问题的能力。
2、课程设计包含的知识点: 1.掌握并熟练利用C语言的基本数据类型与各种表达式,程序的流程控制语 句。 2.掌握数组的基本概念。掌握一维数组与二维数组的使用,掌握字符数组与 字符串的关系。 3.熟练掌握指针、地址、指针类型的概念及其使用。掌握指针变量的定义与初始化、指针的间接访问和表达式,掌握指针与数组、函数、字符串的联系 4.掌握函数的定义,函数的返回值,函数的调用,函数的声明,函数的形式参数和实际参数之间的关系,了解函数的作用区间。 5.掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示。结构体与指针、函数的关系。 C语言飞机订票系统课程设计 第二章 可行性分析 一、问题描述: 假设某航空公司只有N架X个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。
二、功能要求: 1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地 航班号、航班定额。 2、本系统显示这样的菜单: 1.)录入: 可以录入航班情况(数据可以存储在一个数据文件中) 2.)浏览:航班信息浏览功能需要提供显示操作; 1、查询:可提供按照航班号、起点站、终点站、飞行时间、查询,可以查询某个航线的情况(如,输入航班号,起飞抵达城市,确定航班是否满仓);另外要提供键盘式选择菜单以实现功能选择。 (1) 输入航班信息 (2)输出航班信息 (3)查找航班信息 (4)订票预约 (5)删除定票预约 (6)退出系统 2、本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。 3、查找航班信息既可按线路查,也可按目的地查。 4、在两次运行之间,数据被保存于一个文件里,当本程序重新开 始的时候,它首先从该文件读入数据
三、算法提示: 1、数据结构:结构体类型数组 2、数据库结构:下表构成该系统的基本数据库。
四、测试数据: 录入北京到上海的星期一起飞的航班,假设其定额为30,上海到南京的航班起飞时间为星期二。 五、其它: 在实现系统基本功能后,完善系统的其它功能。在测试数据是发现退票系统出现问题,退票数会超过定额,在加上一个限定条件后成功。基于本系统可以尝试输出所定票的的顾客的完整信息,包括姓名,身份证号等个人信息,由于时间有限,尚未添加。
航班号 起点 终点 起飞时间 int char char char C语言飞机订票系统课程设计 第三章 总体设计 3.1 课程设计题目: 航班订票系统 3.2. 内容摘要: 假设某航空公司只有M架N个座位的飞机,每架飞机每天飞行一趟。通过该系统来实现机票的订购问题。
3.3. 关键字:
函数 数组 结构体 文件 循环语句 多分支结构 3.4.总体设计方案的选定: 程序的功能要求: 1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:起飞地、目的地 航班号、座次号码、座次订出与否标记、订座者的姓名和订座者的身份证号码。 2、本系统显示这样的菜单: (4) 输入航班信息 (5)输出航班信息 (6)查找航班信息 a.显示空座的数量 b.显示空座的信息 c.显示已订座的信息 d.起飞时间 (4)订票预约 (5)删除定票预约 (6)退出系统 4、本系统成功执行菜单的每个信息,选项4)和5)将要求额外的输入,并且它们都允许用户收回其输入。 5、查找航班信息既可按航班号来实现。 4、在两次运行之间,数据被保存于一个文件里,当本程序重新开始的时候,它首先从该文件读入数据 C语言飞机订票系统课程设计
第四章 详细设计
4.1采用自定向下,逐步细化的思想,将该系统分解成各个相对独立且可以运行的模块。 在文件的开始定义出本系统中将会用到的所有的变量以及对各个模块的调用,将作为头文件使各个组员能够使用。如下所示: hangban.h
#include //标准输入、输出头文件 #include //包含字符串函数处理头文件 #define N 9999 //定义最多的航班数 #define PRINT "%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n ",s[i].num,s[i].qidian,s[i].zhongdian,s[i].time,s[i].count //宏定义输出格式
struct air //定义结构体数组 { int num; //定义航班号 char qidian[20]; //航班起始站 char zhongdian[20]; //终点站 char time[10]; //飞行时间 C语言飞机订票系统课程设计 int count; //机票数量 }s[N]; int i,m=0; //定义全局变量 char hangbanhao[10]; void add(); //函数声明增加航班信息函数 void print(); //显示航班信息 void search(); //查找航班信息 void dingpiao(); //订票业务 void tuipiao(); //退票 void read(); //读取文件 void save(); //保存文件 void output(); //输出格式 void paixu(); //航班排序 void build(); //建立数据文件 void paixu1(); //按航班号从小到大排序 void paixu2(); //从大到小 C语言飞机订票系统课程设计 4.2系统总体结构
4.3航班信息录入流程图 C语言飞机订票系统课程设计 4.4订票系统流程图 在有航班信息的情况下可以进行订票操作。
是 否
否 4.5查询结构代码 void search() //定义查询函数 { int n; do { printf("\n请输入航班号: "); scanf("%d",&n); //输入查询的航班号 for(i=0;i{ if(s[i].num==n) //按航班号判定输出条件 {
开始 输入航班号 显示航班信息
保存
查询所有
确定订票 C语言飞机订票系统课程设计 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",hangbanhao); }while(!strcmp(hangbanhao,"y"));//判定是否重新查找 } 4.6订票业务代码 void dingpiao() //定义订票业务函数 { int n; char a[10]="y"; do { C语言飞机订票系统课程设计 search(); //调用查询模块 do { printf("请输入您要订的机票数(以回车键结束): "); scanf("%d",&n); //输入所订机票数 if(n<=0) //判定机票数是否出错 { printf("输入错误!至少需订1张机票。\n"); } else if(s[i].count==0)//判定机票是否售完 { printf("对不起,你所选择的航班的机票已售完!\n"); break; } else if(s[i].count!=0&&s[i].count>=n) //判定机票数是否大于等于订票数 { s[i].count=s[i].count-n; printf("订票成功! "); break; } else if(s[i].countC语言飞机订票系统课程设计 { printf("对不起,你所选择的航班只剩 %d张机票\n", s[i].count); printf("是否需要重新输入机票数?请输入y或n以回车键结束: ");//判定是否重新输入订票数 scanf("%s",a); } }while(!strcmp(a,"y")); printf("是否需要订其他航班的机票?请输入y或n以回车键结束: "); scanf("%s",a); }while(!strcmp(a,"y")); //判定是否继续订票 } 4.7退票业务代码 void tuipiao() //定义退票函数 { int n; char a[10]; do { search(); //调用查询函数 printf("请输入您要退的机票数目: ");