文档详情

C语言 VC6.0 飞机订票系统(程序可运行).docx

发布:2018-03-08约1.47万字共20页下载文档
文本预览下载声明
课程设计说明书  PAGE \* MERGEFORMAT 20 1、设计目的和要求 1、 录入航线信息:每条航线信息包括航班号、飞机号、目的地、订票数、余票数共5项。假设现在有3条航线, 目的地分别是北京, 上海, 广州, 飞机上可乘坐100人( 即初始订票数为0, 余票数为100)。 2、 订票业务:客户信息包括姓名, 航班号, 座位号(初始为0)。有新客户订票时, 先输入客户的姓名和他提出的航班号, 查询该航线的订票情况, 若有余票, 则为客户办理订票手续, 分配给客户一个座位号, 然后将新客户的信息添加, 并修改该航线的订票数和余票数。若无余票, 则输出客满信息。进一步可实现如果该航班已经无票,可以提供相关可选择航班信息。 3、退票业务:根据客户提出的航班号, 办理退票,删除该客户的信息, 并修改文件相应航线的订票数和余票数。 4、 修改航班信息:当航班信息改变可以修改。 2、设计原理 1、线性链表 1.1线性链表简介 线性表的链式存储结构称为线性链表,是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接来实现的。因此,在链式存储方式中,每个结点由两部分组成:一部分用于存放数据元素的值,称为数据域;另一部分用于存放指针,称为指针域,用于指向该结点的前一个或后一个结点(即前件或后件) 1.2线性链表分类 线性链表分为单链表、双向链表和循环链表三种类型。 在单链表中,每一个结点只有一个指针域,由这个指针只能找到其后件结点,而不能找到其前件结点。因此,在某些应用中,对于线性链表中的每个结点设置两个指针,一个称为左指针,指向其前件结点;另一个称为右指针,指向其后件结点,这种链表称为双向链表。 1.3线性链表的基本运算 (1)在线性链表中包含指定元素的结点之前插入一个新元素。在线性链表中插入元素时,不需要移动数据元素,只需要修改相关结点指针即可,也不会出现“上溢”现象。 (2)在线性链表中删除包含指定元素的结点。*:在线性链表中删除元素时,也不需要移动数据元素,只需要修改相关结点指针即可。 (3)将两个线性链表按要求合并成一个线性链表。 (4)将一个线性链表按要求进行分解。 (5)逆转线性链表。 (6)复制线性链表。 (7)线性链表的排序。 (8)线性链表的查找。线性链表不能随机存取。 1.4线性表顺序存储的缺点: (1)插入或删除的运算效率很低。在顺序存储的线性表中,插入或删除数据元素时需要移动大量的数据元素; (2)线性表的顺序存储结构下,线性表的存储空间不便于扩充; 线性表的顺序存储结构不便于对存储空间的动态分配。 2、航班的信息 为了便于查找和修改,航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞达到的时间、空座和目的的、票价以及限座七个数据项: 降落城市航班号飞机号飞行时间余票量总座位数起飞城市h D1 D2 D3 单链表如下: 每个结点包括数据域和指针域: 数据域指针域旅客的资料 为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素包括姓名、证件号码、航班号和座位号四个数据项: 旅客姓名航班号座位号票的张数每个结点包括数据域和指针域: 数据域指针域客户链表 每个数据元素包括头指针和尾指针两个数据项:每个结点包括两个指针域: 头指针域尾指针域 3、设计内容 1、总体设计 总体设计的流程图如图2-1,飞机订票系统的总的界面图如图2-2。 图2-1 图2-2 2、录入航班信息模块 首先是需要进行管理员密码验证,设置的密码为char password[20]=guanliyuan; int addflight(air plane)调用if(strcmp(ps,password)==0)进行密码验证,密码正确后,调用createlistcorrect(plane);增加航班信息。会依次要求输入:站名-航班号-飞机号-飞行时间客机容量-总余票量。将新航班结点插入航班链表中。如图3-1图3-1 3、删除航班模块 添加、删除航班信息的流程图如图3-5所示。 首先是需要进行管理员密码验证,设置的密码为char password[20]=guanliyuan; int deleteflight(air plane)会调用if(strcmp(ps,password)==0)进行密码验证,密码正确后,调用scanf(%s,banci);锁定班次,后用语句delep=plane-next; frontp=plane;将此航班删除。如图3-2。 图3-2 删除前的全部航班显示: 如图3-3 图3-5 图3-3
显示全部
相似文档