旅游社交小程序ssm+论文源码调试讲解
2相关技术
2.1微信小程序
小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。尤其拥抱微信生态圈,让微信小程序更加的如虎添翼,发展迅猛。
2.2 MYSQL数据库
MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他应用软件的数据库后端的开发工作。此外,用户可利用许多语言编写访问MySQL数据库的程序。作为开放源代码运动的产物之一,MySQL关系数据库管理系统越来越受到人们的青睐,应用范围也越来越广。速度和易用性使MySQL特别适用于Web站点或应用软件的数据库后端的开发工作。
MYSQL数据库具有以下特点:
1、C和C ++中使用和测试,以确保源代码的编译器的便携性和灵活性。
2、支持多种操作系统AIX的,FreeBSD下,HP-UX,Linux和Mac OS中,Novell公司的Netware,OpenBSD系统,OS/2裹时,Solaris,Windows等。
3、提供了用于不同的编程语言的API。编程语言,如C,, C ++,Python和Java的,的Perl,PHP,埃菲尔铁塔,Ruby和Tcl的。
4、以及使用的CPU资源来支持多线程。
5、算法优化查询SQL,切实提高搜索速度。
6、网络上的客户端和服务器可以用来编程任何独立的编程环境,也有中国,GB2312,BIG5,日文写作,一般基金,用于支持多国语言,并且可以嵌入在数据表和其他软件shift_jis访问柱可以用作的名称。
7、TCP / IP,ODBC和JDBC数据库,并提供连接到其他。
8、管理工具的管理,控制和优化数据库的操作。
9、可以数以千万计的记录在一个大的数据库。
2.3 uni-app
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
DCloud公司拥有800万开发者、数百万应用、12亿手机端月活用户、数千款uni-app插件。
uni-app在手,做啥都不愁。即使不跨端,uni-app也是更好的小程序开发框架更好的App跨平台框架、更方便的H5开发框架。不管领导安排什么样的项目,你都可以快速交付,不需要转换开发思维、不需要更改开发习惯。
2.4 SSM框架简介
SSM框架,是Spring+Spring MVC+MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。
1.Spring简介
Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
A.控制反转(IOC)是什么呢?
IOC:控制反转也叫依赖注入。利用了工厂模式将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类(假设这个类名是A),分配的方法就是调用A的setter方法来注入,而不需要你在A里面new这些bean了。
B.面向切面(AOP)又是什么呢?
首先,需要说明的一点,AOP只是Spring的特性,它就像OOP一样是一种编程思想,并不是某一种技术,AOP可以说是对OOP的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。
实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。
2.Spring MVC简介
Spring MVC属于Spring Framework的后续产品,已经融合在Spring Web Flow里面,它原生支持的Spring特性,让开发变得非常简单规范。Spring MVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
3.MyBatis简介
MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。可以这么理解,MyBatis是一个用来帮你管理数据增删改查的框架。
3系统分析
3.1可行性分析
通过对本旅游社交小程序实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。
3.1.1技术可行性
本旅游社交小程序后端采用SSM框架进行开发,是一种成熟的框架,开发有很多教程的,微信开发也有很多教程,并且网络上很多免费的教程。
因此,旅游社交小程序在开发技术上具有很高可行性,且开发人员掌握了一定的开发技术,所以此系统的开发技术具有可行性。
3.1.2经济可行性
本旅游社交小程序采用的软件都是开源的,这样能够削减很多的精力和资源,降低开发成本。同时对计算机的配置要求也极低,即使是淘汰下来的计算机也能够满足需要,因此,本系统在经济上是完全具有可行性的,所以在经济上是十分可行的。
3.1.3操作可行性
本旅游社交小程序的界面简单易操作,用户只要平时有在用过电脑,都能进行访问和操作。本系统具有易操作、易管理、交互性好的特点,在操作上是非常简单的,因此在操作上具有很高的可行性。
综上所述,此系统开发目标已明确,在技术、经济和操作方面都具有很高的可行性,并且投入少、功能完善、管理方便,因此系统的开发是完全可行的。
3.2系统性能分析
3.2.1 系统安全性
此旅游社交小程序要严格控制管理权限,具体要求如下:
(1)要想对旅游社交小程序进行管理,首先要依靠用户名和密码在系统中登陆,无权限的用户不可以通过任何方式登录系统和对系统的任何信息和数据进行查看,这样可以保证系统的安全可靠性和准确性。
(2)在具体实现中对不同的权限进行设定,不同权限的用户在系统中登陆后,不可以越级操作。
3.2.2 数据完整性
(1)所有记录信息要保持全面,信息记录内容不可以是空。
(2)各种数据间相互联系要保持正确。
(3)相同数据在不同记录中要保持一致。
3.3系统界面分析
目前,界面设计已经成为对软件质量进行评价的一条关键指标,一个好的用户界面可以使用户使用系统的信心和兴趣增加,从而使工作效率提高。微信小程序页面尽量简洁,让页面清爽,访问速度能提升上去,访问服务端接口的时候相应更快更迅捷。
1.输出设计
输出是由电脑对输入的基本信息进行解决,生成高质量的有效信息,并使之具有一定的格式,提供给管理者使用,这是输出设计的主要责任和目标。
系统开发的过程与实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计。这是由于输出表格与使用者直接相联系,设计的目的应当是确保使用者可以很方便的使用输出表格,并且可以将各部门的有用信息及时的反映出来。输出设计的准绳是既要整体琢磨不同管理层的所有需要,又要简洁,不要提供给用户不需要的信息。
2.输入设计
输入数据的收集和录入是比较麻烦的,需要非常多的人力和一定设备,而且经常出错。一旦输入系统的数据不正确,那么处理后的输出就会扩大这些错误,因此输入的数据的准确性对整个系统的性能起着决定性意义。
输入设计有以下几点原则:
1)输入量应尽量保持在能够满足处理要求的最低限度。输入量越少,错误率就会越少,数据的准备时间也越少。
2)应尽可能的使输入的准备以及输入的过程进行时比较方便,这样使错误的发生率降低。
3)应尽量早检查输入数据(尽量接近原数据发生点),以便使错误更正比较及时。
4)输入数据尽早地记录成其处理所需的形式,以防止数据由一种介质转移到另一种介质时需要转录而可能发生的错误。
3.4系统流程和逻辑
图3-3登录流程图
图3-4修改密码流程图
4系统概要设计
4.1概述
本系统后台采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示:
图4-1系统工作原理图
4.2系统结构
设计的功能结构图如下图所示:
图4-2功能结构图
4.3.数据库设计
4.3.1数据库实体
概念设计的目标是设计出反映某个组织部门信息需求的数据库系统概念模式,数据库系统的概念模式独立于数据库系统的逻辑结构、独立于数据库管理系统(DBMS)、独立于计算机系统。
概念模式的设计方法是在需求分析的基础上,用概念数据模型(例如E-R模型)表示数据及数据之间的相互联系,设计出反映用户信息需求和处理需求的数据库系统概念模式。概念设计的目标是准确描述应用领域的信息模式,支持用户的各种应用,这样既容易转换为数据库系统逻辑模式,又容易为用户理解。数据库系统概念模式是面向现实世界的数据模型,不能直接用于数据库系统的实现。在此阶段,用户可以参与和评价数据库系统的设计,从而有利于保证数据库系统的设计与用户的需求相吻合。在概念模式的设计中,E-R模型法是最常见的设计方法。本系统的E-R图如下图所示:
(1)下图是用户实体和其具备的属性。
用户实体属性图
(2)下图是收藏表实体和其具备的属性。
收藏表实体属性图
(3)下图是每日签到实体和其具备的属性。
每日签到实体属性图
(4)下图是周边推荐评论表实体和其具备的属性。
周边推荐评论表实体属性图
(5)下图是景点推荐评论表实体和其具备的属性。
景点推荐评论表实体属性图
(6)下图是分享圈评论表实体和其具备的属性。
分享圈评论表实体属性图
(7)下图是酒店推荐评论表实体和其具备的属性。
酒店推荐评论表实体属性图
(8)下图是酒店推荐实体和其具备的属性。
酒店推荐实体属性图
(9)下图是景点推荐实体和其具备的属性。
景点推荐实体属性图
(10)下图是防疫查询实体和其具备的属性。
防疫查询实体属性图
(11)下图是用户表实体和其具备的属性。
用户表实体属性图
(12)下图是分享圈实体和其具备的属性。
分享圈实体属性图
(13)下图是景点分类实体和其具备的属性。
景点分类实体属性图
(14)下图是美食推荐评论表实体和其具备的属性。
美食推荐评论表实体属性图
(15)下图是美食推荐实体和其具备的属性。
美食推荐实体属性图
(16)下图是周边推荐实体和其具备的属性。
周边推荐实体属性图
4.3.2数据库设计表
旅游社交小程序需要后台数据库,下面介绍数据库中的各个表的详细信息:
表4.1配置文件表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | name | String | 配置参数名称 | 是 |
3 | value | String | 配置参数值 | 是 |
表4.2分享圈评论表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | refid | Integer | 关联表id | 是 |
4 | userid | Integer | 用户id | 是 |
5 | nickname | String | 用户名 | 是 |
6 | content | String | 评论内容 | 是 |
7 | reply | String | 回复内容 | 是 |
表4.3景点推荐评论表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | refid | Integer | 关联表id | 是 |
4 | userid | Integer | 用户id | 是 |
5 | nickname | String | 用户名 | 是 |
6 | content | String | 评论内容 | 是 |
7 | reply | String | 回复内容 | 是 |
表4.4酒店推荐评论表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | refid | Integer | 关联表id | 是 |
4 | userid | Integer | 用户id | 是 |
5 | nickname | String | 用户名 | 是 |
6 | content | String | 评论内容 | 是 |
7 | reply | String | 回复内容 | 是 |
表4.5美食推荐评论表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | refid | Integer | 关联表id | 是 |
4 | userid | Integer | 用户id | 是 |
5 | nickname | String | 用户名 | 是 |
6 | content | String | 评论内容 | 是 |
7 | reply | String | 回复内容 | 是 |
表4.6周边推荐评论表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | refid | Integer | 关联表id | 是 |
4 | userid | Integer | 用户id | 是 |
5 | nickname | String | 用户名 | 是 |
6 | content | String | 评论内容 | 是 |
7 | reply | String | 回复内容 | 是 |
表4.7防疫查询表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | didian | String | 地点 | 是 |
4 | fengxiandengji | String | 风险等级 | 是 |
5 | lvyoujianyi | String | 旅游建议 | 是 |
表4.8分享圈表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | biaoti | String | 标题 | 是 |
4 | zhanghao | String | 账号 | 是 |
5 | xingming | String | 姓名 | 是 |
6 | fenxiangneirong | String | 分享内容 | 是 |
7 | fengmian | String | 封面 | 是 |
8 | thumbsupnum | Integer | 赞 | 是 |
9 | crazilynum | Integer | 踩 | 是 |
表4.9景点分类表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | leibie | String | 类别 | 是 |
表4.10景点推荐表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | diqu | String | 地区 | 是 |
4 | jingdianmingcheng | String | 景点名称 | 是 |
5 | jingdianleibie | String | 景点类别 | 是 |
6 | jingdiandizhi | String | 景点地址 | 是 |
7 | jingdiantupian | String | 景点图片 | 是 |
8 | jingdianjieshao | String | 景点介绍 | 是 |
9 | thumbsupnum | Integer | 赞 | 是 |
10 | crazilynum | Integer | 踩 | 是 |
表4.11酒店推荐表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | diqu | String | 地区 | 是 |
4 | jiudianmingcheng | String | 酒店名称 | 是 |
5 | jiudiandizhi | String | 酒店地址 | 是 |
6 | zhaopian | String | 照片 | 是 |
7 | jiudianjieshao | String | 酒店介绍 | 是 |
8 | lianxifangshi | String | 联系方式 | 是 |
9 | thumbsupnum | Integer | 赞 | 是 |
10 | crazilynum | Integer | 踩 | 是 |
表4.12每日签到表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | bianhao | String | 编号 | 是 |
4 | zhanghao | String | 账号 | 是 |
5 | xingming | String | 姓名 | 是 |
6 | leibie | String | 类别 | 是 |
7 | shijian | Date | 时间 | 是 |
8 | userid | Integer | 用户id | 是 |
表4.13美食推荐表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | diqu | String | 地区 | 是 |
4 | shiwumingcheng | String | 食物名称 | 是 |
5 | shiwujianjie | String | 食物简介 | 是 |
6 | zhaopian | String | 照片 | 是 |
7 | thumbsupnum | Integer | 赞 | 是 |
8 | crazilynum | Integer | 踩 | 是 |
表4.14收藏表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | userid | Integer | 用户id | 是 |
4 | refid | Integer | 收藏id | 是 |
5 | tablename | String | 表名 | 是 |
6 | name | String | 收藏名称 | 是 |
7 | picture | String | 收藏图片 | 是 |
表4.15token表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | userid | Integer | 用户id | 是 |
3 | username | String | 用户名 | 是 |
4 | tablename | String | 表名 | 是 |
5 | role | String | 角色 | 是 |
6 | token | String | 密码 | 是 |
7 | addtime | Date | 新增时间 | 是 |
8 | expiratedtime | Date | 过期时间 | 是 |
表4.16用户表表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | username | String | 用户名 | 是 |
3 | password | String | 密码 | 是 |
4 | role | String | 角色 | 是 |
5 | addtime | Date | 新增时间 | 是 |
表4.17用户表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | zhanghao | String | 账号 | 是 |
4 | mima | String | 密码 | 是 |
5 | xingming | String | 姓名 | 是 |
6 | xingbie | String | 性别 | 是 |
7 | shouji | String | 手机 | 是 |
8 | youxiang | String | 邮箱 | 是 |
9 | shenfenzheng | String | 身份证 | 是 |
10 | zhaopian | String | 照片 | 是 |
表4.18周边推荐表
序号 | 列名 | 数据类型 | 说明 | 允许空 |
---|---|---|---|---|
1 | Id | Int | id | 否 |
2 | addtime | Date | 创建时间 | 是 |
3 | jingdianmingcheng | String | 景点名称 | 是 |
4 | jingdiandizhi | String | 景点地址 | 是 |
5 | zhoubianmingcheng | String | 周边名称 | 是 |
6 | tupian | String | 图片 | 是 |
7 | tuijianliyou | String | 推荐理由 | 是 |
8 | thumbsupnum | Integer | 赞 | 是 |
9 | crazilynum | Integer | 踩 | 是 |
5系统详细实现
5.1 后台模块的实现
5.1.1 用户信息管理
管理员可以管理用户信息,可以对用户信息添加修改删除。具体界面的展示如图5.1所示。
图5.1 用户信息界面
5.1.2 景点推荐管理
管理员可以对景点推荐信息进行添加修改删除操作。具体界面如图5.2所示。
图5.3 景点推荐信息管理界面
5.1.3 分享圈管理
管理员可以对分享圈信息进行添加,修改,删除操作。界面如下图所示:
图5.4 分享圈管理界面
5.1.4 美食推荐管理
管理员可以对美食推荐信息进行添加,修改,删除操作。界面如下图所示:
图5.4 美食推荐管理界面
5.1.5 酒店推荐管理
管理员可以对酒店推荐信息进行添加,修改,删除操作。界面如下图所示:
图5.5 酒店推荐管理界面
5.1.6 周边推荐管理
管理员可以对周边推荐信息进行添加,修改,删除操作。界面如下图所示:
图5.6 周边推荐管理界面
5.2 小程序会员模块的实现
5.2.1 系统首页
小程序用户是需要注册才可以进行登录的,登录后在首页可以查看相关信息,并且下面导航可以点击到其他功能模块。界面如下图所示:
图5.7 系统首页
5.2.2 我的菜单
在小程序里点击我的,会出现关于我的界面,在这里可以修改个人信息,以及可以点击其他功能模块。界面如下图所示:
图5.8 我的菜单
5.2.3 分享圈
用户想要把一些信息分享到分享圈的时候,可以点击新增,然后输入自己想要分享的信息就可以进行分享圈的操作。界面如下图所示:
图5.9 分享圈界面
5.2.4 景点推荐
用户可以在景点推荐里面进行收藏和评论等操作。界面如下图所示:
图5.10 景点推荐界面
5.2.5 美食推荐
用户可以在美食推荐模块搜索和查看美食推荐的相关信息。界面如下图所示:
图5.11 美食推荐界面