数据结构课程设计报告11_第1页
数据结构课程设计报告11_第2页
数据结构课程设计报告11_第3页
数据结构课程设计报告11_第4页
数据结构课程设计报告11_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录目录 一 需求分析 2 二 概要设计 2 三 详细设计 3 四 调试分析 18 五 用户手册 18 六 附录 20 七 心得 20 正文正文 一 一 需求分析需求分析 1 用顺序表表示所有航线的信息 顺序表的每个结点为每条航班信息 并按终点站名的 序号有序排列 用链表表示已订票客户的信息 链表的结点按客户姓名有序排列 用 链队列表示候补客户的信息 队形结点按结点按客户姓名有序排列 2 查询功能 客户输入终点站的信息 通过直接查找输出以下信息 航班号 飞机号 起飞日期 剩余票数量 3 订票功能 客户输入所要订票的航班号 系统输出该航班的信息 并询问客户是否订票 客户确 认订票并输入订票量 如果订票量超出余票量 则询问客户是否订票 并减少票数还 是进行登记排队候补 如果票已售完 询问客户是否登记排队候补 4 退票功能 根据客户所要退票的航班号 删除该客户的信息 并询问候补队列中的客户是否订票 若是 则将该客户的信息转移到订票客户的链表中 否则 询问队列中的下一位客户 二 二 概要设计概要设计 1 设定顺序表的抽象数据类型定义 ADT SqList 数据对象 D ai ai Node 3 各航班的信息 i 1 2 n n 0 数据关系 R1 ai 1 ai D i 2 3 n 基本操作 InitList Sq SqList 终点站名 char line TER NUM Line CG01 Line CG02 Line CG03 Line CG04 Line CG05 Line CG06 Line CG07 航班号 char plane TER NUM Plane BN01 Plane BN02 Plane BN03 Plane BN04 Plane BN05 Plane BN06 Plane BN07 飞机号名 char day TER NUM Day Sun Day Mon Day Tue Day Wed Day Thu Day Fri Day Sat 飞行周日 已订票客户信息的链表存储结构 typedef struct Node 1 char name 20 客户姓名 int num 订票数量 int cla1 舱位等级 struct Node 1 next 指向下一结点起始地址 Node 1 LinkList 候补客户信息的链队列存储结构 typedef struct Node 2 char name 20 候补客户姓名 int num 订票数量 struct Node 2 next 队列的头尾指针 Node 2 QueuePtr typedef struct QueuePtr front QueuePtr rear LinkQueue 航班信息的顺序表存储结构 define LIST INIT SIZE 50 线性表存储空间的初始分配量 define LISTINCREMENT 5 线性表存储空间的分配增量 typedef struct Node 3 int ter 终点站的序号 int line 航班号 int plane 飞机号 int day 飞行周日 int pas 4 pas 0 为所有乘员定额 pas 1 为头等舱乘员定额 pas 2 为 商务舱乘员定额 pas 3 为经济舱乘员定额 int lef 4 le 0 为所有乘员余票量 le 1 头等舱余票量 le 2 商务舱余 票量 le 3 经济舱余票量 LinkList Lc 已订票客户信息 LinkQueue Qc 候补客户信息队列 Node 3 PNode typedef struct struct Node 3 elem int length int listsize SqList void InitList Sq SqList 构造一个空的顺序表 void InitList Link LinkList 构造一个空链表 void InitQueue LinkQueue 构造一个空队列 void Menu 显示主菜单 void InitLine SqList 初始化各条航线的信息 void OutTer name 输出所有终点站名 void Out SqList L int num 输出终点站序号为 num 的航线的信息 void Search SqList 查找航线信息子模块 void OutputLine SqList L int num 输出终止站序号为 num 的航线的信息 void Book SqList 订票子模块 void Cimfomation PNode 录入订票客户信息 void Qimfomation PNode 录入候补客户信息 void Dishonored SqList 退票子模块 bool Delete PNode 删除退票客户信息 void Inform PNode 询问候补是否订票 void main int cho SqList L InitList Sq L 对所定义的顺序表 L 进行初始化 InitLine L 初始化各条航线的信息 Menu 显示主菜单 scanf d switch cho case 1 system cls Search L break 进入查找模块 case 2 system cls Book L break 进入订票模块 case 3 system cls Dishonored L break 进入退票模块 default printf 欢迎使用本系统 再会 n exit 0 退出系统 switch 处理不同的功能选项 main void Menu printf n printf n printf n printf 主界面 n printf n printf 欢迎来到航空客运管理系统 n printf n printf 请输入所选择功能的序号 按回车键确定 n printf n printf 1 查找 2 订票 3 退票 n printf n printf 输入其他字符则退出系统 n printf n printf n printf n Menu 显示主菜单 void InitList Sq SqList if L elem NULL exit OVERFLOW L length 0 L listsize LIST INIT SIZE InitList Sq 对线性表进行初始化 构造一个空的线性表 void InitList Link LinkList if Lc NULL exit OVERFLOW Lc next NULL 构造一个空链表 void InitQueue LinkQueue Qc rear Qc front Qc front next NULL 构造一个空队列 void InitLine SqList strcpy L elem 0 plane Plane BM01 strcpy L elem 0 day Day Sun L elem 0 ter 1 L elem 0 line 1 L elem 0 plane 1 L elem 0 day 1 L elem 0 pas 0 10 L elem 0 pas 1 3 L elem 0 pas 2 3 L elem 0 pas 3 4 L elem 0 lef 0 10 L elem 0 lef 1 3 L elem 0 lef 2 3 L elem 0 lef 3 4 InitList Link L elem 0 Lc InitQueue L elem 0 Qc 第二条航线信息 strcpy L elem 1 line Line CG02 strcpy L elem 1 plane Plane BM02 strcpy L elem 1 day Day Mun L elem 1 ter 2 L elem 1 line 2 L elem 1 plane 2 L elem 1 day 2 L elem 1 pas 0 10 L elem 1 pas 1 3 L elem 1 pas 2 3 L elem 1 pas 3 4 L elem 1 lef 0 10 L elem 1 lef 1 3 L elem 1 lef 2 3 L elem 1 lef 3 4 InitList Link L elem 1 Lc InitQueue L elem 1 Qc 第三条航线信息 strcpy L elem 2 line Line CG03 strcpy L elem 2 plane Plane BM03 strcpy L elem 2 day Day Tue L elem 2 ter 3 L elem 2 line 3 L elem 2 plane 3 L elem 2 day 3 L elem 2 pas 0 10 L elem 2 pas 1 3 L elem 2 pas 2 3 L elem 2 pas 3 4 L elem 2 lef 0 10 L elem 2 lef 1 3 L elem 2 lef 2 3 L elem 2 lef 3 4 InitList Link L elem 2 Lc InitQueue L elem 2 Qc 第四条航线信息 L elem 3 ter 4 strcpy L elem 3 line Line CG04 strcpy L elem 3 plane Plane BM04 strcpy L elem 3 day Day Wed L elem 3 line 4 L elem 3 plane 4 L elem 3 day 4 L elem 3 pas 0 10 L elem 3 pas 1 3 L elem 3 pas 2 3 L elem 3 pas 3 4 L elem 3 lef 0 10 L elem 3 lef 1 3 L elem 3 lef 2 3 L elem 3 lef 3 4 InitList Link L elem 3 Lc InitQueue L elem 3 Qc 第五条航线信息 strcpy L elem 4 line Line CG05 strcpy L elem 4 plane Plane BM05 strcpy L elem 4 day Day Thu L elem 4 ter 5 L elem 4 line 5 L elem 4 plane 5 L elem 4 day 5 L elem 4 pas 0 10 L elem 4 pas 1 3 L elem 4 pas 2 3 L elem 4 pas 3 4 L elem 4 lef 0 10 L elem 4 lef 1 3 L elem 4 lef 2 3 L elem 4 lef 3 4 InitList Link L elem 4 Lc InitQueue L elem 4 Qc 第六条航线信息 strcpy L elem 5 line Line CG06 strcpy L elem 5 plane Plane BM06 strcpy L elem 5 day Day Fri L elem 5 ter 6 L elem 5 line 6 L elem 5 plane 6 L elem 5 day 6 L elem 5 pas 0 10 L elem 5 pas 1 3 L elem 5 pas 2 3 L elem 5 pas 3 4 L elem 5 lef 0 10 L elem 5 lef 1 3 L elem 5 lef 2 3 L elem 5 lef 3 4 InitList Link L elem 5 Lc InitQueue L elem 5 Qc 第七条航线信息 strcpy L elem 6 line Line CG07 strcpy L elem 6 plane Plane BM07 strcpy L elem 6 day Day Sta L elem 6 ter 7 L elem 6 line 7 L elem 6 plane 7 L elem 6 day 7 L elem 6 pas 0 10 L elem 6 pas 1 3 L elem 6 pas 2 3 L elem 6 pas 3 4 L elem 6 lef 0 10 L elem 6 lef 1 3 L elem 6 lef 2 3 L elem 6 lef 3 4 InitList Link L elem 6 Lc InitQueue L elem 6 Qc 初始化各条航线的信息 void OutTer name int i printf 每个终点站的站名及其对应的序号如下 n for i 0 iTER NUM printf 输入的终点站序号有误 n return printf s ter name num 1 cout 您要查询的航线信息如下 endl printf 您要查询的航线信息如下 n OutputLine L num printf 是否订票 是 请输入 1 否 请输入 2 n printf 是否订票 是 请输入 Y 否 请输入 N n scanf d a getchar if a 1 Book L else return Search 查找子模块 void OutputLine SqList L int num PNode p p cout line 1 输出航班号 printf 飞机号 printf s plane p plane 1 输出飞机号 printf n printf 飞行周日 printf s day p day 1 输出飞行周日 printf n printf 全舱余票量 printf d n p lef 0 printf 头等舱余票量 printf d n p lef 1 printf 商务舱余票量 printf d n p lef 2 printf 经济舱余票量 printf d n p lef 3 输出余票量 printf n return OutputLine 输出终点序号为 num 航线的信息 void Book SqList char a 20 char b int i printf n printf n printf 欢迎进入订票子模块 n printf 请输入你要订的票的航班号 n scanf s a p while strcmp a line p line 1 如果 a p line 返回 0 p 用 p 指向客户所要订的航班的结点 i p ter 1 OutputLine L i if p lef 0 0 printf 对不起 您所要订的航班的票已售完 n printf 是否登记候补 是 请输入 Y 否 请输入 N 您将返回本系统主界 面 n scanf c if b Y Qimfomation p else return Cimfomation p return Book 订票子模块 void Cimfomation PNode int flag 1 char a LinkList r s t r LinkList malloc sizeof struct Node 1 if r exit 0 printf 请输入您的姓名 scanf s r name printf s r name printf n printf 舱位等级 1 为头等舱 2 为商务舱 3 为经济舱 n while flag printf 请输入您要订票的舱位等级 scanf d switch r cla1 case 1 printf 头等舱 n flag 0 break case 2 printf 商务舱 n flag 0 break case 3 printf 经济舱 n flag 0 break default printf 输入有误 请重新输入 n switch while flag 1 while flag printf 请输入您要订票的数量 scanf d printf d n r num if r num p lef r cla1 printf 您所订票的数量超出该舱位等级的余票额 是否重新输入订票数量 n printf 是 请输入 Y 否 请输入 N 您将返回本系统主界面 n scanf c if a N return else flag 0 while s p Lc t s next while strcmp t name r name s t t t next while r next t s next r p lef 0 p lef 0 r num p lef r cla1 p lef r cla1 r num printf 订票成功 n for i 1 inum i printf 您的座位号是 s d d p line r cla1 p lef r cla1 i r num 座 位号由航班号 舱位等级号 序号构成 free r return Cimfomation 录入订票客户信息 void Qimfomation PNode q QueuePtr malloc sizeof Node 2 if q exit 0 printf 请输入您的姓名 scanf s q name printf s q name printf n printf 请输入您要订票的数量 scanf d printf d n q num q next NULL p Qc rear next q next p Qc rear q printf 登记候补成功 n free q return 录入候补客户信息 void Dishonored SqList int flag 1 char lin 20 Node 3 r LinkList s printf n printf n printf 欢迎进入退票子模块 n while flag printf 请输入您已经订票的航班号 scanf s lin printf s lin printf n r while strcmp line r line 1 lin else flag 0 while if Delete r s Inform r s Dishonored 退票子模块 bool Delete PNode LinkList p printf 请输入您的姓名 scanf s nam printf s nam printf n p r Lc q p next while strcmp q name nam q q next while 使 q 指向要删除的结点或指向空 if q printf 对不起 没有查找到您的订票信息 n return 0 if p next q next r lef q cla1 r lef q cla1 q num r lef 0 r lef 0 q num 修改余票额信息 printf 退票成功 n return 1 DisSearch 查找退票客户的信息 void Inform PNode char c QueuePtr p LinkList q t v p r Qc front next q LinkList malloc sizeof Node 1 q next NULL while flag printf 尊敬的 printf s p name printf 您登记候补的航班有退票 请问是否订票 是 请输入 Y 否 请输入 N n printf 余票额为 d n s num c getchar if c Y if p num num for i 0 p name i 0 i q name i p name i q num s num q cla1 s cla1 if else printf 对不起 你候补的订票数大于余票额 请问是否将订票数减少到余票 额 n printf 是 请输入 Y 否 请输入 N n c getchar if c Y for i 0 p name i 0 i q name i p name i q num s num q cla1 s cla1 else t r Lc v t next while strcmp v name q name next q next v t next q free q free s flag 0 if else p p next Inform 询问候补是否订票 四 四 调试分析调试分析 1 该程序的主要存储结构是顺序表 其次有链表 用来存储已经订票的客户信息 再次 是链队列 队列主要用来存储候补客户信息 2 对输入的错误信息给出警告或提示 对一次操作的完成也给出相应的提示 五 五 用户手册用户手册 下面为各模块的界面 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论