2 在线网络教育平台分析
系统分析是开发一个项目的先决条件,通过系统分析可以很好的了解系统的主体用户的基本需求情况,同时这也是项目的开发的原因。进而对系统开发进行可行性分析,通常包括技术可行性、经济可行性等,可行性分析同时也是从项目整体角度进行的分析。然后就是对项目的具体需求进行分析,分析的手段一般都是通过用户的用例图来实现。下面是详细的介绍。
2.1 可行性分析
(1)经济可行性:
在项目上使用的工具大部分都是是当下流行开源免费的,所以在开发前期,开发时用于项目的经费将会大大降低,不会让开发该软件在项目启动期受到经费的影响,所以经济上还是可行的。尽量用最少的花费去满足用户的需求。省下经费用于人工费,以及设备费用。将在无纸化,高效率的道路上越走越远。
所以经济可行性没有问题。
(2)操作可行性:
此次项目设计参考了几个该模式下网站的开发案例,对他们的操作界面分析,将众多案例结合在一起,突出以人为本简化操作,所以具有基本计算机知识的人都会操作本项目。
因此操作可行性也没有问题。
(3)技术可行性:
技术可行性指的是对于搭建框架的可行性,以及有更优秀的技术出现时系统的技术更新换代的纳新性如何,开发时间成本费用比如何。
现有的PHP技术能够迎合所有电子商务系统的搭建。开发这个在线网络教育平台的时候我采用了PHP+MySQL用以运行整体程序。
综上所述技术可行性也没有问题。
(4)法律可行性:
从开发者角度来看,PHP和MySQL是网上开源且免费的,在知识产权方面不会产生任何法律纠纷。
从用户使用角度来看,只要不再系统上贩卖违禁品,对系统做出条约协议,杜绝非法支付即可。
综上所述法律可行性也没有问题。
2.2 系统流程分析
业务流程是用一些特定的符合和线条来进行演示用户在使用系统时的过程,在进行系统分析的时候,业务流程可以帮助开发人员更好的理解业务,发现错误,完善系统。
2.2.1 数据增加流程
用户成功登入系统后就能够实现增加数据的操作,增加数据的编号是特定的,系统生成,用户不能随意填写,除了编号以外,其他增加信息用户自己填写,填写后的信息经过系统验证,验证合法通过就显示增加数据成功了,相反的话,就没有增加成功,图2-1显示的就是在增加数据时的流程。
图2-1 数据增加流程图
2.2.2 数据修改流程
数据修改时的流程和上面介绍的数据增加时的流程差不多,如图2-2所示。
图2-2 数据修改流程图
2.2.3 数据删除流程
如果系统里面存在一些没有用的数据的话,相关的管理人员还可以对这些数据进行删除,图2-3就是数据删除时的流程图。
图2-3 数据删除流程图
2.3 系统功能分析
2.3.1 功能性分析
按照在线网络教育平台的角色,我划分为了系统用户管理模块和管理员管理模块这两大部分。
系统用户管理模块:
(1)用户注册登录:游客可以随时进入到系统中,对系统中的信息浏览,但是想要实现发帖交流、信息的收藏评论等,就必须有这个系统的账号,如果没有账号的话,可以注册成会员用户进行相关的操作,同时用户还可以对个人信息以及操作的信息进行管控。
(2)查看在线网络教育平台的首页信息:在线网络教育平台的首页信息包含了首页、交流论坛、公告信息、新闻资讯、课程信息、留言反馈、我的(我的账户、我的收藏、个人中心)。
(3)交流论坛:用户点击“交流论坛”菜单显示所有的交流论坛信息,可以按照分类查看帖子信息,或者输入关键词进行局部搜索,点击可以进入帖子的详细展示界面,在此界面用户可以点赞、收藏、评论,也可以点击“发布内容”输入帖子信息进行发帖。
(4)公告信息:用户点击“公告信息”菜单显示管理员在后台发布的所有的公告信息,可以查看公告信息详情。
(5)新闻资讯:用户点击“新闻资讯”菜单显示所有的新闻资讯信息,可以按照条件进行新闻资讯的筛选或者输入关键词进行局部搜索,点击可以进入新闻资讯详细展示界面,在此界面用户可以收藏、点赞和评论。
(6)课程信息:用户点击“课程信息”菜单可以查看所有课程信息,可以按照条件查看课程信息,或者输入关键词进行查询,点击可以进入课程信息详细展示界面,在此界面用户可以收藏、点赞和评论。
(7)我的账户:用户点击“我的账户”可以对个人资料以及密码进行更新。
(8)个人中心:当用户点击右上角“我的”这个按钮,就会进入到对应的后台进行信息的管理了;
管理员管理模块:
(1)登录:管理员的账号是在数据表表中直接设置生成的,不需要进行注册;
(2)公共管理:管理员可以对系统前台展示的轮播图以及公告信息进行增伤改查,方便用户进行查看。
(3)用户管理:管理员可以对在线网络教育平台中的管理员以及前台注册的用户进行审核管理。
(4)信息管理:管理员点击“信息管理”菜单能够对其下子菜单交流论坛、论坛分类、新闻资讯和新闻的分类进行增删改查。
(5)课程信息:管理员点击“课程信息”会显示出所有的课程信息,支持输入课程名称或者课程分类对课程信息进行查询,如果想要添加新的课程信息,点击“添加”按钮,输入课程编号、课程名称、课程分类、课程时长、课程视频、课程资料等信息,点击“提交”按钮就可以添加了,同时可以选择某一条课程信息,点击“删除”进行删除,也可以对用户提交的课程信息评论的信息进行管控;
(6)留言反馈:管理员点击“留言反馈”会显示出所有的留言反馈信息,支持通过标题名称或者留言用户或者用户姓名对留言反馈信息进行查询,如果想要添加新的留言反馈信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条留言反馈信息,点击“删除”进行删除。
2.3.2 非功能性分析
在线网络教育平台的非功能性需求比如在线网络教育平台的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表3-1在线网络教育平台非功能需求表
安全性 | 主要指在线网络教育平台数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指在线网络教育平台能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响在线网络教育平台占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着在线网络教育平台的页面展示内容进行操作,就可以了。 |
可维护性 | 在线网络教育平台开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.4 系统用例分析
通过2.3功能的分析,得出了本在线网络教育平台的用例图:
用户角色用例如图2-4所示。
图2-4 在线网络教育平台用户角色用例图
web后台管理上的管理员是维护整个在线网络教育平台中所有数据信息的。管理员角色用例如图2-5所示。
图2-5在线网络教育平台管理员角色用例图
2.5本章小结
本章主要通过对在线网络教育平台的可行性分析、流程分析、功能需求分析、系统用例分析,确定整个在线网络教育平台要实现的功能。同时也为在线网络教育平台的代码实现和测试提供了标准。
3 在线网络教育平台总体设计
本章主要讨论的内容包括在线网络教育平台的功能模块设计、数据库系统设计。
3.1 系统架构设计
本在线网络教育平台从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图3-1在线网络教育平台架构设计图
表现层(UI):又称UI层,主要完成本在线网络教育平台的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本在线网络教育平台时的舒适度。UI的界面设计也要适应不同版本的在线网络教育平台以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本在线网络教育平台的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本在线网络教育平台的数据是放在服务端的MySQL数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本在线网络教育平台的数据存储和管理功能。
3.2 系统功能模块设计
3.2.1整体功能模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本在线网络教育平台中的用例。那么接下来就要开始对本在线网络教育平台的架构、主要功能和数据库开始进行设计。在线网络教育平台根据前面章节的需求分析得出,其总体设计模块图如图3-2所示。
图3-2 在线网络教育平台功能模块图
3.2.2用户模块设计
后台管理者能够实现对前台注册的用户增删改查操作,用户模块结构图如下图:
图3-3系统用户模块结构图
3.2.3 评论管理模块设计
在线网络教育平台是一个交流性质的公开平台,系统用户用户可以在平台上交流,增加用户之间的互动性。但是同时也为了更好的规范评论的内容,给予管理员删除不合适的言论的功能,所以需要专门设计一个评论管理模块,具体的结构图如下:
图3-4评论模块结构图
3.2.4课程管理模块设计
在线网络教育平台是中需要存储不少课程信息,其模块功能结构,具体的结构图如下:
图3-5课程模块结构图
3.3 数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.3.1 数据库概念结构设计
下面是整个在线网络教育平台中主要的数据库表总E-R实体关系图。
图3-6 在线网络教育平台总E-R关系图
4 在线网络教育平台详细设计与实现
在线网络教育平台的详细设计与实现主要是根据前面的在线网络教育平台的需求分析和在线网络教育平台的总体设计来设计页面并实现业务逻辑。主要从在线网络教育平台界面实现、业务逻辑实现这两部分进行介绍。
4.1用户功能模块
4.1.1 前台首页界面
当进入在线网络教育平台的时候,首先映入眼帘的是系统的导航栏,下面是轮播图以及系统内容,其主界面展示如下图4-1所示。
图4-1 前台首页界面图
4.1.2 用户注册界面
不是在线网络教育平台中正式系统用户的是可以在线进行注册的,如果你没有本在线网络教育平台的账号的话,添加“注册”,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可系统用户注册成功。其用用户注册界面展示如下图4-2所示。
图4-2 前台用户注册界面图
注册逻辑关键代码如下所示。
public function register()
{
if (Request::isPost()) {
$request = Request::param();
$request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');
$request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
$request['password'] = md5($request['password']);
$result = $this->model->register($request, $this->table);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
return json_encode($data);
}
public function register($request=[],$table_name = ''){
$username = $request['username'];
$bol = $this->where(['username'=>$username])->find();
if (!$bol){
$result = self::allowField(true)->save($request);
if ($result) {
return ['result' => 1];
} else {
return ['error' => ['code' => 3000, 'message' => '注册失败']];
}
}else{
return ['error' => ['code' => 3000, 'message' => '注册失败,账号已存在']];
}
}
4.1.3 用户登录界面
在线网络教育平台中的前台上注册后的系统用户是可以通过自己的账户名和密码进行登录的,当系统用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到在线网络教育平台的首页中;否则将会提示相应错误信息,用户登录界面如下图4-3所示。
图4-3用户登录界面图
登录系统主要代码如下。
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' => '登录失败,账号不存在']];
}
}
4.1.4交流论坛界面
用户点击“交流论坛”菜单显示所有的交流论坛信息,可以按照分类查看帖子信息,或者输入关键词进行局部搜索,点击可以进入帖子的详细展示界面,在此界面用户可以点赞、收藏、评论,也可以点击“发布内容”输入帖子信息进行发帖。界面如下图4-4所示。
图4-4交流论坛界面图
4.1.5 公告信息界面
用户点击“公告信息”菜单显示管理员在后台发布的所有的公告信息,可以查看公告信息详情。界面如下图4-5所示。
图4-5公告信息界面图
4.1.6 新闻资讯界面
用户点击“新闻资讯”菜单显示所有的新闻资讯信息,可以按照条件进行新闻资讯的筛选或者输入关键词进行局部搜索,点击可以进入新闻资讯详细展示界面,在此界面用户可以收藏、点赞和评论。界面如图4-6所示。
图4-6 新闻资讯界面图
4.1.7课程信息详情界面
用户点击“课程信想”菜单可以查看所有课程信息,可以按照条件查看课程信息,或者输入关键词进行查询,点击可以进入课程信息详细展示界面,在此界面用户可以收藏、点赞和评论。界面如下图4-7所示。
图4-7 课程信息详情界面图
4.2管理员功能模块
4.2.1公共管理界面
管理员点击“公共管理”这一菜单会显示轮播图、公告信息这两个子菜单,管理员可以对前台展示的公告信息和轮播图进行设置,界面如下图4-8所示。
图4-8公共管理界面图
4.2.2用户管理界面
在线网络教育平台中的管理人员是可以对前台注册的用户进行管理的,也可以对管理员进行管控。界面如下图4-9所示。
图4-9用户管理界面图
用户管理代码如下。
public function get_list($request=[],$table_name = '',$table_id = ''){
$page = 1;
$size = $table_name == "auth" ? 100 : 10;
$where = [];
$order = $table_id.'_id desc';
$field = '*';
// echo $order;exit;
$columns = Db::query( "show COLUMNS FROM `".$table_name."`");
foreach($columns as $key=>$val){
$field_name = $val['Field'];
if(isset($request['like'])){
if ($request['like']==true){
//字段模糊查询
if(isset($request[$field_name])){
$where[] = [$field_name, '=', $request[$field_name]];
}
}else{
//字段模糊查询
if(isset($request[$field_name])){
$where[] = [$field_name, 'like', '%' . $request[$field_name] . '%'];
}
}
}else{
//字段模糊查询
if(isset($request[$field_name])){
$where[] = [$field_name, 'like', '%' . $request[$field_name] . '%'];
}
}
//范围查询
if(isset($request[$field_name.'_min'])){
$where[] = [$field_name, '>=', $request[$field_name.'_min']];
}
if(isset($request[$field_name.'_max'])){
$where[] = [$field_name, '<=', $request[$field_name.'_max']];
}
}
//分页
if (isset($request['page'])){
$page = $request['page'];
}
if (isset($request['size'])){
$size = $request['size'];
}
//排序
if (isset($request['order'])){
$order = $request['order'];
}
//查询字段
if (isset($request['field'])){
$field = $request['field'];
}
//模糊查询
$list= $this->where($where)->order($order)->field($field)->page($page, $size)->select()->toArray();
foreach($list as &$l){
foreach($l as &$o){
if(strpos($o,$_SERVER['HTTP_HOST']) === false){
$o = str_replace('upload','http://'.$_SERVER['HTTP_HOST'].'/upload',$o);
}
}
}
return $list;
}
4.2.3交流论坛管理界面
管理员点击“交流论坛”会显示出所有的交流论坛信息,支持选择标题或者封面图对交流论坛信息进行查询,如果想要添加新的交流论坛信息,点击“添加”按钮,输入封面图、标题、分类、标签、描述等信息,点击“提交”按钮就可以添加了,同时可以选择某一条交流论坛信息,点击“删除”进行删除,也可以对用户提交的交流论坛评论的信息进行管控。界面如下图4-10所示。
图4-10交流论坛管理界面图
交流论坛管理逻辑代码如下所示。
public function add()
{
if (Request::isPost()) {
$request = Request::param();
$request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');
$request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
if($this->table == 'user'){
$request['password'] = md5($request['password']);
}
$res = $this->add_before($request, $this->table, $this->table_id);
if($res['code'] == 200){
$result = $this->model->add($request, $this->table, $this->table_id);
$this->add_after($this->table);
$data = $result;
}else{
$data['error'] = $res;
}
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
return json_encode($data);
}
4.2.4课程信息管理界面
管理员点击“课程信息”会显示出所有的课程信息,支持选择课程编号或者课程名称对课程信息进行查询,如果想要添加新的课程信息,点击“添加”按钮,输入课程编号、课程名称、课程分类、课程时长、课程视频、课程资料、课程介绍等信息,点击“提交”按钮就可以添加了,同时可以选择某一条课程信息,点击“删除”进行删除,也可以对用户提交的课程信息评论的信息进行管控。界面如下图4-11所示。
图4-11课程信息管理界面图
4.2.5留言反馈管理界面
管理员点击“留言反馈”会显示出所有的留言反馈信息,支持通过标题名称或者留言内容对留言反馈信息进行查询,如果想要添加新的留言反馈信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条留言反馈信息,点击“删除”进行删除。界面如下图4-12所示。
图4-12留言反馈管理界面图
留言反馈管理逻辑代码如下所示。
public function del()
{
$request = Request::param();
$result = $this->model->del_data($request, $this->table, $this->table_id);
$data = $result;
return json_encode($data);
}
5系统测试
5.1系统测试的目的
系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些bug,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。
5.2 系统测试用例
系统测试包括:用户登录功能测试、课程信息展示功能测试、课程信息添加、课程信息搜索、密码修改功能测试,如表5-1、5-2、5-3、5-4、5-5所示:
用户登录功能测试:
表5-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
课程信息查看功能测试:
表5-2 课程信息查看功能测试表
用例名称 | 课程信息查看 |
目的 | 测试课程信息查看功能 |
前提 | 用户登录 |
测试流程 | 点击课程信息列表 |
预期结果 | 可以查看到所有课程信息 |
实际结果 | 实际结果与预期结果一致 |
管理员添加课程信息界面测试:
表5-3 管理员添加课程信息界面测试表
用例名称 | 课程信息发布测试用例 |
目的 | 测试课程信息发布功能 |
前提 | 系统用户正常登录情况下 |
测试流程 | 1)用户点击课程信息管理就,然后点击添加后并填写信息。 2)点击进行提交。 |
预期结果 | 提交以后,页面首页会显示新的课程信息 |
实际结果 | 实际结果与预期结果一致 |
课程信息搜索功能测试:
表5-4课程信息搜索功能测试表
用例名称 | 课程信息搜索测试 |
目的 | 测试课程信息搜索功能 |
前提 | 无 |
测试流程 | 1)在搜索框填入搜索关键字。 2)点击搜索按钮。 |
预期结果 | 页面显示包含有搜索关键字的课程信息 |
实际结果 | 实际结果与预期结果一致 |
密码修改功能测试:
表5-5 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
5.3 系统测试结果
通过编写在线网络教育平台的测试用例,已经检测完毕用户登录模块、课程信息查看模块、课程信息添加模块、课程信息搜索模块、密码修改功能测试,通过这5大模块为在线网络教育平台的后期推广运营提供了强力的技术支撑。
结论
至此,在线网络教育平台已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如Web、PHP技术、MySQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。
源码获取
README.md · yuanmadd/HuoQuYuanMa - Gitee.com