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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构报告.docx

1、数据结构报告一、航空客运订票系统基本要求1、每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。2、系统能实现的操作和功能如下:1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。若需要,可登记排队候补;3)承办退票业务:根据客户提出的情况

2、(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。实现提示:两个客户名单可分别由线性表和队列实现。为查找方便,已订票客户的线性表应按客户姓名有序,并且,为了插入和删除方便,应以链表作为存储结构。由于预约人数无法预计,队列也应以链表作为存储结构。二、问题描述设计一个航班信息查询与订票系统程序,要求设计航班信息,订票信息的存储结构,并实现以下功能: 录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起

3、降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班 情况,订单要有编号。修改航班信息:当航班信息改变可以修改航班数据文件三、需求分析1. 本程序以动态链表为存储结构,有两个链表,第一个链表:每个航班信息开辟一个节点空间,在节点中存放航班信息,如航班号,起飞时间,出发地,目的地,总座位数,折扣,票价等。第二个链表:每个乘客开辟一个节点,存放乘客的记录:姓名,证件号

4、码,预定的航班号,定单号码及订票的数量。2. 本程序有五大模块组成,分别为基本信息输入模块(包括航班信息输入和客户信息输入),信息查询模块,订票模块,修改模块(包括退票模块及修改航班信息模块)。信息输入模块的功能是录入各航班的基本信息;信息查询模块的功能为提供各种信息查询的操作;订票模块是录入各订票人的基本信息;信息修改模块是退票和修改航班信息。3. 程序执行的命令: 1.录入信息 2.查询 3.订票 4.退票 5.修改 6.显示航班信息 7.显示客户信息 8.退出 4. 测试数据: 航班数据库中的数据。以xiaying.txt文件保存。(附在源程序中)四、概要设计1、系统的抽象数据类型设定民

5、航航班信息查询与客票发售服务系统的抽象数据类型定义: ADT hanban数据对象:D=ai|aiCharSet,i=1,2,n,n=0数据关系:R= c1 c2 基本操作: creat(); 操作结果:录入航班信息。 search(); 操作结果:进入航班查询系统。 order(); 操作结果:进行订票。 quit(); 操作结果:进行退票。 revise(); 操作结果:修改航班信息。 print (); 操作结果:显示航班信息。 print2(); 操作结果:显示客户资料。 Clear(); 操作结果:清除记录。 ADT hanban2、程序中用到的库函数 #include #inclu

6、de #include #include #include #include #include 3、程序的四大模块(1)主程序模块:Void main()do接受命令;处理命令;while(命令!=退出);(2)信息输入模块完成基本信息的输入和修改;(3)实现功能模块实现信息查询、订票和退票功能操作;(4)信息显示模块实现录入信息的显示。4、函数间调用关系 图1 整体思想方框图5、算法设计:(每个模块的算法设计说明如下:)(1)录入模块: 查找单链表的链尾,在链尾插入一个“航班信息”的新结点。(2)查询模块:提供两种查方式:按航号和按航线查询,1代表按航号查询,2代表按航线查询。0则表示退出查

7、询。顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。(3)订票模块:查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功,否则失败。(4)退票模块:输入要退票的乘客姓名以及证件号码,查找乘客资料的链表中是否有这位乘客,有则删去此结点,并在空位加上1,无则退票失败。(5)修改模块: 输入密码,确认是否有权限对航班信息进行修改,有则在航班信息链表中查找要修改的结点,进行修改,否则不能修改。6、存储结构设计:(1)航班的信息:为了便于查找和修改,航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞达到的时间、余票和出发地、目的地、

8、票价以及总票数八个数据项:航班号起飞时间达到时间出发地目的地总票数余票票价单链表如下:每个结点包括数据域和指针域:数据域指针域C语言描述如下:typedef struct Plane /*航班信息*/ char planeNo10; /*航班号*/ char start30; /*起飞时间*/ char end_time30; /*到达时间*/ char startplace30; /*起飞城市*/ char end_place30; /*到达城市*/ int price; /*机票价格*/ int discount; /*折后价格*/ int total; /*机票总数*/ int tamo

9、unt; /*剩余票数*/ struct Plane *next; Plane;(2)旅客的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素包括姓名、证件号码、航班号和座位号四个数据项:旅客姓名证件号码航班号C语言描述如下:typedef struct passengernode /*定义乘客资料结点*/char name20;char ID_num20;char air_num20;struct passengernode *next;passengernode;五、详细设计1、主程序中需要的全程量 struct Plane /*航班信息*/ char planeNo10;

10、 /* 航班号 */ char start30; /* 起飞时间 */ char end_time30; /* 降落时间?*/ char startplace30; /* 起飞城市 */ char end_place30; /* 降落城市 */ int price; /* 机票价格 */ int discount ; /* 折后价格 */ int total; /* 总机票数 */ int tamount /* 剩余机票数 */ struct Plane *next; Plane;struct customer /* 客户资料 */ char name30; /* 客户姓名 */ char I

11、D30; /* 证件号 */ int tamount; /* 订票数量 */ char plane30; /* 航班号 */ char no30; /* 订单编号 */ struct customer *next;customer;Struct plane *head=NULL;struct customer *glist=NULL;2部分函数模块以及流程图:1)主函数模块 main() int i; while(1) system(“cls”);printf(n); printf(nt *定*票*系*统 *); printf(n); printf(nt * 1. 录入信息 *); print

12、f(n); printf(nt * 2. 查询 *); printf(n); printf(nt * 3. 订票 *); printf(n); printf(nt * 4. 退票 *); printf(n); printf(nt * 5. 修改 *); printf(n); printf(nt * 6.显示航班信息 *); printf(n); printf(nt * 7.显示客户信息 *); printf(n); printf(nt * 8. 退出 *); printf(n); printf(nn *); printf(n请选择操作命令:); while(1) scanf(%d,&i); i

13、f(i=1&iplaneNo); printf(输入起飞时间:); scanf(%s,info-start); printf(输入到达时间:); scanf(%s,info-end_time); printf(输入起飞地点:); scanf(%s,info-startplace); printf(输入到达地点:); scanf(%s,info-end_place); printf(输入机票价格:); scanf(%d,&info-price); printf(输入折后价格:); scanf(%d,&info-discount); printf(输入总机票数:); scanf(%d,&info-

14、total); printf(输入剩余票数 :); scanf(%d,&info-tamount); info-next=head; head=info; system(cls); printf(是否继续? y/n); if(getch()=n|getch()=N) break;save1(head);输入信息函数流程图 图3 输入信息函数流程图3)查询航班信息函数模块 void search()char s130,s230; Plane *p; int i=0,ch;while(1) p=head; printf(请选择 n); printf(1. 按航班号查询n); printf(2. 按

15、起落城市查询n); printf(3. 退出n); scanf(%d,&ch); if(ch=1) printf(n请输入航班号n); scanf(%s,s1); /*读如航班号*/ while(p) if(!strcmp(s1,p-planeNo) printf(n起飞地点:%s,p-startplace); printf(n起飞时间:%s,p-start); printf(n到达地点:%s,p-end_place); printf(n到达时间:%s,p-end_time); printf(n机票价格:%d,p-price); printf(n折后价格:%d,p-discount); pri

16、ntf(n总机票数:%d,p-total); printf(n剩余票数:%dnn,p-tamount); if(p-tamount=0)printf(n此航班已满!n);/*提示此航班已满*/ p=p-next; i+; else p=p-next; if(!i) printf(无此航班n); i=0; if(ch=2)printf(输入起飞地点 :); scanf(%s,s1)/ printf(n输入到达地点:); scanf(%s,s2); while(p) if(!strcmp(s1,p-startplace)&!strcmp(s2,p-end_place) printf(起飞地点:%s

17、,p-startplace); printf(n起飞时间:%s,p-start); printf(n到达地点:%s,p-end_place); printf(n到达时间:%s,p-end_time); printf(n机票价格:%d,p-price); printf(n折后价格:%d,p-discount); printf(n总机票数:%d,p-total); printf(n剩余票数:%dnn,p-tamount); if(p-tamount=0)printf(n此航班已满!n); p=p-next; i+; else p=p-next; if(!i) printf(无此航班n); i=0;

18、 if(ch=3) break;查询函数流程图 图4 查询函数流程图4)订票功能函数模块: void order() customer *info; Plane *p,*q; char s30; int flag=0; while(1) p=q=head; printf(您想预定哪趟航班); scanf(%s,&s); if(strcmp(p-planeNo,s)!=0) /*判断*/ printf(无此航班); /*出错提示*/ p=p-next; getch(); break; if(p-tamount=0) printf(此航班已满.n是否需要预定其他到达该城市的航班:y/nn); if

19、(getch()=n|getch()=N) break; else while(q) if(!strcmp(p-end_place,q-end_place)&p!=q) printf(您可以预定%s号航班到达该城市n,q-planeNo);flag=1; q=q-next; if(flag=0)printf(没有到打该城市的其他航班);getch();break; else printf(目前此航班还有 %d 张票,p-tamount); info=(customer*)malloc(sizeof(customer); if(!info) printf(EMS has been full!n)

20、; exit(0); printf(n姓名:); scanf(%s,info-name); printf(n身份证号码:); scanf(%s,info-ID); printf(n航班号:); scanf(%s,info-planeNo); printf(n订票数量(tamount); scanf(%d,&info-tamount); p-tamount=p-tamount-info-tamount; info-no=num; printf(n您的订单号是 %dn,info-no); num+; info-next=glist; glist=info; printf(是否继续? y/n); i

21、f(n=getch()|N=getch() break; system(“cls”); save1(head); save2(glist); 订票函数流程图 图5 订票函数流程图5)退票功能函数模块void quit()char s130,s230,s330; int m=0; Plane *p ; customer *q,*r; while(1) p=head; r=q=glist; printf(输入姓名:n); scanf(%s,s2); if(strcmp(s2,q-name)!=0) /*判断*/ printf(您没有预定机票);getch(); break; /*出错提示*/ el

22、se printf(您想退订哪趟航班:n); scanf(%s,s1); if(strcmp(s1,q-planeNo)!=0) /*判断*/ printf(您没有预定此航班n);getch();break; /*出错提示*/ else printf(输入身份证号:n); scanf(%s,s3); if(strcmp(s3,q-ID)!=0) /*判断*/ printf(n您输入的身份证号码有误n);getch();break; /*出错提示*/ else printf(想退几张机票:n); scanf(%d,&m); while(strcmp(p-planeNo,s1)p=p-next;

23、p-tamount=p-tamount+m; while(strcmp(q-name,s2)q=q-next; printf(n姓名:%s,q-name); /*输出原始定单*/ printf(n身份证号码:%s,q-ID); printf(n航班号:%s,q-planeNo); printf(n订票数量:%d,q-tamount); printf(nn真的要退订吗?(Y/N)n); if(getch()=y) q-tamount=q-tamount-m; printf(n姓名:%s,q-name); /*打印新的定单*/ printf(n身份证号码:%s,q-ID); printf(n航班号

24、:%s,q-planeNo); printf(n订票数量:%d,q-tamount); if(!q-tamount) q=q-next; while(r!=q) r-no-; r=r-next; printf(nn退票成功!nn); printf(是否继续? y/n); if(n=getch()|N=getch() break; save1(head); save2(glist);退票函数流程图 图6 退票函数流程图6)显示信息函数模块:print() struct Plane *p;p=head-next;system(“cls”); if(!p) puts(nNO any data.);printf(n请按任意键返回);getch();return;printf(n航班号 起飞时间 抵达时间 出发城市 目的地 价格 折扣 总票数 剩余票数n);for(;p!=NULL;p=p-next) printf(%s %s %s %s %s %d %s %d %dn,p-planeNo,p-start,p-end_time,p-startplace,p-end_place,p-price,p-discount,p-total,p-start); printf(n请按任意键返回);getch();

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

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