目录
源码下载链接:
https://download.youkuaiyun.com/download/Fatunlorey/89232942?spm=1001.2014.3001.5503https://download.youkuaiyun.com/download/Fatunlorey/89232942?spm=1001.2014.3001.5503 这篇文章相当于是一篇课程设计报告,源码参见上面的链接(无需付费)
第一章 航空机票订票系统描述
1.1 具体题目
1.设计每条航线所涉及的信息,包括航班信息:起点终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、票价、余票量等,所有客户订票信息:包括姓名、订票量、航班号,舱位等级1,2或3等;所有客户退票信息:包括姓名、退票量、航班号,舱位等级1,2或3等;
2.结合基本操作的单链表、队列、二叉树等数据结构以及排序算法,设计实现机票订票系统的查询、订票、退票、改签等功能;
3.设计并实现人机交互友好的界面或菜单。
1.2 开发技术栈
应用技术栈:
(1)qt版本:Qt6.6.0
(2)开发语言:C++11
设计功能技术:
- 自定义导航栏开发
- QStackWidget、QTableWidget高级控件
- QPushButton、QLabel、QLineEdit、QWidget、QComBox、QCheckBox、QToolButton
- 自定义布局技术
- 自定义信号与槽
- 界面的迁移逻辑
- 主要文件的保存
1.3 需求分析
1.4界面迁移逻辑
第二章 运行结果
4.1用户有关界面
4.1.1用户登陆界面
4.1.2用户查询界面
4.1.3用户订票界面
4.1.4用户改签界面
4.1.5退票界面
4.2管理员有关界面
4.2.1管理员登录界面
4.2.2管理员添加航班界面
4.2.3管理员查询航班界面
4.2.4管理员删除航班界面
4.3文件有关结果
4.3.1航班文件
4.3.2用户文件
4.3.3管理员文件
4.3.4航班文件
第三章 功能模块结构
2.1功能模块划分思路
根据使用者的不同,可以分为用户使用和管理者使用两类,用户需要实现的功能有登录、注册、订票、退票、改签,查询这六个功能;管理者需要实现的功能有登录、注册、添加、删除,查询航班这五个功能。另外,还有一部分功能,是设计信息的读取与存储,这部分在第三章中会详细描述。
2.2用户主要功能模块
2.2.1登录模块
lineEditAccount:账号的输入;
lineEditPassword:密码的输入;
checkbox:密码隐式或显式输入的选择;
pushButton1:跳转到管理员登录界面;
pushButton2:跳转到用户界面;
pushButton3:跳转到用户注册界面。
2.2.2注册模块
lineEditAccount:账号的输入;
lineEditPassword:密码的输入;
lineEditPassword_2:再次确认密码;
lineEditName:姓名的输入;
lineEditSfz:证件号的输入;
pushButton1:确定创建用户;
pushButton2:取消创建返回登录界面。
2.2.3查询界面
lineEditChu:输入出发地;
lineEditDao:输入到达地;
lineEditDate:输入日期;
tableWidget:显示查询航班信息;
pushButton1:搜素按钮在tableWidget中显示查询的航班信息;
pushButton2:返回按钮,退回到登录界面;
pushButton3:跳转到个人中心界面;
pushButton:在tableWidget中插入的按钮,点击后跳转到订票界面。
2.2.4个人中心界面
labelSet1:显示用户的姓名;
labelSet2:显示用户的账号;
tableWidget:显示用户已经购买的机票信息;
pushButton1:返回按钮,返回查询界面;
pushButton2:退票按钮,点击航班后相应按钮可以实现退票;
pushButton3:改签按钮,点击航班后相应按钮可以跳转到改签界面。
2.2.5订票界面
lineEditName:输入姓名;
lineEditSfz:输入证件号;
comboBox:下拉式窗口选择舱位类型;
graphicsView:设置背景图片;
pushButton1:订票按钮,点击实现订票;
pushButton2:返回按钮,退回查询界面。
2.2.6改签界面
lineEditChu:显示原航班出发地;
lineEditDao:显示原航班到达地;
lineEditDate:选择想要改签的日期;
tableWidget:显示查询航班信息;
pushButton1:搜素按钮在tableWidget中显示查询的航班信息;
pushButton2:返回按钮,退回到个人中心界面;
pushButton:在tableWidget中插入的按钮,点击后进行改签。
2.3管理员主要功能模块
2.3.1登录模块
lineEditAccount:账号的输入;
lineEditPassword:密码的输入;
checkbox:密码隐式或显式输入的选择;
pushButton:跳转到管理员界面;
Buttonregreist:跳转到管理员注册界面;
pushButton_2:返回按钮,返回用户登录界面。
2.3.2注册模块
lineEditAccount:账号的输入;
lineEditPassword:密码的输入;
lineEditPassword_2:再次确认密码;
lineEditName:姓名的输入;
lineEditGongHao:工号的输入;
pushButton1:确定创建管理员;
pushButton2:取消创建返回管理员登录界面。
2.3.3添加航班界面
lineEditArr:输入起始地;
lineEditArrTime:输入起飞时间;
lineEditLau:输入到达地;
lineEditLauTime:输入到达时间;
lineEditCode:输入飞机航班号;
lineEditDate:输入飞机起飞日期;
lineEditNum1:输入飞机经济舱人数;
lineEditNum2:输入超级经济舱人数;
lineEditNum3:输入头等舱人数;
lineEditPrice1:输入飞机经济舱票价;
lineEditPrice2:输入超级经济舱票价;
lineEditPrice3:输入头等舱票价;
pushButton:添加按钮,点击后即可新增航班。
2.3.4删除航班界面
pushButton:删除按钮,点击后即可删除航班。
lineEdit:输入要删除航班的航班号;
2.3.5查询航班界面
lineEditChu:输入出发地;
lineEditDao:输入到达地;
lineEditDate:输入日期;
tableWidget:显示查询航班信息;
pushButton:搜素按钮在tableWidget中显示查询的航班信息;
第四章 主要模块算法
3.1读取与写入算法
在整个程序使用过程中都需要使用航班、用户和管理员有关信息,所以需要将这些有关变量设置为全局变量,并将读取和写入函数定义为静态函数(即不需要实例化对象就可以使用的全局函数)。程序中航班的信息使用Qlist来存储,而每个航班相应的乘客使用链表的方式存储。
上图中的代码是对flight和customer的定义,以及对读写函数的声明。
这部分是对航班的读取函数,它的返回类型是Qlist<flight>类型,每次从文件中读取一行数据,用逗号作为标识区分一个航班的不同信息,把每一个航班的信息存入临时flight类型变量info中,然后插入到flightList的尾部,循环一直到读取完所有的航班信息。
这部分是航班的写入函数,即把flightLsit中的每一个航班信息都写入到文件中,为了防止信息的重复,写入的方式是先清空再写入。