c语言航空订票系统程序设计,C语言航空订票系统

41528d3028836879cd698677c3999917.gifC语言航空订票系统

这 是 一 篇 用 C 语 言 编 写 的 航 空 订 票 系 统 的 论 文 。 该 系 统 使 用 的 是十 字 链 表 结 构 , 包 含 有 订 票 , 退 票 , 录 入 航 班 信 息 , 查 询 航 班 余 票 , 查询 个 人 订 票 信 息 这 些 功 能 。内 含 详 细 论 文 格 式 及 程 序 源 代 码 ( 源 代 码 附 有 详 细 注 释 )XXXXXXXXXX项 目 名 称 : 航 空 信 息 管 理 系 统 学 生 姓 名 : XXXXXX 学 号 : XXXXXXXXX 班 级 : XXXXXX 指 导 教 师 : XXX 2012 年 12 月 25 日目录1.系统需求分析 .12.数据结构设计及用法说明 .23.详细设计和编码 .43.1 订票模块 43.2 退票模块 63.3 录入模块 83.4 查询模块 94.实验结果 .104.1 主菜单界面 104.2 查询功能模块 104.3 订票功能模块 114.4 退票功能模块 124.5 录入航班信息模块 125.体会 .13参考文献 14附录:源程序清单 151.系统需求分析本次课程设计要求使用 C 语言编写一个航空客运订票系统程序,根据所有内容都可以只在内存中运行可得知该模拟的航空客运订票系统不需要用文件保存相关输入,运行过程中的数据。同时该航空客运订票系统要求模拟实际航空订票系统,具有查询航线,客票预订,办理退票,录入航班信息等基本功能。查询航线功能根据实际分析应该具有通过用户输入的要查询终点站名输出该终点站的终点站,航班号,飞机号,飞行日期,剩余票量的功能。订票功能应当设计能够根据用户输入的姓名和终点站,查询该终点站的余票并提示剩余票数,之后让用户输入需要订购的票数并执行相关操作。退票功能可设计成要求用户输入姓名和航班号来查找该用户的的订票信息并打印,再询问是否退票。录入功能是必要的,用来录入航班节点信息。2.数据结构设计及用法说明根据该航空信息管理系统的功能要求,应当设计菜单模块,查询模块,订票模块,退票模块,录入信息模块等几个基本模块,main 函数里调用菜单模块打印选项菜单,然后用switch case 接收用户选择,并依此跳转到相应模块执行。同时,为达到能够执行一个模块后继续返回主菜单执行而不是直接退出的目的设计将菜单模块及相应子功能模块放入 for死循环里,当输入 5 则直接退出程序。按该系统的功能分析得出存放在系统中各项数据不需要使用排序功能,因而使用链表保存数据比用顺序表和数组要便捷并且占用内存少,所以定义 linklist 类型,内部有data,next 指针 2 个数据。其中定义一个 flight 类型的结构体用来存放实际数据:typedef struct{char flightname[MAX];//终点站名 int flightid;//航班号 int date;//飞行日期 int max;//乘员定额 int left;//余票量 int wait;//排队中的票数}flight;//存储 “航班信息“ 中 “实际数据“ 的结构体。flight 结构体中 left 存放航班剩余票数,wait 存放当前航班候处于候补状态的人缺票的总数。同时建另一条 linklist_2 类型保存订票人员的相关信息,包括用户姓名,用户已定票数,用户缺少票数,指向下一个节点的 next 指针等数据:typedef struct lnode_2{char name[MAX];//用户姓名 int num;//当前用户定的的票数int need;//当前用户缺少的票数lnode_2 *next;//指向下一个节点的指针}linklist_2;//存储 用户信息 的链表。 其中 need 代表当前用户缺少的票数,这些票数之和存放在航班候补票数中。上述 2 个结构体类型构成 linklist 类型:typedef struct lnode_1{flight *data;//“航班信息“实际数据 lnode_1 *next;//指向下一个节点的指针 }linklist;//存储“航班信息“的链表。其中 data 用来存放实际数据,里面包含终点站名,航班号,飞行日期,乘员定额,余票量,处于排队中的票数等等信息,next 是指向下一个结点的指针。而根据系统功能实际分析发现实际算法中经常需要查询航班下对应的有哪些人员定了该航班票,因而将人员信息链表链接到航班信息链表中更为方便,在航班连表的 data 实际数据里放一个人员信息链表的头指针:linklist_2 *top2;,当有新人员订票则新建一个人员节点,将节点连接到这个头指针下面,这样的链表结构更方便保存和查询系统中各项数据。最后在程序开头创建链表头结点并分配内存:linklist *top=(linklist *)malloc(sizeof(linklist));程序运行过程中产生的数据依次保存在这个头结点后面的结点。图 2-1 航班链表存储结构图3.详细设计和编码 3.1 订票模块进入订票模块先要求用户输入姓名,再输入需要定票的终点站名,然后遍历所有航班节点的名称信息看是否存在该终点站,如果不存在则提示“ 没有该站点信息,请重新输入:“要求重新输入终点站名,知道输入的终点站名存在,然后创建新人员节点并分配空间:linklist_2 *s=(linklist_2 *)malloc(sizeof(linklist_2));再用尾插法插入新节点:while(p-next!=NULL)//定位当前人员连表的到最后一个节点p=p-next;p-next=s;//将新节点 s 连接上s-next=NULL;//初始化新节点下一个节点为空并保存当前订票人的名子,输入的订票数量。当输入订票数量时进行对票数进行判断if(num0while(m!=NULL){if(strcmp(flightname1,m-data-flightname)==0)break;//退出循环m=m-next;}程序流程图如 3-2 所示:不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不图 3-2 退票模块结构图3.3 录入模块录入航班信息模块先创建新航班节点并为新节点分配内存空间:linklist *n=(linklist *)malloc(sizeof(linklist));再用尾插法将新节点插入:while(m-next!=NULL)m=m-next;//使 m 指针指向最后一个节点m-next=n;n-next=NULL;//使新节点下一个节点为空然后初始化当前航班节点的实际数据里的保存人员信息的头指针为空:flight *a=(flight *)malloc(sizeof(flight));linklist_2 *b=(linklist_2 *)malloc(sizeof(linklist_2));n-data=a;//初始化新节点里的 data 数据n-data-top2=b;//初

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值