网站大量收购闲置独家精品文档,联系QQ:2885784924

数据结构课程设计(C语言版)模拟飞机订票系统文档说明.doc

数据结构课程设计(C语言版)模拟飞机订票系统文档说明.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

数据结构课程设计(C语言版)模拟飞机订票系统文档说明

一、问题描述:

试设计一个系统完成对航班的录入,查询,修改,订票,退票操作,航班与客户信息以文件的形式保存。

二、需求分析:

通过此系统可以实现如下功能:

1)录入:可以录入航班情况(数据可以存储在一个数据文件中)。

2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;

3)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;

4)退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

5)修改航班信息:当航班信息改变可以修改航班数据文件

要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。可以建立航班结构体,结构体成员包括航班号、起点站、终点站、飞行时间、预售票总数。客户结构体成员包括客户姓名、证件号码、订票航班号、订票数额。

三、具体模块划分:

根据需求分析,该程序可分为粗略以下七个模块:

模拟飞机订票系统输入

模拟飞机订票系统

输入

模块

输出

模块

订票

模块

退票

模块

查询

模块

修改

模块

删除

模块

四、代码设计:

该部分包括对数据结构定义的分析,各个主函数的定义分析,关键函数算法的分析。

1、数据结构的定义分析:

structFlight//定义航班结构体

{

charID_flight[20];//航班号

charCity_started[20];//航班起飞城市

charCity_landed[20];//航班抵达城市

charTime_started[10];//航班起飞时间

charTime_landed[10];//航班抵达时间

charPrice[10];//航班票价

charDiscount[10];//航班折扣

intflight_num;//航班票额

}airp[n];

structGuest//定义客户结构体

{

charname[20];//客户姓名

charID_guest[20];//客户证件号

charflight_booking[20];//客户所定航班

intbooking_sv;//客户订单号

intnum_booking;//客户所定机票额

}gt[n];

该部分定义了两个结构体数组分别用于存放航班信息、客户信息。各个数据类型如结构体所示。

说明一:

为什么在航班结构体中票价跟折扣选用字符型而不是浮点型。

因为当选用浮点型时,会出现以下编译错误提示:

忽略后提示出现:

解答:

在CSDN论坛找到以下答案:

用VC++6.0编译不通过,最后只好改成字符型代替。

说明二:

为什么选用结构体数组,而不是结构体链表?

当我们使用结构体数组来存储一组信息时,这些信息在内存单元中采用的是顺序存储结构。当我们要将这些信息写入文件的时候,可对这些信息进行正常的写入读取操作。而且没有空间的浪费。当我们采用结构体链表存储时,由于地址是动态分配的,物理位置上没有要求相邻存储。当对其进行文件的写入与读取时,并不是一件简单的事。

问题一:

当我们把链表中的每个结点作为一个整体块写入文件中时,此时会产生信息的冗余,此冗余就是结构体链表中指向下一个结点的指针所存储的地址。

问题二:

当我们从文件中读取数据重新构造链表的时候,在文件中所存储的指向下个结点的指针中所存储的原来旧有的地址是否会对我们新建的链表造成影响。

假设在文件中存储着多个结点的情况:

第一步:新开辟一个空间,假设这个空间地址为1000,并且作为链表的头结点,在文件中第一组数据中指向下一个结点所存储的指针中的地址为2000,如图所示:

第二步:重新开辟一个空间,地址为1500,令指针q指向其,并且从文件中读取数据。假设文件中所存储的指针中的地址为3000,如图所示

此时,令P指针所指向的next指针赋值为Q指针所存储的地址,也就是1500。那么,在头结点

文档评论(0)

偶遇 + 关注
实名认证
内容提供者

个人介绍

1亿VIP精品文档

相关文档