摘要
荣誉管理是学校工作的一部分,以前的手工操作对日后的维护和使用都很不方便。开发的师生荣誉管理系统是一个专门用于登记、统计学校教职工(包含学生)荣誉信息的管理软件,基于PHP和Thinkphp 框架进行开发,能够为学校学生及教职工提供一个跨平台、跨系统的数字化管理服务。学校在学期的考核或者评职晋级中可以方便地通过此平台审核这部分资料,而且对后续的使用提供了蓝本。有了这个系统,随时查询教师以及学生的在校荣誉信息,既方便了学校的管理工作,又大大地提高工作效率。同时学校管理人员可以方便地进行查询、汇总,学校网站也可以链接本系统的数据,及时显示学校最新荣誉情况。
关键词:师生荣誉管理;PHP;MySQL;Thinkphp框架
4 师生荣誉管理系统详细设计与实现
师生荣誉管理系统的详细设计与实现主要是根据前面的师生荣誉管理系统的需求分析和师生荣誉管理系统的总体设计来设计页面并实现业务逻辑。主要从师生荣誉管理系统界面实现、业务逻辑实现这两部分进行介绍。
4.1用户功能模块
4.1.1 教师首页界面
当进入师生荣誉管理系统的时候,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是公告信息,再往下是各种各样的系统信息,其主界面展示如下图4-1所示。
图4-1 教师首页界面图
首页的逻辑代码如下所示。
public function upload()
{
//上传文件目录获取
$month = date('Ym', time());
$data = 'file';//文件域
$path = 'upload/file/' . $month . "/";//上传文件保存位置
$allow_ext = explode(",", "jpg,jpeg,png,jfif,bmp,gif,ico,xls,xlsx,AVI,mov,rmvb,rm,FLV,mp4,3GP");
if ($_FILES) {
$file = $_FILES[$data];
$rst = [];
if (!empty($file['name'])) {
$file_type = explode('.', $file['name']);
$ext = end($file_type); //获取文件的格式
$ext = strtolower($ext);
if (!in_array($ext, $allow_ext)) {
$rst['error']['code'] = 30000;
$rst['message'] = '只能上传jpg,jpeg,png,jfif,bmp,gif,ico,xls,xlsx,AVI,mov,rmvb,rm,FLV,mp4,3GP类型文件';
} else {
if (!is_dir($path))//判断目录是否存在
{
mkdir($path, 0777, true);//如果目录不存在则创建目录
};
$name = date('YmdHis') . '_' . rand(10000, 99999) . '.' . $ext;
$save_rst = move_uploaded_file($file['tmp_name'], $path . $name);
if ($save_rst !== false) {
// $rst['code'] = 1;
$rst['result']['url'] = 'http://'.$_SERVER['HTTP_HOST'].'/'.$path . $name;
// $rst['ext'] = $ext;
} else {
$rst['error']['code'] = 30000;
$rst['error']['message'] = '文件上传失败';
}
}
} else {
$rst['error']['code'] = 30000;
$rst['error']['message'] = '未选择文件';
}
} else {
$rst['error']['code'] = 30000;
$rst['error']['message'] = '未获取到文件';
}
return json_encode($rst);
}
4.1.2 教师登录界面
当教师输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到师生荣誉管理系统的首页中;否则将会提示相应错误信息,教师登录界面如下图4-2所示。
图4-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' => '登录失败,账号不存在']];
}
}
4.1.3公告信息界面
当点击导航栏上的“公告信息”的时候,就会进入对应的界面查看公告信息,公告信息界面如下图4-3所示。
图4-3公告信息界面图
公告信息的逻辑代码如下所示。
public function sum()
{
$request = Request::param();
if (isset($request['field'])) {
if (!empty($request['field'])) {
$result = $this->model->sum_field($request, $this->table, $this->table_id);
$data = $result;
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
return json_encode($data);
}
4.1.4 教师荣誉界面
教师登录系统后可以点击“教师荣誉”菜单,对自己的荣誉信息进行查看了解等,教师荣誉界面如下图4-4所示。
图4-4教师荣誉界面图
教师荣誉的逻辑代码如下:
public function sum_group()
{
$request = Request::param();
if (isset($request['groupby']) && isset($request['field'])) {
if (!empty($request['groupby']) && !empty($request['field'])) {
$result = $this->model->sum_group($request, $this->table, $this->table_id);
$data = $result;
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "groupby或者field的值不能为空!";
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "groupby或者field的值不能为空!";
}
return json_encode($data);
}
4.1.5 学生荣誉界面
教师点击“学生荣誉”菜单,可以查看搜索学生荣誉信息,学生荣誉展示页面如图4-5所示。
图4-5 学生荣誉界面图
学生荣誉界面逻辑代码如下:
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.2.1 荣誉信息管理界面
师生荣誉管理系统中的管理人员在“荣誉信息”这一菜单中是可以对荣誉信息(标题名称、统计名称、荣誉数量、备注信息)进行增删改查操作等。界面如下图4-6所示。
图4-6荣誉信息管理界面图
荣誉信息管理界面逻辑代码如下:
public function get_obj()
{
$request = Request::param();
$result = $this->model->get_obj($request, $this->table, $this->table_id, $this->table_id);
$data['result'] = $result;
return json_encode($data);
}
4.2.2 用户管理界面
师生荣誉管理系统中的管理人员在“教师管理”这一菜单是中可以对注册的教师管理员进行管控,这里以教师管理为例。界面如下图4-7所示。
图4-7教师管理界面图
教师管理界面关键代码如下:
public function count()
{
$request = Request::param();
$result = $this->model->list_count($request, $this->table, $this->table_id);
$data['result'] = $result;
return json_encode($data);
}
4.2.3 教师荣誉管理界面
师生荣誉管理系统中的管理人员在“教师荣誉管理”这一菜单中是可以对教师荣誉信息进行上传发布,界面如下图4-8所示。
图4-8教师荣誉管理界面图
教师荣誉管理界面逻辑代码如下:
public function get_list()
{
$request = Request::param();
$result['list'] = $this->model->get_list($request, $this->table, $this->table_id);
$result['count'] = $this->model->list_count($request, $this->table, $this->table_id);
$data['result'] = $result;
return json_encode($data);
}
4.2.4 学生荣誉管理界面
师生荣誉管理系统中的管理人员在“学生荣誉管理”这一菜单下是可以对学生荣誉信息进行添加发布,其管理界面如下图4-9所示。
图4-9学生荣誉管理界面图
学生荣誉管理界面逻辑代码如下:
public function set()
{
if (Request::isPost()) {
$get = Request::get();
$where = [];
foreach($get as $k => $g){
//过滤参数中的页码信息
if($k != 'page' && $k != 'size'){
$where[$k] = $g;
}
}
$request = Request::post();
if($this->table != 'user'){
$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 {
$result = $this->model->set($request, $this->table, $this->table_id, $where);
$data = $result;
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
return json_encode($data);
}
5系统测试
5.1 系统测试用例
系统测试包括:教师/学生登录功能测试、荣誉信息功能测试、学生荣誉添加、教师荣誉添加、密码修改功能测试,如表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.2 系统测试结果
通过编写师生荣誉管理系统的测试用例,已经检测完毕用户登录功能测试、荣誉信息功能、学生荣誉、教师荣誉、密码修改功能测试,通过这4大模块为师生荣誉管理系统的后期推广运营提供了强力的技术支撑。
结论
此时项目已经完成,即使实施的时间不是很长,但是这个过程中需要准备很长的一段时间去对系统设计开发所实际到的技术进行学习。在学习的过程中,我逐渐认识得到了我自身存在的一些不足。对于一些控制是必要的应用技能,能够理解,整个过程中仅仅是一个掌握了常用的性能和控制方法,我觉得挺容易的。从该系统中,系统的分析和设计的调查数据,并且已经经历了几个月,并努力几个月,该系统已经完成。很显然,该系统仍有很多不成熟,在系统设计过程中有许多技术缺陷存在。在设计的过程中也涉及到了很多自己无法解决的问题,主要通过找专业的网站和论坛来解决这些问题,对于圆满完成我的毕业设计,他们也贡献了很大一部分力量。系统的开发环境和配置都是可以自行安装的,系统使用PHP开发语言,使用比较成熟的Mysql数据库进行对系统前台及后台的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得系统运行更具有稳定性和安全性,从而完成实现系统的开发。
系统投入运行时,各功能均运行正常。系统的每个界面的操作符合常规逻辑,对使用者来说操作简单,界面友好。整个系统的各个功能设计合理,体现了人性化。
求职招聘系统的主要特点有:
(1)简单大方,易于操作的 Web 页面;
(2)利用 Ajax 技术使页面进行无刷新更新;
(3)根据用户的浏览和搜索记录,用户可以浏览管理员发布的荣誉列表信息;
(4)有良好的安全性和可扩展性,增强了系统的可靠性,使系统保持持久的生命力。
由于时间限制和本人能力条件有限,该系统还存在一些不足,今后也会出现许多新的开发技术,未来还可以对系统做出如下改进:
(1)优化系统页面,使页面更加美观且方便操作;
(2)优化搜索功能,提供多条件选择查询搜索;
(3)进一步提高系统的安全性,使系统更加健壮;
(4)优化数据和代码,提升软件效率,方便系统维护和扩展。
源码获取