基于ThinkPHP的顶岗实习管理平台的开发实现
2020-03-09殷佳庭陆婷婷
殷佳庭 陆婷婷
基于ThinkPHP的顶岗实习管理平台的开发实现
殷佳庭 陆婷婷
(芜湖职业技术学院网络工程学院,安徽芜湖,241003)
为提高顶岗实习管理工作的效率、把控学生顶岗实习的全过程,基于ThinkPHP + MySQL +docker技术的顶岗实习管理平台开发完成。顶岗实习管理平台的研发遵循“需求分析—数据库设计—代码实现—软件测试”的基本流程。该平台成功通过LoadRunner软件的负载测试,系统运行稳定,吞吐量高。该系统将会更好地规范顶岗实习的管理工作,并提高顶岗实习的质量和效果。
顶岗实习;权限管理;ThinkPHP;docker;用例图
0 引言
顶岗实习管理工作已成为高等职业院校日常管理工作的主要组成部分。传统的学生顶岗实习管理工作很难把控学生的实习过程,难以保证顶岗实习的质量[1]。通过计算机信息技术建设的顶岗实习管理平台,管理人员能更好地全面把控顶岗实习管理及实习指导。
1 系统组成结构与需求分析
1.1 系统组成结构
从已有的分析调研得知,顶岗实习管理平台包含业务子系统和权限管理子系统。业务子系统主要处理实际的业务模块,包括周记管理、实习总结管理、实习鉴定表管理、实习信息管理等模块。系统的同一功能可能有多个不同的角色参与,比如,学生可以查看周记,指导教师和辅导员等参与者也可以查看周记,所以设计权限管理子系统很有必要[2]。
1.2 主要模块的需求分析
完成系统开发,首先需要弄清需求分析的内容,为后期的代码开发做好充分准备[3]。
1.2.1周记管理
周记管理是顶岗实习管理工作的重要内容,可有效检查学生在顶岗实习中的实习细节。学生把每周的任务以周记的形式记录下来,指导教师对周记进行查看和批改,辅导员也可查看。周记管理的用例图如图1所示。
1.2.2实习总结管理
学生在顶岗实习即将完成时需要填写实习总结,填写实习总结之前需要完成周记的填写任务,学生可查看自己的实习总结并选择保存实习总结。学生提交实习总结后,校内指导教师可以查看本组学生的实习总结并根据学生的实习总结情况综合进行打分,辅导员可以查看本班学生的实习总结情况。
1.2.3实习信息管理
管理员可根据实际的实习情况延长或者缩短顶岗实习的实习期限、动态调整周记次数、设定提前多少天完成实习总结的填写等。实习信息管理的用例图如图2所示。
图2 实习信息管理的用例图
1.2.4权限管理
项目中除了权限分配功能外,其他大部分功能均需要添加到节点管理数据表中。权限管理功能的主要参与者是管理员,管理员可以为学生、校内指导教师等用户分配不同的角色。权限管理主要包含节点管理、角色管理、权限分配等功能。管理员可以增加节点,在查询节点信息的基础上对节点执行修改或者删除操作;可以创建角色、为用户分配角色、修改或者删除角色;可以查询节点信息和角色信息,并为角色分配相应权限等。
2 数据库设计
项目采用ThinkPHP框架技术进行开发,按照ThinkPHP对数据表的要求,建议对数据表名进行限定[4]。系统约定使用“i_”作为每个数据表的前缀。
2.1 数据表结构设计
角色权限表(i_access)负责为角色分配权限,设定各节点的层级关系;
管理员表(i_admin)存储管理员的基本信息;
工作首页表(i_center)负责为不同角色用户分配不同的工作首页;
班级信息表(i_class)负责存储班级信息;
系部信息表(i_depart)负责存储系部信息;
节点信息表(i_node)负责存储系统功能,平台中大部分业务功能均需要在此表中进行注册;
角色信息表(i_role)负责存储角色信息;
角色分配表(i_role_user)负责存储用户和角色的对应关系信息;
实习总结与鉴定表(i_sum_identity)负责存储学生在顶岗实习时提交的实习总结和实习鉴定表信息;
实习单位表(i_sxdw)存储实习单位的信息;
实习岗位表(i_sxgw)存储学生参加实习的工作岗位信息;
实习信息表(i_sxxx)存储顶岗实习相关的信息;用户信息表(i_user)存储用户基本信息表;
周记信息表(I_weekrecord)存储学生填写的周记信息。
2.2 数据表之间的联系
数据表之间需要建立外键约束,才能保证数据的完整性。下面简要介绍项目中各个数据表的外键约束关系。
i_access表中的节点编号字段与节点信息表i_node表中的节点编号字段、i_role角色信息表中的角色编号字段构成外键约束;
i_role角色表中的角色编号与i_center工作首页中的角色编号、用户角色分配表i_role_user中的角色编号构成外键约束;
用户表i_user中的用户编号与周记信息表i_weekrecod中的用户编号、i_sx师生分配表中的用户编号及用户角色分配表i_role_user中的用户编号构成外键约束;
实习岗位表i_sxgw中的所属实习编号与i_sx实习表中的实习编号、实习单位表i_sxdw中的所属实习编号构成外键约束;
实习信息表i_sxxx与总结鉴定表中的实习信息编号、系部信息表i_depart中的所属实习编号及周记表中的所属实习编号构成外键约束。
各数据表之间的联系如图3所示。
图3 数据表之间的联系
3 主要功能实现
项目综合运用了ThinkPHP + MySQL + docker等技术,并使用phpstorm作为开发工具。其中,docker技术是一个基于Go语言并遵守Apache协议的开源应用容器引擎,是一种虚拟化技术,可移植性较强,性能开销低[5]。MySQL数据库采用docker容器云技术快速构建,将镜像源切换为国内镜像,从DockerHub官方镜像仓库中查询MySQL的版本,使用docker pull下载MySQL数据库镜像。ThinkPHP使用5.0.24版本。
3.1 权限管理
权限管理功能包含节点管理(增删改查)、角色管理(增删改查)、用户管理等。
3.1.1节点添加
节点按照3个层级划分,第一层为模块,第二层为控制器,第三层为功能。由于界面上显示的功能层级最多为3层,所以采用静态设置数值的方式。
节点添加功能的实现步骤如下:首先,选取父级节点选项,将添加节点所需的其他数据(包括节点名、节点名称、节点状态、排序权重等字段信息),一并存入$_POST全局数组;然后,使用node模型内置的create方法检测数据的有效性,若通过有效性检测则直接调用M(‘node’)->add($_POST)即可完成,否则提示错误信息。
3.1.2权限分配
权限管理模块中,最重要的功能就是为角色配置权限。
实现步骤如下:
步骤1:选择指定角色,提交权限分配请求。
管理员可以在角色列表界面,选择为角色分配相应功能。模块名选择admin,控制器名使用accessController,方法名使用access,请求参数选择角色编号,拼装url,提交给accessController控制器处理。
步骤2:按照层级加载所有节点信息到界面上。
从后台中获取所有可用节点列表,向模板页面上渲染的数据有模型列表(level为1)、控制器列表(level为2)、方法列表(level为3)、已经存在的权限列表、角色编号等。
步骤3:实现权限配置功能。
首先,通过ThinkPHP内置的I方法获取用户编号,清空与该角色相对应的权限数据;然后,循环遍历$_POST数组中的权限列表数据,分别获取角色编号、节点编号、level层级等数据;最后,检查有效性,使用M(‘acess’)->addAll()方法完成所有数据的添加。
3.2 添加周记
学生可以选择周记的开始时间,输入心得体会和工作描述,即可完成周记的添加。其实现步骤如下:
步骤1:自动计算周记开始时间。
首先,根据用户编号和“isend=0”这两个条件,检索实习编号sxid;然后,使用M(‘sxxx’)获取sxid对应的实习详细记录sxdetails,从实习的第一天开始计算,每7天就是一个周记日期区间,把计算的周记日期区间列表传递给模板页面进行渲染。
步骤2:周记添加。
——将所有的数据存入$_POST全局数组中并检测有效性,若有效则继续,否则结束;
——检索实习编号sxid(方法同步骤1),若$_POST中存储的实习编号跟sxid不一致则提示出错,否则继续下一步;
——从$_POST数组中获取周记开始时间,并自动计算周记结束时间;
——检测同一日期区间是否有周记信息,不存在则继续下一步,否则结束;
——使用weekrecord模型执行M(‘weekrecord’)->add($_POST)语句,将$_POST数组的所有数据插入到周记数据表中,完成周记填写。
3.3 实习信息管理
实习信息管理实现的主要功能包含实习人员分配、实习信息添加、实习列表管理等。
3.3.1实习信息列表
管理员使用实习信息列表功能,可以显示、编辑、删除、结束某次实习等。其实现步骤如下:
——获取基础数据,即首先从session中获取用户编号,根据用户编号获取系部编号departno;
——通过调用M(‘sxxx’)的count方法获取所有实习列表的数量;
——根据系部编号departno获取该系的所有实习列表信息;
——对实习列表信息进行分页显示,指定每页显示的数量$count,调用ThinkPHP内置的ThinkPage类完成分页,执行语句ThinkPage($count, 10);
——将实习信息列表、页码等数据传递给实习列表模板页面渲染。
3.3.2学生实习分配
管理员可以选择某次实习,从班级列表中选择指定学生,就可将学生添加到实习分配表中。
首先,获取并存放实习分配页面传来的实习信息、班级信息、学生信息等数据,将数据列表中的用户编号和实习编号压入数组$sx;然后,执行M(‘sx’)->addAll($_POST)语句,将$sx中的所有数据全部添加到数据表sx中,若添加成功则使用U方法跳转到实习分配列表页,否则给出错误提示。
4 负载测试
测试工具选择loadrunner12,按照脚本录制- >执行负载测试- > 结果分析的步骤进行测试。
4.1 测试场景
以“用户登录顶岗实习管理平台,选择填写周记,点击提交周记,提交成功后,单击注销”作为测试场景,虚拟用户总数50个,测试开始每15秒选择10个虚拟用户,持续时间为5分钟,测试结束每15秒选择10个虚拟用户退出。
4.2 测试结果
从测试结果看,本次测试的最大并发数量为50,总吞吐量为259,048,451字节,平均每秒的吞吐量为773,279个字节。事务摘要的汇总情况如表1所示。
表1 事务摘要
通过表1可以看出,执行周记填写测试场景的addweekrecord_test 事务的最小时间为0.304秒,平均时间为1.178秒,最大时间为5.516秒,其中90%的执行时间为3.111秒。所有事务测试运行的结果正常。
5 总结
顶岗实习管理平台基于ThinkPHP等开发技术得以实现,开发速度快。我们可以将最终的开发环境、数据库等统一打包成docker镜像,通过编写dockerfile实现快速部署,以方便后期维护。顶岗实习管理平台的研发完成将会提高高校学生顶岗实习管理工作的效率。下一步的研究工作将高可用、负载均衡等技术融入到顶岗实习管理平台中。
[1] 王立国. 高职院校顶岗实习管理模式的研究与实践——以我校航空工程学院为例[J]. 吉林化工学院学报, 2018,35(12):52-56.
[2] 黄玉春,罗海峰. 基于云平台的学生顶岗实习管理系统的设计与实现[J]. 榆林学院学报, 2019,29(6):83-86.
[3] 陆婷婷,殷佳庭. 基于dotnet的软件项目平台设计与实现[J]. 重庆工商大学学报(自然科学版), 2016,33(1):77-82.
[4] 周悦,钟诗敏,石晓琳,等. 基于ThinkPHP校园综合管理平台的设计与实现[J]. 智能计算机与应用, 2019,9(6):334-335.
[5] 谢超群. Docker容器技术在高校数据中心的应用[J].贵阳学院学报(自然科学版), 2015,10(4):27-29.
Development and Implementation of In-post Internship Management Platform Based on ThinkPHP
YIN Jiating & LU Tingting
For the purpose of improvement of the efficiency of in-post internship management and control of the whole process of in-post internship, the in-post internship management platform was developed based on the “ThinkPHP + MySQL + docker” technology. The research and development of in-post internship management platform follows the basic process of “demand analysis—database design—code implementation—software testing”. The plat successfully went through the load testing of LoadRunner Software, running stably with high throughput. The system will better standardize the management of in-post internship and improve the quality and effect of in-post internship.
in-post internship; access control; ThinkPHP; docker; use case diagram
TP311.52
A
1009-1114(2020)04-0028-04
2020-05-20
殷佳庭(1983—),安徽宿松人,硕士,芜湖职业技术学院讲师,研究方向为软件开发和云计算。
研究项目:芜湖职业技术学院校级自然科学重点项目(wzyzrzd201910); 芜湖职业技术学院自然科学重点研究项目(wzyzrzd201804)。
文稿责编 喻洁