第2章 开发技术的分析和选择
2.1 微信小程序技术介绍
微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用微信小程序在产品功能设计上给用户更多控制力。在微信小程序的设置页,为用户提供了数据权限开关,一旦用户授权之后又关闭,微信小程序再次使用该用户数据时需要重新获得授权,为用户提供更方便的数据控制权。用户在微信小程序的资料页还可以看到隐私数据保护的提示以及投诉入口。微信小程序在收集、获取用户数据上,微信小程序坚持“必要+合理”原则。必要是指只有在微信小程序的具体业务中,确实有场景需要获取用户数据的情况下,开发者才能去获取用户的同意授权;合理是指开发者获取数据的范围不应该超出具体场景所需要的数据范围。例如一个提供外卖服务的微信小程序,可能需要获得电话、地址等数据,但没有必要获取性别、年龄等数据,否则平台会认为微信小程序收集用户数据的行为违反了“必要并且合理”的原则,会对这类微信小程序进行处理。
2.2 MySQL数据库介绍
由Web支持,具有可扩展的标记语言可以对防火墙进行查询,具有丰富的XML标准支持很多内置存储,可以轻松进行数据检索。可以为VB,Java,PHP,Java语言都提供数据库的开发设计,跨平台性很强。
2.3 HTML(Hyper Text Markup Language)超文本标记语言介绍
可以包含图书,音乐,程序等多种元素,包含了所有系统里面的文字信息和所有的指示信息,比如应该把什么信息放到什么地方,对于这些都有明确的指示,如果系统中要使用某些元素的时候,比如动画,就会提示到什么地方进行下载,并且用于什么地方比较合适都会有明确的提示信息。
2.4 微信开发者工具介绍
微信开发者工具是一款专门针对于微信后台设计开发人员打造的微信调试工具。微信开发者工具能帮助微信后台页面的开发者更便捷安全地调试微信内的网页,而无需去借助一些模拟类软件。微信开发者工具开发原理是集成了Chrome DevTools和基本的移动调试模块,可进行微信内网页调试与微信小程序调试。
2.5 SSM框架介绍
SSM最核心的特色功能就是可以生成独立的微服务单元,就是把所有的代码模块都写在一个单独的应用里,这样功能代码直接的粘合度就非常的高,兼容性更好,而且还可以进行每个功能模块单独部署,不同的模块都能生成不同的小型服务,从而可以进行单独升级,然后实现应用之间的通信。用SSM建立项目的首要步骤就是先配置SSM依赖,建立的时候不需要单独设置版本,直接通过系统自带的场景启动器,就可以直接导入项目所需要的各种Web模块,然后在把所需要的功能场景调取出来,生成一个启动器,直接在项目里引入各种依赖的组件就行,然后需要什么功能就导入什么场景就可以了。
第3章 系统分析
3.1系统分析的目的与过程
3.1.1 系统分析的目的
系统分析的目的是为了保证系统开发的实用性,保证系统开发设计后会有市场,会有需求,不会造成系统设计的浪费。本系统开发的角色包括三个方面分别是管理员、教练和注册用户,了解不同的角色对于不同的功能进行设计,开发出适合他们的系统,并且把开发成本降到最低。
3.1.2系统分析的过程
首先应该先对整个系统的功能进行一个详细的描述,然后在这个描述上分析用户们的新需求,然后对这个描述进行完善,最后对所有的需求进行说明,编写系统说明书。
3.2可行性分析
3.2.1技术可行性分析
通过大学几年的认真学习,对这次开发所用的技术都经过了详细的学习,并且平常也经过了几个小项目的多次实践都可以完美运行完成,所以对于这次开发还是很有信心的。而且Java语言兼容性很强,对于开发也减少一定的难度,在技术分析上,是可以开发设计的。
3.2.2 操作可行性分析
本健身房私教预约微信小程序在开发的时候遵照界面友好设计,功能操作过程简单不繁琐,用户只要按照功能的字面意思就能轻松进行系统操作,非常简单,在操作分析上,是可以进行开发设计的。
3.2.3经济可行性分析
经济方面不需要资金的支出,在开发中所使用的软件都是开源的,系统的开发也只需要一人完成。
3.3系统功能分析
主要的功能涉及到三个方面,管理员、教练、用户。管理员管理课程信息、课程类别信息、用户信息、教练信息、课程购买信息、课程预约信息、留言信息等。管理员用例图如下图3.1所示:
图3.1管理员用例图
教练负责课程信息、课程购买信息、课程预约信息等。教练用例图如下图3.2所示:
图3.2教练用例图
用户负责浏览课程信息,进行课程购买和课程预约以及可以留言。用户用例图如下图3.3所示:
图3.3教练用例图
3.4系统性能分析
系统性能方面一般指系统的运行、安全、扩展性、兼容性、实用性等方面的问题。考虑到系统除了功能方面以外的所有问题才可以使系统的分析完整,也是保证系统可以顺利开发的基础。
-
在开发技术、语言、环境方面的选择上要注意先进性。因为现在科技发展的速度很快,为了延长系统的生命就需要选择更热门的开发语言、技术和环境。本系统采用SSM框架,SSM框架可以支持多种运行环境、兼容性强,可以使系统在运行中选择多种运行软件;
-
在保证系统的安全上要注意权限问题和个人资料的问题。不同权限只能管理属于自己权限的功能,这种情况下就需要做好权限划分,所有权限都不能越权操作,管理员为最高权限可以负责所有信息的管理、审核;
-
在系统的扩展性上来说要注意接口的预留。由于时间、能力、技术水平等问题,现阶段开发的系统考虑不到更长远的事情,所以预留接口可以保证后期系统的升级,也可以方便后期开发人员进行功能扩展;
-
在系统的运行上来说需要注意运行的稳定问题。多人访问系统和单人访问系统效果肯定不一样,当多人在同时操作系统时要注意系统的稳定不出错和不会出现Bug的问题;
-
在系统的实用性问题上要注意系统功能的设计。系统要实用还要功能丰富,所以就需要在市场上多次调研,多次参考用户的需求和建议设计更符合用户要求的系统。
3.4系统流程分析
一个受欢迎的系统必然有一个好的系统操作流程,简单、友好的操作流程才可以使用户更快速的满足自己的要求。系统的操作流程正确系统的数据才可以被正确调用。从数据的来源到去处进行分析形成数据的闭环。本系统的操作流程为教练发布课程,用户购买课程、预约课程,教练审核。本系统的操作流程图如下图3.4所示:
图3.4系统操作流程
第4章 总体设计
4.1 系统功能结构设计
功能结构为系统功能的展示,一般采用树形图进行系统功能的结构描述。第一层为系统的名称,第二层为划分的功能界面,第三层为功能界面里的详细功能。本系统的功能结构图第一层为健身房私教预约微信小程序,第二层为用户、教练、管理员,第三层为相对应的具体功能。系统功能结构图如下图4.1所示:
图4.1系统功能结构图
4.2 数据库的建立
任何一个系统中,数据库都是非常重要的一部分,因为数据库做为系统的数据存储,保障着系统的安全,如果数据库出错,那系统肯定也就出错。所以要选择适合自己系统的数据库,然后建立表结构,使系统有更好的关联性,保密性,和完整性。用户进行数据访问时候只能通过正规的通道获取信息,防止非法获取用户数据,必须保证用户的数据安全,这就需要设计数据库的时候进行安全验证。
从用户的角度进行分析,设计出一个符合用户要求的数据库,把这个设计过程分开,把每个实体都单独进行,把复杂问题简单化,降低设计的难度,数据库的设计分为三步进行,第一步就是数据库的概念设计,第二步就是数据库的逻辑设计,把概念设计转换到逻辑设计,第三步,根据逻辑设计具体设计出数据库表和建立出数据库。
4.2.1 数据库的概念设计
数据库ER图设计又称为数据库逻辑结构设计,数据库逻辑结构主要是确定物理架构,然后对数据结构进行构造,建立实体和表之间的关系。数据库ER图是采用不同的图形来描述数据和数据的字段。数据库ER图设计是数据库设计的第一步,只有划分好系统的数据以及数据的字段才可以建立正确的数据库。本系统的数据主要为管理员信息、课程购买信息、课程信息、用户信息、课程预约信息等。
-
用户需要注册成功后才可以形成,用户信息的ER图如下图4.2所示:
添加图片注释,不超过 140 字(可选)
图4.2用户信息ER图
2.管理员为系统开发者设置的。管理员信息ER图如下图4.3所示:
图4.3管理员信息ER图
3.私教课程信息需要教练添加后才会展示。私教课程信息ER图如下图4.4所示:
图4.4私教课程信息ER图
4.课程购买信息为用户付款后产生的。课程购买信息ER图如下图4.5所示:
图4.5课程购买信息ER图
5.课程预约信息为用户预约课程后才会产生。课程预约信息ER图如下图4.6所示:
图4.6课程预约ER图
4.3系统实体关系的定义
每个实体之间的具体联系需要考虑到表面的联系和内在的联系,也可能每个实体之间会存在多个联系,单独ER模式完全了以后 ,就还需要把所有的单独模式整合起来,做一个全局的模式概念机构。全局模式不仅要支持所有单独的ER模式,还要合理的展示出了完整的,相匹配的每一个单独的概念结构, 1.确定的公共实体模式 开始先要把各个局部框架中的公共实体类型先确定起来,作为整合合并模式的一个基础。这这个过程中,需要根据实体类型名,和实体类型键来认定公共实体类型的。正常情况下都是先 把不同名的实体类型先作为公共实体类似的一个后补。把同名的实体类型作为另一个后补。 2.全局ER模式架构的合并整合 合并的前提是,先两个两个的合并,先合并其中有关联的局部结构,从公共实体类型开发,最后在何必独立的局部架构,最后整合成完整的架构,整合到一起。 3.消除冲突 一般情况下,常见的冲突有三种,一种是命名冲突,一种是结构冲突,一种是属性的冲突。把所有的局部ER模式整合到一起的时候,最主要解决的问题就是消除冲突,使他们能共同想结合,然后才能组成统一的概念模型。 4.全局ER模式优化 整合完成了全局ER模式以后并不是所有工作就完成了,还有最后一步,也就是最重要的一个步骤,就是对整合完成的ER模式进行优化测试。这样是为了提高整合以后数据库的工作效率,还要对各个模式结构进行测试,更一步优化性能。一个完美的ER全局模式,不仅仅需要能精准无误,详细的处理用户需求,还需要满足以下的条件,实体类型的个数要尽量精简,能少则少。实体类型的熟悉个数也要最少。实体间的联系也要无缝对接,这样才算一个完美的全局模式。本系统的全局ER图如下图4.7所示:
图4.7全局ER图
4.4数据库逻辑结构设计
一切基础已做好,就可以按照前面的设计,制作出具体的数据库表了,本健身房私教预约微信小程序的数据库表如下表4.1-4.14所示:
表4.1 config
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto_increment | |||
2 | name | varchar | 100 | 否 | ||||||
3 | value | varchar | 100 | 是 |
表4.2 discusssijiaokecheng
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto_increment | |||
2 | addtime | timestamp | 否 | CURRENT | ||||||
3 | refid | bigint | 20 | 否 | ||||||
4 | userid | bigint | 20 | 否 | ||||||
5 | nickname | varchar | 200 | 是 | ||||||
6 | content | longtext | 否 | |||||||
7 | reply | longtext | 是 |
表4.3 jiaolian
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto | |||
2 | addtime | timestamp | 否 | CURRENT | ||||||
3 | jiaoliangonghao | varchar | 200 | 否 | ||||||
4 | mima | varchar | 200 | 否 | ||||||
5 | jiaolianxingming | varchar | 200 | 是 | ||||||
6 | xingbie | varchar | 200 | 是 | ||||||
7 | touxiang | varchar | 200 | 是 | ||||||
8 | nianling | int | 11 | 是 | ||||||
9 | dengji | varchar | 200 | 是 | ||||||
10 | gerenjianjie | varchar | 200 | 是 | ||||||
11 | lianxifangshi | varchar | 200 | 是 | ||||||
12 | shenfenzheng | varchar | 200 | 是 |
表4.4 kechenggoumai
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto | |||
2 | addtime | timestamp | 否 | CURRENT | ||||||
3 | dingdanbianhao | varchar | 200 | 是 | ||||||
4 | kechengmingcheng | varchar | 200 | 是 | ||||||
5 | leixing | varchar | 200 | 是 | ||||||
6 | tupian | varchar | 200 | 是 | ||||||
7 | jieshu | varchar | 200 | 是 | ||||||
8 | kechengjiage | varchar | 200 | 是 | ||||||
9 | goumairiqi | date | 是 | |||||||
10 | jiaoliangonghao | varchar | 200 | 是 | ||||||
11 | jiaolianxingming | varchar | 200 | 是 | ||||||
12 | yonghuming | varchar | 200 | 是 | ||||||
13 | xingming | varchar | 200 | 是 | ||||||
14 | lianxidianhua | varchar | 200 | 是 | ||||||
15 | sfsh | varchar | 200 | 是 | 否 | |||||
16 | shhf | longtext | 是 | |||||||
17 | ispay | varchar | 200 | 是 | 未支付 | |||||
18 | userid | bigint | 20 | 是 |
表4.5 kechengleixing
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto_increment | |||
2 | addtime | timestamp | 否 | CURRENT_TIMESTAMP | ||||||
3 | leixing | varchar | 200 | 否 |
表4.6 kechengpingjia
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto | |||
2 | addtime | timestamp | 否 | CURRENT_TIMESTAMP | ||||||
3 | dingdanbianhao | varchar | 200 | 是 | ||||||
4 | kechengmingcheng | varchar | 200 | 是 | ||||||
5 | tupian | varchar | 200 | 是 | ||||||
6 | goumairiqi | varchar | 200 | 是 | ||||||
7 | pingfen | varchar | 200 | 是 | ||||||
8 | pingjianeirong | longtext | 是 | |||||||
9 | pingjiariqi | date | 是 | |||||||
10 | jiaoliangonghao | varchar | 200 | 是 | ||||||
11 | jiaolianxingming | varchar | 200 | 是 | ||||||
12 | yonghuming | varchar | 200 | 是 | ||||||
13 | lianxidianhua | varchar | 200 | 是 | ||||||
14 | sfsh | varchar | 200 | 是 | 否 | |||||
15 | shhf | longtext | 是 | |||||||
16 | userid | bigint | 20 | 是 |
表4.7 kechengyuyue
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto | |||
2 | addtime | timestamp | 否 | CURRENT | ||||||
3 | dingdanbianhao | varchar | 200 | 是 | ||||||
4 | kechengmingcheng | varchar | 200 | 是 | ||||||
5 | tupian | varchar | 200 | 是 | ||||||
6 | jieshu | varchar | 200 | 是 | ||||||
7 | yuyueshijian | datetime | 是 | |||||||
8 | jiaoliangonghao | varchar | 200 | 是 | ||||||
9 | jiaolianxingming | varchar | 200 | 是 | ||||||
10 | yonghuming | varchar | 200 | 是 | ||||||
11 | xingming | varchar | 200 | 是 | ||||||
12 | lianxidianhua | varchar | 200 | 是 | ||||||
13 | sfsh | varchar | 200 | 是 | 否 | |||||
14 | shhf | longtext | 是 | |||||||
15 | userid | bigint | 20 | 是 |
表4.8 messages
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto_increment | |||
2 | addtime | timestamp | 否 | CURRENT_TIMESTAMP | ||||||
3 | userid | bigint | 20 | 否 | ||||||
4 | username | varchar | 200 | 是 | ||||||
5 | content | longtext | 否 | |||||||
6 | reply | longtext | 是 |
表4.9 news
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto | |||
2 | addtime | timestamp | 否 | CURRENT | ||||||
3 | title | varchar | 200 | 否 | ||||||
4 | introduction | longtext | 是 | |||||||
5 | picture | varchar | 200 | 否 | ||||||
6 | content | longtext | 否 |
表4.10 sijiaokecheng
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto | |||
2 | addtime | timestamp | 否 | CURRENT | ||||||
3 | kechengmingcheng | varchar | 200 | 是 | ||||||
4 | leixing | varchar | 200 | 是 | ||||||
5 | tupian | varchar | 200 | 是 | ||||||
6 | jieshu | int | 11 | 是 | ||||||
7 | kechengjiage | int | 11 | 是 | ||||||
8 | keyueshijian | varchar | 200 | 是 | ||||||
9 | kechengjieshao | longtext | 是 | |||||||
10 | jiaoliangonghao | varchar | 200 | 是 | ||||||
11 | jiaolianxingming | varchar | 200 | 是 | ||||||
12 | dengji | varchar | 200 | 是 | ||||||
13 | gerenjianjie | varchar | 200 | 是 | ||||||
14 | clicktime | datetime | 是 | |||||||
15 | clicknum | int | 11 | 是 | 0 |
表4.11 storeup
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto | |||
2 | addtime | timestamp | 否 | CURRENT_TIMESTAMP | ||||||
3 | userid | bigint | 20 | 否 | ||||||
4 | refid | bigint | 20 | 是 | ||||||
5 | tablename | varchar | 200 | 是 | ||||||
6 | name | varchar | 200 | 否 | ||||||
7 | picture | varchar | 200 | 否 |
表4.12 token
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto | |||
2 | userid | bigint | 20 | 否 | ||||||
3 | username | varchar | 100 | 否 | ||||||
4 | tablename | varchar | 100 | 是 | ||||||
5 | role | varchar | 100 | 是 | ||||||
6 | token | varchar | 200 | 否 | ||||||
7 | addtime | timestamp | 否 | CURRENT_TIMESTAMP | ||||||
8 | expiratedtime | timestamp | 否 | CURRENT_TIMESTAMP |
表4.13 users
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto_increment | |||
2 | username | varchar | 100 | 否 | ||||||
3 | password | varchar | 100 | 否 | ||||||
4 | role | varchar | 100 | 是 | 管理员 | |||||
5 | addtime | timestamp | 否 | CURRENT_TIMESTAMP |
表4.14 yonghu
序号 | 列名 | 数据类型 | 长度 | 小数位 | 标识 | 主键 | 外键 | 允许空 | 默认值 | 说明 |
---|---|---|---|---|---|---|---|---|---|---|
1 | id | bigint | 20 | 是 | 是 | 否 | auto | |||
2 | addtime | timestamp | 否 | CURRENT_TIMESTAMP | ||||||
3 | yonghuming | varchar | 200 | 否 | ||||||
4 | mima | varchar | 200 | 否 | ||||||
5 | xingming | varchar | 200 | 否 | ||||||
6 | xingbie | varchar | 200 | 是 | ||||||
7 | touxiang | varchar | 200 | 是 | ||||||
8 | lianxidianhua | varchar | 200 | 是 |
第5章 系统详细设计
5.1登录界面的设计与实现
登录分为管理员登录和用户、教练登录三种,登录界面的设计采用两种,用户和教练采用一个登录界面,在登录界面里包括了用户类型、账号、密码和用户注册、忘记密码功能。用户、教练登录界面如下图5.1所示:
图5.1用户、教练的登录实现界面
5.2首页界面的详细设计
用户通过输入正确的用户名和密码后就可以跳到这个首页功能界面,本界面包含了私教课程、健身资讯和我的功能,实现界面如下图5.2所示:
图5.2首页操作界面
5.3教练角色的功能设计
教练可以发布新课程和审核课程购买、课程预约信息,并查看课程评价和留言信息。实现界面如下图5.3所示:
图5.3教练操作界面
5.3.1私教课程管理功能的设计与实现
教练的私教课程信息管理功能的主要内容包括私教课程信息的添加,和私教课程信息查看、修改,添加信息的时候可以根据所设置的关键字进行添加。实现界面如下图5.4所示:
图5.4教练添加私教课程信息功能界面
5.3.2课程购买管理功能模块的设计与实现
教练在收到用户购买信息后可以审核,实现界面如下图5.5所示:
图5.5课程购买功能实现界面
5.3.3课程预约管理功能的设计与实现
用户预约课程后同样教练可以审核,实现界面如下图5.6所示:
图5.6审核课程预约功能操作界面
5.4用户角色功能的详细设计
用户的主要功能为购买课程和预约课程、评价课程、留言。
5.4.1私教课程购买功能的实现
用户在浏览到喜欢的课程后可以线上购买。实现界面如下图5.7所示:
图5.7课程购买操作界面
5.4.2课程预约功能的设计与实现
用户在购买课程后就可以进行课程的预约,在预约时要注意填写预约时间。实现界面如下图5.8所示:
图5.8课程预约的界面效果
5.4.3课程评价功能的设计
上课完成后可以进行课程评价,课程评价后教练可以快速的看到。实现界面如下图5.9所示:
图5.9课程评价功能的界面效果
5.4.4留言管理功能的设计
用户可以进行留言和查看留言回复,实现界面如下图5.10所示:
图5.10留言信息查看界面效果
5.5管理员角色功能的设计
管理员可以管理课程信息、课程购买、课程预约、课程类型、用户信息、教练信息等。实现界面如下图5.11所示:
图5.11管理员角色功能界面
标签:200,varchar,课程,微信,系统,用户,ssm,源码 From: https://blog.csdn.net/u014445459/article/details/143757379