科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用SpringBoot技术建设机票订票管理系统。
本设计主要实现集人性化、高效率、便捷等优点于一身的机票订票管理系统,完成公共管理、用户管理、资讯管理、航班信息、订单信息、退票信息、机型信息等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。机票订票管理系统使用Java语言,采用SpringBoot技术进行开发,使用MyEclipse编译器编写。数据存储方面,可以选择微软的MySQL关系型数据库作为数据存储媒介。同时,配合前台的HTML+CSS技术,完成系统的开发。通过科学的管理方式和便捷的服务,该机票订票管理系统可以提高工作效率,减少数据存储上的错误和遗漏。它将成为一个高效且方便使用的工具,帮助用户更便捷地在线浏览并订票机票信息。
关键词:机票订票管理系统;Java语言;SpringBoot框架;MySQL数据库
The rapid development of technological progress has caused tremendous changes in people's daily lives, and the rapid development of electronic information technology has popularized and applied the application level of electronic information technology in various fields. The arrival of the information age has become an unstoppable fashion trend, and the history of human development is entering a new era. In practical applications, the working rules and development steps of the application software are used to build a ticket booking management system using SpringBoot technology.
This design mainly implements a ticket booking management system that combines the advantages of humanization, high efficiency, and convenience, completing functional modules such as public management, user management, information management, flight information, order information, refund information, and aircraft type information. The system communicates with the server through a browser to achieve data exchange and change. This system improves work efficiency and reduces errors and omissions in data storage through scientific management and convenient services. The flight reservation management system is developed using Java language, SpringBoot technology, and MyEclipse compiler. In terms of data storage, Microsoft's MySQL relational database can be chosen as the data storage medium. At the same time, cooperate with the front-end HTML+CSS technology to complete the system development. Through scientific management methods and convenient services, the ticket booking management system can improve work efficiency and reduce errors and omissions in data storage. It will become an efficient and convenient tool to help users browse and book flight information online more conveniently.
Keywords: Flight reservation management system; Java language; SpringBoot framework; MySQL database
第1章 引 言
1.1选题背景及意义
随着全球订票业的快速发展和航空运输的普及,人们对飞机票订票管理系统的需求逐渐增加。传统的机票订票方式通常需要到航空公司的售票处或订票社实体店面进行订票,这不仅需要消耗大量的时间和精力,还存在着信息不及时、订票不便捷等问题。而随着互联网的普及和电子商务技术的成熟,许多航空公司和订票网站纷纷推出了在线机票订票服务,实现了机票订票的自主化和便捷化。
机票订票管理系统作为一种新型的订票工具,可以为航空公司、订票社和旅客提供更加高效和便捷的服务。通过该系统,航空公司可以实现航班信息的实时更新和管理、座位订票的自动化处理、机票销售的电子化等功能,提高运营效率和服务品质;订票社可以将航空公司的航班信息整合到自己的平台上,实现机票产品的推广和销售;旅客则可以通过网络随时查询航班信息、比较价格、订票机票,实现自主选择和购买。
然而,目前市面上的机票订票管理系统仍存在一些问题和不足,如界面设计不够友好、性能表现不稳定、功能模块单一等,导致用户体验不佳、操作繁琐等情况。因此,对机票订票管理系统的研究和优化具有重要的实际意义和发展潜力。
对机票订票管理系统进行深入研究和优化,具有重要的实际意义和发展潜力。优化机票订票管理系统的设计和功能,可以实现航空公司和订票社的业务流程自动化和管理效率的提升,为旅客提供更加高效和便捷的订票服务。通过改进系统的界面设计和功能模块,提升用户体验和操作便捷性,减少用户在订票过程中的困扰和误操作,提高用户满意度和忠诚度。完善机票订票管理系统的功能和服务,增加系统的灵活性和可扩展性,可以吸引更多的航空公司和订票社接入,扩大平台的覆盖范围和市场份额。
1.2国内外研究概况
随着互联网的发展,机票订票已成为航空运输行业的重要一环。机票订票管理系统的研究和开发,已在国内外各大航空公司和订票社广泛应用。
国内方面,中国国航、南方航空、东方航空等大型航空公司早在2000年左右就开始使用机票订票管理系统。通过该系统,旅客可以在网上查询航班信息、选择航班、订票机票,并且可以在线完成支付和退改签操作。该系统有效提高了出行的便利性和效率,而且也为航空公司提供了更好的管理和运营手段。
国外方面,美国的航空公司也积极推行机票订票管理系统。美国联合航空、达美航空等航空公司已经建立起了覆盖全球的机票订票系统。这些系统不仅提供了机票订票服务,还提供了订票规划、航班订票、租车服务等一站式订票解决方案。通过该系统,用户可以方便地查找最佳的航班和住宿方案,节省时间和精力。
综上所述,机票订票管理系统已成为航空运输行业不可或缺的一部分。通过该系统,旅客可以方便地查询、订票机票,同时航空公司也能够更好地管理和运营业务。随着技术的进一步发展,机票订票管理系统还有很大的改进和创新空间,可以进一步提升订票体验和服务质量。因此,对机票订票管理系统的研究和应用具有重要的意义。
1.3论文结构安排
论文将分层次经行编排,除去论文摘要致谢文献参考部分,正文部分还会对系统需求做出分析,以及阐述大体的设计和实现的功能,最后罗列部分调测记录,论文主要架构如下:
第1章 交代项目的背景、开发这个系统的现状以及论文相关章节安排情况。
第2章 对系统的具体需求展开分析。
第3章 阐述了系统的设计,其中涵盖了功能设计以及数据库的设计。
第4章 阐明了机票订票管理系统各个功能模块的实现,以图文的形式进行展示。
第5章 罗列了部分系统调试与测试的记录。
第6章 结论。
第2章 系统需求分析
2.1系统可行性分析
2.1.1技术可行性分析
机票订票管理系统在数据的存储上使用的MySQL数据库,在机票订票管理系统开发中使用了Java、HTML、Tomcat、SpringBoot这些开发工具的使用,能够给我们的编写工作带来许多的便利。系统使用B/S模式进行开发,使系统的可扩展性和维护性更佳,减少系统配置代码,简化编程代码,目前B/S模式是目前最受欢迎的一种模式。
2.1.2经济可行性分析
在开发机票订票管理系统中所使用的开发软件像IDEA开发工具、Tomcat服务器、MySQL数据库等,这些都是开源免费的,这些环境在学校都进行了系统的学习,自己能够独立操作完成,不需要额外花费,而且系统的开发工具从网上都可以直接下载,因此在经济方面是可行的。
2.1.3操作可行性分析
此次项目设计的时候我参考了很多类似系统的成功案例,对它们的操作界面以及功能都进行了系统的分析,将众多案例结合在一起,突出以人为本简化操作,所以具有基本计算机知识的人都会操作本项目。因此操作可行性也没有问题。
2.2系统需求分析
2.1.4功能需求分析
该机票订票管理系统将提供以下功能:用户可以通过系统浏览航班信息、查看公告通知和新闻资讯,并进行订票和点赞、收藏、评论等操作。管理员则可以管理系统用户,对系统的轮播图和公告通知、新闻资讯信息进行管理,还可以对前台展示的航班信息以及相关的订单信息、退票信息、机型信息等内容进行管理。系统旨在提升航班管理效率、用户订票体验和竞争力。具体如下:
普通用户端:
(1)首页:展示航班信息和推荐内容,包括航班编号、航空公司、航班类型、出发地点、出发时间、预计时长、终点名称、飞机型号、机票数量、机票价格等,吸引用户浏览和订票。
(2)公告通知:浏览航班最新的活动、优惠和特别公告,方便用户参与和了解航班的相关信息。
(3)新闻资讯:查看航班相关的新闻、文章和订票指南等,为用户提供有用的订票建议和信息。
(4)航班信息:浏览各类航班的详细信息,包括航班编号、航空公司、航班类型、出发地点、出发时间、预计时长、终点名称、飞机型号、机票数量、机票价格、航班详情等信息,可以进行订票、点赞、收藏、评论等,帮助用户选择合适的航班并订票。
(5)我的账户:在前台点击“我的”下面的“我的账户”可以对个人资料+密码修改进行管控。
(6)个人中心:普通用户在前台点击“个人中心”可以对个人首页、订单信息、退票信息和自己收藏的信息进行管理。
(1)轮播图:管理首页轮播图的展示内容和顺序,包括上传、删除和调整轮播图图片,提供优质的用户体验和视觉效果。
(2)公告通知:发布和编辑航班的公告通知,包括活动内容、时间、地点和参与方式等,吸引用户参与和提高活动效果
(3)用户管理:管理系统的用户账号,包括添加、编辑和删除管理员和普通用户,确保系统安全和权限管理。
(4)资讯管理:发布和编辑航班相关的新闻、文章和订票指南,提供有价值的信息给用户,增加用户粘性和满意度。
(5)航班信息:管理具体航班的详细信息,包括航班编号、航空公司、航班类型、出发地点、出发时间、预计时长、终点名称、飞机型号、机票数量、机票价格、航班详情等信息,确保准确的航班管理和订票管控。
(6)订票信息:查看和处理用户的订票信息,包括审核、确认、调整和退票等操作,确保订票流程的顺利进行。
(7)退票信息:查看和处理用户的退票信息,包括审核、退款处理和记录退票信息原因等,及时解决退票事宜并保障用户权益。
(8)机型信息:管理员可以对航班飞机信息所属的机型信息进行添加、修改。
2.1.5非功能性需求分析
机票订票管理系统的非功能性需求比如机票订票管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下2.1表格中:
表2.1 机票订票管理系统非功能需求表
| 安全性 | 主要指机票订票管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
| 可靠性 | 可靠性是指机票订票管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
| 性能 | 性能是影响机票订票管理系统占据市场的必要条件,所以性能最好要佳才好。 |
| 可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
| 易用性 | 用户只要跟着机票订票管理系统的页面展示内容进行操作,就可以了。 |
| 可维护性 | 机票订票管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.3系统用例分析
机票订票管理系统中用户角色用例图如图2.1所示:
图2.1用户角色用例图
机票订票管理系统中管理员用例图如图2.2所示:
图2.2 管理员用例图
2.4 系统流程分析
数据流程分析是对机票预订管理系统中信息的流动和处理过程进行评估和描述。通过构建数据流图和数据字典,明确数据从输入到输出的路径,以及各个处理步骤和数据存储的关系。这有助于理解平台的功能和业务流程,并为系统设计和开发提供指导。
2.4.1数据增加流程
用户成功登入系统后就能够实现增加数据的操作,增加数据的编号是特定的,系统生成,用户不能随意填写,除了编号以外,其他增加信息用户自己填写,填写后的信息经过系统验证,验证合法通过就显示增加数据成功了,相反的话,就没有增加成功,图2.3显示的就是在增加数据时的流程。
图2.3 数据增加流程图
2.4.2数据修改流程
数据修改时的流程和上面介绍的数据增加时的流程差不多,如图2.4所示。

图2.4 数据修改流程图
2.4.3数据删除流程
如果系统里面存在一些没有用的数据的话,相关的管理人员还可以对这些数据进行删除,图2.5就是数据删除时的流程图。

图2.5 数据删除流程图
第3章系统设计
3.1系统功能模块设计
机票订票管理系统总体分为前台用户模块和后台管理员模块。
两个模块表现上是分别独立存在,但是访问的数据库是一样的。每一个模块的功能都是根据先前完成的需求分析,并查阅相关资料后整理制作的。
综上所述,系统功能结构图如下图所示。

图3.1 机票订票管理系统功能模块图
3.2数据库设计
数据库的设计承载者系统的各种数据,在建立数据库的时候,主要是数据库模型的设计以及各个数据库表的设计两部分。
3.2.1数据库概念结构设计
下面是整个机票订票管理系统中主要的数据库表总E-R实体关系图。
图3.2 机票订票管理系统总E-R关系图
3.2.2数据库逻辑结构设计
通过前面E-R关系图可以看到项目需要创建很多个数据表。以下是项目中的主要数据库表的关系模型:
表access_token (登陆访问时长)
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
| 2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
| 3 | info | text | 65535 | 0 | Y | N | ||
| 4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
| 5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
| 2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
| 3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
| 4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
| 5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
| 9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
| 10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
| 11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
| 12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
| 13 | description | text | 65535 | 0 | Y | N | 文章描述 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
| 2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
| 3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
| 4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
| 5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
| 6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
| 7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
| 8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
| 2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
| 3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
| 4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
| 5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
| 6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
| 7 | position | varchar | 32 | 0 | Y | N | 位置: | |
| 8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
| 9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
| 10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
| 11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
| 12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
| 13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
| 14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
| 15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
| 16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
| 17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
| 18 | option | text | 65535 | 0 | Y | N | 配置: | |
| 19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
| 3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 6 | title | varchar | 255 | 0 | Y | N | 标题: | |
| 7 | img | varchar | 255 | 0 | Y | N | 封面: | |
| 8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
| 3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
| 4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
| 5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
| 6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
| 7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | flight_information_id | int | 10 | 0 | N | Y | 航班信息ID | |
| 2 | flight_number | varchar | 64 | 0 | Y | N | 航班编号 | |
| 3 | cover_photo | varchar | 255 | 0 | Y | N | 封面图片 | |
| 4 | airlines | varchar | 64 | 0 | Y | N | 航空公司 | |
| 5 | flight_type | varchar | 64 | 0 | Y | N | 航班类型 | |
| 6 | departure_location | varchar | 64 | 0 | Y | N | 出发地点 | |
| 7 | departure_time | datetime | 19 | 0 | Y | N | 出发时间 | |
| 8 | estimated_duration | varchar | 64 | 0 | Y | N | 预计时长 | |
| 9 | end_point_name | varchar | 64 | 0 | Y | N | 终点名称 | |
| 10 | aircraft_model | varchar | 64 | 0 | Y | N | 飞机型号 | |
| 11 | number_of_air_tickets | int | 10 | 0 | Y | N | 0 | 机票数量 |
| 12 | air_ticket_prices | int | 10 | 0 | Y | N | 0 | 机票价格 |
| 13 | flight_details | longtext | 2147483647 | 0 | Y | N | 航班详情 | |
| 14 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
| 15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
| 3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | model_information_id | int | 10 | 0 | N | Y | 机型信息ID | |
| 2 | order_code | varchar | 64 | 0 | Y | N | 机型名称 | |
| 3 | model_and_model | varchar | 64 | 0 | Y | N | 机型型号 | |
| 4 | affiliated_company | varchar | 64 | 0 | Y | N | 所属公司 | |
| 5 | parking_location | varchar | 64 | 0 | Y | N | 停放地点 | |
| 6 | model_details | varchar | 64 | 0 | Y | N | 机型详情 | |
| 7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
| 2 | title | varchar | 125 | 0 | N | N | 标题: | |
| 3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
| 4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | order_information_id | int | 10 | 0 | N | Y | 订单信息ID | |
| 2 | flight_number | varchar | 64 | 0 | Y | N | 航班编号 | |
| 3 | airlines | varchar | 64 | 0 | Y | N | 航空公司 | |
| 4 | flight_type | varchar | 64 | 0 | Y | N | 航班类型 | |
| 5 | booking_users | int | 10 | 0 | Y | N | 0 | 订票用户 |
| 6 | booking_time | datetime | 19 | 0 | Y | N | 订票时间 | |
| 7 | air_ticket_prices | varchar | 64 | 0 | Y | N | 机票价格 | |
| 8 | booking_quantity | int | 10 | 0 | Y | N | 0 | 订票数量 |
| 9 | booking_status | varchar | 64 | 0 | Y | N | 订票状态 | |
| 10 | total_price | varchar | 64 | 0 | Y | N | 合计总价 | |
| 11 | note_details | text | 65535 | 0 | Y | N | 备注详情 | |
| 12 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
| 13 | pay_type | varchar | 16 | 0 | Y | N | 支付类型: 微信、支付宝、网银 | |
| 14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
| 2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
| 3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | refund_information_id | int | 10 | 0 | N | Y | 退票信息ID | |
| 2 | flight_number | varchar | 64 | 0 | Y | N | 航班编号 | |
| 3 | airlines | varchar | 64 | 0 | Y | N | 航空公司 | |
| 4 | flight_type | varchar | 64 | 0 | Y | N | 航班类型 | |
| 5 | refund_user | int | 10 | 0 | Y | N | 0 | 退票用户 |
| 6 | ticket_refund_time | datetime | 19 | 0 | Y | N | 退票时间 | |
| 7 | reason_for_refund | varchar | 64 | 0 | Y | N | 退票原因 | |
| 8 | refund_status | varchar | 64 | 0 | Y | N | 退票状态 | |
| 9 | refund_remarks | text | 65535 | 0 | Y | N | 退票备注 | |
| 10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | registered_users_id | int | 10 | 0 | N | Y | 注册用户ID | |
| 2 | user_name | varchar | 64 | 0 | Y | N | 用户名称 | |
| 3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
| 4 | user_age | int | 10 | 0 | Y | N | 0 | 用户年龄 |
| 5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
| 6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
| 7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
| 2 | title | varchar | 64 | 0 | Y | N | 标题: | |
| 3 | content | varchar | 255 | 0 | Y | N | 内容: | |
| 4 | url | varchar | 255 | 0 | Y | N | 链接: | |
| 5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
| 6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
| 7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
| 2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
| 3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
| 4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
| 5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
| 6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
| 7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
| 8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
| 2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
| 3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
| 4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
| 5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
| 6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
| 7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
| 8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
| 9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
| 10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
| 11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
| 12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
| 13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
| 14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
| 16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
| 2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
| 3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
| 4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
| 5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
| 6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
| 7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
| 8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
| 9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
4.1系统首页模块
当进入机票订票管理系统统的时候,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图,其主界面展示如下图4-1所示。
图4-1系统首页界面图
4.2登录模块
管理员、用户在登录界面输入账号+密码,完成验证,点击“登录”按钮,系统在用户数据库表中会对管理员、用户的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,其主界面展示如下图4.2所示。
图4.2登录界面图
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
4.3注册模块
注册模块满足用户两部分,当用户想要进行资料相关信息的查询管理的时候,就必须进行登录,如果没有账号的话,在登录界面,点击“注册”按钮就会跳转到注册的界面,根据提示填写好注册信息,添加提交,注册的信息在数据库中就添加完成了,然后再输入填写好的账号和密码进行登录,其主界面展示如下图4.2所示。
图4.3 注册界面图
登录的逻辑代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
4.4密码修改模块
用户使用该系统注册完成后,用户对登录密码有修改需求时,系统也可以提供用户修改密码权限。系统中所有的操作者能够变更自己的密码信息,执行该功能首先必须要登入系统,然后选择密码变更选项以后在给定的文本框中填写初始密码和新密码来完成修改密码的操作。在填写的时候,假如两次密码填写存在差异,那么此次密码变更操作失败。 界面如下图所示。
图4.4 密码修改界面图
密码修改代码如下:
/**
* 修改密码
* @param data
* @param request
* @return
*/
@PostMapping("change_password")
public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
// 根据Token获取UserId
String token = request.getHeader("x-auth-token");
Integer userId = tokenGetUserId(token);
// 根据UserId和旧密码获取用户
Map<String, String> query = new HashMap<>();
String o_password = data.get("o_password");
query.put("user_id" ,String.valueOf(userId));
query.put("password" ,service.encryption(o_password));
int count = service.selectBaseCount(service.count(query, service.readConfig(request)));
if(count > 0){
// 修改密码
Map<String,Object> form = new HashMap<>();
form.put("password",service.encryption(data.get("password")));
service.update(query,service.readConfig(request),form);
return success(1);
}
return error(10000,"密码修改失败!");
}
4.5新闻资讯模块
新闻资讯:查看航班相关的新闻、文章和订票指南等,为用户提供有用的订票建议和信息。界面如下图所示。
图4.5 新闻资讯界面图
查询新闻资讯关键代码如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
4.6航班信息模块
航班信息:浏览各类航班的详细信息,包括航班编号、航空公司、航班类型、出发地点、出发时间、预计时长、终点名称、飞机型号、机票数量、机票价格、航班详情等信息,可以进行订票、点赞、收藏、评论等,帮助用户选择合适的航班进行订票。航班信息界面如下图所示。
图4.6 航班信息界面图
订票信息提交界面如下图所示。
图4.7 订票信息提交界面图
4.8用户个人中心模块
前台用户个人中心:可以查看和管理个人相关的信息和任务,可以对包括个人首页、订单信息、退票信息、收藏等信息进行管理。
个人中心界面如下图所示。
图4.8个人中心界面图
4.9用户管理模块
用户管理:管理系统的用户账号,包括添加、编辑和删除管理员和普通用户,确保系统安全和权限管理。界面如下图所示。
图4.9系统用户管理界面图
4.10机型信息管理模块
管理员执行机型信息管理,在“机型信息管理”一栏可查看机型信息描述等信息,管理员可进行添加、重置或删除等相应操作。机型信息管理界面如下图所示。
图4.10机型信息管理界面图
第5章 系统测试
5.1测试的目的
通过前面章节的介绍,我们可以看到机票订票管理系统已经完成了,但是能不能投入使用还是未知,因为在每个项目正式使用之前必须对开发的项目进行测试,如果不进行测试一旦投入使用可能会出现很多未可知的问题,比如使用人数太多导致系统瘫痪,比如某一功能存在bug信息填写错误等,这些错误将给使用者带来很多的困扰,甚至造成更大的损失,因此测试是项目投入使用的最后一步,为用户提供一个运行顺畅、完美的项目也就是我们进行最后测试的目的。
5.2系统部分测试
用户登录功能测试:
表5.1 用户登录功能测试表
| 测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
| 用户登录模块测试 | 用户登录成功的情况 | 点击前登录界面输入账号和密码分别输入admin和admin后点击“登录”按钮。 | 登录成功并调整到用户界面 | 正确 |
航班信息添加功能测试:
表5.2 航班信息添加功能测试表
| 测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
| 航班信息添加模块测试 | 航班信息添加成功的情况 | 在航班信息的页面中将点击添加,输入航班相关信息,输入正确的信息后然后点击“提交”按钮。 | 提示添加成功 | 正确 |
| 航班信息添加模块测试 | 航班信息添加失败的情况 | 在航班信息页面中不填写的航班名称,其他信息正常输入“提交”按钮。 | 提示“添加失败,信息不能为空” | 正确 |
查询新闻资讯功能模块测试:
表5.3 查询新闻资讯功能测试表
| 测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
| 查询新闻资讯功能测试 | 查询成功的情况 | 在新闻资讯界面输入标题进行查询 | 查询成功 | 正确 |
订单信息添加功能测试:
表5.4 订单信息添加功能测试表
| 测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
| 订单信息添加模块测试 | 订单信息添加成功的情况 | 在订单信息添加管理的页面中,输入订单信息,输入正确的信息后然后点击“提交”按钮。 | 提示添加成功 | 正确 |
| 订单信息添加模块测试 | 订单信息添加失败的情况 | 在订单信息页面中不填写的订票时间,其他信息正常输入“提交”按钮。 | 提示“添加失败,信息不能为空” | 正确 |
5.3系统测试结果
通过编写机票订票管理系统的测试用例,已经检测完毕用户的登录模块、航班信息添加模块、新闻资讯查询模块、订单信息添加模块的功能测试,在对以上功能得测试过程中,发现了系统中的很多漏送并进行了完善,经过多人在线进行测试,系统完全可以正常运行,当然在后期的维护中系统将不断完善。
第6章 结语
此时项目已经完成,即使实施的时间不是很长,但是这个过程中需要准备很长的一段时间去对系统设计开发所实际到的技术进行学习。在学习的过程中,我逐渐认识得到了我自身存在的一些不足。对于一些控制是必要的应用技能,能够理解,整个过程中仅仅是一个掌握了常用的性能和控制方法,我觉得挺容易的。从该系统中,系统的分析和设计的调查数据,并且已经经历了几个月,并努力几个月,该系统已经完成。很显然,该系统仍有很多不成熟,在系统设计过程中有许多技术缺陷存在。在设计的过程中也涉及到了很多自己无法解决的问题,主要通过找专业的网站和论坛来解决这些问题,对于圆满完成我的毕业设计,他们也贡献了很大一部分力量。系统的开发环境和配置都是可以自行安装的,系统使用SpringBoot开发技术和比较成熟的MySQL数据库进行对系统前台及后台的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发。
在以后的学习及工作中,我将继续努力学习计算机方面的技术,以期在平台开发中可以更好更快的实现需求功能。
[1]Wang Q ,Ma Y ,Mao J , et al.Driving the implementation of hospital examination reservation system through hospital management.[J].BMC health services research,2024,24(1):44-44.
[2]张莹,王运霞,易超等.铁路企业差旅酒店预订系统数据治理技术研究[J].铁路计算机应用,2023,32(10):23-26.
[3]Pediatric Urgent Care Service Launches New Online Booking System for Enhanced Convenience[J].M2 Presswire,2023,
[4]王芬,罗春凤.Web Tours订票系统软件测试技术研究[J].科技与创新,2023,(18):14-17.DOI:10.15913/j.cnki.kjycx.2023.18.004.
[5]Farhan J ,Ashfaq Z K ,Shahzad R , et al.A Novel Energy-Efficient Reservation System for Edge Computing in 6G Vehicular Ad Hoc Network.[J].Sensors (Basel, Switzerland),2023,23(13):
[6]王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
[7]纪龙晨.基于深度学习的廉航客运需求预测系统的设计与实现[D].华东师范大学,2022.DOI:10.27149/d.cnki.ghdsu.2022.004873.
[8]张晶晶.航空票务管理网站开发与实现[J].现代信息科技,2022,6(20):26-30.DOI:10.19850/j.cnki.2096-4706.2022.20.007.
[9]江琳,张志强,贾静等.铁路客票系统云培训平台设计及应用[J].铁路计算机应用,2022,31(06):36-39.
[10]Flight bookings to the USA soar[J].M2 Presswire,2021,
[11]喻佳,吴丹新.基于SpringBoot的Web快速开发框架[J].电脑编程技巧与维护,2021,(09):31-33.DOI:10.16184/j.cnki.comprg.2021.09.013.
[12]陈盼.民航订票系统旅客信息动态脱敏方法研究[D].中国民航大学,2021.DOI:10.27627/d.cnki.gzmhy.2021.000497.
[13]林心达.基于民航旅客订票行为的潜在价值实证研究[D].上海财经大学,2021.DOI:10.27296/d.cnki.gshcu.2021.000435.
[14]王良升,刘小英.电影院订票系统的设计与实现[J].电脑编程技巧与维护,2021,(01):54-56.DOI:10.16184/j.cnki.comprg.2021.01.020.
[15]方兴林.线上机票预订业务中利益主体博弈关系及管理策略分析[J].中国民航飞行学院学报,2020,31(04):71-75+80.
[16]唐兴元.民航收益管理系统中的需求预测[D].中国科学院大学(中国科学院大学工程科学学院),2020.DOI:10.27983/d.cnki.ggckx.2020.000030.
[17]肖佩隆.航空订票系统的性能要求与测试分析[J].数码世界,2020,(04):65.
[18]朱程,景区门票线上预订管理系统V1.0.湖南省,湖南领先国际旅行社有限责任公司,2020-03-16.
[19]赵英明,张德栋,徐东平等.铁路客票发售与预订系统风险评估研究[J].铁道运输与经济,2020,42(01):72-76+83.DOI:10.16668/j.cnki.issn.1003-1421.2020.01.13.
[20]黄向东,解艳君.企业差旅订票系统设计与应用[J].中国管理信息化,2020,23(01):187-189.
结束语
至此论文结束,感谢您的阅读。在此我要特别的感谢我的导师,虽然我在实习期间很忙,论文撰写的时候经常是停停改改,但是我的导师依旧十分的负责,时不时的询问我的任务进展情况,跟进我的论文进度,在指导老师的帮助下,我逐步完成了自己的论文和程序,从导师身上也学习到很多知识和经验,这些知识和经验令我受益匪浅。同时我也从导师身上看到了自己的不足,不论是在技术层面上还是在对待工作的态度上,导师如同明镜一般照出了我的缺点我的不足。此外,我还要感谢在我实习期间在论文和程序上帮助过我的同学和社会人士,此前我对于SpringBoot框架方面的一些知识还不了解,是他们在我编写程序过程中给了我很多的启发和感想,也帮助了我对于程序的调试和检测。没有他们我是不能顺利完成本次毕业设计的。至此,我的毕业设计就画上了一个圆满的句号了。
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢!

被折叠的 条评论
为什么被折叠?



