SpringBoot红色旅游小程序 计算机毕设源码26537

 

大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势。在旅游规划的需求下,开发一款旅游小程序,将复杂的系统进行拆分,能够实现对需求的变化快速响应、系统稳定性的保障,能保证平台可持续、规模化发展的要求。

本文研究的红色旅游小程序完善了对应的软体架设以及程序编码的工作,采用Java开发语言、微信小程序作为前端框架、Springboot框架等进行业务系统的编码及其开发,实现了本系统的全部功能。同时完成以下基本功能:首页,网站公告,旅游资讯,景点信息,车票信息,路线推荐,景点酒店,景点餐厅,交流中心,个人中心等。

关键词:红色旅游小程序;Java;小程序;SpringBoot框架

                                     SpringBoot Red Travel Mini Program

Abstract

  In the era of big data, data is growing explosively. In order to meet the trend of the information age and the requirements of information security, using the Internet to serve other industries and promote production has become an unstoppable trend. In the context of tourism planning, developing a tourism mini program that breaks down complex systems can achieve rapid response to changes in demand, ensure system stability, and meet the requirements of sustainable and large-scale development of the platform.

The red tourism mini program studied in this article has improved the corresponding software installation and program coding work. It uses Java development language, WeChat mini program as the front-end framework, Springboot framework, etc. to code and develop the business system, achieving all the functions of this system. Simultaneously complete the following basic functions: homepage, website announcement, travel information, attraction information, ticket information, route recommendation, attraction hotels, attraction restaurants, communication center, personal center, etc.

Key words:Red tourism mini program; Java; Mini program; SpringBoot framework

目  录

摘 要

Abstract

第1章 绪论

1.1 研究背景与意义

1.2 开发现状

第2章 开发工具及相关技术介绍

2.1 小程序框架

2.2 SpringBoot后端框架

2.3 Java开发语言

2.4 JavaScript 运行模式

第3章 系统分析

3.1 可行性分析

3.1.1 技术可行性

3.1.2 经济可行性

3.1.3 操作可行性

3.2 需求分析

3.3 系统业务流程分析

3.4 系统数据流程分析

第4章 系统设计

4.1 系统架构设计

4.2 系统功能结构

4.3 数据库设计

4.3.1 概念模型设计

4.3.2 数据表

第5章 系统实现

5.1 登录模块的实现

5.2 用户功能模块的实现

5.2.1 用户首页模块

5.2.2 用户注册模块

5.2.3 旅游资讯模块

5.2.4 交流中心模块

5.2.5 景点信息模块

5.2.6 车票信息模块

5.2.7 路线推荐模块

5.2.8 景点酒店模块

5.2.9 景点餐厅信息模块

第6章 系统测试

6.1 测试目的

6.2 测试用例

6.2.1 登录测试

6.2.2 注册测试

第7章 总结与展望

参考文献

致谢

  1. 绪论
    1. 研究背景与意义

互联网已经成为人们快速获取信息的渠道,各种网站或是小程序都在积极的朝向信息多元化与集合化方向发展。信息的快速传递,对我们生活的方方面面都产生着积极的影响,根据中国互联网信息中心(CNNIC)发布的《中国互联网发展状况统计报告》显示,截至2019年6月,中国网民规模达到8.54亿,随着智能手机的普及,许多之前通过纸质媒介传递的信息大多被迁移到网络之中,这对旅游者们来说无疑是一个巨大的帮助。

随着中国经济的发展,我国正处于全面建成小康社会的大环境下,整体国民的衣食住行已经得到了保障,根据马斯洛需要层次理论,大部分人的生理需求与安全需求已经得到了很好地满足,更多的是归属与爱的缺失,现实生活中,人们的生活节奏加快,工作压力较大,容易造成身心疲惫。为了消除身体疲劳、精神紧张,缓解压力,许多人们选择外出旅游,希望改变一下自己的生活环境,异乡的环境、新奇的事物给人们带来新鲜的感受和刺激,能够帮助人们从紧张的日常生活中暂时解脱出来。人们对于旅游的需求也越来越大,特别是近年民众对于红色景区的关注在不断提升,但由于目前旅游信息来源分散导致用户旅游规划效率低下,因此,我想设计开发一个红色旅游小程序以解决课题。

    1. 开发现状

在国外的旅游网站建设中,旅游信息管理系统主要有三种:第一种是以国家旅游行政部门为中心建设的旅游资讯网站。在这种网站的建设紧紧依托于分布全国各地景点、旅行社、商场的旅游问讯处、酒店、饭店和旅游公司、办事处设立咨询机构或咨询网站,雇佣人员发布旅游信息或旅游服务意愿,收集游客旅游意向,其中比较着名的是丹麦数据库信息系统(DANDATA)。第二种是以各地区为中心的网络覆盖整个城市群的旅游网站,该旅游网络信息的主要特征在旅游比较发达的州、联邦城市群和地区建立的能够链接当地地区的信息系统。这种系统能够对当地旅游公司和旅游信息设备等进行识别,并且进行覆盖。比较有代表性的是欧洲蒂洛尔(TYROL)信息系统。第三种是地区性的网络结构,既是由多个地区性的信息系统联网形成,荷兰作为这个系统的代表,首先在一个地区性的范围内,建立了联网系统其次是英国,他们的做法是将各个国家之间进行联网。

我国目前的旅游信息查询系统的各个方面与国际先进水平都有差距,与旅游信息查询系统所要求的信息化环境要求、市场化要求、国际化要求的落差也非常大。伴随着旅游业的不断发展和日趋壮大,旅游信息化管理的重要性与日俱增。我国旅游信息管理系统还在受着技术驱动和信息技术厂商推动的影响,在目前的系统中只注重了相关专业的信息方面的技术设计,却忽视了旅游发展的实际需要。另外,我国旅游信息管理系统由于发展晚,进行缓慢,往往只看到了表层缺少了对信息资源更深、更有效的加工和利用,从而很难的发挥信息资源的作用,提高企业在同行业当中的竞争力、增加企业财富就较为困难,因此严重制约了本行业的发展。另外,我国旅游信息管理系统具有单向传播的特性,对旅游信息查询系统这一平台的利用少之又少,应加强旅游行政部门之间、企业与企业之间。服务人员与旅游者之间的信息交流。

因此,我想参考同类系统的设计思路,设计一款方便使用的红色旅游小程序。

  1. 开发工具及相关技术介绍
    1. 小程序框架 

小程序是一种不需要下载即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。 体现了“用完即走”的理念,用户不用关心是否安装了太多 的应用这样的问题。应用将无处不在,随时可用,但又无须安装和卸载。无需下载,使用方便。

在APP时代,我们要用一项功能,一般需要许多步骤。通 常我们需要先去应用市场寻找能实现我们需要功能的应用,之后要下载并安装应用,在使用之前要在手机的桌面上找到 该应用,之后打开使用。而在小程序时代,只需要“搜索”或者“扫一扫”,就可以打开应用了,省去了下载和安装的环节,人和功能的联结将变得更简单,更直接。微信小程序依附于微信这个“航母”应用上,而微信拥有强大的用户群体,小程序继承了用户群这一强大优势,能够轻松解决流量访问问题。在微信平台上开发的小程序更容 易触达用户。对用户而言,如何使用、分享小程序,如何参与活动等都不需要再学习,这是其他平台都不具备的。

除了使用更加便捷外,小程序的“小身材”也能为我 们的手机大大减轻负担。我们的手机中都装了数量不少的APP,一般情况下,安装一个APP需要占用上百兆字节,有些游戏甚至需要用上几个吉字节的内存。手机容量小的用户一旦多装了几个 APP,就要面临内存不足的困扰。在这种情况下,大小不超过 2MB的小程序就成了小内存手机的救星。小程序 不需要安装,那些平时用不上、又不得不装的 APP,通过变身为小程序,就可以彻底从手机中移除了,同时也使得手机桌面更加整洁。

    1. SpringBoot后端框架

Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。

    1. Java开发语言

Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,Java servlet API,JSP(Java server pages),和XML技术。Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只需要知道一些概念就能够编写出一些应用程序。Java程序相对较小,其代码能够在小机器上运行。Java是一种计算机编程语言,具有封装、继承和多态性三个主要特性,广泛应用于企业Web应用程序开发和移动应用程序开发。

Java语言和一般编译器以及直译的区别在于,Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。

    1. JavaScript 运行模式

JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的

它是一种解释性脚本语言(代码不进行预编译)。

主要用来向HTML标准通用标记语言下的一个应用)页面添加交互行为。

可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离

跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如WindowsLinuxMac小程序iOS等)。

JavaScript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。JavaScript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。

  1. 系统分析
    1. 可行性分析

在软件开发的过程中系统的可行性分析是必不可少的,可行性的研究就是评估问题是否能得到解决并且是要以最少的时间和最少的代价来解决。为实现上面的目标还要必须考虑到解决这些问题的方法的优点和缺点,还要考虑到实现了这些系统规模的开发带来的经济效益。这里可以用技术的可行性,操作的可行性,经济的可行性对我们的系统进行可行性的研究。红色旅游小程序的可行性分析如下所示:

      1. 技术可行性

红色旅游小程序的登录界面简单易于操作,采用常见的界面窗口来登录界面,通过手机进行访问操作,此系统的开发采用小程序开发,后台结合java语言,这些开发环境使系统更加完善。此平台具有易操作、易管理、交互性好的特点,在操作上是非常简单的。因此此平台可以进行开发。

      1. 经济可行性

此小程序是一个包含计算食物热量功能在内的健康管理小程序,用户可以方便的查询食物热量,记录饮食,体重等,还有健康菜谱推荐。同时智能手机的普及率非常高,性能也充分满足此小程序使用。而此平台的开发可以有效的提高健康管理效率,降低管理成本,节省管理费用,为用户的减肥效率带来了一个质的飞跃。因此,此小程序在经济上是完全具有可行性的。

      1. 操作可行性

此小程序使用的是现流行的开发语言,即Java技术。系统中的信息都可以在后台操作数据库达到数据更新的效果。用户只需要会计算机的基本操作或者会上网就可以使用此平台,系统管理员只需要懂得文件上传,处理文本即可操作管理后台。系统布局较简单,功能操作不复杂,完全符合现代市场需求。因此此平台具有操作可行性。

    1. 需求分析

根据用户对系统的需求,要求系统简单操作,能够准确,完整的对信息进行管理。红色旅游小程序在对需求做解析后,实现以下功能:

首页,网站公告,旅游资讯,景点信息,车票信息,路线推荐,景点酒店,景点餐厅,交流中心,我的(基本信息,收藏,我的订单,我的取消,车票订单,车票退订)等。

用户用例图如下所示。

图3-1 用户用例图

根据用例图,对一些重要的用例进行描述。

注册用例描述如下表所示。

表3-2 注册用例描述

用例名称

注册

参与者

用户

描述

用户填写相关信息完成注册成为系统的用户

前置条件

后置条件

用户填写相关信息并用户账号可用

事件流

  1. 用户点击注册按钮
  2. 用户填写相关信息
  3. 用户确认并提交信息
  4. 系统提示注册成功

补充说明

  1. 系统检测用户所输信息如不符合要求则提示并返回注册界面
  2. 系统检测用户所输账号不可用或已存在则提示并返回注册界面

登录用例描述如下表所示。

表3-3 登录用例描述

用例名称

登录

参与者

用户

描述

用户填写用户名和密码登录系统

前置条件

用户已注册

后置条件

用户名和密码正确

事件流

(1)用户在登录页面输入用户名和密码

(2)系统检测用户输入的用户名和密码

(3)显示登录成功并返回主页面

补充说明

(a)系统检查除密码不正确,返回登录页面

个人信息管理用例描述如下表所示。

表3-4 个人信息管理用例描述

用例名称

管理个人信息

参与者

用户

描述

用户查看、修改个人信息

前置条件

用户已登录

后置条件

事件流

(1)用户查看个人信息

(2)用户修改个人信息

补充说明

(a)用户可修改密码

(b)用户可修改联系方式

    1. 系统业务流程分析

用户在登录系统,对网站公告,旅游资讯,景点信息,车票信息,路线推荐,景点酒店,景点餐厅信息等进行搜索、查看,并进行相应的操作。

    1. 系统数据流程分析

与强调控制逻辑的程序流程图不同,它更关心的是整个系统中数据的具体流动以及数据的加工处理的整个客观过程,是对数据规格的说明。也正因如此,系统数据流图作为系统结构化分析方法中极为重要的一种描述工具备受青睐。

红色旅游小程序的顶层数据流如下图所示。

图3-5系统顶层数据流图

系统顶层数据流:外部实体为用户,第一个流程为登录验证,用户信息表返回密码验证,是否正确,正确则登录系统,错误则反馈信息,登录系统后,根据不同用户的功能选择,来读写数据库。

系统底层数据流如下图所示。

图3-6系统底层数据流图

系统底层数据流:外部实体为管理员和普通用户,数据流分别有管理员和普通用户流向系统数据流程,数据表提供数据支持,来完成逻辑操作。

  1. 系统设计
    1. 系统架构设计

红色旅游小程序采用三层开发设计模式,分为:用户界面层,业务逻辑层和数据访问层。用户界面层用来和用户交互,业务逻辑层负责业务的处理和各层之间的数据的传递;数据访问层负责对数据库的访问和检索。

系统的架构图如下图所示。

图4-1 系统架构图

系统各层之间的调用过程如下:

(1)用户通过用户界面层访问系统,向系统提交请求,界面层对请求进行初步的处理和包装,并判断是否要与业务逻辑层进行交互。

(2)业务逻辑层接收来自界面层的请求,对请求进行数据处理。然后调用数据访问层来实现数据库访问,数据访问层访问数据库,将数据读出并返回给逻辑层。

(3)逻辑层将处理的结果,返回给界面层。界面层加以处理呈现给用户。

    1. 系统功能结构

进入系统后首先要进行登录,验证身份,赋予不同的权限。当成功登录后,页面会有多个板块,分别是首页,网站公告,旅游资讯,景点信息,车票信息,路线推荐,景点酒店,景点餐厅,交流中心,个人中心等。里面界面简单易懂,根据标示可以直接进行方便快捷的操作。功能模块如下所示。 

图4-2 系统功能图

    1. 数据库设计

一个好的系统它的后台数据库一定要考虑的全面,这和我们建造房子一个概念,房子不是随心所欲建起来的,一切都是在合理设计的基础是实现的,地基打牢固了房子才能建的更高。数据库如果设计的很合理,而且每个方面都能考虑到了那么这个系统才能不会出现大的问题。

      1. 概念模型设计

本系统在数据库中存放了多张表,分别是资讯表、景点、酒店、餐厅清单,路线表等。

系统的主要实体间关系E-R图如下图所示。

图4-7系统E-R图

      1. 数据表

表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

用户编号:

表article (文章:用于内容管理系统的文章)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

文章描述

表article_type (文章分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

更新时间:

表attraction_hotels (景点酒店)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

attraction_hotels_id

int

10

0

N

Y

景点酒店ID

2

hotel_name

varchar

64

0

Y

N

酒店名称

3

hotel_pictures

varchar

255

0

Y

N

酒店图片

4

hotel_information

varchar

64

0

Y

N

酒店信息

5

hotel_star

varchar

64

0

Y

N

酒店星级

6

number_of_remaining_rooms

int

10

0

Y

N

0

剩余房间数量

7

hotel_features

varchar

64

0

Y

N

酒店特色

8

hotel_introduction

text

65535

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

更新时间

表attraction_information (景点信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

attraction_information_id

int

10

0

N

Y

景点信息ID

2

name_of_scenic_spot

varchar

64

0

Y

N

景点名称

3

pictures_of_scenic_spots

varchar

255

0

Y

N

景点图片

4

types_of_attractions

varchar

64

0

Y

N

景点类型

5

scenic_spot_information

varchar

64

0

Y

N

景点信息

6

opening_and_closing_time

varchar

64

0

Y

N

开闭时间

7

scenic_spot_features

varchar

64

0

Y

N

景点特色

8

ticket_price

int

10

0

Y

N

0

门票价钱

9

location_of_scenic_spots

varchar

64

0

Y

N

景点位置

10

history_and_culture

longtext

2147483647

0

Y

N

历史文化

11

hits

int

10

0

N

N

0

点击数

12

praise_len

int

10

0

N

N

0

点赞数

13

recommend

int

10

0

N

N

0

智能推荐

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表attraction_restaurant (景点餐厅)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

attraction_restaurant_id

int

10

0

N

Y

景点餐厅ID

2

restaurant_name

varchar

64

0

Y

N

餐厅名称

3

restaurant_cover

varchar

255

0

Y

N

餐厅封面

4

location

varchar

64

0

Y

N

所在位置

5

restaurant_features

varchar

64

0

Y

N

餐厅特色

6

restaurant_details

longtext

2147483647

0

Y

N

餐厅详情

7

hits

int

10

0

N

N

0

点击数

8

praise_len

int

10

0

N

N

0

点赞数

9

recommend

int

10

0

N

N

0

智能推荐

10

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

11

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

更新时间:

表classification_of_scenic_spots (景点分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

classification_of_scenic_spots_id

int

10

0

N

Y

景点分类ID

2

types_of_attractions

varchar

64

0

Y

N

景点类型

3

recommend

int

10

0

N

N

0

智能推荐

4

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表collect (收藏)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

更新时间:

表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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:

表forum (论坛)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

forum_id

mediumint

8

0

N

Y

论坛id

2

display

smallint

5

0

N

N

100

排序

3

user_id

mediumint

8

0

N

N

0

用户ID

4

nickname

varchar

16

0

Y

N

昵称:[0,16]

5

praise_len

int

10

0

Y

N

0

点赞数

6

hits

int

10

0

N

N

0

访问数

7

title

varchar

125

0

N

N

标题

8

keywords

varchar

125

0

Y

N

关键词

9

description

varchar

255

0

Y

N

描述

10

url

varchar

255

0

Y

N

来源地址

11

tag

varchar

255

0

Y

N

标签

12

img

text

65535

0

Y

N

封面图

13

content

longtext

2147483647

0

Y

N

正文

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

16

avatar

varchar

255

0

Y

N

发帖人头像:

17

type

varchar

64

0

N

N

0

论坛分类:[0,1000]用来搜索指定类型的论坛帖

表forum_type (论坛分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

name

varchar

16

0

N

N

分类名称:[2,16]

3

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

4

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

5

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

6

icon

varchar

255

0

Y

N

分类图标:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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:

表my_cancellation (我的取消)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

my_cancellation_id

int

10

0

N

Y

我的取消ID

2

name_of_scenic_spot

varchar

64

0

Y

N

景点名称

3

types_of_attractions

varchar

64

0

Y

N

景点类型

4

ticket_price

int

10

0

Y

N

0

门票价钱

5

unsubscribe_user

int

10

0

Y

N

0

退订用户

6

unsubscribe_time

date

10

0

Y

N

退订时间

7

unsubscribed_quantity

int

10

0

Y

N

0

退订数量

8

unsubscribe_status

varchar

64

0

Y

N

退订状态

9

reason_for_unsubscription

text

65535

0

Y

N

退订原因

10

recommend

int

10

0

N

N

0

智能推荐

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表my_order (我的订单)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

my_order_id

int

10

0

N

Y

我的订单ID

2

name_of_scenic_spot

varchar

64

0

Y

N

景点名称

3

types_of_attractions

varchar

64

0

Y

N

景点类型

4

ticket_price

int

10

0

Y

N

0

门票价钱

5

booking_users

int

10

0

Y

N

0

订票用户

6

booking_time

date

10

0

Y

N

订票时间

7

booking_quantity

int

10

0

Y

N

0

订票数量

8

total_price

varchar

64

0

Y

N

合计总价

9

booking_status

varchar

64

0

Y

N

订票状态

10

notes_details

text

65535

0

Y

N

备注详情

11

pay_state

varchar

16

0

N

N

未支付

支付状态

12

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

13

recommend

int

10

0

N

N

0

智能推荐

14

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

更新时间:

表ordinary_users (普通用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

ordinary_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

recommend

int

10

0

N

N

0

智能推荐

7

user_id

int

10

0

N

N

0

用户ID

8

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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已取消

表route_recommendation (路线推荐)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

route_recommendation_id

int

10

0

N

Y

路线推荐ID

2

route_name

varchar

64

0

Y

N

路线名称

3

route_start

varchar

64

0

Y

N

路线起点

4

end_of_route

varchar

64

0

Y

N

路线终点

5

scenery_along_the_way

varchar

255

0

Y

N

沿途风景

6

route

varchar

64

0

Y

N

路线途经

7

route_details

longtext

2147483647

0

Y

N

路线详情

8

hits

int

10

0

N

N

0

点击数

9

praise_len

int

10

0

N

N

0

点赞数

10

recommend

int

10

0

N

N

0

智能推荐

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

更新时间:

表ticket_cancellation (车票退订)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

ticket_cancellation_id

int

10

0

N

Y

车票退订ID

2

order_no

varchar

64

0

Y

N

订单编号

3

tickets

varchar

64

0

Y

N

车票班次

4

place_of_departure

varchar

64

0

Y

N

出发地

5

terminus

varchar

64

0

Y

N

终点站

6

ticket_price

int

10

0

Y

N

0

车票价格

7

cancel_user

int

10

0

Y

N

0

取消用户

8

unsubscribe_status

varchar

64

0

Y

N

退订状态

9

cancel_time

date

10

0

Y

N

取消时间

10

reason_for_cancellation

text

65535

0

Y

N

取消原因

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

更新时间

表ticket_information (车票信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

ticket_information_id

int

10

0

N

Y

车票信息ID

2

tickets

varchar

64

0

N

N

车票班次

3

place_of_departure

varchar

64

0

Y

N

出发地

4

terminus

varchar

64

0

Y

N

终点站

5

departure_time

datetime

19

0

Y

N

出发时间

6

ticket_price

int

10

0

Y

N

0

车票价格

7

ticketing_instructions

text

65535

0

Y

N

购票须知

8

recommend

int

10

0

N

N

0

智能推荐

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表ticket_orders (车票订单)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

ticket_orders_id

int

10

0

N

Y

车票订单ID

2

order_no

varchar

64

0

Y

N

订单编号

3

tickets

varchar

64

0

Y

N

车票班次

4

place_of_departure

varchar

64

0

Y

N

出发地

5

terminus

varchar

64

0

Y

N

终点站

6

ticket_price

int

10

0

Y

N

0

车票价格

7

purchase_user

int

10

0

Y

N

0

购买用户

8

purchase_quantity

int

10

0

Y

N

0

购买数量

9

total_price

varchar

64

0

Y

N

合计总价

10

purchase_time

date

10

0

Y

N

购买时间

11

purchase_status

varchar

64

0

Y

N

购买状态

12

note_details

varchar

64

0

Y

N

备注详情

13

pay_state

varchar

16

0

N

N

未支付

支付状态

14

pay_type

varchar

16

0

Y

N

支付类型: 微信、支付宝、网银

15

recommend

int

10

0

N

N

0

智能推荐

16

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

17

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

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

email

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

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

表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

更新时间:

  1. 系统实现
    1. 登录模块的实现

该登录模块利用js进行设计,JavaScript函数CheckSubmit()对输入框是否为空进行验证,使用js的技术结合Mysql数据库的查询语句进行登录信息的验证。首先从文本框中分别获得账号user_name和密码user_pw,使用Sql语句“select * from t_user where user_name=‘”+user_name+“’ and user_pw=‘”+user_pw+“’”将查询结果赋给rs结果集,若mysql_query()返回值为空,表示数据库找不到该用户数据,若mysql_query()返回值不为空,则显示登录成功,进入主界面。

用户登录流程图如下所示。

5-1用户登录流程

用户登录流程:用户只有输入正确的用户名和密码才会成功进入系统,用户输入用户名密码后点击登录按钮,系统会进行校验该用户名是否存在,如果用户名与密码不匹配或者用户名不存在,则返回主界面。

系统登录界面如下图所示。

图5-2系统登录界面

登录功能的逻辑代码如下所示。

* 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostM小程序ing("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;

        QueryWr小程序er wr小程序er = new QueryWr小程序er<User>();

        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());

            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, "账号或密码不正确");

        }

}

    public String select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("select ");

        sql.小程序end(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).小程序end(" ");

        sql.小程序end("from ").小程序end("`").小程序end(table).小程序end("`").小程序end(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

            sql.小程序end("group by ").小程序end(config.get(FindConfig.GROUP_BY)).小程序end(" ");

       }

        f (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

            sql.小程序end("order by ").小程序end(config.get(FindConfig.ORDER_BY)).小程序end(" ");

        }

        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.小程序end(" limit ").小程序end( (page-1)*limit ).小程序end(" , ").小程序end(limit);

        }

        log.info("[{}] - 查询操作,sql: {}",table,sql);

        return sql.toString();

}

    public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseM小程序er.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

    1. 用户功能模块的实现
      1. 用户首页模块

首页载入流程图如下所示。

5-3首页载入流程

首页载入流程:系统先连接数据库,显示界面参数初始化,读取数据库的数据表,读取html显示模板,对数据按添加时间排序,按照模板设计位置显示数据,刷新显示界面,断开数据库连接。

首页如下图所示。

图5-4首页界面

其中载入首页的主要代码如下。

<?Java include_once 'qttop.Java';?>

<?Java include_once 'qtleft.Java';?>

<?Java include_once 'qtdown.Java';?>

      1. 用户注册模块

系统的用户通过自行注册生成,在系统首页点击用户注册菜单,系统跳转到对应的注册页面。点击重置按钮,清空所填数据,点击注册按钮完成注册。

用户注册流程图如下所示。

5-5用户注册流程

注册个人信息实现流程为:填写个人信息,系统使用JQuery选择器获取在网页中输入的注册信息,再对联系方式、登录密码等信息进行验证,验证通过后用Ajax异步请求方式向服务器发送请求并把数据传送到后台,然后验证用户名是否已存在,如果已存在则注册失败提示“用户名已存在”;如果用户表中没有该用户名则把用户信息加入数据库,把操作状态以json字符串方式返回到前台。Ajax请求成功接收到返回的数据时会触发成功回调函数,然后解析返回的json字符串,系统根据返回信息弹出提示框,注册成功后返回登录页。

用户注册界面如下图所示。

图5-6用户注册界面

用户注册页面的逻辑代码如下。

 * 注册

     * @return

     */

    @PostM小程序ing("register")

    public Map<String, Object> signUp(HttpServletRequest request) throws IOException {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        Map<String,Object> map = service.readBody(request.getReader());

        query.put("username",String.valueOf(map.get("username")));

        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);

}

    public Map<String,Object> readBody(BufferedReader reader){

        BufferedReader br = null;

        StringBuilder sb = new StringBuilder("");

        try{

            br = reader;

            String str;

            while ((str = br.readLine()) != null){

                sb.小程序end(str);

            }

            br.close();

            String json = sb.toString();

            return JSONObject.parseObject(json, Map.class);

        }catch (IOException e){

            e.printStackTrace();

        }finally{

            if (null != br){

                try{

                    br.close();

                }catch (IOException e){

                    e.printStackTrace();

                }

            }

        }

        return null;

    }

    public void insert(Map<String,Object> body){

        E entity = JSON.parseObject(JSON.toJSONString(body),eClass);

        baseM小程序er.insert(entity);

        log.info("[{}] - 插入操作:{}",entity);

}

      1. 旅游资讯模块

旅游资讯,用户可以通过搜索文章了解想要的资讯。在详情页面可以进行,点赞,收,评论等操作,如下图所示

5-7旅游资讯列表

图5-8旅游资讯详情界面

主要逻辑代码如下。

@RequestM小程序ing("/get_obj")

    public Map<String, Object> obj(HttpServletRequest request) {

        Query select = service.select(service.readQuery(request), service.readConfig(request));

        List resultList = select.getResultList();

        if (resultList.size() > 0) {

            JSONObject jsonObject = new JSONObject();

            jsonObject.put("obj",resultList.get(0));

            return success(jsonObject);

        } else {

            return success(null);

        }

}

 public Query select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("select ");

        sql.小程序end(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).小程序end(" ");

        sql.小程序end("from ").小程序end("`").小程序end(table).小程序end("`").小程序end(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

            sql.小程序end("group by ").小程序end(config.get(FindConfig.GROUP_BY)).小程序end(" ");

        }

        if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

            sql.小程序end("order by ").小程序end(config.get(FindConfig.ORDER_BY)).小程序end(" ");

        }

        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.小程序end(" limit ").小程序end( (page-1)*limit ).小程序end(" , ").小程序end(limit);

        }

        log.info("[{}] - 查询操作,sql: {}",table,sql);

        return runEntitySql(sql.toString());

    }

      1. 交流中心模块

交流中心,用户可以通过搜索查看交流帖子。在详情页面可以进行,点赞,收,评论等操作,如下图所示

 

  

图5-9交流中心界面        图5-10帖子详情界面图          5-11发布界面

      1. 景点信息模块

用户可以通过景点名称,位置等关键字搜索方式查看景点信息,可以进行点赞,收藏,评论,预定门票等操作,如下图所示。

  

  

图5-12景点信息界面图      5-13景点信息详情界面图      5-14景点门票预定界面图

      1. 车票信息模块

用户可以通过车次,出发地,终点地等关键字搜索方式查看车票信息,可以进行预定车票等操作,如下图所示。

  

图5-15车票信息界面图      5-16车票信息详情界面图      5-17车票购买界面图

      1. 路线推荐模块

用户可以通过路线名称,起点等关键字搜索方式查看推荐的路线,可以进行点赞,收藏,评论等操作,如下图所示。

  

  

图5-18路线推荐界面图      5-19路线详情界面图      5-20评论界面图

      1. 景点酒店模块

用户可以通过酒店名称,信息等关键字搜索方式查看酒店,可以进行点赞,收藏,评论等操作,如下图所示。

  

  

图5-21酒店列表界面图      5-22酒店详情界面图      

      1. 景点餐厅信息模块

用户可以通过餐厅名称,所在位置等关键字搜索方式查看餐厅,可以进行点赞,收藏,评论等操作,如下图所示。

  

  

图5-23餐厅列表界面图          5-24餐厅详情界面图

  1. 系统测试
    1. 测试目的

在这个产品被投入使用需要进行试用,考虑到某个部分的开发没有缺陷情况下,把各种模块拼接,也有一定概率就存在矛盾。这就好比每个人都很独特,但聚在一起就显得杂乱无章,需要保证有默契的配合。对于测试,要看它的各项内容是否契合的原则。若与最初定下的标准有一定程度上的出入,那么就需要做出一些调整,让最终的大方向朝着目标前进。

    1. 测试用例
      1. 登录测试 

登录测试用例如下表所示。

表6-1登录测试用例

输入

输出

用户名

密码

用户名和密码不能为空

Kkk

aaa

用户名长度不允许,请重新输入!

2109402315

123456

用户名出错,请重新输入!

sssss

123456

用户名出错,请重新输入!

      1. 注册测试 

注册测试用例如下表所示。

表6-2注册测试用例

输入

输出

用户名

密码

确认密码

邮箱

用户名和密码不能为空

Kkk

aaa

aaa

23@qq.com

注册成功

210

aaa

abc

23@qq.com

注册失败,两次密码不一致

sssss

aaa

aaa

注册成功

在本次测试的过程主要针对所有功能下的添加操作,修改操作和删除操作,并以真实数据一一进行相关功能项目的输入,最终能够保证每个项目涉及的功能都是能够正常运行,因此能够保证本次设计的,已实现的功能能够正常运行并且相关数据库的信息也同样保证正确。

  1. 总结与展望

本次毕业论文的主要是利用Java开发一个安全可靠,操作简易,同时具备业务可扩展的红色旅游小程序。本文详细的论述了红色旅游小程序的设计和开发,本系统的所有事务逻辑都是按照系统的需求分析进行设计的。

与其他系统相比,本系统有自身的优点,例如:

(1)创新性强;

(2)业务逻辑性强,安全性高,在一些重要的功能模块需要通过审查之后才可使用;

(3)移植性高,在任何网络下都可使用。

当然也还有很多需要进一步改进的地方:

(1)系统大多数页面都是全局刷新,缺乏局部刷新,这将增加服务器的压力,如果有大量用户在同一时间段操作同一个功能模块,可能会导致查询缓慢;

(2)页面没有经过专业的UI设计,美观程度不及其他市场其他网站系统,有待改善。

参考文献

[1]Liu Huan,Liu Xuesheng,Lu Yao. Use of WeChat applet in the management of ambulatory surgery.[J]. International journal of surgery (London, England),2023.

[2]Zhao Chun,Liang Surui,Wang Xiaojiao,Gao Linghong,Lai Yuhong,Huang Ying,Li Jue,Chen Ling,Cai Wenzhi. User experience of a self-management WeChat applet for patients with neurogenic bladder: A qualitative approach[J]. International Journal of Nursing Sciences,2023,10(1).

[3]Yeager Emily,Boley B. Bynum,Goetcheus Cari. Conceptualizing peer-to-peer accommodations as disruptions in the urban tourism system[J]. Journal of Sustainable Tourism,2023,31(2).

[4]王蒙,董蕾,郭建磊.智慧旅游微信小程序的设计与实现[J].信息与电脑(理论版),2022,34(24):131-133.

[5]Liu Yanyan,Li Danyu,Ruan Haishan,Hu Yun,Shen Nanping. Development and usability test of a symptom management WeChat Mini Program for parents of children with cancer[J]. Asia-Pacific Journal of Oncology Nursing,2022,9(12).

[6]Dudley Katie D.,Duffy Lauren N.,Terry William C.,Norman William C.. Situational analysis as a critical methodology: mapping the tourism system in post-Katrina New Orleans[J]. Journal of Sustainable Tourism,2022,30(12).

[7]俸思洋,余康,范传松,张会兵.印象桂林智慧旅游导航小程序设计与实现[J].大众科技,2022,24(10):8-10+7.

[8]陈磊,黄钰涵,姜雨晴.基于微信小程序的临沂旅游应用平台开发研究[J].黑龙江科学,2022,13(18):29-32.

[9]赵少雯. 新华联铜官窑古镇导游小程序界面设计[D].中南林业科技大学,2022.DOI:10.27662/d.cnki.gznlc.2022.000482.

[10]罗丹雯,王振宇,王孟博.基于微信平台的旅游助手小程序设计[J].黑龙江科学,2022,13(08):86-88.

[11]何丞刚,方小明,冯庆锋. 探索全域旅游小程序平台建设+运营新思路[C]//中国旅游研究院.2022中国旅游科学年会论文集:旅游人才建设与青年人才培养.2022中国旅游科学年会论文集:旅游人才建设与青年人才培养,2022:215-221.DOI:10.26914/c.cnkihy.2022.031982.

[12]田晨池,谷攀登,潘家杰,陈森,黎敏.基于微信小程序的私人定制旅游攻略平台(山河行)设计与开发[J].电脑知识与技术,2022,18(04):12-14.DOI:10.14004/j.cnki.ckt.2022.0276.

[13]叶莉馨.基于微信小程序设计徒步旅游项目——以上海为例[J].电脑知识与技术,2021,17(24):95-96+105.DOI:10.14004/j.cnki.ckt.2021.2296.

[14]李卓威,廖晓芳,沈子怡,张茜琳,吴键崇.基于小程序的扶贫旅游项目开发[J].电脑知识与技术,2021,17(18):86-88.DOI:10.14004/j.cnki.ckt.2021.1672.

[15]吕昕.“三亚美丽乡村游”小程序的开发与设计[J].信息与电脑(理论版),2021,33(05):118-120.

[16]马天博,张妍,李森威,胡智府,韩东生.基于微信小程序的旅游规划程序方案[J].信息技术与信息化,2020(07):23-25.

[17]莫晶,裴大容.基于微信小程序的旅游系统的实现[J].电脑编程技巧与维护,2020(07):55-57.DOI:10.16184/j.cnki.comprg.2020.07.020.

[18]陈磊,田素娟,黄钰涵.微信小程序在旅游景区管理中的应用分析——以无极鬼谷景区为例[J].武夷学院学报,2020,39(07):72-75.DOI:10.14155/j.cnki.35-1293/g4.2020.07.013.

[19]鲍仝,赵磊,李小为.基于互联网+平台的旅游小程序的设计研究[J].中国新通信,2020,22(06):61.

[20]李珊,汪凤麟,蔡达成,朱欣碧,欧阳昊,彭志升.基于微信小程序的城市周边游平台设计与实现[J].无线互联科技,2019,16(19):54-56.

                                                                         致谢

经过几个月时间的努力终于完成了这篇文章,在文章的写作与研究的过程中遇到了很多困难,都在同学和老师的帮助下解决了。尤其非常感谢我最敬爱的老师,他对我进行了无私的指导和帮助,不厌其烦的帮助进行文章的修改。老师严谨的治学态度、渊博的学术知识、诲人不倦的敬业精神以及宽容的待人风范使我获益颇丰。此外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此,向帮助和指导过我的老师表示最衷心的感谢!感谢这篇文章所涉及到的各位学者。本文引用了数位学者的文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇文章的写作。感谢我的同学、朋友以及所在单位的同事,在我写文章的过程中给与了我很多素材和帮助,还在文章的撰写和排版过程中提供热情的帮助。同时,感谢我的室友对我的热心指导和帮助,经常有不懂之处都是大家在帮助我,才使得我比较顺利的完成了这篇文章。由于我水平有限,所写文章难免有不足之处,恳请各位老师和学友批评和指正!

                                             免费领取源码,请点赞关注私信博主

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开源的Java框架,用于快速构建独立的、生产级别的基于Spring的应用程序。它强调约定优于配置,通过提供一种简化的方式来配置和构建Spring应用程序,从而提高开发人员的效率。 毕设源码可以使用Spring Boot来实现。首先,我们需要在项目中引入Spring Boot的依赖,可以通过在项目的pom.xml文件中添加相关的依赖来实现。 接下来,我们可以使用Spring Boot提供的注解和自动配置功能来简化开发流程。例如,我们可以使用@Controller注解将一个类标记为Controller,使用@RequestMapping注解来配置URL映射,使用@Autowired注解来注入依赖等。 在实现毕设的功能时,我们可以根据具体需求选择不同的Spring Boot组件或模块来实现相应的功能。例如,我们可以使用Spring Boot的Web模块来构建RESTful API,使用Spring Boot的数据访问模块来访问数据库,使用Spring Boot的安全模块来实现用户认证和授权等。 在编写毕设源码时,我们可以按照Spring Boot的最佳实践来组织代码结构,将业务逻辑和配置分离,使用面向切面编程来实现横切关注点的统一处理,使用Spring Boot提供的测试框架来编写单元测试等。 最后,在完成毕设源码编写后,我们可以使用Spring Boot提供的打包工具将应用程序打包为可执行的JAR文件,然后部署到服务器上运行。 总之,毕设源码可以使用Spring Boot来实现,通过利用Spring Boot的便利性和强大功能,我们可以更高效地开发和部署基于Spring的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值