摘要
本论文主要论述了如何使用python语言、SSM框架开发一个计算机课程知识库设计平台,本系统将严格按照软件开发流程,进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述该系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。
计算机课程知识库设计平台的主要使用者分为管理员,学生用户,教师用户,实现功能:轮播图管理,通知公告管理,用户管理(管理员,学生用户,教师用户),资源管理(新闻资讯,资讯分类,习题作业),权限管理,模块管理(知识分类,课程知识)等功能。
本系统的使用可以方便用户查阅知识并分享,方便管理员管理习题作业信息,课程知识,统计评分,评论等数据,提高工作效率。
关键词:计算机课程知识库设计平台;SSM框架;Mysql数据库
:
- 系统实现
- 数据库访问层的实现
该系统是通过jdbc和MySQL达成连接的,新建一个jdbc.properties文件来填写与数据库连接所需要的驱动和参数。
class AccessToken extends Base
{
protected $table = 'access_token'; //数据表名
protected $table_id = 'token'; //数据表名
protected $validate = 'AccessToken'; //数据表名
protected $model;
public function __construct(){
$this->model = new Model();
}
}
第一个参数代表MySQL数据库的驱动,第二个参数代表要连接的数据库,第三个和第四个参数代表数据库连接名和密码。
后台与数据库访问主要是通过HQL语句来进行查询的,查询语句中的表名是表格的实体类名,在这种查询语句中*是不允许使用的,除非适合聚合函数一起使用才可以。
- 登录模块的实现
主要由两部分组成,登录前的登录界面以及登录后的用户功能界面。登录界面,要求用户输入用户名和密码,当用户名和密码其中一个输入为空时,给出提示“用户名,密码不能为空”。获取用户名和密码后到数据库中查找,如果用户名存在,以及对应的密码正确,则登录成功,否则登录失败。登录失败后给出提示,并把焦点停在文本框中。登录成功后将该次会话的全局变量username设置为用户名。登录成功后进入学生用户的功能模块,主要有学生用户基本信息修改,习题作业信息,新闻资讯,课程知识和退出功能。退出功能是清除全局变量username的值,并跳回到首页。
登录流程图如下图所示。
图5-1登录流程图
用户登录界面如下图所示:
图5-2学生用户登录界面
用户登录的关键代码如下:
public function login()
{
if (Request::isPost()) {
$request = Request::param();
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
$request['password'] = md5($request['password']);
$result = $this->model->login($request, $this->table);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
return json_encode($data);
}
public function login($request=[],$table_name = ''){
$username = $request['username'];
$password = $request['password'];
$bol = $this->where(['username'=>$username])->find();
if ($bol){
$password = md5($password);
if ($request['password']==$bol['password']) {
//添加token信息
$access_token['create_time'] = date('Y-m-d H:i:s');
$access_token['update_time'] = date('Y-m-d H:i:s');
$access_token['info'] = json_encode($bol);
// $access_token['info'] = $bol;
$access_token['token'] = md5(date('Y-m-d H:i:s'));
$bol_token = Db::name('AccessToken')->insert($access_token);
if ($bol_token){
$data['obj'] = $bol;
$data['obj']['token'] = $access_token['token'];
return ['result' => $data];
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,token生成失败']];
}
} else {
return ['error' => ['code' => 5000, 'message' => '登录失败,密码不正确']];
}
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,账号不存在']];
}
}
- 用户资料修改模块的实现
用户登录/注册成功之后可以修改自己的基本信息。修改页面的表单中每一个input的name值都要与实体类中的参数相匹配,在用户点击修改页面的时候,如果改后用户名与数据库里面重复了,页面会提示该用户名已经存在了,否则通过Id来查询用户,并将用户的信息修改为表单提交的数据。
- 新闻资讯模块的实现
管理员通过输入资讯标题,类型,封面图,内容等信息维护新闻资讯,用户在前台浏览,可以进行收藏,点赞,评论等操作。如下图所示。
图5-2新闻资讯管理界面
图5-3新闻资讯添加界面
图5-4用户新闻资讯列表
图5-5新闻资讯详情界面
- 习题作业 模块的实现
用户在可通过名称搜索方式查询习题作业列表,可以进行在线答题、查看评分等操作。如下图所示。
图5-6习题作业列表界面
图5-7在线答题详情界面
图5-8习题评分界面
- 课程知识 模块的实现
用户在课程知识页面, 通过输入关键字或下拉搜索等进行查看课程知识信息,可进行点赞、收藏等操作,如下图所示。
图5-9课程知识界面
图5-10课程知识管理界面
- 权限管理 模块的实现
管理员在此页面可以对用户的权限进行管控。如下图所示。
图5-11权限管理界面
图5-12权限管理修改界面
系统测试
- 测试目的
对任何系统而言,测试都是必不可少的环节,测试可以发现系统存在的很多问题,所有的软件上线之前,都应该进行充足的测试之后才能保证上线后不会Bug频发,或者是功能不满足需求等问题的发生。下面分别从单元测试,功能测试和用例测试来对系统进行测试以保证系统的稳定性和可靠性。
- 功能测试
下表是系统登录功能测试用例,检测了用户名和密码的不同的输入情况,观察系统的响应情况。得出该功能达到了设计目标。
表6-1 系统登录功能测试用例
功能描述 | 用于系统登录 | |
测试目的 | 检测登录时的合法性检查 | |
测试数据以及操作 | 预期结果 | 实际结果 |
输入的用户名和密码带有非法字符 | 提示用户名或者密码错误 | 与预期结果一致 |
输入的用户名或者密码为空 | 提示用户名或者密码错误 | 与预期结果一致 |
输入的用户名和密码不存在 | 提示用户名或者密码错误 | 与预期结果一致 |
输入正确的用户名和密码 | 登录成功 | 与预期结果一致 |
下表是注册功能测试用例,检测了各种数据的输入情况,观察系统的响应情况。得出该功能达到了设计目标。
表6-2 注册功能测试用例
功能描述 | 用于用户注册 | |
测试目的 | 检测用户注册时的合法性检查 | |
测试数据以及操作 | 预期结果 | 实际结果 |
输入的手机号不合法 | 提示请输入正确的手机号码 | 与预期结果一致 |
输入的字段为空 | 提示必填项不能为空 | 与预期结果一致 |
输入的密码少于6位 | 提示密码必须为6-12位 | 与预期结果一致 |
输入的密码大于12位 | 提示密码必须为6-12位 | 与预期结果一致 |
下表是资源管理功能的测试用例,检测了资源管理中对习题作业的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;用户登录系统。
表6-3 习题作业管理的测试用例
功能描述 | 用于资源管理 | |
测试目的 | 检测资源管理时的各种操作的运行情况 | |
测试数据以及操作 | 预期结果 | 实际结果 |
点击添加试题,必填项合法输入,点击保存 | 提示添加成功 | 与预期结果一致 |
点击添加试题,必填项输入不合法,点击保存 | 提示必填项不能为空 | 与预期结果一致 |
点击修改试题,必填项修改为空,点击保存 | 提示必填项不能为空 | 与预期结果一致 |
点击修改试题,必填项输入不合法,点击保存 | 提示必填项不能为空 | 与预期结果一致 |
点击删除试题,选择知识宝库删除 | 提示删除成功 | 与预期结果一致 |
点击搜索试题,输入存在的知识宝库名 | 查找出试题 | 与预期结果一致 |
点击搜索试题,输入不存在的知识宝库名 | 不显示试题 | 与预期结果一致 |
- 性能测试
使用阿里云PTS(Performance Testing Service)性能测试服务对线上系统进行压力测试。线上服务器环境为:1核心CPU,1G内存,1Mbps公网带宽,Centos7.0操作系统。
压测过程中使用了2台并发机器,每台机器20个用户并发,对系统主页,登录,数据查询和数据维护等模块进行并发访问,测试结果是有40个用户并发时,数据管理相关页面的响应时间甚至达到了7s,通过查看服务器出网流量发现已经达到1381kb/s,可以看出服务器的带宽已经达到峰值,如果系统使用5Mbps的带宽,系统的响应时间和TPS将会大大增加。在整个测试的过程中,CPU的使用率占用仅8%,也提现出带宽瓶颈对系统的影响非常严重。
- 总结与展望
计算机课程知识库设计平台的开发是以Python编程语言作为基础,在PythonStrom平台上完成编码工作,系统整体为B/S架构,数据库系统使用Mysql。文中详细分析了计算机课程知识库设计平台的研究背景、研究目的和意义、开发工具和相关技术以及系统需求、系统详细设计和系统测试等等一系列内容。系统实现了计算机课程知识库设计平台所需的一些基本功能,并通过测试对这些实现的功能进行了完善,进而提高了系统整体的实用性。整个系统的开发过程中大量使用了Python相关的知识以及前端开发使用的html和javascript等,同时涉及到了很多开源框架和组件,例如后台系统中运用的MVVM架构、Freemarker模板引擎等,前端运用的UI框架等。
系统投入运行时,各功能均运行正常。系统的每个界面的操作符合常规逻辑,对使用者来说操作简单,界面友好。整个系统的各个功能设计合理,体现了人性化。
但是由于自己在系统开发过程中对一些用到的相关知识和技术掌握不够牢固,再加上自身开发经验欠缺,因此系统在有些方面的功能还不够完善,考虑的不够全面,因此整个系统还有待日后逐步完善。
源码获取