飞机票管理系统:设计与实现

4星 · 超过85%的资源 需积分: 9 28 下载量 48 浏览量 更新于2024-08-02 3 收藏 432KB DOC 举报
本项目是攀枝花学院计算机学院2007级计算机科学与技术专业学生唐军进行的课程设计,其题目为"飞机票系统的设计与实现"。该系统的目的是让学生运用所学的理论知识解决实际问题,提升动手能力和规范化开发大型应用软件的能力。系统主要功能包括航班信息的录入、浏览、查询、订票、退票以及修改航班信息。 在数据结构方面,系统要求设计合理的数据存储结构,例如航班信息可能存储在数据文件中,采用适当的数据结构如数组、链表或树来组织。录入功能允许管理员输入航班信息,包括航班号、起降时间、城市、票价等。查询功能支持通过航班号、城市等条件查找航班详细信息,包括航班状态(如满仓或剩余票数)。订票功能则需处理票务逻辑,当预订的航班无票时,提供替代航班选项。 退票功能涉及到数据库的更新,即在退票后修改相关的数据文件,确保数据一致性。客户资料,如姓名、证件号、订票数量和航班信息,需要被准确记录,并且每个订单都有唯一的编号。系统还允许管理员对航班信息进行实时修改,体现数据的动态管理。 在编程实现上,学生会参考《数据结构》(C语言版)等教材,使用C或C++等语言进行编码,遵循数据结构的原理和方法,设计出高效、稳定和易于维护的程序。整个课程设计的工作计划分为五个阶段:方案设计与程序框图绘制、编写程序代码、程序调试、结果分析以及最终提交课程设计报告和总结。 该课程设计不仅锻炼了学生的编程技巧,也强调了实际问题解决和团队协作能力的培养,是理论与实践相结合的重要环节。通过这个项目,学生能够加深对数据结构的理解,提高软件开发能力,并为今后职业生涯奠定坚实基础。
2014-02-22 上传
最近磁碟机病毒真的太猖狂了,上次发的航空管理系统里面有个.exe文件可能被感染了,今天我把可执行文件删除了重新再发布给大家啊,真的太讨厌病毒制造者了,下面还是把对应的文档目录贴出来,谢谢大家支持啊!摘 要:随着社会的不断发展,计算机的应用已经深入到了生活的各个方面,现代社会的各行各业都离不开计算机的信息处理,作为一个航空公司更是如此。一个正常营运的航空公司需要管理所拥有的飞机、航线的设置、客户的信息等,更重要的还要提供票务管理。面对各种不同种类的信息,需要合理的数据库结构来保存数据信息以及有效的程序结构支持各种数据操作的执行。Summary:As the society is constant developing ,the computer’s application is penetrade deeply to every side of our life.At modern times most business could not leave the information processing by computer.As an airline commany,it is also like this.It is needed to manage all the planes,the set of airline,customer’s message,and more important the sell of ticket as an normal airline commany.When face every kind of different information,it is needed to have a rensonable datebase structure to save data information and an effective program structure to support every implement of data operation.第一章 系统概述 11.1 课题目的及意义 11.1.1 开发一个航空信息管理系统意义 11.2.2 使用计算机管理航空信息的意义 11.2 主要设计功能 2第二章 开发技术概述 62.1 开发工具的选择 62.2 Windows下的Visual Basic 编程环境介绍 72.2.1 Visual Basic的功能简介 72.2.2 开发工具Visual Basic的使用 92.3 使用Access2000 实现关系型数据库 102.3.1 数据库的概念 102.3.2 新建一个数据库 102.3.3 修改已建的数据库 102.3.4 实现数据库之间的联系 112.3.5 关系型数据库的实现 112.4 二者的结合(DBA) 112.5 硬件开发环境 12第三章 数据库设计 143.1 数据库需求分析 143.2 数据库概念结构设计 163.3 数据库逻辑结构设计 19第四章 详细设计 234.1 系统主窗体的实现 234.1.1 创建工程项目——MIS_Ticket 234.1.2 创建航空公司管理信息系统的主窗体 234.1.3 创建主窗体的菜单 244.1.4 创建公用模块 254.2 舱位信息管理模块的实现 284.2.1 显示舱位信息窗体的创建 284.2.2 添加舱位信息窗体的创建 344.2.3 修改舱位等级信息 394.2.4 删除舱位等级信息 404.3 客机信息管理模块的实现 414.3.1 显示客机信息窗体的创建 414.3.2 添加客机信息窗体的创建 424.3.3修改客机信息 454.3.4删除客机信息 464.3.5 查询客机信息 474.4 航线信息管理模块的实现 504.4.1 显示航线信息窗体的实现 504.4.2 添加航线信息窗体的实现 514.4.3 修改航线信息 524.4.4删除航线信息 524.4.5 查询航线信息 534.5 客户类型信息管理模块的实现 554.5.1 显示客户类型信息窗体的创建 554.5.2 添加客户类型信息窗体的创建 564.5.3 修改客户类型信息 564.5.4 删除客户类型信息 574.6 客
2013-07-02 上传
#include <iostream> //#include"ticket.h" #include "string" using namespace std; #define Null 0 //乘客结构体 typedef struct Customer { char Name[10]; int Amount; //订票数 int Level; //舱位等级 int SeatNum; //座位号 char FlightNum[10]; //所定航班号 struct Customer *next; }Customer; //替补乘客结构体 typedef struct Replace { char Name[10]; int Amount; int Level; char FlightNum[10]; //所定航班号 struct Replace *next; }Replace; //Customer *Cusrear; //Replace *Reprear; typedef struct Flight //航线信息 {char Des[10]; //终点站名 char PlaneNum[10]; //航班号 char Week;//飞行周 int Ration;//乘员定额 int FreeTicket; //剩余票数 float Price[3];//舱位等级的价格 int ReplacePas;//候补乘客数 Customer *CustName;//已订票乘客名单 Replace *ReplName;//候补乘客名单 struct Flight *next;//指示下一航线节点 } Flight,*PFlight; //Flight *head;//定义航线头节点 //Flight *rear;//建立航线尾节点 void FlightInsert(Flight *head)//航班添加 { Flight *p; p=new Flight; cout<<"请输入终点站名:"<<endl; cin>>p->Des; //cout<<"请输入航班号:"<<endl; //cin>>p->FlightNum; cout<<"请输入飞机号:"<<endl; cin>>p->PlaneNum; cout<<"请输入飞行周:"<<endl; cin>>p->Week; cout<<"请输入乘员定额:"<<endl; cin>>p->Ration; p->FreeTicket=p->Ration; cout<<"请输入舱位等级的价格:"<<endl; cout<<"请输入头等舱价格:"<<endl; cin>>p->Price[0]; cout<<"请输入普通舱价格:"<<endl; cin>>p->Price[1]; cout<<"请输入经济舱价格:"<<endl; cin>>p->Price[2]; p->ReplName=new Replace; p->CustName=new Customer; p->CustName->next=Null; p->ReplName->next=Null; p->ReplacePas=0; p->next=head->next; head->next=p; //rear->next=p;// 利用尾指针便于航班的添加 //rear=p; //rear->next=Null; } void FlightSearch(Flight *head)//查询航班 { Flight *p,*q; char FlightNum[10]; int i=0; while (i!=1) {cout<<"请输入需要查询的航班号:"<<endl; cin>>FlightNum; p=head; while(p->next&&strcmp(p->next->PlaneNum,FlightNum)) { p=p->next; } q=p->next; if(q==Null) {cout<<"对不起不存在该航班"<<endl;} else {cout<<"航班号:"<<q->PlaneNum<<endl; cout<<"目的地:"<<q->Des<<endl; cout<<"飞行周:"<<q->Week<<endl; cout<<"乘员定额:"<<q->Ration<<endl; cout<<"剩余票数:"<<q->FreeTicket<<endl; cout<<"候补乘客数:"<<q->ReplacePas<<endl; cout<<"头等舱价格:"<<q->Price[0]<<endl; cout<<"普通舱价格:"<<q->Price[1]<<endl; cout<<"经济舱价格:"<<q->Price[0]<<endl;} cout<<"1、返回主菜单 2、继续"<<endl; cin>>i; } } void FlightRework(Flight *head)//修改航班信息 { int Customer_Number; Flight *p,*q; char FlightNum[10]; char i='0'; p=head; cout<<"请输入需要修改的航班号:"<<endl; cin>>FlightNum; while(p->next&&strcmp(p->next->PlaneNum,FlightNum)) {p=p->next;} q=p->next; if (q==Null) { cout<<"对不起不存在此航班"<<endl; } else { while(i!='8') {cout<<"********请输入要修改的信息********"<<endl; cout<<"1、航班号 "<<endl; cout<<"2、目的地 3、飞行周"<<endl; cout<<"4、乘员定额 5、头等舱价格"<<endl; cout<<"6、普通舱价格 7、经济舱价格"<<endl; cout<<"8、退出"<<endl; cout<<"********请输入要修改的信息********"<<endl; cin>>i; switch(i) {case '1':cout<<"请输入航班号:"<<endl; cin>>q->PlaneNum;break; case '2':cout<<"请输入目的地:"<<endl; cin>>q->Des;break; case '3':cout<<"请输入航班号飞行周:"<<endl; cin>>q->Week;break; case '4':cout<<"请输入乘员定额:"<<endl; Customer_Number=q->Ration-q->FreeTicket; cin>>q->Ration; q->FreeTicket=q->Ration-Customer_Number;break; case '5':cout<<"请输入头等舱价格:"<<endl; cin>>q->Price[0];break; case '6':cout<<"请输入普通舱价格:"<<endl; cin>>q->Price[1];break; case '7':cout<<"请输入经济舱价格:"<<endl; cin>>q->Price[2];break; case '8':break; default:cout<<"error\n";break; } } } } void FlightDelete(Flight *head) //利用表头指针定位要删除的航班信息 { Flight *p,*q; char FlightNum[10]; int i=0; while(i!=1) {cout<<"请输入需要删除的航班号:"<<endl; cin>>FlightNum; p=head; while(p->next&&strcmp(p->next->PlaneNum,FlightNum)) {p=p->next;} q=p->next; if(q!=Null) { // if(q->next==Null) // {rear=p;} p->next=p->next->next; delete q;} else {cout<<"你所要删除的航班不存在"<<endl;} cout<<"1、退出 2、继续"<<endl; cin>>i; } } void FlightBuyTicket(Flight *head)//订票 { int Ticket_Amount; void BuyTicket(Flight *,int); void Buyreplace(Flight *,int,int); Flight *p,*q; char Des[10]; int i=2; while(i!=1) {cout<<"请输入目的地:"<<endl; cin>>Des; p=head; while(p->next&&strcmp(p->next->Des,Des)) {p=p->next; } q=p->next; if (q==Null) {cout<<"对不起不存在此航班"<<endl;} else {while(i!=1) {cout<<"输入需要购买的票数"<<endl; cin>>Ticket_Amount; while(Ticket_Amount==0) { cout<<"请输入一个非零数"<<endl; cin>>Ticket_Amount; } if(Ticket_Amount<=q->FreeTicket) {BuyTicket(q,Ticket_Amount);}//买票 else {int n; cout<<"剩余票数小于订票数,是否需要列入候补名单?(1、是 2、否)"<<endl; cin>>n; Buyreplace(q,Ticket_Amount,n);//进入替补名单 } cout<<"1、返回菜单 2、继续"<<endl; cin>>i; } } } } void BuyTicket(Flight *q, int Ticket_Amount)//买票 {int n=Ticket_Amount; Customer *Cus2,*Cusrear; Cus2=new Customer; Cus2->SeatNum=q->Ration-q->FreeTicket+1; strcpy(Cus2->FlightNum,q->PlaneNum); Cus2->Amount=Ticket_Amount; cout<<"请输入姓名:"<<endl; cin>>Cus2->Name; cout<<"请输入舱位等级(1-3)"<<endl; cin>>Cus2->Level; cout<<"你的座位号为:"<<endl; for(int i=1;i<=Ticket_Amount;i++) { cout<<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 Buyreplace(Flight *q,int Ticket_Amount,int n)//进入替补队列 {Replace *Rep2,*Reprear; Rep2=new Replace; if(n==1) { q->ReplacePas+=Ticket_Amount; strcpy(Rep2->FlightNum,q->PlaneNum); Rep2->Amount=Ticket_Amount; cout<<"请输入姓名:"<<endl; cin>>Rep2->Name; cout<<"请输入舱位等级(1-3)"<<endl; cin>>Rep2->Level; if(q->ReplName->next==Null) {Reprear=q->ReplName; Reprear->next=Rep2; Reprear=Rep2; Reprear->next=Null; } else{ Reprear->next=Rep2; Reprear=Rep2; Reprear->next=Null; } } } void FlightCancelTicket(Flight *head)//退票 { //void BuyTicket(Flight,int); Flight *q,*p; Customer *h,*j,*Cusrear; Customer *Cus2; Replace *rep; char FlightNum[10]; char Customer_Name[10]; int Replace_Amount;//候补第一个人的订票数 int i=0; while(i!=1) { cout<<"请输入要退订的航班号:"<<endl; cin>>FlightNum; p=head; while(p->next&&strcmp(p->next->PlaneNum,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&&strcmp(h->next->Name,Customer_Name)) {h=h->next;} j=h->next; if(j==NULL) { cout<<"查无此人"<<endl; } else { if(j->next==NULL)//当删除最后一个节点 Cusrear=h; h->next=h->next->next; q->FreeTicket+=j->Amount; delete j; cout<<"删除成功!"<<endl; } if(q->ReplName->next!=NULL) { Replace_Amount=q->ReplName->next->Amount; if(Replace_Amount<=q->FreeTicket) { rep=q->ReplName->next; Cus2=new Customer; Cus2->SeatNum=q->Ration-q->FreeTicket+1; strcpy(Cus2->FlightNum,q->PlaneNum); strcpy(Cus2->Name,rep->Name); Cus2->Amount=rep->Amount; Cus2->Level=rep->Level; cout<<"乘客"<<rep->Name<<"已经成功买票"<<endl; cout<<"座位号:"; for(int i=1;i<=(rep->Amount);i++) { cout<<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; } cout<<"2 退出姓名录入"<<endl; cin>>i; } } cout<<"1 返回主菜单"<<endl; cin>>i; } } void main() { Flight *head,*rear; head=rear=new Flight; head->next=Null; rear->next=Null; char i='0'; while(i!='7') { cout<<"********航空订票系统*********"<<endl; cout<<"1、增加航线 5、预订机票"<<endl; cout<<"2、查询航线 6、退订机票"<<endl; cout<<"3、修改航线 7、退出系统"<<endl; cout<<"4、删除航线 "<<endl; cout<<"*****************************"<<endl; cin>>i; switch(i) {case '1': FlightInsert(head );break; case '2': FlightSearch(head);break; case '3': FlightRework(head);break; case '4': FlightDelete(head);break; case '5': FlightBuyTicket(head);break; case '6': FlightCancelTicket(head);break; case '7':break; default:cout<<"error\n";break; } } }