🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。
- 代码可以私聊博主获取。🌹
- 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
- 赠送开题报告模板,帮助书写开题报告。
作者完整代码目录供你选择:
- 《Springboot网站项目》400套
- 《ssm网站项目》800套
- 《小程序项目》300套
- 《App项目》500套
- 《python网站项目》600套
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目演示
摘要
网络技术的快速发展给各行各业带来了很大的突破,也给各行各业提供了一种新的管理技术,对于微信小程序的英语学习激励系统将又是一个传统管理到智能化信息管理的典型案例,对于传统的英语学习激励管理,所包括的信息内容比较多,用户想要对这些数据进行管理维护需要花费很大的时间,而且数据的存储比较麻烦,想要查找某一相关的数据信息比较繁琐,随着互联网大潮的到来,决定开发一套智能化、信息化的微信小程序的英语学习激励系统,主要对首页,个人中心,用户管理,单词分类管理,单词本管理,学习清单管理,试卷管理,试题管理,系统管理,考试管理等功能模块的研发。
本文研究以java为语言的微信小程序的英语学习激励系统设计与实现,它在使用时数据库和程序不会被造成太大的影响,用起来也很得心应手。它也算是当时比较流行的安全性相对也很高的框架之一了,java开发语言。和mysql数据库,最终完成微信小程序的英语学习激励系统。
关键词:微信小程序的英语学习激励系统;mysql数据库;java
1绪论
1.1 课题研究的背景与意义
传统的英语学习激励管理方式都在使用手工记录的方式进行数据的登记,这种方式耗时,而且对于数据量比较大的情况想要快速查找某一数据非常慢,对于数据的统计获取比较繁琐,随着网络技术的发展,采用电脑管理相关数据信息管理与数据查询等诸多环节已成为必然趋势;数据情况的透明化,提高了信息管理的透明度,提高管理效率。
传统的英语学习激励需要对各类信息及时的进行记录、规整、更新、收藏,这是对数据信息统计管理的极大消耗,在其进行过程中,还会出现因信息的重复传递,出现本可以避免的出错问题,例如:前后数据不一致、种类纰漏以及备注不详细等等一系列问题。在信息告诉更替的时代,信息的准确性,经济可行性也无疑是众人关注的焦点。那么我们系统的目的性也就很明确。
1.2 国内外研究现状和发展趋势
截至2018年12月,我国网民规模为8.29亿,全年新增网民5653万,互联网普及率达59.6%,网络的普及给人们的工作和生活都带来了很大的改变。
随着近几年来智慧网络的快速发展,不管是哪个国家或者哪个地区,网络发展的速度都是飞快的,而且对于国外而言,起步是比较早的,但是对于我国当下的网络发展也是在逐步提升,并且根据系统的发展进行不同方向的满足用户的需求,而且当下我国的网民的普及率达到70.4%,相比2020年3月提升9.7个百分点,由此可以得出借助网络发展的重要性。
微信小程序的英语学习激励系统的出现是由于在线英语学习激励信息的使用频率及使用次数的增加,如果我们仍然通过传统的纸质记录选择方式来选择查看论文信息,就会浪费大量的人力和物力,浪费时间。同时,在人工统计过程中容易出现错误,解决在线英语学习激励信息的记录数据,让用户通过网上相应的管理系统进行改变传统的手工操作,也方便管理者可以对大量相应数据进行检验和统计,减轻管理者的工作强度,提高工作效率,提高管理效率,从而使得在线英语学习激励信息管理现代化更上一个台阶。
微信小程序的英语学习激励系统主要是以打造理想在线英语学习激励管理为核心理念,结合国内外相关管理经验,确立科学化、智能化、标准化的服务,对于微信小程序的英语学习激励系统前期,做好设计规划,在设计阶段,做好智能化建设,以智能化管理系统代替部分的人工工作,更方便快捷的达到微信小程序的英语学习激励系统需求。
1.3 课题研究的内容
对于微信小程序的英语学习激励系统,充分运用现代化的信息技术手段,对于英语学习激励信息管理发展的趋势就是信息化,信息化时代下的信息管理,需要深化信息管理体制与手段的改革,充分运用信息化手段来全方位的进行微信小程序的英语学习激励工作,构建微信小程序的英语学习激励系统,实现英语学习激励信息化,充分运用先进的微信小程序的英语学习激励系统进行英语学习激励的信息管理、个人信息等信息的管理,加强英语学习激励的完善性,通过网络资源和信息共享,运用计算机手段,逐步实现英语学习激励的系统化和网络化,对于英语学习激励信息管理,只有使用这种网络趋势,才能在时代的车轮中走的更远,发展的更好。
2 关键技术介绍
2.1 SSM框架
开发信息管理系统的主流框架是SSM(Spring + Spring MVC + MyBatis),SSM框架web层使用Spring MVC框架,使传输前后端数据变得简单;对于业务层使用Spring作为轻量级控制反转和面向切面的容器框架;对于相关SQL操作,采用Mybatis作为持久层框架,对JDBC进行封装,使得数据库的底层面向开发者操作处于一种透明状态。
2.2 Java技术及架构介绍
Java以Linux为基础并且使用Java语言进行开发的操作平台。Java的开放性让他允许所有人对系统进行修改和完善,这一点也让他在近些年成为便携设备上主要的操作系统。Java同时还内置了内置丰富的应用程序,比如电话、摄像头、播放器。这些都为在系统上开发程序提供了便利。该系统运用小程序完成前台的开发,包括登录注册、个性化特征的收集、基于个性化特征进行学习信息的推荐和对学习清单管理等。
用户使用我们这个微信小程序的英语学习激励系统只需一个Java手机就可以使用了,而且所有操作都是我们熟悉的操作手法。所有的操作通过手机就可以完成,用户不需培训,只要稍微提示一下即可。所以开发微信小程序的英语学习激励系统使用小程序技术不仅方便了开发者而且用户使用起来也非常方便,可以说是相对来说比较完美的开发平台了。
2.3 MYSQL数据库
MySQL数据库管理系统,是目前最流行的关系型数据库管理系统之一。它相对与SQLServer来说小了很多,电脑内存比较小的人用这个会比较方便而且MySQL安装起来非常方便,不需要有很多插件的安装,基本上只需要点击下一步执行,只有在最后的时候选一下数据集选项。MySQL查询起来也非常方便,连接数据库之后直接打开就可看到,对于我这种懒人来说真的非常实用。MYSQL能够以极高的效率完成各种数据库查询,并能方便的使用存储过程,同时我们一般在使用MySQL是基本上都是使用简单的可视化工具查看,界面简单清晰,以图形的形式表达用户界面易查看的,又能够使数据库管理和系统管理更加简单、直观。由于MySQL对Web端的支持,用户能轻易的在浏览器里面运行界面获取数据关系,所以这次课题选用MySQL数据库。
2.4微信小程序框架
微信小程序的开发框架是微信所独有的一套框架,分为View视图层和App Service逻辑层两部分。框架提供了一种类似于Web中html语言的wxml语言,作为视图层的标签语言,用于构造页面的布局。另外提供了一种类似Web中css语言的WXSS语言,作为视图层的标签样式语言,用于表述页面的显示。而在逻辑层的框架,则同样使用了JS语言。微信小程序为了使开发者专注在代码的逻辑层面和数据处理上,还专门提供了两种解决方案,一种是事件,一种是数据的传输。这两种方案都位于小程序框架的视图层和逻辑层之间。用户在视图层进行交互之后,传递到逻辑层对数据进行处理,并返回数据到视图层向用户反馈。对于微信小程序视图层的开发设计,小程序官方提供了一系列的组件,这些基本组件可以极大的帮助开发者完成视图层的开发。同时,对于逻辑层的开发,小程序官方提供了一系列API来方便开发者请求一些额外功能。
2.5 B/S架构
随着软件系统的不断改进和升级,B/S结构产品更为方便的特征体现得十分明显。对于一个中等偏大的公司来说,如果系统管理员每天要在很多台电脑之间来回查看,不断奔走,那么效率和工作量就会变得很低,但是如果使用了B/S结构,那么管理员只要对服务器进行管理就够了。
B/S结构最大的优点它不需要安装任何的软件,它所有的客户端就只是浏览器,所以只要有一台电脑并且可以上网就可以解决所有问题,客户端可以完全地不用管理员维护。无论使用系统的使用者是什么样的规模,也不管分支有多么的庞大,都不会对维护和升级的工作量造成影响,所有的维护和升级只需要操作服务器。随着B/S结构的不断发展,使用的人也不断增加,从而带动了AJAX技术的发展,和B/S结构一样,它也能在客户端上处理程序,这便缓解了服务器的负担,提高了交互性,而且实现了局部实时刷新。
3 需求分析与可行性分析
主要介绍微信小程序的英语学习激励系统的需求分析,通常都是功能需求和非功能需求。及其本次课题英语学习激励的可行性分析。
3.1功能需求分析
本系统采用从上往下的步骤开发,基本功能如下:
本课题要求实现一套微信小程序的英语学习激励系统,系统主要包括管理员和用户两大模块
(a) 管理员;管理员进入系统主要功能包括首页,个人中心,用户管理,单词分类管理,单词本管理,学习清单管理,试卷管理,试题管理,系统管理,考试管理等功能并进行操作。
(b) 用户;用户进入系统主要功能包括单词本,学习清单,错题本,试卷列表,考试记录,反馈中心等功能并进行操作。
3.2 性能需求分析
对系统的性能,从(功能、运行、界面、安全)等方面进行,下面我们逐一进行分析:
1. 系统的功能是否完整进行分析:系统的功能,能对应设计出原始代码和算法,以表格同文字的形式进行详细介绍个人信息保证功能完整;
2. 系统的运行是否通畅进行分析:系统的每个功能都有编写数据的关系和应对的代码,通过需求分析和可行性分析进行分析和显示系统的物理数据,保证其进行通畅;
3. 系统的界面设计进行分析:对系统中的软件进行处理与分析的方式是由不同代码来进行的;从而使界面容易操作:
4. 系统的安全性进行分析:这样才可以每个角色的不同对应的信息也就不同,在登录系统务必使用自己的账号,密码登录,账号与密码错误自然就登录失败了。登录成功可以对自己的信息进行操作,不能对别人的账号的信息进行查看等操作,这样自然保证系统的安全性。
3.3系统设计规则与运行环境
软件系统的优劣很大程度上是由系统设计的完善与否决定的。世间万物都必须遵循生老病死的法则,这是大自然的规则不能违反,软件设计也一样需要遵循系统设计规则。因此,在设计过程中必须遵循系统设计规则。规则如下:
简单性:为了扩大系统使用者的受众面,系统设计应该本着操作越简单越好的原则,这样不仅能提高系统的使用率更能够扩大系统使用面。
针对性:一个系统针对性越强,所能提供的功能必然越完善,用户体验肯定更好,所以应该明确指定系统针对性。
实用性:实用永远是检验一个系统是否成功的唯一标准,使用的语言再高端,使用的结构再新颖但不能满足管理员和用户的要求那就是失败。
运行环境:
本系统是利用B/S结构来开发的,数据库在服务器上进行部署Mysql即可,其他包括My Eclipse等常规开发程序。
3.4系统流程分析
系统流程,用户需要登录进入系统,未注册过的用户需要在输入必填的信息之后注册成功然后登录系统,管理员在后台登录进入可以对用户进行修改管理。使用一些较为稳定的技术总结成一个系统的开发设计过程,是设计与实现各个功能模块的基本技术,这些是每个功能模块能够顺利进行的重要保证。
图3-1系统流程图
3.5 可行性分析
通常一个项目的启动或者投入市场运营都需要一个评估报告,要从需求上分析这个项目是否能在这种环境下实现整体目标,是否有这个市场回报率即我们通常所说的是否能够获得利润或者开发出来是否具有实用性,不能说系统开发出来后根本没有用。所以其目的就是以最小的付出来得到更大的效率。本次课题我们就从技术可行性,操作可行性上来分析。
(1)技术可行性
Java由操作系统,中间件和应用软件三大部分组成。它是与谷歌公司和开放手机联盟共同开发的移动终端平台;该开发平台包括性能评价,出错工具,模拟器和存储器等功能;具有完善的开发环境。
(2)操作可行性
本系统用户只要有一台Java手机,就可以使用了,系统是使用的操作都是用户熟悉的选择框或者按钮等等。所有的操作通过手机就可以完成,用户不需培训,只要稍微提示一下即可。因此,在操作使用上,本系统简单、方便,易于使用户接受,因而是十分可行的。
4 系统设计
4.1软件功能模块设计
小程序总体功能如下图所示:
图 4-1 小程序总体功能模块图
4.2登录注册模块
用户要通过填写自己的账号和密码进入系统,如果用户没有登录的账号需要先进行注册用户在注册页面输入账号和密码,点击注册,按要求输入注册表所要的信息,登录密码和确认密码,点击注册后,系统先判断用户输入的“密码”和“确认密码”是否一致,如果不一致,用户需重新输入;如果一致则注册成功,然后输入刚才注册的个人账号和密码点击“登录”按钮,显示“登录中请稍后”,如果登录信息正确则系统跳转进英语学习激励列表界面;如果登录信息错误则显示 “登录失败”登录注册算法流程图如图4-2登录注册流程图所示。
图4-2登录注册流程图
Web后台端管理员登入正确可以查看用户修改用户信息,查看英语学习激励信息等操作;如果输入错误,则无反馈重新登录。如图4-3后台管理流程图所示
图4-3后台管理流程图
4.3数据库设计
前面系统分析结束后现在进入设计阶段,在这个过程中我们要抽象地分析数据,将数据中的关系理解清楚,然后对概念结构和逻辑结构进行设计。由于MYSQL能够以极高的效率完成各种数据库查询,并能是存储过程更加方便。同时能够使数据库管理和系统管理更加清晰便捷。另外,系统以Web技术支持,使用户能够轻易地发布数据到Web页面上。所以本系统采用了MYSQL进行数据库的存储管理与维护。
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
name | varchar | 200 | 试卷名称 | ||
time | int | 考试时长(分钟) | |||
status | int | 试卷状态 | 0 |
表4-2:单词本评论表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
refid | bigint | 关联表id | |||
userid | bigint | 用户id | |||
nickname | varchar | 200 | 用户名 | ||
content | longtext | 4294967295 | 评论内容 | ||
reply | longtext | 4294967295 | 回复内容 |
表4-3:单词分类
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
dancifenlei | varchar | 200 | 单词分类 |
表4-4:学习清单
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
bianhao | varchar | 200 | 编号 | ||
dancimingcheng | varchar | 200 | 单词名称 | ||
dancifenlei | varchar | 200 | 单词分类 | ||
yiwen | varchar | 200 | 译文 | ||
dancitupian | varchar | 200 | 单词图片 | ||
dancijiexi | varchar | 200 | 单词解析 | ||
yingyongchangjing | varchar | 200 | 应用场景 | ||
tianjiashijian | date | 添加时间 | |||
beizhu | longtext | 4294967295 | 备注 | ||
zhanghao | varchar | 200 | 账号 | ||
xingming | varchar | 200 | 姓名 |
表4-5:单词本
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
dancimingcheng | varchar | 200 | 单词名称 | ||
dancifenlei | varchar | 200 | 单词分类 | ||
yiwen | varchar | 200 | 译文 | ||
dancitupian | varchar | 200 | 单词图片 | ||
yuyinbobao | varchar | 200 | 语音播报 | ||
dancijiexi | longtext | 4294967295 | 单词解析 | ||
yingyongchangjing | varchar | 200 | 应用场景 |
表4-6:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
zhanghao | varchar | 200 | 账号 | ||
mima | varchar | 200 | 密码 | ||
xingming | varchar | 200 | 姓名 | ||
xingbie | varchar | 200 | 性别 | ||
lianxifangshi | varchar | 200 | 联系方式 | ||
touxiang | varchar | 200 | 头像 |
表4-7:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-8:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表4-9:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP | ||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
表4-10:反馈中心
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
adminid | bigint | 管理员id | |||
ask | longtext | 4294967295 | 提问 | ||
reply | longtext | 4294967295 | 回复 | ||
isreply | int | 是否回复 |
表4-11:收藏表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
refid | bigint | 收藏id | |||
tablename | varchar | 200 | 表名 | ||
name | varchar | 200 | 收藏名称 | ||
picture | varchar | 200 | 收藏图片 | ||
type | varchar | 200 | 类型(1:收藏,21:赞,22:踩) | 1 | |
inteltype | varchar | 200 | 推荐类型 |
表4-12:公告资讯
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 4294967295 | 简介 | ||
picture | varchar | 200 | 图片 | ||
content | longtext | 4294967295 | 内容 |
表4-13:奖励机制
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
jianglibianhao | varchar | 200 | 奖励编号 | ||
jianglibiaoti | varchar | 200 | 奖励标题 | ||
fengmian | varchar | 200 | 封面 | ||
fabushijian | datetime | 发布时间 | |||
jianglijizhi | longtext | 4294967295 | 奖励机制 |
表4-14:考试记录表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
userid | bigint | 用户id | |||
username | varchar | 200 | 用户名 | ||
paperid | bigint | 试卷id(外键) | |||
papername | varchar | 200 | 试卷名称 | ||
questionid | bigint | 试题id(外键) | |||
questionname | varchar | 200 | 试题名称 | ||
options | longtext | 4294967295 | 选项,json字符串 | ||
score | bigint | 分值 | 0 | ||
answer | varchar | 200 | 正确答案 | ||
analysis | longtext | 4294967295 | 答案解析 | ||
myscore | bigint | 试题得分 | 0 | ||
myanswer | varchar | 200 | 考生答案 |
表4-15:试题表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
paperid | bigint | 所属试卷id(外键) | |||
papername | varchar | 200 | 试卷名称 | ||
questionname | varchar | 200 | 试题名称 | ||
options | longtext | 4294967295 | 选项,json字符串 | ||
score | bigint | 分值 | 0 | ||
answer | varchar | 200 | 正确答案 | ||
analysis | longtext | 4294967295 | 答案解析 | ||
type | bigint | 试题类型,0:单选题 1:多选题 2:判断题 3:填空题(暂不考虑多项填空) | 0 | ||
sequence | bigint | 试题排序,值越大排越前面 | 100 |
5系统实现
微信小程序的英语学习激励系统由前台和后台交互构成。前台是用户对于本系统的使用,用户可以通过手机端登录注册,管理单词本,学习清单,错题本,试卷列表,考试记录,反馈中心等详细信息。
后台主要是管理员模块,可对该小程序的用户进行系统管理,登录进后可对用户进行管理等操作。
5.1微信小程序端
本章主要介绍微信小程序的英语学习激励系统实现,根据系统的需求分析,系统设计,系统前台功能区和系统后台功能区的实现。通过以下系统运行界面和核心代码展示。
用户登录,本系统和大部分系统一样都需要登录才能进入系统进行后续操作,用户输入登录名和密码,具体的实现效果如图5-1所示:
图5-1 登录界面图
用户注册,在使用本软件前需要新进行登录操作,如果用户还没有账号可先注册然后再登录。具体的实现效果如图5-2所示:
图5-2 注册界面图
用户登陆小程序端,可以对首页,公告资讯,我的等功能进行详细操作,如图5-3所示。
图5-3小程序端首页界面图
单词本,在单词本页面可以查看单词名称,单词分类,译文,应用场景,单词解析等信息,并进行加入操作;如图5-4所示。
图5-4单词本界面图
试卷列表,在试卷列表页面可以查看试卷名称,考试时长等信息,并进行点击考试操作;如图5-5所示。
图5-5试卷列表界面图
用户,在我的页面可以对单词本,学习清单,错题本,试卷列表,考试记录,反馈中心等详细信息进行操作,如图5-6所示。
图5-6用户功能界面图
5.2管理员功能模块
系统后台登录,管理员通过输入账号、密码,选择角色并点击登录进行系统登录操作,如图5-7所示。
图5-7管理员登录界面图
管理员登录系统后,可以对首页,个人中心,用户管理,单词分类管理,单词本管理,学习清单管理,试卷管理,试题管理,系统管理,考试管理等功能进行相应操作,如图5-8所示。
图5-8管理员功能界面图
用户管理,在用户管理页面可以对索引、账号、姓名、性别、联系方式、头像等内容进行详情、修改或删除等操作,如图5-9所示。
图5-9用户管理界面图
单词分类管理,在单词分类页面可以对索引、单词分类等内容进行修改或删除等操作,如图5-10所示。
图5-10单词分类界面图
单词本管理,在单词本管理页面可以对索引、单词名称、单词分类、译文、单词图片、语音播报、应用场景等内容进行详情,修改,查看评论或删除等操作,如图5-11所示。
图5-11单词本管理界面图
学习清单管理,在学习清单管理页面可以对索引、编号、单词名称、单词分类、译文、单词图片、单词解析、应用场景、添加时间、账号、姓名等内容进行详情,修改或删除等操作,如图5-12所示。
图5-12学习清单管理界面图
试卷管理,在试卷管理页面可以对索引、试卷名称、考试时长、试卷状态等内容进行详情,修改或删除等操作,如图5-13所示。
图5-13试卷管理界面图
试题管理,在试题管理页面可以对试卷、试题名称、分值、答案、类型等内容进行修改或删除等操作,如图5-14所示。
图5-14试题管理界面图
考试管理,在考试记录页面可以对姓名、试卷、考试得分等内容进行查看详情操作,还可以对错题本进行详细操作;如图5-15所示。
图5-15考试管理界面图
系统管理,在公告资讯页面可以对索引、标题、图片等内容进行详情,修改或删除等操作,还可以对轮播图管理,反馈中心进行详细操作;如图5-16所示。
图5-16系统管理界面图
6 系统测试
6.1 测试目标
进行软件的测试是为了知道在开发过程中的错误,并不是去看程序中有什么问题。进行软件测试的重要意义是提醒人们发现错误,并且对其中的错误进行修改,并不是为了显示程序有多正确。在测试过程中发现了错误,可以对其软件的问题进行分析研究,找到解决问题的办法。此文主要是为了增强管理员的针对性工作,增强其检测效率,找到减少错误的方法,这才是完成产品检测的真实目的。
6.2 测试步骤
在进行程序的测试时,需要我,我们分段进行,一步一步实施。从程序来看,程序是不断发展完善的。通常在一个较大的程序中,我们会将其分为几个小部分,由几个模块组成。所以在进行相对较大的程序测试过程中,基本上包含以下几个步骤:
(1)找到程序中详细的错误部位;
(2)发现程序运行中出现的设计错误;
(3)对错误发现方案进行规范化。
经过上述测试,这个微信小程序的英语学习激励系统在各项操作中可按照预期的设计运行,能够实现英语学习激励的开发目标与要求。重要的是,这个系统就是根据用户的需求切身开发,根据对用户需求分析,用最合适的结构保证系统的稳定确保用户在使用该系统的不会崩溃能够稳定的加载出界面,而且为了能让更多年龄层的人都能够使用这个系统让用户很轻易的找到他们所需要的操作。运能够真正的做到以用户为中心进行设计。对于我们这个小程序来说,对系统的质量管控还是比较严格的,如果一个界面出现问题,紧接着页面就会根据错误给出提示追踪到每一行甚至那个单词,从而保证运行的质量。我们这个系统的测试主要就是保证他在运行时的稳定质量。所以经过上述测试结果可以看出,本系统操作流畅。
7总结及展望
7.1 总结
这次的课题设计是我们毕业的最后一个关卡,通过指导老师的帮助然后上网还有书籍查阅相关资料终于将这个系统完成。当然也缺不了同学的帮助。刚和老师商量课题的时候还非常高兴是一个之前自己接触过的题材,要求的内容也比较显而易见。但是在和指导老师确定任务书时还是比较吃惊因为要用到微信小程序端比较麻烦,需要将一些前台的功能在手机端实现对我来说还是比较吃力的。但通过慢慢的知道开始写任务书,对我要做的项目功能有了更加深刻的理解。前台是用户对于本系统的使用,可以通过手机端登录注册,管理个人信息,单词本,学习清单,错题本,试卷列表,考试记录,反馈中心等。
后台主要是管理员模块,可对该小程序的用户进行管理,管理员登录进后可对所有模块进行管理,主要包括首页,个人中心,用户管理,单词分类管理,单词本管理,学习清单管理,试卷管理,试题管理,系统管理,考试管理等操作。
这次的课题设计真的算是一个大融合,它基本上运用到了我们所学习的关键技术,我们可能之前学过的知识早已忘记但是这次的毕设课题是一次非常好的机会让我们重温之前的专业知识,相当于自己又重新学习了一遍,感觉自己的自我学习能力得到了很大的提升。同时又锻炼了自己的实际动手能力。通过对本系统的开发和探索,我对软件的开发过程有了更加深刻的了解,特别是通过对Java平台的大学在线英语学习激励系统的开发,使我对面向对象技术有了较为深入了解和认知。
这次的课题设计让我对独自做一个系统开发有了一个非常深刻的认知,真的是很难,从我自己的角度来讲,首先搭建平台的构造就花费了很长时间,在安装这些运行软件的过程中,总会有各种各样的插件问题出现,这个很考验人的耐心,因为在之后的运用过程中我就受此困扰很久。然后之后的开题报告,中期检查中也是有各种描述不明确出现。核心代码部分经常会出现jar包的错误跳转的失败,都需要花很多时间去调试。在这个过程中,出来只是的升高最多的还有自己耐心越来越好了。所以此刻认识还不算太晚,今后一定要努力提高自己的知识水平,同时还是要不断学习,尽可能多的阅览一些专业书籍,从而丰富自己的知识层面。答辩时间迫在眉睫,时间真的有限,这个报告所解决问题的方法还没有很好,希望接下来还有机会将这个报告加工完善。
7.2 展望
目前为止系统只能在我们自己电脑手机上运行,只能像单机操作环境一样自己写的自己可看,如果想让其他人也能使用就需要加入局域网等更加高级的操作。但也有可能本系统还达不到商业的水平,因为我们这个课题设计时间有限,而且我自身的专业知识也不够多,也只能勉勉强强的把系统搭建出来,不过我还是在这个过程中一直在努力获取心得知识与自己的课题匹配。我相信只要给我时间我还可以把这次的项目完善的更好,效率可以更高的。这次毕业设计的时间虽然不算太长,但是我对很多东西有了更深刻的认识。自己总结了几点让大家共同勉励:认真查阅资料和阅读相关文献非常重要;虚心向老师和同学请教;自己实际操作非常重要,以前我总是觉得只要理论上理解了应该问题不大,然后有很多基本命令代码没有自己去亲自感受一下,所以在这次的调试环节经常出问题,所以大家要记住"代码是调出来的"的道理。对于以后要成为程序员的朋友,真的要比平常人有更多的耐心和毅力,这是一个反复调试反复查看的过程。而且现在网络很发达,随便上网查查就能够得到许多解决方法。
真的大学几年转瞬即逝,本科生涯就要画上句号了。这次毕业设计过程中,我更深刻地认识到了实践动手能力在大学课程中的重要性。虽然校园的学习生涯即将结束,但是我们人生道路的学习才刚刚开始,我们还有接下来这么多年的时间来弥补之前没有好好学习的遗憾。对于我来说之后的工作岗位离学习这些知识还没有特别远,以后还能够多多学习。毕竟越优秀越好。
参考文献
[1]杨选辉.信息系统分析与设计[J].北京:清华大学出版社.2017
[2]钱雪忠.数据库原理及应用[M].北京:北京邮电大学出版社.2017.08
[3]吴建.张旭东.java网络开发入门与实践[J].人民邮电出版社.2016
[4]贺松平.基于MVC的B/S的架构的研究及应用[D].武汉:华中科技大学.2016
[5]毕国锋.java技术的Web应用程序三层设计模型研究[J].黑龙江科技信息.2017.03
[6]青龙老贼,赵黎,方雨,刘琪.微信终极秘籍:精通小程序商业运营[M].北京:电子工业出版社,2019.
[7]戴晟晖.微信公众平台搭建、开发与实践指南[M].北京:中国铁道出版社,2016.
[8]微网.微商城细节知多少?微信小程序在未来几年的发展方向[EB/OL].2019.
[9]李刚.疯狂Ajax讲义:jQuery/ExtJS/Proto.义:jQuery/ExtJS/Prototype/DWR企业应用前端开发实战[M].3版.北京:电子工业出版社,2018.
[10]PaulDeck,林仪明,崔毅.SpringMVC学习指南[M].北京:民邮电出版社,2017
[11]王珊.数据库系统原理教程[M].北京:清华大学出版社,2018,56.
[12]求是科技.java数据库开发技术与工程实践[M].北京:人民邮电出版社,2016,131.
[13]王群,李馥娟.java数据库系统开发完全手册[M].北京:人民邮电出版社,2016.3.39-44
[14]李严,于亚芳,王国辉.java数据库开发实例解析[M].北京:电子工业出版社,2019.12.78-93
[15]王国辉、牛强、李南南java工程应用与项目实践[M].北京:电子工业出版社,2015.4.162-171.
致谢
经过这么一大段时间的努力,我的毕业设计项目和论文终于快要结束啦,这对我们来说相当于大学生涯即将结束。在这大学几年中,我的思想行为,专业知识都得到了很大的提升,这些是和大学里面所有教过我的老师,陪伴我成长的同学的鼓励和支持分不开的。在这个过程中我对所学的知识进行了全面的复习,也有很多的技术是我所没有接触过,通过查询资料,向老师同学请教,我攻克了一个个的难关,让我明白了书本上的知识是有限的,我们需要不断的去学习,去充实自己,完善自己。这些都对我日后的学习和工作有莫大的帮助。
我对指导老师在我学习的最后阶段给我的指导表示衷心的感谢。从刚开始选题到开题报告,再到中期项目检查,写作提纲,及每种问题都对我们一一知道,对我们非常有耐心。有时候把报告发给老师之后,老师经常在他的课余时间甚至半夜回消息来帮助我们解决问题。对项目的追踪严格把关,循循善诱,帮助我们指导和帮助。为了辅导我的完成毕业设计,牺牲了很多宝贵的时间,在此我向我的指导老师表示诚挚的谢意和崇高的敬意。同时,感谢我的任课老师和同学无私的帮助,是他们教会了我知识,更教会了我如何做一个积极向上的人。
还有非常要感谢的就是我的同学们,在这个毕设过程中真的给了我们非常大的帮助。真的从一开始就获得帮助,帮助我们运行环境的调试,文档里面注意内容的提醒。甚至有时候来不及看的班级群消息都会来通知我,几年的时光即将过去,唯一不变的是我们的情谊。大学里面学到了很多知识,同时最珍贵的就是几年同窗的感情。
书到用时方恨少,在这篇论文的写作过程中,我深感自己的水平还非常的欠缺。还好我们一直在学习,生命不息,学习不止,人生就是一个不断学习和完善的过程。
感谢各位老师的指导。
核心代码展示
/**
* 公告通知
* 后端接口
* @author
* @email
* @date 2021-03-09 11:33:59
*/
@RestController
@RequestMapping("/news")
public class NewsController {
@Autowired
private NewsService newsService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( NewsEntity news){
EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
return R.ok().put("data", newsService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(NewsEntity news){
EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();
ew.allEq(MPUtil.allEQMapPre( news, "news"));
NewsView newsView = newsService.selectView(ew);
return R.ok("查询公告通知成功").put("data", newsView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 前端详情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
NewsEntity news = newsService.selectById(id);
return R.ok().put("data", news);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody NewsEntity news, HttpServletRequest request){
news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(news);
newsService.insert(news);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody NewsEntity news, HttpServletRequest request){
//ValidatorUtils.validateEntity(news);
newsService.updateById(news);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
newsService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = newsService.selectCount(wrapper);
return R.ok().put("count", count);
}
}