摘要
信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。个人旅游系统小程序问题,对个人旅游系统小程序进行研究分析,然后开发设计出基于springboot个人旅游系统小程序以解决问题。
个人旅游系统小程序的设计是采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采用的数据库是Mysql,使用Spring Boot框架技术构建的一个管理系统,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。个人旅游系统小程序的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现个人旅游系统小程序的部署运行使用它。
关键词:个人旅游系统小程序 ;Spring Boot框架;Mysql数据库;
Abstract
In the information society, there is a need for targeted information acquisition channels, but the expansion of these channels is basically the direction that people are striving for. Due to the deviation in their perspective, people often have access to different types of information, which is also the most difficult problem for technology to overcome. Research and analyze the personal tourism system mini program problem, and then develop and design a personal tourism system mini program based on Springboot to solve the problem.
The design of the personal tourism system mini program adopts an object-oriented development model for software development and hardware setup, which can well meet the practical needs of use, improve the corresponding software setup and program coding work, use MySQL database, and use Spring Boot framework technology to build a management system, realizing all the functions of this system. This report first analyzes the background, role, and significance of the research, laying the foundation for the rationality of the research work. The various requirements and technical issues of the personal tourism system mini program were analyzed, proving the necessity and technical feasibility of the system. Then, a basic introduction was made to the technical software and design ideas required for designing the system. Finally, the deployment and operation of the personal tourism system mini program were implemented.
Keywords:Personal travel system mini program; Spring Boot framework; MySQL database;
第1章 引 言
1.1 选题背景及意义
在当今数字化社会背景下,个性化服务的需求日益凸显,尤其是在旅游行业,用户对于个性化、精准推荐的旅游产品与服务有着强烈需求。基于协同过滤算法的个人旅游系统小程序应运而生,其选题旨在利用大数据和人工智能技术,通过对海量用户行为数据进行深度挖掘与分析,实现对用户兴趣偏好、消费习惯等个体特征的精准把握。该系统通过协同过滤算法,能够有效发掘用户间的隐性关联,找出具有相似行为模式的群体,进而为每个用户提供定制化的旅游路线、景点推荐及各类旅行服务信息。其重要意义在于提升用户体验,提高旅游产品的转化率,推动旅游行业的智能化升级,同时也有助于旅游企业优化资源配置,实现更高效的市场营销和服务策略。
1.2 国内外研究概况
近年来,国内外对于基于协同过滤算法的个人旅游系统的研究与应用呈现出蓬勃发展的态势。在国外,诸如TripAdvisor、Expedia等知名在线旅游平台,已经将协同过滤算法广泛应用于个性化推荐系统中,通过分析用户的浏览历史、评价记录以及购买行为等多维度数据,实现对全球各地旅游资源的精准匹配和个性推送。在国内,随着移动互联网的普及和旅游业的快速发展,诸多旅游类小程序如马蜂窝、去哪儿网等也在积极探索并实践协同过滤算法在旅游个性化推荐中的运用,结合本土化特点,深入挖掘用户个性化需求,以期在激烈的市场竞争中提供差异化的服务体验。
与此同时,学术界也针对协同过滤算法在旅游推荐领域的适应性和优化进行了深入研究,包括改进传统协同过滤算法的冷启动问题、探索深度学习与协同过滤的有效融合、以及考虑时间、地点等多元因素对旅游推荐效果的影响等,不断丰富和完善了基于协同过滤的个人旅游系统的设计理论与方法体系。
1.3 论文结构安排
第一章:引言,介绍研究背景和动机,概述研究目的和意义,概括国内外研究现状,并提供论文结构概述。
第二章:系统需求分析,通过用户需求分析和功能需求分析,明确用户对系统的需求和系统应具备的功能。
第三章:系统设计,设计系统架构,包括选择合适的架构模式和数据库设计,以及各个模块的详细设计。
第四章:系统实现,选择合适的技术工具和框架,逐一实现各个模块,建立数据库连接并实现前端界面开发。
第五章:系统测试,进行单元测试、集成测试和整体系统测试,确保系统功能的正确性、协调性和稳定性。
第六章,总结,总结研究工作的主要内容和成果,评价系统的优点和不足,并提出改进和进一步研究的建议,强调研究的意义和影响。
第2章 系统分析
2.1 系统可行性分析
2.1.1 技术可行性分析
个人旅游系统小程序采用了Spring Boot框架,开发了功能完备、使用简单的前端应用程序,并建立、维护了一个数据完整、安全、稳定性强的后台数据库系统。
系统使用Spring Boot框架和Mysql数据库作为设计工具,可简单易行地学习操作。用户角色之间的相结合开发一套个人旅游系统小程序是值得尝试的,数据完整性和许多品质为数据的功能分配和管理提供了依据。它也是数据库安全平台的重要组成部分,是提高和增强数据安全性的重要手段。此外,为了提供更平滑,更智能和更有效的基本控制方法,定义了同时构建对安全计算环境的支持所需的步骤,并帮助维护安全性。因为在这两种开发工具中,功能强大且免费且界面良好,所以个人旅游系统小程序在技术方面是可行的。
2.1.2 经济可行性分析
个人旅游系统小程序管理的开发是由开发者自己开发,不需要购买其他软件或者端口之类的,而且在个人旅游系统小程序管理的开发之前所做的市场调研及其他的个人旅游系统小程序,都是没有任何费用的,通过开发者自己的努力,所有的工作的都是自己亲力亲为,在碰到自己比较难以解决的问题,大多是通过同学和指导老师的帮助进行相关信息的解决,所以对于个人旅游系统小程序的开发在经济上是完全可行的,没有任何费用支出的。
使用Spring Boot框架是比较成熟的技术,所以个人旅游系统小程序的开发在经济上是没有问题的。
2.1.3 操作可行性分析
可操作性主要是对个人旅游系统小程序系统设计完成后,用户的使用体验度,对于管理员可以通过系统随时管理相关的数据信息,并且对于管理员、用户角色,都可以简单明了的进入到自己的系统界面,通过界面导航菜单可以简单明了地操作功能模块,方便用户信息需求和考资讯管理数据信息,对于系统的操作,不需要专业人员都可以直接进行功能模块的操作管理,所以在系统的可操作性是完全可以的。本系统的操作使用的也是界面窗口进行登录,所以操作人员只要会简单的电脑操作就完全可以的。
2.2 系统需求分析
2.2.1 功能需求分析
个人旅游系统小程序我划分为了用户管理模块和管理员模块模块这两大部分。
旅游用户功能:
- 登录:个人旅游系统小程序前台注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码后,点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到个人旅游系统小程序的首页中;否则将会提示相应错误信息。
(2)旅游攻略:当用户点击下方导航栏“旅游攻略”这一菜单按钮,会显示管理员在后台发布的所有的旅游攻略,可以查看详情,进行收藏、点赞、评论等。
(3)景区中心:当用户点击下方导航栏“景区中心”这一菜单按钮,会显示管理员在后台发布的所有的景区中心,可以查看详情,进行预下单购票、点赞、评论、收藏等。
(4)我的模块:旅游用户在前台点击“我的”可以对用户的基本信息、收藏、购票订单、取消订单、留言板管理)等信息进行管理。
管理员端:
(1)系统用户:包括用户账号的添加、编辑和删除操作,可以查看用户信息、修改用户权限、冻结或解冻用户账号等。
(2)购票订单管理:点击“购票订单”这个菜单,可以查看到所有购票订单详情,可以进行增删改查等操作。
(3)取消订单管理:点击“取消订单”这个菜单,可以查看到所有取消订单详情,可以进行增删改查等操作。
(4)系统管理:当管理员点击“系统管理”时,可查看轮播图管理,如需添加新的轮播图,点击右侧“新增”按钮,上传图片,输入标题,点击“确认”按钮进行添加。
(5)旅游公告管理:当管理员点击“旅游公告管理”时,可查看旅游公告信息理,如需添加新的公告信息,点击右侧“新增”按钮,上传图片,输入标题,点击“确认”按钮进行添加。
(6)资源管理:当管理员点击“资源管理”时,可查看旅游攻略、攻略分类;如需添加新的资讯列表,点击左侧“添加”按钮,上传封面图,输入标题,选择分类,输入标签、描述和正文,点击“提交”按钮进行添加。同时可以对资讯信息进行增删改查。
2.2.2.非功能性需求分析
非功能性分析旨在评估个人旅游系统小程序的非功能需求和性能要求。通过对性能、可靠性、安全性、可用性和扩展性等方面进行评估,确保平台能够满足用户和系统运行的要求。具体如下3-1表格中:
表2.1 个人旅游系统小程序非功能需求表
非功能性要求 | 说明 |
性能 | 评估响应时间、并发用户数、吞吐量等指标,以确保平台稳定高效地运行。 |
可靠性 | 评估系统的稳定性、容错能力和数据完整性,保障系统在故障情况下正常运行。 |
安全性 | 评估用户身份认证、数据加密和访问控制等,保护用户信息和交易的安全。 |
可用性 | 评估系统的稳定性、故障处理能力和用户界面友好性,提供良好的用户体验。 |
扩展性 | 评估系统的可扩展性和灵活性,以便根据需求进行功能扩展和升级。 |
2.3系统用例分析
系统用例分析是对个人旅游系统小程序中各个功能模块的用户需求和行为进行分析,以识别和描述不同的用户用例。通过系统用例分析,可以深入了解用户在平台上的操作流程,为系统设计和开发提供指导,并确保平台能够满足用户的需求和期望。
个人旅游系统小程序中旅游用户角色用例图如图2.1所示:
图2.1旅游用户角色用例图
个人旅游系统小程序中管理员用例图如图2.2所示:
图2.2 管理员用例图、
2.4 本章小结
在系统分析的章节中,我们通过可行性分析、功能分析和系统用例分析等方法,全面评估了个人旅游系统小程序的可行性、功能需求以及用户需求。这些分析为后续的系统设计和开发提供了重要的指导和决策依据,确保平台能够满足用户需求,并实现预期目标和效益。
第三章 系统设计
个人旅游系统小程序总体设计包括系统架构、数据库设计、用户界面设计等方面。通过三层架构模式,确保系统的可靠性和可扩展性。设计规范化的数据库结构,以存储和管理商品信息、用户数据等。同时,注重用户界面的友好性和易用性,提供便捷的功能操作和良好的用户体验。总体设计的目标是实现一个稳定、安全、高效的个人旅游系统小程序,满足用户的需求。
3.1 系统架构设计
在系统架构设计中,我们将确定系统的整体结构和组件之间的关系。这包括选择适当的架构风格,划分系统的层次结构,并定义各个模块的职责和交互方式。架构图如下图所示。
图3-1个人旅游系统小程序架构设计图
表现层(Presentation Layer):负责与用户进行交互,将系统的功能和数据以易于理解和操作的方式展示给用户。通常包括用户界面、页面设计和用户输入验证等。
业务逻辑层(Business Logic Layer):处理系统的核心业务逻辑,包括对用户请求的处理、业务规则的执行以及数据的处理和转换。它独立于表现层和数据层,实现了业务逻辑的封装和复用。
数据层(Data Layer):负责数据的存储、访问和管理,包括数据库和持久化机制。数据层提供了对数据的增删改查操作,并与业务逻辑层进行交互,使系统能够有效地存储和检索数据。
这三个层次相互独立,通过明确的接口和协议进行通信,实现了系统的模块化和可扩展性。表现层负责将用户的请求传递给业务逻辑层,业务逻辑层处理请求并返回结果,最后数据层负责与数据库交互并提供数据支持。这种分层架构有助于实现系统的可维护性、灵活性和可测试性。
3.2 系统功能模块设计
通过整体功能模块设计,我们将根据需求分析的结果,将系统的功能划分为不同的模块。每个模块负责实现特定的功能,并与其他模块进行协作。我们将详细定义每个模块的输入、输出、处理逻辑和相互依赖关系。具体的功能模块图如图3.1所示。
图3.1 个人旅游系统小程序功能模块图
3.3 数据库设计
数据库设计是系统开发中至关重要的一环,它涉及到数据的组织、存储和管理。在数据库设计中,我们将根据系统的需求设计数据库的概念结构和逻辑结构,包括定义实体、属性、关系和约束等。
3.3.1 数据库概念结构设计
数据库概念结构设计主要涉及数据库的实体和实体之间的关系。通过实体-关系模型或者其他适当的模型,我们将定义系统中涉及的各个实体以及它们之间的联系。下面是整个个人旅游系统小程序的总E-R关系图。
图3.2 个人旅游系统小程序总E-R关系图
3.3.2 数据库逻辑结构设计
数据库逻辑结构设计则是在概念结构的基础上,进行具体的数据库表设计。我们将定义每个表的结构、字段和约束,并建立表与表之间的关系。具体如下。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | cancel_order_id | int | 10 | 0 | N | Y | 取消订单ID | |
2 | order_number | varchar | 64 | 0 | N | N | 订单号 | |
3 | attraction_name | varchar | 64 | 0 | Y | N | 景点名称 | |
4 | types_of_attractions | varchar | 64 | 0 | Y | N | 景点类型 | |
5 | cover | varchar | 255 | 0 | Y | N | 封面 | |
6 | ticketing_unit_price | int | 10 | 0 | Y | N | 0 | 售票单价 |
7 | tourist_attraction_phone_number | varchar | 64 | 0 | Y | N | 景点电话 | |
8 | attraction_address | varchar | 64 | 0 | Y | N | 景点地址 | |
9 | cancel_date | date | 10 | 0 | Y | N | 取消日期 | |
10 | ticketing_users | int | 10 | 0 | Y | N | 0 | 购票用户 |
11 | mobile_phone_number | varchar | 64 | 0 | Y | N | 手机号码 | |
12 | cancel_quantity | int | 10 | 0 | Y | N | 0 | 取消数量 |
13 | refund_amount | varchar | 64 | 0 | Y | N | 返款金额 | |
14 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
15 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
16 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
17 | 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 | 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 | message_id | int | 10 | 0 | N | Y | 留言板ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 用户ID: |
3 | title | varchar | 64 | 0 | Y | N | 标题: | |
4 | content | longtext | 2147483647 | 0 | N | N | 内容: | |
5 | nickname | varchar | 32 | 0 | N | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像: | |
7 | | varchar | 125 | 0 | Y | N | 留言者邮箱 | |
8 | phone | varchar | 11 | 0 | Y | N | 留言者手机号码 | |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
11 | reply | longtext | 2147483647 | 0 | Y | N | 回复 | |
12 | reply_state | tinyint | 4 | 0 | Y | N | 0 | 回复状态 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 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 | scenic_area_center_id | int | 10 | 0 | N | Y | 景区中心ID | |
2 | attraction_name | varchar | 64 | 0 | Y | N | 景点名称 | |
3 | types_of_attractions | varchar | 64 | 0 | Y | N | 景点类型 | |
4 | cover | varchar | 255 | 0 | Y | N | 封面 | |
5 | ticketing_unit_price | int | 10 | 0 | Y | N | 0 | 售票单价 |
6 | tourist_attraction_phone_number | varchar | 64 | 0 | Y | N | 景点电话 | |
7 | attraction_address | varchar | 64 | 0 | Y | N | 景点地址 | |
8 | introduction_to_scenic_spots | longtext | 2147483647 | 0 | Y | N | 景点介绍 | |
9 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | 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 | ticket_purchase_order_id | int | 10 | 0 | N | Y | 购票订单ID | |
2 | order_number | varchar | 64 | 0 | Y | N | 订单号 | |
3 | attraction_name | varchar | 64 | 0 | Y | N | 景点名称 | |
4 | types_of_attractions | varchar | 64 | 0 | Y | N | 景点类型 | |
5 | cover | varchar | 255 | 0 | Y | N | 封面 | |
6 | ticketing_unit_price | int | 10 | 0 | Y | N | 0 | 售票单价 |
7 | tourist_attraction_phone_number | varchar | 64 | 0 | Y | N | 景点电话 | |
8 | attraction_address | varchar | 64 | 0 | Y | N | 景点地址 | |
9 | booking_period | date | 10 | 0 | Y | N | 订票日期 | |
10 | ticketing_users | int | 10 | 0 | Y | N | 0 | 购票用户 |
11 | mobile_phone_number | varchar | 64 | 0 | Y | N | 手机号码 | |
12 | number_of_tickets_purchased | int | 10 | 0 | Y | N | 0 | 购票数量 |
13 | payment_amount | varchar | 64 | 0 | Y | N | 支付金额 | |
14 | pay_state | varchar | 16 | 0 | N | N | 未支付 | 支付状态 |
15 | pay_type | varchar | 16 | 0 | Y | N | 支付类型: 微信、支付宝、网银 | |
16 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
17 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | tourism_users_id | int | 10 | 0 | N | Y | 旅游用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | mobile_phone_number | varchar | 64 | 0 | Y | N | 手机号码 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
6 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | types_of_attractions_id | int | 10 | 0 | N | Y | 景点类型ID | |
2 | types_of_attractions | varchar | 64 | 0 | Y | N | 景点类型 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | 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 | 会员折扣 |
表user_group (用户组:用于用户前端身份和鉴权)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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章 关键模块的设计与实现
4.1 登录模块
用户登录界面用于已注册用户进行账号登录,用户需要输入正确的用户名和密码才能成功登录系统。登录界面应对用户的输入进行验证,并提供密码找回或重新注册的选项。界面如下图所示。其主界面展示如下图4.1所示。
图4.1 登录界面图
登录代码如下:
* 登录
* @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.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}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.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
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());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
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.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.3 景区中心查看界面图
景区中心管理:点击“景区中心”这个菜单,可以查看到所有景区中心详情,可以进行增删改查等操作。界面如下图所示。
图4.4 景区中心添加界面图
4.4 购票订单模块
购票订单:当用户点击下方导航栏“购票订单”这一菜单按钮,可以查看详情,进行相对应操作等。界面如下图所示。
图4.5 购票订单查看界面图
购票订单管理:可以查看到所有购票订单详情,进行查询,添加、删除等操作。界面如下图所示。
图4.6购票订单管理界面图
4.5 取消订单模块
取消订单:当用户点击下方导航栏“取消订单”这一菜单按钮,可以查看详情,进行相对应操作等界面如下图所示。
图4.7 取消订单界面图
取消订单管理:可以查看到取消订单详情,进行查询,添加、删除等操作,界面如下图所示。
图4.8 取消订单管理界面图
4.6 系统用户界面
系统用户:包括用户账号的添加、编辑和删除操作,可以查看用户信息、修改用户权限、冻结或解冻用户账号等。界面如下图所示。
图5.9系统用户界面图
4.7 资讯管理界面
资讯管理:管理员点击“资讯管理”这个菜单,可以查看到所有资讯详情,可以进行增删改查等操作。界面如下图所示。
图5.10资讯管理界面图
第五章 系统测试
5.1 测试的目的
测试目的是为了验证系统的功能、性能和稳定性,以确保系统在实际应用中能够达到预期的要求。通过测试,可以发现潜在的问题和缺陷,并及时进行修复和改进。测试还可以评估系统的可靠性、安全性和用户体验,以提供一个高质量和可信赖的产品。此外,测试也有助于验证系统是否满足用户需求和预期,是否符合相应的标准和规范。总之,测试的目的是为了确保系统的质量和可靠性,从而为用户提供良好的使用体验和价值。
5.2 系统部分测试
表5.1 用户注册测试用例
测试编号 | 测试内容 | 预期结果 |
TC-001 | 输入有效信息 | 注册成功,跳转到登录页面 |
TC-002 | 输入已存在账号 | 显示账号已存在的提示信息 |
TC-003 | 输入无效信息 | 显示注册失败的提示信息,要求重新输入有效信息 |
表5.2 用户登录测试用例
测试编号 | 测试内容 | 预期结果 |
TC-004 | 输入正确的账号密码 | 登录成功,跳转到个人主页 |
TC-005 | 输入错误的账号密码 | 显示登录失败的提示信息,要求重新输入正确的账号密码 |
表5.3 修改密码测试用例
测试编号 | 测试内容 | 预期结果 |
TC-006 | 输入有效密码 | 密码修改成功,显示修改成功的提示信息 |
TC-007 | 输入无效密码 | 显示密码无效的提示信息,要求重新输入有效密码 |
TC-008 | 输入错误原密码 | 显示原密码错误的提示信息,要求重新输入正确原密码 |
表5.4 取消订单测试用例
测试编号 | 测试内容 | 预期结果 |
TC-009 | 输入有效的取消订单试驾 | 取消订单成功,显示记录成功的提示信息 |
TC-010 | 输入无效的取消订单试驾 | 显示记录失败的提示信息,要求重新输入有效信息 |
表5.5查看购票订单测试用例
测试编号 | 测试内容 | 预期结果 |
TC-014 | 点击查看购票订单 | 显示购票订单页面,展示相关的文章、新闻等内容 |
TC-015 | 选择其他分类 | 显示所选分类下的相关文章、新闻等内容 |
TC-016 | 无可用购票订单信息 | 显示暂无购票订单的提示信息,提醒用户重新选择分类 |
5.3 系统测试结果
综上所述,个人旅游系统小程序在功能测试中表现良好,通过了所有测试用例。系统提供的用户注册、登录、修改密码、查看景区中心和查看购票订单等主要功能都能正常运行,并能够给出预期的提示信息和结果。然而,为了确保系统的全面稳定性和质量,仍建议进行更多的综合性测试,包括性能测试、安全性测试和用户体验测试等,以进一步验证和改进系统的功能和性能。
第六章 结论
本研究设计并实现了个人旅游系统小程序。通过对系统进行功能测试和评估,得出以下结论:该系统在功能上经过验证,用户注册、登录、取消订单、景区中心、购票订单等功能都能正常运行;技术上具备稳定性和可扩展性,小程序提供跨平台应用,springboot框架简化开发,MySQL数据库支持数据存储与查询;从经济角度看,小程序开发成本低,springboot和MySQL均为免费且开源;操作上易用性好,小程序界面简洁明了,springboot的自动化部署与MySQL的管理工具提供便捷操作。
综上所述,个人旅游系统小程序在功能、技术、经济和操作上均具有优势。满足用户需求并提供更好的用户体验。
参考文献
[1]王晓俊,易雪,赵旭等. 微信小程序在手术室医疗设备管理中的应用 [J]. 检验医学与临床, 2024, 21 (04): 552-555.
[2]陈锦. 校园智能导览小程序的设计与实现 [J]. 襄阳职业技术学院学报, 2024, 23 (01): 88-92.
[3]孙梦菲,周天源,王天澍. 基于微信小程序的校园社团管理系统设计与实现 [J]. 现代信息科技, 2024, 8 (03): 40-44. DOI:10.19850/j.cnki.2096-4706.2024.03.009.
[4]李娇雅,汪济旭,李雨欣等. 基于微信小程序的远程医疗预约系统设计 [J]. 集成电路应用, 2024, 41 (02): 78-79. DOI:10.19339/j.issn.1674-2583.2024.02.028.
[5]Hsiung S C ,Yu T L ,Ching W W . Investigating the spatial effect of operational performance in China’s regional tourism system [J]. Humanities and Social Sciences Communications, 2024, 11 (1):
[6]陈欣苹,赵子潇,程文莉. 基于大数据的题库微信小程序的设计与开发 [J]. 电脑知识与技术, 2024, 20 (03): 65-68. DOI:10.14004/j.cnki.ckt.2024.0060.
[7]白茹鑫. 基于SpringBoot+SSM框架的企业安全培训管理系统设计与实现 [J]. 现代信息科技, 2024, 8 (01): 44-49. DOI:10.19850/j.cnki.2096-4706.2024.01.009.
[8]Wu J ,Chen N ,Xia H , et al. Design and development of the intelligent voice recognition‐based cognitive assessment WeChat mini‐program [J]. Alzheimer's & Dementia, 2023, 19 (S11):
[9]姜一波. 基于SpringBoot+Vue的在线考试系统设计与实现 [J]. 无线互联科技, 2023, 20 (23): 68-71.
[10]刘瑞享,王玉婷. 智能城市旅游发展现状与趋势分析 [J]. 智能城市, 2023, 9 (11): 73-76. DOI:10.19301/j.cnki.zncs.2023.11.023.
[11]Na T ,Xieyu C . Research on Factors Influencing User Growth of Mini-program Games [J]. Academic Journal of Humanities & Social Sciences, 2023, 6 (22):
[12]游晶,邱淑丽,李敬文. 基于SpringBoot的校园智慧报修系统的设计与实现 [J]. 电脑知识与技术, 2023, 19 (32): 50-52+65. DOI:10.14004/j.cnki.ckt.2023.1718.
[13]Mengdi L ,Yifang D ,Xiaoman W . Evaluation of the coupling and coordination degree of eco-cultural tourism system in the Jiangsu-Zhejiang-Shanghai-Anhui region [J]. Ecological Indicators, 2023, 156
[14]李蓉,沈克印. 乡村体育旅游助力乡村振兴的作用机制与推进策略[C]// 中国体育科学学会. 第十三届全国体育科学大会论文摘要集——专题报告(体育产业分会). 武汉体育学院;, 2023: 3. DOI:10.26914/c.cnkihy.2023.067638.
[15]张大秀,朱屹诚. 基于Java的碧海苍梧旅游系统设计与实现 [J]. 现代信息科技, 2023, 7 (11): 1-6. DOI:10.19850/j.cnki.2096-4706.2023.11.001.
[16]赵培培,鲁明勇. 新基建与旅游业的关联研究[C]// 中国旅游研究院. 2023中国旅游科学年会论文集(下). 吉首大学;, 2023: 9. DOI:10.26914/c.cnkihy.2023.078576.
[17]陶旭文,肖诚,谷余等. 南岳虚拟旅游系统设计 [J]. 旅游与摄影, 2023, (07): 74-76.
[18]王婷. 数字化背景下景区智慧旅游系统游客使用意愿影响机制研究 [J]. 旅游纵览, 2023, (01): 35-39.
[19]Cheng F . Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework [J]. Advances in Educational Technology and Psychology, 2021, 5 (2):
[20]莫晶,裴大容. 基于微信小程序的旅游系统的实现 [J]. 电脑编程技巧与维护, 2020, (07): 55-57. DOI:10.16184/j.cnki.comprg.2020.07.020.
致谢
在完成本论文的过程中,我要由衷感谢所有支持和帮助我的人。首先,我要感谢我的指导教练,他们给予了我宝贵的指导和建议,帮助我顺利完成研究工作。他们的专业知识和经验对我产生了深远的影响。此外,我要感谢我的家人和朋友,他们在我整个研究过程中给予了我无尽的鼓励和支持。他们相信我能够克服困难、坚持不懈地追求目标,这让我时刻保持积极向上的心态。最重要的是,我要感谢自己。在研究的过程中,我遇到了各种挑战和困难,但我从未放弃,始终保持着坚定的信念和努力的精神。正是这种勇气和毅力使我能够完成这项研究工作,并取得了令人满意的成果。
通过这次研究,我学到了很多知识和技能,也收获了自信和成长。我相信,只要我坚持努力和持续学习,就能够实现更大的成就和突破。因此,我将继续努力,为自己的梦想奋斗,成为一个有影响力和价值的人。最后,我再次向所有支持和帮助过我的人表示深深的感谢。你们的支持是我前进的动力,我会铭记于心,并用更好的成绩回报你们的期望和信任。谢谢!