C语言-VC6.0-飞机订票系统(程序可运行)(共20页)

上传人:hs****ma 文档编号:466510585 上传时间:2023-02-14 格式:DOCX 页数:20 大小:512.17KB
返回 下载 相关 举报
C语言-VC6.0-飞机订票系统(程序可运行)(共20页)_第1页
第1页 / 共20页
C语言-VC6.0-飞机订票系统(程序可运行)(共20页)_第2页
第2页 / 共20页
C语言-VC6.0-飞机订票系统(程序可运行)(共20页)_第3页
第3页 / 共20页
C语言-VC6.0-飞机订票系统(程序可运行)(共20页)_第4页
第4页 / 共20页
C语言-VC6.0-飞机订票系统(程序可运行)(共20页)_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《C语言-VC6.0-飞机订票系统(程序可运行)(共20页)》由会员分享,可在线阅读,更多相关《C语言-VC6.0-飞机订票系统(程序可运行)(共20页)(20页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上1、设计目的和要求1、 录入航线信息:每条航线信息包括航班号、飞机号、目的地、订票数、余票数共5项。假设现在有3条航线, 目的地分别是北京, 上海, 广州, 飞机上可乘坐100人( 即初始订票数为0, 余票数为100)。2、 订票业务:客户信息包括姓名, 航班号, 座位号(初始为0)。有新客户订票时, 先输入客户的姓名和他提出的航班号, 查询该航线的订票情况, 若有余票, 则为客户办理订票手续, 分配给客户一个座位号, 然后将新客户的信息添加, 并修改该航线的订票数和余票数。若无余票, 则输出客满信息。进一步可实现如果该航班已经无票,可以提供相关可选择航班信息。3、退

2、票业务:根据客户提出的航班号, 办理退票,删除该客户的信息, 并修改文件相应航线的订票数和余票数。4、 修改航班信息:当航班信息改变可以修改。2、设计原理1、线性链表1.1线性链表简介线性表的链式存储结构称为线性链表,是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接来实现的。因此,在链式存储方式中,每个结点由两部分组成:一部分用于存放数据元素的值,称为数据域;另一部分用于存放指针,称为指针域,用于指向该结点的前一个或后一个结点(即前件或后件)1.2线性链表分类线性链表分为单链表、双向链表和循环链表三种类型。在单链表中,每一个结点只有一个指针域,由这个指针只

3、能找到其后件结点,而不能找到其前件结点。因此,在某些应用中,对于线性链表中的每个结点设置两个指针,一个称为左指针,指向其前件结点;另一个称为右指针,指向其后件结点,这种链表称为双向链表。 1.3线性链表的基本运算(1)在线性链表中包含指定元素的结点之前插入一个新元素。在线性链表中插入元素时,不需要移动数据元素,只需要修改相关结点指针即可,也不会出现“上溢”现象。(2)在线性链表中删除包含指定元素的结点。*:在线性链表中删除元素时,也不需要移动数据元素,只需要修改相关结点指针即可。(3)将两个线性链表按要求合并成一个线性链表。(4)将一个线性链表按要求进行分解。(5)逆转线性链表。(6)复制线性

4、链表。(7)线性链表的排序。(8)线性链表的查找。线性链表不能随机存取。14线性表顺序存储的缺点:(1)插入或删除的运算效率很低。在顺序存储的线性表中,插入或删除数据元素时需要移动大量的数据元素;(2)线性表的顺序存储结构下,线性表的存储空间不便于扩充;(3) 线性表的顺序存储结构不便于对存储空间的动态分配。2、航班的信息为了便于查找和修改,航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞达到的时间、空座和目的的、票价以及限座七个数据项:降落城市航班号飞机号飞行时间余票量总座位数起飞城市hD1D2D3单链表如下:每个结点包括数据域和指针域:数据域指针域3、 旅客的资料

5、为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素包括姓名、证件号码、航班号和座位号四个数据项:旅客姓名航班号座位号票的张数每个结点包括数据域和指针域:数据域指针域4、 客户链表每个数据元素包括头指针和尾指针两个数据项:每个结点包括两个指针域:头指针域尾指针域3、设计内容1、总体设计总体设计的流程图如图2-1,飞机订票系统的总的界面图如图2-2。图2-1图2-22、录入航班信息模块首先是需要进行管理员密码验证,设置的密码为char password20=guanliyuan;int addflight(air &plane)调用if(strcmp(ps,password)=0)进行密

6、码验证,密码正确后,调用createlistcorrect(plane);增加航班信息。会依次要求输入:站名-航班号-飞机号-飞行时间客机容量-总余票量。将新航班结点插入航班链表中。如图3-1图3-13、删除航班模块添加、删除航班信息的流程图如图3-5所示。首先是需要进行管理员密码验证,设置的密码为char password20=guanliyuan; int deleteflight(air &plane)会调用if(strcmp(ps,password)=0)进行密码验证,密码正确后,调用scanf(%s,banci);锁定班次,后用语句delep=plane-next; frontp=p

7、lane;将此航班删除。如图3-2。图3-2删除前的全部航班显示: 如图3-3 图3-5图3-3 删除后的全部航班显示:如图3-4图344、查询航班模块 航班的查询有三种,目的地查询、航班号查询和查询全部航班。具体流程图如图3-9图3-9调用int searchaim(air plane)查询函数,通过if(strcmp(p-terminusname,Aim)=0) 进行目的地对应查询,找到所查询的航班号,显示航班信息printf(航班号:%s 飞机号:%s 飞行时间:%s 余量:%dn,p-flightno,p-planeno,p-flytime,p-unsellno);如图3-6图3-6调

8、用int searchnum(air plane)查询函数,通过if(strcmp(p-flightno,Aim)=0)进行航班号对应查询,找到所查询的航班号,显示航班信息printf(航班号:%s 飞机号:%s 飞行时间:%s 余量:%dn,p-flightno,p-planeno,p-flytime,p-unsellno);如图3-7图3-7可以进行全部航班的查询显示,显示结果如图3-8图3-85、客户订票、退票模块客户订票、退票的流程图如图3-10所示 5.1订票系统 图3-10通过调用int bookticket(air &plane)函数,依次输入登记:航班号-购买的票数-姓名,后系

9、统会分配一个座位号给你,并将新客户结点插入客户链表中。如图3-11图3-115.2退票系统通过调用int tuipiao(air &plane) 函数,依次校对:航班-日期-用户名,核对后,可以退票成功。如图3-12图3-126、登记、查询模块6.1客户登记模块客户登记模块分为已经订票的客户信息,和预订票的客户信息。同是管理员可以通过密码登陆后查询全部的已经订票的客户信息和预订票的客户信息,流程图如图3-13,客户登记,如图3-14、3-15图3-13图3-14图3-156.2管理员查看客户信息模块同是管理员可以通过密码登陆后查询全部的已经订票的客户信息和预订票的客户信息附录1:#includ

10、e#include#include#include#define ERROR 0#define OK 1typedef struct aldbook/已订票人结点 char albookname20; /订票人姓名 int albookno; /订票量 struct aldbook *next;aldbook,*albook;typedef struct undbook/等候订票人节点 char unbookname20;/等候订票人姓名 int unbookno;/所需票量 struct undbook *next;undbook,*unbook;typedef struct /队列 unb

11、ook front; /队头指针 unbook rear; /队尾指针linkqueueun;typedef struct airline /航线结点 char terminusname20;/终点站名 char flightno10;/航班号 char planeno10;/飞机号 char flytime10;/起飞时间 int allnumber;/乘员定额 int unsellno;/余票量 struct airline *next; albook albookP; linkqueueun QY;airline,*air;int initqueue(linkqueueun &Q)/建立

12、以Q为头结点的链队列,成功返回OK,否则返回ERROR Q.front=Q.rear=(unbook)malloc(sizeof(undbook); /分配存储空间,使队头队尾指针指向同一结点 if(!Q.front) return ERROR; /分配空间失败 Q.front-next=NULL; return OK;/initqueue()int initlist1(air &P) /建立存储航线信息的空链表 P=(air)malloc(sizeof(airline); if(!P) return ERROR; P-next=NULL; return OK;/initlist1()int

13、initlist2(albook &Y) /建立存储已定票人信息的空链表 Y=(albook)malloc(sizeof(aldbook); if(!Y) return ERROR; Y-next=NULL; return OK;/initlist2()int enqueue(linkqueueun &Q,char name,int num)int deletelist(albook &Y,char name)/在存放已定票人信息的链表中删除用户名为name的结点 /并返回此用户的订票数量 int i; albook p,q; p=Y-next; q=Y; while(p&strcmp(p-a

14、lbookname,name) p=p-next;q=q-next; if(!p) printf(对不起!本航班无此用户信息!请确认是否输入正确!n); return ERROR; i=p-albookno; q-next=p-next; free(p); return i;/deletelist()int createlistcorrect(air &p)/建立存储航线信息的链表 air newbase,pa; pa=p; newbase=(airline *)malloc(sizeof(airline); if(!newbase) return ERROR; printf(请依此输入以下内容:n); printf(请输入终点站名:); scanf(%s,newbase-terminusname); printf(请输入航

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号