当前位置: 首页 > news >正文

java+SpringBoot+HTML+Mysq基于微信小程序的大咖读书系统的设计与实现

 详细功能设计:请点击下面链接查看

java+SpringBoot+HTML+Mysq基于微信小程序的大咖读书系统的设计与实现_哔哩哔哩_bilibili

源码+论文获取:

源码+论文获取请私信获取

  

一、 绪论

 相关技术简介

2.1 软硬件要求 

2.2 开发技术介绍

2.2.1 Spring MVC技术

2.2.2 开发框架Spring boot

2.2.3 bootstrap库详细介绍

 可行性与需求分析

3.1 需求分析

3.2 功能分析

3.3 用例摘要

3.4 用例描述

(1)登录用例描述如表3.2所示。

(2)用户管理用例描述如表3.3所示。

(3)课程管理用例描述如表3.4所示。

(4)内容列表用例描述如表3.5所示。

(5)内容详情用例描述如表3.6所示。

(6)讨论用例描述如表3.7所示。

(7)测试用例描述如表3.8所示。

(8)阅读记录用例描述如表3.9所示。

3.5 系统可行性分析

 系统设计

4.2.2 模块类设计

4.2.3 模块接口设计

4.2.1汇总表

五、 系统实现与展示

5.1 主页效果展示

5.1.1 后台首页

5.1.2 用户端主页展示

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.1 测试方法

6.2 测试目的

6.3 测试用例

6.4 测试总结

6.5  测试结论

总  结

参考文献

一、 绪论

1.1 概述

智能手机的出现以及移动互联网的发展,大部分用户的阅读习惯发生了巨大的改变。互联网将网络连结在一起可以连接网络中的任何一切,而微信作为社交软件的庞大体系也正在将一切通信和社交媒体连接在一起。作为踩在微信肩膀上应运而生的微信小程序,是对原生的 APP具有一定影响和拥有其自身不可替代的优势的。

1.2 研究的背景和意义

1.2.1 研究背景

在瞬息万变的互联网变化历程中,互联网技术一直是随着用户需求的变化而进一步演变革新。而随着微信成为国内的头部APP之一,它的不可替代性催生出了微信服务号,即微信小程序应用。微信显然是想仿照订阅号的路线,把内容之外的东西也连接到微信,而这些内容之外的东西,就是服务。

网络拉近了相隔千尺之人的距离,用户沉迷于丰富的网络世界中,却离现实越来越远。而微信小程序正是看重“重连现实”这点,希望用即用即走的方式激活线下的弱连接场景。现如今小程序的运用已经渗入到到我们生活的方方面面,例如医院挂号、餐厅排队、在线读书、在线学习等等。

在上学期间,本人因为生活需要,接触并深度使用过各种APP和小程序。且在大学各课程的学习中对微信小程序的现状与发展这一问题产生了浓厚的兴趣,有极大的热情对其进行研究与分析,所以就以“基于微信小程序的大咖读书系统”这个问题作为论文的题目。

1.2.2 研究意义

提供全面的内容:在传统读书中,人们在看小说中通常会遇到未完待续的情况,这不仅仅是浇灭了读者的兴趣,更是让许多人怨声载道。为此读书小程序会向用户提供更加全面的读书内容,更新内容在第一时间便可了解,从而有效的解决传统内容不足的问题,解决高效学习、联机学习、他人力量学习方式,摆脱学习难的问题。解决在线浏览:读书小程序的开发也完美的为读者们解决了需要随身携带才能浏览的问题。只要手机有电,只要手机有网络,用户便能随时随地的穿越到读书的世界之中。解决碎片化时间:很多都在虚度光阴,尤其是在碎片化的时间。而读书小程序能够在短时间内为用户带来更加全面且精彩的内容。。

1.3 研究内容

大咖读书小程序主要包含三种角色,分别是学生、教师、管理员三种角色。学生模块包含:登录、注册、搜索栏模块、推荐模块、历史模块、音频模块、测试模块、评论模块、点赞模块、目录模块、文字稿模块。教师角色:登录以及信息上传功能。管理员包括登录以及用户管理功能

1.3 研究方法

(1)可行性分析:观察读书app行业,对整体方案进行可行性分析。

(2)概要设计:对整体业务进行研究,划分出大概功能。

(3)详细设计:对整个框架进行详细的设计,包括界面设计,数据库设计以及前后端接口设计。

(4)代码实现:使用java技术栈对该平台进行代码开发。

(5)测试:设计测试用例,使用黑盒测试对系统进行测试,找到并优化bug。

 相关技术简介

2.1 软硬件要求 

由于本系统未涉及复杂的算法计算,为了能够利用最节约的成本以及简洁的代码达到最佳的效果,经过调研,计划采用Java语言来开发,具体的软硬件环境要求如下。 

(1)硬件环境:Corei7处理器,内存要求8G及以上,硬盘50G以上

(2)服务器: 采用普通办公用个人计算机作为服务器,用来发布服务。 

(3)开发工具:Idea

(4)操作系统:可以采用Windows7及以上系统。 

(5)数据库系统:采用现在比较流行的MySQL数据库。 

(6)服务器:采用Tomcat9。 

(7)Java环境:JDK10。 

(8)C端:谷歌浏览器。

2.2 开发技术介绍

2.2.1 Spring MVC技术

MVC 设计模式一般指 MVC 框架,M(Model)指数据模型层,V(View)指视图层,C(Controller)指控制层,MVC的运行模式可参考下图。

 

图2.1 微服务架构

2.2.2 开发框架Spring boot

Spring Boot框架是由Pivotal公司开发的新框架,其设计的根本原因是为了简化Spring框架应用过程中搭建以及开发过程复杂的配置。这个框架使用了比较特殊方式来进行相关配置,使Java开发的人员不再需要各类型自定义样板配置。框架Spring Boo能够在蓬勃的发展互联网开发领域作为先锋。MVC 的设计模式一般是指 MVC类型的框架, model通常是指数据的模型层, view通常是指是视图层, controller通常是指控制层。 MVC框架设计的目的是将数据的模型层和视图层相关的代码分离。

 

图2.2 Spring boot容器启动器

之前在使用传统Spring框架去做Java 的系统开发中,大量的 配置文件存在各类型的课程之中,导致开发的课程变得很是笨重,繁琐的配置以及第三方框架配置,导致整个开发以及课程的部署效率大大降低。Spring Boot 不是用来代替 Spring框架的,是用来提升所有 Spring 框架的开发人员开发工具。它集成了许多许多的常用第三方软件库,Spring Boot中这些软件库库几乎可以达到零配置即时可用,大部分的 Spring Boot 系统只需要要很少量配置就能够让Java开发人员启动课程。

通过LBMD引擎,让应用系统的开发变成固定化,形成一种新的开发者模式:用LEAP工具来搭建应用系统,也可以用LEAP来运行应用系统,从而达到资金量减少、减少工作量的前提下快速构建大型、复杂课程的目的。通过LEAP提供“模型驱动”可以灵活部署仅用少量的代码就可以完成大型课程,大大的减少Java程序员工作量,还降低了bug的出现风险。LEAP采用了SOA框架简化开发,还同时可使用二进制的开发机制,并且完整了SDK,也是众多程序员选择Spring Boot的原因。

2.2.3 bootstrap库详细介绍

bootstrap 是免费且开源的。代码托管、开发和维护都在同一个平台上直接处理完成的。开发人员可以直接用预编的 CSS 文件快速开发,也可以从 Bootstrap 源码自定义一个自己想要的模块。一个框架、多种设备。网站和应用能在 Bootstrap 的帮助下通过同一份源码快速、有效地适各种设备,如:手机、平板、PC端等。这一切都是 CSS 媒体查询的效果。功能完整的Bootstrap 框架提供了各种各样优美的文档,开发人员能在这里找到关于 HTML元素、HTML 和 CSS 组件以及 jQuery 插件等详细文档。

 可行性与需求分析

3.1 需求分析

微信小程序的大咖读书系统提供全面的内容:在传统读书中,人们在看小说中通常会遇到未完待续的情况,这不仅仅是浇灭了读者的兴趣,更是让许多人怨声载道。为此读书小程序会向用户提供更加全面的读书内容,更新内容在第一时间便可了解,从而有效的解决传统内容不足的问题,解决高效学习、联机学习、他人力量学习方式,摆脱学习难的问题。解决在线浏览:读书小程序的开发也完美的为读者们解决了需要随身携带才能浏览的问题。只要手机有电,只要手机有网络,用户便能随时随地的穿越到读书的世界之中。解决碎片化时间:很多都在虚度光阴,尤其是在碎片化的时间。而读书小程序能够在短时间内为用户带来更加全面且精彩的内容。 

3.2 功能分析

(1)登录模块:

该模块主要分为学生、老师、管理员三种,管理员可以删除、修改选中用户,添加用户的详细信息。

(2)学生功能模块:

搜索栏模块:该模块采用一对一或一对多模式,主要提供资源的入口。

推荐模块:该模块根据讲书的发布时间,用户的喜好和排行榜来推出相关的讲书。

历史模块:该模块用来记录用户所点击过的讲书,可以通过此模块查看最近访问过的记录。

音频模块:该模块主要是将声音信号迅速在媒介进行播放,采用了一对一模式语音讲读。

测试模块:该模块根据讲书内容进行相关的内容测试,用户可以根据测试的结果对内容进行深一步的了解。

评论模块:在网络社交功能中,评论是最直接的互动形式,通过该模块可以陈述自己认为的观点、意见或建议,进行内容发表。

点赞模块:对讲书内容表示赞同、欣赏、支持或声援,可以点击一下帖子下面的“赞”图标。

目录模块:系统将同一类型课题资源归为一类,以同一课题栏目形式合理归置,展示在首页。

文字稿模块:学生端不仅可以查看文字类的资料,还可以在线观看视频 课程。内容上传模块:用户可以把所需要上传的语言,视频等内容上传到作业里。

(3)教师功能模块:教师模块的实现分为基于web的实现和基于微信小程序的实现。

信息上传模块:当教师成功登录后,可以查看所有己教的课程,对课程进行管理。

(4)管理员模块:

信息管理:系统管理员登录账号,进入后台管理界面。可管理个人信息及登录密码的修改、更新。

教师管理、学员管理:管理员有权对系统中所有用户进行增、删、改、查操作。

3.3 用例摘要

表3.1 用例摘要描述

用例标识(UC)

用例名称

摘要描述

1

登录

根据分配账号进行登录

2

用户管理

管理系统三种角色的用户

3

课程管理

读对课程进行管理

4

内容列表

内容展示列表

5

内容详情

内容详情:视频、音频、文字

6

讨论

参与讨论

7

测试

参与测试

8

推荐

相关推荐

9

阅读历史

阅读历史记录

3.4 用例描述

(1)登录用例描述如表3.2所示。

表3.2 登录用例

用例标识

1

用例名称

登录

参与者

超级管理员、教师、学生

前置条件

已经分配账号

后置条件

登录成功

用例概述

按照要求输入账号密码进行登录

基本事件流

1、用户或管理员通过账号与密码进行登录。

2、用户或管理员登陆成功。

备选事件流

1、登录成功,跳转到主页面。

2、登陆失败。

备注

(2)用户管理用例描述如表3.3所示。

表3.3 用户管理用例

用例标识

2

用例名称

用户管理

参与者

超级管理员

前置条件

成功登录系统

后置条件

用户管理成功

用例概述

点击用户管理按要求输入相关信息,即可添加、删除、修改、查询相关信息

基本事件流

1、管理员登录系统。

2、管理员管理用户。

备选事件流

1、添加、删除、修改、查询。

2、添加、删除、修改、查询失败。

备注

(3)课程管理用例描述如表3.4所示。

表3.4 课程管理用例

用例标识

3

用例名称

课程管理

参与者

超级管理员

前置条件

成功登录系统

后置条件

课程管理成功

用例概述

点击课程管理按要求输入相关信息,即可添加、删除、修改、查询相关信息

基本事件流

1、管理员登录系统。

2、管理员管理课程。

备选事件流

1、添加、删除、修改、查询。

2、添加、删除、修改、查询失败。

备注

(4)内容列表用例描述如表3.5所示。

表3.5 内容列表用例

用例标识

4

用例名称

内容列表

参与者

超级管理员

前置条件

成功登录系统

后置条件

内容列表展示成功

用例概述

点击首页,即可展示内容列表相关信息

基本事件流

1、进入小程序系统。

2、查看内容。

备选事件流

  1. 打开成功
  2. 展示失败

备注

(5)内容详情用例描述如表3.6所示。

表3.6 内容详情用例

用例标识

5

用例名称

详情

参与者

超级管理员

前置条件

成功登录系统

后置条件

内容列表展示成功

用例概述

点击首页,即可展示内容详情相关信息

基本事件流

1、进入小程序系统。

2、查看内容。

备选事件流

  1. 打开成功
  2. 展示失败

备注

(6)讨论用例描述如表3.7所示。

表3.7 讨论用例

用例标识

6

用例名称

讨论

参与者

超级管理员

前置条件

成功登录系统

后置条件

讨论展示成功

用例概述

点击首页,即可展示讨论相关信息

基本事件流

1、进入小程序系统。

2、查看内容。

备选事件流

  1. 打开成功
  2. 展示失败

备注

(7)测试用例描述如表3.8所示。

表3.8 测试用例

用例标识

7

用例名称

测试

参与者

超级管理员

前置条件

成功登录系统

后置条件

测试展示成功

用例概述

点击首页,即可展示测试相关信息

基本事件流

1、进入小程序系统。

2、查看内容。

备选事件流

  1. 打开成功
  2. 展示失败

备注

(8)阅读记录用例描述如表3.9所示。

表3.9 阅读记录用例

用例标识

8

用例名称

阅读记录

参与者

超级管理员

前置条件

成功登录系统

后置条件

阅读记录展示成功

用例概述

点击首页,即可展示阅读记录相关信息

基本事件流

1、进入小程序系统。

2、查看内容。

备选事件流

  1. 打开成功
  2. 展示失败

备注

3.5 系统可行性分析

3.5.1  经济上的可行性

本商场店铺管理系统,采用免费开源的Mysql作为数据库,开源的开发工具IDEA作为开发工具,用自己的电脑作为服务器,综上所属本课程在经济上是可行的。

3.5.2 技术可行性

微信小程序的大咖读书系统采用Java语言作为后端开发语言,Mysql作为数据库,HTML、javascript等语言作为前端语言,以上语言都有成熟的框架,这些框架让编码没有那么难,所以,本商场店铺管理系统在技术上是可行的。

3.5.3 操作可行性

本微信小程序的大咖读书系统采用传统的系统操作形式,通过浏览器打开本系统,各项功能按照使用前后顺利平铺在左侧菜单栏,符合用户的操作习惯,所以本微信小程序的大咖读书系统在操作上是可行的。

3.5.5 法律可行性

本微信小程序的大咖读书系统仅用作毕业设计,不会对外开放,不会存在法律风险。

 系统设计

4.1 功能设计

本课题采用Java语言的Spring Boot框架+MYSQL数据库+tomcat服务器开发,将整个系统分为两大部分,小程序用户使用端与管理平台。大咖读书小程序主要包含三种角色,分别是学生、教师、管理员三种角色。学生模块包含:登录、注册、搜索栏模块、推荐模块、历史模块、音频模块、测试模块、评论模块、点赞模块、目录模块、文字稿模块。教师角色:登录以及信息上传功能。管理员包括登录以及用户管理功能

4.1 后台管理模块的设计与实现

  4.1.1 登录模块流程

管理员输入通过账号、密码点击登录校验账号密码,校验成功进入系统,校验失败弹出登陆失败提示。管理员登录流程如图4-2所示。

 

图4-1 管理员登录流程图

后台管理模块添加如图4-3所示,后台管理修改如图4-4所示;管理员管理:点击管理员管理菜单进入管理员管理模块,添加:点击添加弹出添加弹窗,按照要求输入姓名账号密码点击确定,添加成功;查询:输入查询内容,点击查询按钮列表展示查询结果;修改:点击修改弹窗,弹出修改按钮,按照要求输入自己需要修改的内容点击提交修改成功。删除:选中列表中需要删除的数据,点击删除按钮删除成功。

用户管理:点击用户管理菜单进入用户管理模块,添加:点击添加弹出添加弹窗,按照要求输入姓名账号密码性别点击确定,添加成功;查询:输入查询内容,点击查询按钮列表展示查询结果;修改:点击修改弹窗,弹出修改按钮,按照要求输入自己需要修改的内容点击提交修改成功。删除:选中列表中需要删除的数据,点击删除按钮删除成功。

课程管理:点击课程管理菜单进入课程管理模块,添加:点击添加弹出添加弹窗,按照要求输入相关信息点击确定,添加成功;查询:输入查询内容,点击查询按钮列表展示查询结果;修改:点击修改弹窗,弹出修改按钮,按照要求输入自己需要修改的内容点击提交修改成功。删除:选中列表中需要删除的数据,点击删除按钮删除成功。

 

图4-2 添加流程图

 

图4-3 修改信息流程图

  4.1.2 模块类设计

后台管理模块的核心类如图4-6所示,该模块分为PersonssController类、QxmkController类、QxxmController类。PersonssController类封装了用户的信息字段,如角色、姓名,账号信息:账号、密码等,而QxxmController类封装了课程的信息字段课程名称课程简介所属机构等信息。

  4.1.3 模块接口设计

后台管理模块接口如表4-1所示:

表4-1后台管理模块接口

接口名

地址

方法

参数

返回值

管理员登录接口loginMoth

/loginMoth

post

账号account、密码password

Json{“flag”:”true”,”msg”:”登录成功”}

管理员退出接口loginout

/loginout

post

Json{“flag”:”true”,”msg”:”退出成功”}

管理员新增接口regMoth

/regMoth

post

Personss类字段

Json{“flag”:”true”,”msg”:”成功”}

管理员修改接口updatebascinfo

/updatebascinfo

post

Personss类字段

Json{“flag”:”true”,”msg”:”成功”}

管理员列表查询接口searchuser

/searchuser

post

Personss类字段

用户Personss的list集

管理员删除接口deleteperson

/deleteperson

post

Id字段

Json{“flag”:”true”,”msg”:”成功”}

用户新增接口regMoth

/regMoth

post

Personss类字段

Json{“flag”:”true”,”msg”:”成功”}

用户修改接口updatebascinfo

/updatebascinfo

post

Personss类字段

Json{“flag”:”true”,”msg”:”成功”}

用户列表查询接口searchuser

/searchuser

post

Personss类字段

用户Personss的list集

用户删除接口deleteperson

/deleteperson

post

Id字段

Json{“flag”:”true”,”msg”:”成功”}

课程新增接口addqxxm

/addqxxm

post

Qxxm类字段

Json{“flag”:”true”,”msg”:”成功”}

课程修改接口updateqxxm

/updateqxxm

post

PQxxm类字段

Json{“flag”:”true”,”msg”:”成功”}

课程列表查询接口qxxmlist

/qxxmlist

post

Qxxm类字段

课程Qxxm的list集

课程删除接口deleteqxxm

/deleteqxxm

post

Id字段

Json{“flag”:”true”,”msg”:”成功”}

4.2 用户端模块的设计与实现

  4.2.1 模块流程

学生模块包含:登录、注册、搜索栏模块、推荐模块、历史模块、音频模块、测试模块、评论模块、点赞模块、目录模块、文字稿模块。教师角色:登录以及信息上传功能。管理员包括登录以及用户管理功能,数访问流程如图4-8所示,

用户进入小程序,依次查看列表,查看内容详情,查看视频,音频,点赞,参与讨论,参与测试等等操作。

 

图4-4 用户端流程图

  4.2.2 模块类设计

用户端的核心类如图4-9所示,该模块的实体类为QxxmryController类,该实体类封装了用户端各维度字段。类repairController提供了管理员管理申请的接口,类repairFrtController提供前台用户提交申请的接口。

图4-9 用户端核心类图

  4.2.3 模块接口设计

用户端接口如表4-2所示:

表4-2 用户端模块接口

接口名

地址

方法

参数

返回值

发布接口addqxqx

/addqxqx

post

Qxqx类字段

Json{“flag”:”true”,”msg”:”成功”}

发布修改接口updateqxqx

/updateqxqx

post

Qxqx类字段

Json{“flag”:”true”,”msg”:”成功”}

发布列表查询接口qxqxlist

/qxqxlist

post

Qxqx类字段

Qxqx的list集

发布删除接口deleteqxqx

/deleteqxqx

post

Id字段

Json{“flag”:”true”,”msg”:”成功”}

接口名

地址

方法

参数

返回值

新bug(审核分配)接口addqxqx2

/addqxqx2

post

qxqx2类字段

Json{“flag”:”true”,”msg”:”成功”}

新bug(审核分配)处理接口updateqxqx2

/updateqxqx2

post

qxqx2类字段

Json{“flag”:”true”,”msg”:”成功”}

新bug(审核分配)列表查询接口qxqx2list

/qxqx2list

post

qxqx2类字段

qxqx的list集

新bug(审核分配)查看接口qxqx2list

/qxqx2list

post

qxqx2类字段

Qxqx的对象

待处理接口addqxqx3

/addqxqx3

post

qxqx3类字段

Json{“flag”:”true”,”msg”:”成功”}

待处理接口updateqxqx3

/updateqxqx3

post

qxqx3类字段

Json{“flag”:”true”,”msg”:”成功”}

待处理列表查询接口qxqx3list

/qxqx3list

post

qxqx3类字段

qxqx的list集

待处理查看接口qxqx3list

/qxqx3list

post

Qxqx3类字段

Qxqx的对象

已修复(待审核)接口addqxqx4

/addqxqx4

post

qxqx4类字段

Json{“flag”:”true”,”msg”:”成功”}

已修复(待审核)接口updateqxqx4

/updateqxqx4

post

qxqx4类字段

Json{“flag”:”true”,”msg”:”成功”}

已修复(待审核)列表查询接口qxqx4list

/qxqx4list

post

qxqx4类字段

qxqx的list集

已修复(待审核)查看接口qxqx5list

/qxqx5list

post

Qxqx5类字段

Qxqx的对象

已修复(复审分配)接口addqxqx5

/addqxqx5

post

qxqx5类字段

Json{“flag”:”true”,”msg”:”成功”}

已修复(复审分配)接口updateqxqx5

/updateqxqx5

post

qxqx5类字段

Json{“flag”:”true”,”msg”:”成功”}

已修复(复审分配)列表查询接口qxqx5list

/qxqx5list

post

qxqx5类字段

qxqx的list集

已修复(复审分配)查看接口qxqx5list

/qxqx5list

post

Qxqx5类字段

Qxqx的对象

4.3 数据库设计

 

图4.5 数据库总体结构图

4.2.1汇总表

表4.7 讨论表

表名

功能说明

yhb

用户表

ersp

图书表

xsxs

测试表

xssc

阅读历史表

xsdz

点赞表

(1)用户表(yhb)

用户信息字典:用户ID、部门ID、用户账号、用户昵称、用户类型(00系统用户)、用户邮箱、手机号码、用户性别(0男 1女 2未知)、头像地址、密码、帐号状态(0正常 1停用)表结构如下表所示。

列名

数据类型

长度

是否主键

说明

user_id

varchar

255

用户ID

dept_id

varchar

255

部门ID

user_name

varchar

255

用户昵称

user_type

varchar

255

用户类型(00系统用户)

email

varchar

255

用户邮箱

phonenumber

varchar

255

手机号码

sex

varchar

255

用户性别(0男 1女)

avatar

varchar

255

头像地址

password

varchar

255

密码

status

varchar

255

帐号状态(0正常 1停用)

del_flag

varchar

255

删除标志(0代表存在 2代表删除)

表4.2 用户表 

(2)图书表(xsxs)

图书表字典:名称、图书简介、图书封面图、图书视频、图书类别、发布时间、阅读历史次数。表结构如下表所示。

列名

数据类型

长度

是否主键

说明

title

varchar

255

名称

jj

varchar

255

图书简介

pic

varchar

255

图书封面图

video

varchar

255

图书视频

types

varchar

255

图书类别

sctime

varchar

255

发布时间

counts

varchar

255

阅读历史次数

表4.3 图书表  

(3)图书讨论表(pjb)

图书讨论表字典:用户姓名、用户id、图书id、图书名称、讨论内容、讨论时间。表结构如下表所示。

列名

数据类型

长度

是否主键

说明

Id

varchar

255

ID

Xm

varchar

255

用户姓名

yhid

varchar

255

用户id

spid

varchar

255

图书id

spmc

varchar

255

图书名称

nr

varchar

255

讨论内容

sj

varchar

255

讨论时间

表4.3图书讨论表

(4)阅读历史表(gmb)

阅读历史表字典:用户姓名、用户id、图书id、图书名称、阅读历史价钱、阅读历史时间。表结构如下表所示。

列名

数据类型

长度

是否主键

说明

Id

varchar

255

角色ID

Xm

varchar

255

用户姓名

yhid

varchar

255

用户id

spid

varchar

255

图书id

spmc

varchar

255

图书名称

sj

varchar

255

阅读历史时间

jq

varchar

255

阅读历史价钱

表4.5阅读历史表

(5)记录表(sys_role)

记录车:用户姓名、用户id、图书id、图书名称、图书封面图、添加时间、添加价钱。表结构如下表所示。

列名

数据类型

长度

是否主键

说明

Id

varchar

255

角色ID

Xm

varchar

255

用户姓名

yhid

varchar

255

用户id

spid

varchar

255

图书id

spmc

varchar

255

图书名称

tjtime

varchar

255

添加时间

price

varchar

255

添加价钱

表4.6 记录表

五、 系统实现与展示

5.1 主页效果展示

5.1.1 后台首页

 

图5.1 主页图

5.1.2 用户端主页展示

 

5.2 系统实现

5.2.1 用户首页

(1)功能介绍:该模块采用一对一或一对多模式,主要提供资源的入口。

(2)操作流程:打开主界面界面-跳转系统首页。

 

  图5.3 效果图

(3)功能核心代码:

login(){const that=this;this.axios.post(

that.global.server + that.global.hostname + "xtlogin",{ headers: { 'content-type': 'application/x-www-form-urlencoded'!");sessionStorage.setItem("xtyhuer", res.data.userid);sessionStorage.setItem("xtyhxm", res.data.xm);sessionStorage.setItem("xtzh",res.data.zh);sessionStorage.setItem("xtsex",res.data.sex);sessionStorage.setItem("xtage",res.data.age);sessionStorage.setItem("xtdz",res.data.dz);sessionStorage.setItem("xtdh",res.data.dh);sessionStorage.setItem("xtsfz",res.data.sfz);sessionStorage.setItem("xtysxm",res.data.ysxm);sessionStorage.setItem("xtysdh",res.data.ysdh);sessionStorage.setItem("xtyssfz",res.data.yssfz);sessionStorage.setItem("xtroles", res.data.roles);that.$router.push({ path: "Home" });

} else {alert("登录失败,请重试!")}}).catch(function (e) {})},

5.2.2 搜索

(1)功能介绍:输入关键字查询信息。

(2)操作流程:进入主界面界面-在搜索框输入想搜索的信息。

 

  图5.4图书搜索效果图

(3)功能核心代码:

public boolean checkPhone(String phone) throws Exception {

EncryptionDecryption a = new EncryptionDecryption("tkwj");

String sql = "select count(*) as num from t_wx_client where  phone = ? with ur ";

int num = txxJdbcTemplate.queryForObject(sql, new Object[] { a.encrypt(phone) }, Integer.class);

return num == 0;}

public boolean checkPhonemy(String phone, String openid) throws Exception {

EncryptionDecryption a = new EncryptionDecryption("tkwj");

String sql = "select count(*) as num from t_wx_client where  phone = ? and  opnid != ? with ur ";

int num = txxJdbcTemplate.queryForObject(sql, new Object[] { a.encrypt(phone), openid }, Integer.class);

return num == 0;

}

public void updateUserinfo(String openid, String phone) throws Exception {

EncryptionDecryption a = new EncryptionDecryption("tkwj");

String sqlUpdate = "update t_wx_client set phone = ? where openid = ?";

Object[] obj = { a.encrypt(phone), openid };

txxJdbcTemplate.update(sqlUpdate, obj);

5.2.3 登录

(1)功能介绍:  输入账号名、密码用户进行登录操作。

(2)操作流程:进入登录界面-输入账号、密码-点击登录,登陆成功-跳转主页。

 

  图5.5登录效果图

(3)功能核心代码:

public List<Yyorg> searchOrgDao(String orgname, String branch) {

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

List<String> objlist = new ArrayList<String>();

String orgnamesql = "";

String branchsql = "";

if (!"".equals(orgname) && orgname != null) {

orgnamesql = " and orgname = ?  ";

objlist.add(orgname);

}

if (!"".equals(branch) && branch != null && !"**".equals(branch)) {

branchsql = " and branch = ?  ";

objlist.add(branch);

}

Object[] obj = new Object[objlist.size()];

for (int i = 0; i < objlist.size(); i++) {

obj[i] = objlist.get(i);

}

String sql = "select * from txx.t_yyorg where 1 = 1 " + orgnamesql + branchsql + "  with ur";

list = txxJdbcTemplate.query(sql, obj, new RowMapper<Yyorg>() {

@Override

public Yyorg mapRow(ResultSet rs, int rowNum) throws SQLException {

Yyorg yyorg = new Yyorg();

yyorg.setBranch(rs.getString("branch"));

yyorg.setBranchname(rs.getString("branchname"));

yyorg.setOrgcode(rs.getString("orgcode"));

yyorg.setOrgname(rs.getString("orgname"));

yyorg.setAddress(rs.getString("address"));

return yyorg;

}

});

return list;

}

5.2.4 注册

(1)功能介绍:立即注册:填写用户名、设置密码、确认密码、姓名、手机号、住址等信息完成注册;。

(2)操作流程:进入注册界面-输入页面信息-点击注册-注册成功。

 

  图5.6 注册效果图

(3)功能核心代码:

public int updateyyflag(String uuid, String flag) throws Exception {

String sqlUpdate = "update txx.t_yy set flag = ? where uuid = ? ";

Object[] obj = { flag, uuid };

return txxJdbcTemplate.update(sqlUpdate, obj);

}

public int insertYylog(String uuid, String oa, String flagb, String flaga) throws Exception {

String sqlUpdate = "INSERT INTO txx.T_CZLOG (uuid, oa, flagb, flaga,createtime) VALUES (?,?,?,?,?)";

Object[] obj = { uuid, oa, flagb, flaga, TimeUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss") };

return txxJdbcTemplate.update(sqlUpdate, obj);

}

public List<Yyorg> searchAllBlacklistDao(String szdate, String orgcode, AgntInfo ag) {

String branch = ag.getBranch();

List<String> objlist = new ArrayList<String>();

String branchsql = "";

String szdatesql = "";

String orgcodesql = "";

if (!"".equals(branch) && branch != null && !branch.equals("**")) {

branchsql = " and b.branch = ?  ";

objlist.add(branch);

}

if (!"".equals(szdate) && szdate != null) {

szdatesql = " and a.szdate = ?  ";

objlist.add(szdate);

}

if (!"".equals(orgcode) && orgcode != null) {

orgcodesql = " and a.orgcode = ?  ";

objlist.add(orgcode);

}

Object[] obj = new Object[objlist.size()];

for (int i = 0; i < objlist.size(); i++) {

obj[i] = objlist.get(i);

}

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

String sql = "SELECT A.SZDATE, B.BRANCH,B.BRANCHNAME,B.ORGCODE,B.ORGNAME,B.ADDRESS FROM   TXX.t_blacklist A "

+ "LEFT JOIN txx.t_yyorg  B ON A.ORGCODE = B.ORGCODE " + "WHERE  1=1 " + branchsql + szdatesql

+ orgcodesql + " order by szdate desc WITH UR   ";

list = txxJdbcTemplate.query(sql, obj, new RowMapper<Yyorg>() {

@Override

public Yyorg mapRow(ResultSet rs, int rowNum) throws SQLException {

Yyorg yyorg = new Yyorg();

yyorg.setSzdate(rs.getString("szdate"));

yyorg.setBranch(rs.getString("branch"));

yyorg.setBranchname(rs.getString("branchname"));

yyorg.setOrgcode(rs.getString("orgcode"));

yyorg.setOrgname(rs.getString("orgname"));

yyorg.setAddress(rs.getString("address"));

return yyorg;

}

});

return list;

}

5.2.5图书分类

(1)功能介绍:系统将同一类型课题资源归为一类,以同一课题栏目形式合理归置,展示在首页。

(2)操作流程:进入主界面界面-依次展示图书类别-点击类别-进入此类图书。

 

  图5.7图书分类效果图

(3)功能核心代码:

public int insertBlacklist(String szdate, String orgcode) throws Exception {

String sqlUpdate = "INSERT INTO txx.t_blacklist ( szdate, orgcode) VALUES (?,?)";

Object[] obj = { szdate, orgcode };

return txxJdbcTemplate.update(sqlUpdate, obj);

}

public int deleteBlacklist(String szdate, String orgcode) throws Exception {

String sqlUpdate = "delete  from txx.t_blacklist where szdate = ? and orgcode = ?  ";

Object[] obj = { szdate, orgcode };

return txxJdbcTemplate.update(sqlUpdate, obj);

}

public List<Orgyytime> searchTsorgtime(String yydate, String orgcode, AgntInfo ag) {

String branch = ag.getBranch();

List<String> objlist = new ArrayList<String>();

String branchsql = "";

String yydatesql = "";

String orgcodesql = "";

if (!"".equals(branch) && branch != null && !branch.equals("**")) {

branchsql = " and b.branch = ?  ";

objlist.add(branch);

}

if (!"".equals(yydate) && yydate != null) {

yydatesql = " and a.yydate = ?  ";

objlist.add(yydate);

}

if (!"".equals(orgcode) && orgcode != null) {

orgcodesql = " and a.orgcode = ?  ";

objlist.add(orgcode);

}

Object[] obj = new Object[objlist.size()];

for (int i = 0; i < objlist.size(); i++) {

obj[i] = objlist.get(i);

}

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

String sql = "SELECT ORDER BY STIME ASC WITH  ur ";

list = txxJdbcTemplate.query(sql, obj, new RowMapper<Orgyytime>() {

@Override

public Orgyytime mapRow(ResultSet rs, int rowNum) throws SQLException {

Orgyytime orgyytime = new Orgyytime();

orgyytime.setUuid(rs.getString("uuid"));

orgyytime.setYydate(rs.getString("yydate"));

orgyytime.setOrgcode(rs.getString("orgcode"));

orgyytime.setOrgname(rs.getString("orgname"));

orgyytime.setStime(rs.getString("stime").substring(0, 19));

orgyytime.setEtime(rs.getString("etime").substring(0, 19));

orgyytime.setNum(rs.getString("num"));

orgyytime.setTypes(rs.getString("types"));

orgyytime.setYysdtypes(rs.getString("yysdtypes"));

orgyytime.setBranch(rs.getString("branch"));

orgyytime.setBranchname(rs.getString("branchname"));

return orgyytime;

}

});

return list;

}

5.2.6图书列表

(1)功能介绍:此功能主要用来展示图书列表:点击分类跳转到图书列表页面:展示分类下的所有图书。

(2)操作流程:进入主界面界面-点击对应类别-进入图书列表。

 

  图5.8图书列表效果图

(3)功能核心代码:

public int insertTsorgtime(String uuid, String orgcode, String yydate, String stime, String etime, String num,

String types) throws Exception {

String sqlUpdate = "INSERT INTO txx.t_orgtime (  uuid, orgcode, yydate, stime, etime, num, types ) VALUES (?,?,?,?,?,?,?)";

Object[] obj = { uuid, orgcode, yydate, stime, etime, num, types };

return txxJdbcTemplate.update(sqlUpdate, obj);

}

public int deleteTsorgtime(String uuid) throws Exception {

String sqlUpdate = "delete  from txx.t_orgtime where uuid = ?  ";

Object[] obj = { uuid };

return txxJdbcTemplate.update(sqlUpdate, obj);

}

public void updateTsorgtime(String uuid, String orgcode, String yydate, String stime, String etime, String num,

String types) throws Exception {

String sqlUpdate = "update txx.t_orgtime set orgcode = ?,yydate = ?,stime = ?,etime = ?,num = ?,types = ? where uuid = ?";

Object[] obj = { orgcode, yydate, stime, etime, num, types, uuid };

txxJdbcTemplate.update(sqlUpdate, obj);

}

public void plInsert(String szdate, String branch, String level) throws Exception {

String sqlUpdate = "";

List<String> objlist = new ArrayList<String>();

if ("1".equals(level)) {

sqlUpdate = "insert into txx.t_blacklist (szdate, orgcode) "

+ "SELECT  ?,orgcode FROM  txx.t_yyorg  WITH  ur ";

objlist.add(szdate);

} else {

sqlUpdate = "insert into txx.t_blacklist (szdate, orgcode) "

+ "SELECT  ?,orgcode FROM  txx.t_yyorg WHERE branch = ? WITH  ur ";

objlist.add(szdate);

objlist.add(branch);

}

Object[] obj = new Object[objlist.size()];

for (int i = 0; i < objlist.size(); i++) {

obj[i] = objlist.get(i);

}

txxJdbcTemplate.update(sqlUpdate, obj);

}

5.2.7图书详情

(1)功能介绍:此功能音频模块:该模块主要是将声音信号迅速在媒介进行播放,采用了一对一模式语音讲读。

测试模块:该模块根据讲书内容进行相关的内容测试,用户可以根据测试的结果对内容进行深一步的了解。

评论模块:在网络社交功能中,评论是最直接的互动形式,通过该模块可以陈述自己认为的观点、意见或建议,进行内容发表。

点赞模块:对讲书内容表示赞同、欣赏、支持或声援,可以点击一下帖子下面的“赞”图标。。

(2)操作流程:进入主界面界面-点击分类-点击图书-进入图书详情。

 

  图5.9图书详情效果图

(3)功能核心代码:

public int checkSfz(String sfz) throws Exception {

EncryptionDecryption a = new EncryptionDecryption("tkwj");

String sql = "SELECT  count (*)  FROM t_wx_client WHERE  sfz = ? WITH  ur";

String[] parms = { a.encrypt(sfz) };

int num = txxJdbcTemplate.queryForObject(sql, parms, Integer.class);

return num;

}

public int checkSfzmy(String sfz, String openid) throws Exception {

EncryptionDecryption a = new EncryptionDecryption("tkwj");

String sql = "SELECT  count (*)  FROM t_wx_client WHERE  sfz = ? and openid != ? WITH  ur";

String[] parms = { a.encrypt(sfz), openid };

int num = txxJdbcTemplate.queryForObject(sql, parms, Integer.class);

return num;}

5.2.8阅读历史

(1)功能介绍:此功能主要用来展示图书评价:登录用户输入评价内容点击提交评价评价成功;。

(2)操作流程:进入主界面界面-点击图书-进入详情-查看评价。

 

  图5.10图书评价效果图

(3)功能核心代码:

public void addClient(String openid, String cname, String sex, String sfz, String mobile, String cardno,

String agntnum, String level, String ysfz) {

String sqlUpdate = "insert into t_wx_client(openid, cname, sfz) values (?, ?, ?)";

Object[] obj = { openid, cname, sfz };

txxJdbcTemplate.update(sqlUpdate, obj);

}

public void updateClient(String openid, String sfz, String cardno, String agntnum, String level, String sex,

String cname, String mobile) {

String sqlUpdate = "update t_wx_client set sfz = ?,cname = ?,phone = ? where openid = ?";

Object[] obj = { sfz, cname, mobile, openid };

txxJdbcTemplate.update(sqlUpdate, obj);}

5.2.9 点赞

(1)功能介绍:点赞模块:对讲书内容表示赞同、欣赏、支持或声援,可以点击一下帖子下面的“赞”图标。

(2)操作流程:进入主界面界面-点击图书-进入详情-点赞。

 

  图5.11 效果图

(3)功能核心代码:

public void addCoupon(String sfz, String fcode, int num, String ysfz, String cardno, String enddate,

double discount, String version, int totals, double yj, double yhj) throws Exception {

String sqlUpdate = "insert into t_coupon(sfz, fcode, num, ysfz, cardno, enddate, discount,version,totals,yj,yhj) values (?, ?, ?, ?, ?, ?, ?,?,?,?,?)";

Object[] obj = { sfz, fcode, num, ysfz, cardno, enddate, discount, version, totals, yj, yhj };

txxJdbcTemplate.update(sqlUpdate, obj);

}

public void updateCardStatus(String mobile, String cname, String status) {

String sqlUpdate = "update t_valid_register set flag = ? where phone = ? and cname = ?";

Object[] obj = { status, mobile, cname };

txxJdbcTemplate.update(sqlUpdate, obj);

}

public void updateCardStatus(String cardno, String status) {

String sqlUpdate = "update t_hy_card set flag = ? where cardno = ?";

Object[] obj = { status, cardno };

txxJdbcTemplate.update(sqlUpdate, obj);

}

public void registCard(String openid, String sfz, String st_card, String version, String level, Double clbf,

Double xdbf, String agntnum, String enddate) {

String sqlUpdate = "insert into t_register_card(openid, sfz, cardno,version,cardlevel,clbf,xdbf,agntnum,enddate) values (?, ?, ?,?,?,?,?,?,?)";

Object[] obj = { openid, sfz, st_card, version, level, clbf, xdbf, agntnum, enddate };

txxJdbcTemplate.update(sqlUpdate, obj);

}


相关文章:

  • 前端周刊第三十四期
  • Maven私服搭建与使用:nexus,repository,mirror,distributionManagement
  • ubuntu22.04安装Kubernetes1.25.0(k8s1.25.0)高可用集群
  • 高等教育学:技能的形成
  • 快来看,数据分析BI软件居然也能完成基金变迁大数据分析?
  • 16.线程通信1:生产者/消费者问题
  • SpringBoot校园二手书管理系统
  • 初识Nginx + Linux 中安装Nginx
  • 关于 SAP UI5 控件的 Densities 话题讨论
  • 禁忌搜索算法TS求解连续函数最值
  • 分布式精讲系列 实现分布式服务应该具备哪些核心技术组件?
  • 【博客479】prometheus-----时序数据模型及其存储机制
  • 利用cmake工具生成VisualStudio工程文件
  • 服务器空间不足的解决方法
  • k8s 资源注册表
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • CentOS从零开始部署Nodejs项目
  • Iterator 和 for...of 循环
  • Java超时控制的实现
  • JS数组方法汇总
  • MySQL几个简单SQL的优化
  • Travix是如何部署应用程序到Kubernetes上的
  • vue中实现单选
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 京东美团研发面经
  • 聊聊flink的TableFactory
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前嗅ForeSpider中数据浏览界面介绍
  • 详解NodeJs流之一
  • 1.Ext JS 建立web开发工程
  • raise 与 raise ... from 的区别
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #《AI中文版》V3 第 1 章 概述
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $.ajax()
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (3)(3.5) 遥测无线电区域条例
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (分类)KNN算法- 参数调优
  • (附源码)计算机毕业设计大学生兼职系统
  • (转)Mysql的优化设置
  • **PHP分步表单提交思路(分页表单提交)
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .Net Core和.Net Standard直观理解
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET MVC第三章、三种传值方式
  • .Net 垃圾回收机制原理(二)
  • .Net 知识杂记
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • ;号自动换行
  • ?.的用法