ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:38.91KB ,
资源ID:4266485      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4266485.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计报告.docx

1、数据结构课程设计报告数据结构课程设计报告设计题目:航空售票处管理所在院系: 所在专业: 所在班级:学生学号:学生姓名: 指导老师: 完成时间:2010-1-13一、实验目的:1.培养运用数据结构的基本知识解决实际问题的能力;2.加深对数据结构基本知识的理解;3.发挥各人的想象能力和分析能力,拓展思维空间;4.掌握应用程序设计的基本方法。二、需求分析:1.问题描述:航空售票处管理包括:查询航线、客票预定和办理退票等。设计一个航空售票处管理系统。2.基本要求:(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日、乘员定额、余票量、已订票的客户名单以及等候替补的客户名单;3.查询能实现的

2、操作和功能如下:(1) 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;(2) 承办订票业务:根据客户提出的要求查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。若需要,可登记排队候补。4.承办退票业务:根据客户的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队,首先询问排在第一的客户,若所退票数满足他的要求,则为他办理订票手续,否则一次询问其他排队候补的客户。三、概要设计:本次数据结构课程设计所制作的航空售票处管理系统主要运用了链式存储结构来实现。线性表以及

3、队列的存储结构主要用到了链式结构存储,因而此系统使用这两种存储方式。在航班信息方面,要对航班进行添加、删除、查询等操作。由于链表的优势就在于便于进行添加、删除和查找,因此有关航班信息方面的部分可以由链表来实现。但是为了更便于添加和删除,因此为链表设置了首、尾指针。而对于订票、退票来说,其中要讲一个先来后到的道理。基于这一点的要求,队列的存储方式再合适不过了,其“先进先出”(FIFO)的特点恰恰可以满足订票、退票的要求。在结构定义方面,本系统定义了四个结构,分别用来储存航班信息、乘客信息、替补乘客信息以及结点信息。而在航班信息定义中,分别将乘客信息、替补乘客信息引入其中,以供储存乘客信息和替补乘

4、客信息。根据本系统中的功能以及所定义的数据结构,特编写如下函数:1 FlightInsert() /添加航班信息2 FlightSearch() /查询航班信息3 FlightRework() /修改航班信息4 FlightBuyticket() /订票5 FlightCancelticket()/退票6 Buyticket(PFlight q,int Ticket_Amount)/利用队列买票7 MainMenu() /主菜单8 Main() /主函数 四、详细设计:本航空售票处管理系统分为两个文件:1. 头文件Ticket.h,用来存放系统中数据结构的结构体,以及所要到的方法及函数。 2.

5、C+文件 Ticket.cpp.,本文件主要是本系统的主函数,其中调用头文件,来实现系统的功能。具体实现如下:(1).Ticket.h,:本文件是头文件,将售票管理系统的数据中的结构体定义在其中,并且利用所定义的结构来编写函数、方法来实现系统的功能。首先采用链式结构,定义出三个结构体:1 航线的结构体:typedef struct Flight /航线信息 char Des10; /终点站名 char FlightNum10; /航班号 char PlaneNum10; /飞机号 char Week; /飞行周日int Ration; /乘员定额 int FreeTicket; /剩余票数 f

6、loat Price3; /舱位等级的价格 int ReplacePas; /候补乘客数 Replace *ReplName; /该航班的候补乘客名单 Customer *CustName; /该航班的已定票乘客名单 struct Flight *next; /指示下一航线结点 Flight,*PFlight;2 乘客结构体:typedef struct Customer /已定票乘客信息 char Name10; /姓名 int Amount; /定票数 int Level; /舱位等级 int SeatNum; /座位号 char FlightNum10; /所定航班号 struct Cu

7、stomer *next;Customer;3 替补乘客结构体:typedef struct Replace /替补乘客信息 char Name10; /姓名 int Amount; /定票数 int Level; /舱位等级 char FlightNum10; /所定航班号 struct Replace *next;Replace;以上三个结构体是以乘客信息、替补乘客信息为基础、再此之上有定义了飞机航线的结构体以及结点类型指针的结构体。并在后者结构中引入了前两种结构体。并且单独定义了两个指向Flight的指针,作为头只指针和尾指针:Flight *head; /建立航线头结点Flight *

8、rear; /建立航线尾结点以及乘客队列的指针: Customer *Cusrear; Replace *Reprear;其次,编写实现各个功能的函数与方法:1 MainMenu()系统主菜单此函数设计了本系统的界面,是程序的开始,具体实现如下:void MainMenu() char i=0; while (i!=8) cout 航空售票处管理系统endl; cout 1、增加航线 5、预订机票 *endl; cout 2、查询航线 6、退订机票 *endl; cout 3、修改航线 7、清空系统 *endl; cout 4、删除航线 8、退出系统 *endl; cout *i; switc

9、h(i) case 1:FlightInsert();break; case 2:FlightSearch();break; case 3:FlightRework();break; case 4:FlightDelete();break; case 5:FlightBuyticket();break; case 6:FlightCancelticket();break; case 7:Flightclean();break; case 8:;break; default:couterrorn;break; 2 void FlightInsert()添加航班信息此方法主要用到链表的思想,类似于

10、链表中的插入属性。与一般链表不同的是,此方法设置了一个表尾指针,便于航班信息的添加,具体实现如下:void FlightInsert() /添加航班信息 Flight *p; p=new Flight; cout请输入终点站名:p-Des; cout请输入航班号:p-FlightNum; cout请输入飞机号:p-PlaneNum; cout请输入飞行周日:p-Week;cout请输入乘员定额:p-Ration; p-FreeTicket=p-Ration; cout请输入舱位等级的价格:endl; cout头等舱价格p-Price0; cout普通舱价格p-Price1; cout经济舱价格

11、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; 3 FlightLookup()查询航班信息其实,查询航班的原理与删除原理相似,最中心的环节就是现对指定的航班进行定位。与删除不同的是,查询不涉及到指针的变换,仅仅输出要查询的信息就可以了,具体实现如下:void FlightLookup() /查询航班 Flight *p,*q; ch

12、ar FlightNum10; p=head; int i=0; while (i!=1) cout请输入需要查询的航班号:FlightNum;while (p-next&strcmp(p-next-FlightNum,FlightNum) p=p-next; q=p-next; if (q=NULL) cout对不起不存在此航班endl; else cout航班号:FlightNumendl; cout飞机号:PlaneNumendl; cout目的地:Desendl; cout飞行周日:Weekendl; cout成员定额:Rationendl; cout剩余票数:FreeTicketen

13、dl; cout候补乘客数:ReplacePasendl; cout头等舱价格:Price0endl; cout普通舱价格:Price1endl; cout经济舱价格:Price2endl; cout1、返回主菜单 2、继续i; 4 FlightRework()修改航线信息在修改航线信息方面,中心思想依旧类似于删除和查找。只不过定位到所需信息之后要做的是重新给这些信息赋值,具体实现如下:void FlightRework() /修改航线信息 int Customer_Number ; Flight *p,*q; cout请输入需要修改的航班号:FlightNum; while (p-next&

14、strcmp(p-next-FlightNum,FlightNum) p=p-next; q=p-next; if (q=NULL) cout对不起不存在此航班endl; else while(i!=9) cout *请输入需要修改的数据*endl; cout *1、航班号 2、飞机号 *endl; char FlightNum10; char i=0; p=head; cout *3、目的地 4、飞行周日 *endl; cout *5、成员定额 6、头等舱价格*endl; cout *7、普通舱价格 8、经济舱价格*endl; cout * 9、退出 *endl; cout *i; swit

15、ch(i) case 1:cout请输入航班号:q-FlightNum;break; case 2:cout请输入飞机号:q-PlaneNum;break;case 3:cout请输入目的地:q-Des;break; case 4:cout请输入飞行周日:q-Week;break; case 5:cout请输入乘员定额:Ration-q-FreeTicket; cinq-Ration;q-FreeTicket=q-Ration-Customer_Number;break; case 6:cout请输入头等舱价格:q-Price0;break; case 7:cout请输入普通舱价格:q-Pri

16、ce1;break; case 8:cout请输入经济舱价格:q-Price2;break; case 9: break; default:couterrorn;break; 5 FlightBuyTicket()订票订票是本系统的核心功能,本系统的一切功能都是围绕“订票”这个关键词来进行的。用户确定所要乘坐的航班之后,进行订票,如果航班中的空余票数大于用户所要订的票数,则订票成功。其原理是运用链表的来添加乘客信息,运用队列来使替补乘客入队。其中,还调用了另外两函数:BuyTicket()和Buyreplace()来实现订票成功和进入替补乘客名单。具体实现如下:void FlightBuyTi

17、cket() /订票 int Ticket_Amount; void BuyTicket(PFlight ,int ); void Buyreplace(PFlight ,int ,int );Flight *p,*q; char Des10; int i=2; while (i!=1) cout请输入目的地: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输入需要够买的票数Ticket_Amount

18、; while(Ticket_Amount=0) cout请输入一个非零数:Ticket_Amount; if (Ticket_AmountFreeTicket) BuyTicket(q,Ticket_Amount); /买票,详细介绍见下文 else int n; cout剩余票数小于定票数,是否需要列入候补名单?(1、是 2、否)n; Buyreplace(q,Ticket_Amount,n); /进入替补名单,详细介绍见下文 cout1、返回主菜单 2、继续i; 6 FlightCancelTicket()退票作为人性化的航空客运订票系统,不但要实现订票,还要实现退票。在退票方面,仍旧是

19、利用链表,将乘客信息删除。但删除之后,如若有替补乘客,还要使其依照进入替补乘客的队列的次序出队来实现订票。其具体实现代码如下:void FlightCancelTicket() /退票 void BuyTicket(PFlight ,int ); Flight *p,*q; Customer *h,*j; char FlightNum6; char Customer_Name10; int Replace1_Amount; /候补第一个人的定票数 int i; while (i!=1) cout请输入需要退定的航班号:FlightNum; p=head; while (p-next&strcm

20、p(p-next-FlightNum,FlightNum) p=p-next; q=p-next; if (q=NULL) cout对不起不存在此航班endl; else while (i!=2) cout请输入姓名:Customer_Name; h=q-CustName; while (h-next&strcmp(h-next-Name,Customer_Name) h=h-next; j=h-next; if(j=NULL) cout查无此人next=NULL) /当删除最后一个结点 Cusrear=h; h-next=h-next-next; q-FreeTicket+=j-Amount

21、; delete j; cout删除成功!ReplName-next!=NULL) Replace1_Amount=q-ReplName-next-Amount; if(Replace1_AmountFreeTicket) Replace *rep; rep=q-ReplName-next; Customer *Cus2; Cus2=new Customer; Cus2-SeatNum=q-Ration-q-FreeTicket+1; strcpy(Cus2-FlightNum, q-FlightNum ); strcpy(Cus2-Name, rep-Name ); Cus2-Amount=

22、rep-Amount; Cus2-Level=rep-Level; cout乘客Name已经成功买票 endl; cout座位号为:; for(int i=1;iAmount);i+) q-FreeTicket-=rep-Amount; q-ReplName-next=q-ReplName-next-next; q-ReplacePas-; delete rep; cout2、退出姓名录入i; cout1、返回主菜单i; 7 BuyTicket(PFlight q,int Ticket_Amount)买票作为订票功能实现的核心之一,其思想是利用链表结构将买票乘客的信息添加到表中,具体实现如下:

23、void Buyticket(PFlight q,int Ticket_Amount) /买票 int n=Ticket_Amount; Customer *Cus2; Cus2=new Customer; Cus2-SeatNum=q-Ration-q-FreeTicket+1; strcpy(Cus2-FlightNum, q-FlightNum ); Cus2-Amount=Ticket_Amount; cout请输入姓名:Cus2-Name; cout请输入舱位等级:Cus2-Level; cout你的座位号为endl; for(int i=1;i=Ticket_Amount;i+)

24、coutSeatNum+ ; coutCustName-next=NULL) Cusrear=q-CustName; Cusrear-next=Cus2;Cusrear=Cus2; Cusrear-next=NULL; else Cusrear-next=Cus2; q-FreeTicket-=Ticket_Amount; 8 Flightclean()系统清空本方法是将航班信息清空,主要思想是将头指针赋予下一个结点,然后将原来的头指针删除,具体代码如下:void Flightclean() head-next=rear-next; cout系统已经清空!endl;(一) Ticket.cpp,:作为本程序的主函数,其完成的是各个函数的调用,来具体实现系统的功能:#include ticket.hvoid main()

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1