将系统权限按管理员,学生和教师这三类涉及学生划分。
1;管理员功能需求
管理员登陆后,主要模块包括首页、个人中心、专业管理、课程管理、教师管理、学生管理、课程报名管理、课程签到管理、学生作业管理、作业批改管理、系统管理等功能
2;前台学生功能需求
学生登陆后进入小程序可以实现首页、公告信息、课程信息、个人中心的等,在后台可以对课程报名管理、课程签到管理、学生作业管理、作业批改管理、我的收藏管理功能
PHP语言是当前最流行的高级语言之一,它主要是为了网页开发而诞生的,尤其是最近两年随着互联网的高速发展,越来越多的网站诞生了,这也就导致更多的人喜欢上了PHP,和PHP等其他语言相比,它的语法结构简单,大多数学习过编程的人基本只需要看下说明和教程就可以快速的上手进行开发,而其他语言都需要经过漫长的学习和培训才能做到这一点。为此很多人说PHP是世界上最好的语言。
PHP虽然是为了WEB诞生的,但是它在配置和运行方面都非常的方便,它也是一个可以跨平台的语言,可以在Windows和Unix,Linux甚至苹果的Mac IOS上运行,在环境配置方面现在市面上有很多的集成开发环境,比较知名的有PHPstudy,Wamp,XAMPP等,这些环境安装都是比较简单的,及其方便安装和部署,这些都是让PHP快速吸粉的主要因素。而且PHP语言是一种开源且免费的语言,这更加让它深受广发开发人员的喜欢。
本系统设计的现状和趋势,从需求、结构、数据库等方面的设计到系统的实现,分别为管理员、学生和教师的实现。论文的内容从系统的设计、描述、实现、分析、测试方面来表明开发的过程。本系统根据现实情况来选择一种可行的开发方案,借助PHP编程语言和MySQL数据库等实现系统的全部功能,接下来对系统进行测试,测试系统是否有漏洞和测试学生权限来完善系统,最终系统完成达到相关标准。
约课管理系统能够通过互联网得到广泛的、全面的宣传,让尽可能多的学生了解和熟知约课管理系统的便捷高效,不仅为群众提供了服务,而且也推广了自己,让更多的群众了解自己。对于约课管理而言,若拥有自己的系统,通过系统得到更好的管理,同时提升了形象。
<?php
namespace app\index\controller;
use http\Params;
use think\Cache;
use think\Controller;
use think\Db;
use think\Request;
use think\Session;
class UsersController extends CommonController
{
public function __construct()
{
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
header('Access-Control-Allow-Headers:Origin,Content-Type,Accept,token,X-Requested-With,device');
}
public $columData = [
'id','addtime','username','password','role'
];
/**
* 登录接口
* POST
* */
public function login(){
$name = trim(input('get.username'));
$password = trim(input('get.password'));
$result = Db::table('users')->where(['username' => $name, 'password' => $password])->find();
if ($result){
$token_array = [
"iat" => time(), //签发时间
"exp" => time()+7200, //token 过期时间
'id' => $result['id'],
'isAdmin' => 1,
'tablename'=> 'users',//表名
"success" => $result, //记录的uid的信息,如果有其它信息,可以再添加数组的键值对
];
$tokens = base64_encode(json_encode($token_array));
$data = ['code' => 0, 'token' => $tokens];
Cache::set($tokens,$result['id']);
Cache::set(md5($result['id']),$result['username']);
return json($data);
}
return json(['code' => 500,'msg'=>"登陆失败,账号或密码错误。"]);
}
/**
* 退出
* POST
*/
public function logout(){
$token = $this->token();
Cache::pull($token);
return json(['code'=>0,'msg'=>'退出成功']);
}
/**
* 获取session的接口
* GET
*/
public function session(){
if (Cache::get($this->token())==false) return json(["code"=> 500,'msg'=>"您还没有登陆。"]);
$data = json_decode(base64_decode($this->token()),true);
$arrayData = $data['success'];
return json(['code'=>0,'data'=>$arrayData]);
}
/**
* 找回密码 重置为123456
**/
public function resetPass(){
$username = input('post.username');
$count = DB::table('users')->where(['username' => $username])->count();
if($count==0) return json(['code'=>500,'mas'=>"账号不存在"]);
$result = Db::table('users')->where(['username' => $username])->update(['password' => '123456']);
return json(['code'=>0,'mas'=>"密码已重置为:123456"]);
}
/**
* 分页接口 GET
* $page 当前页
* $limit 每页记录的长度
* $sort 排序字段
* $order 升序(默认asc)或者降序(desc)
* */
public function page(){
$token = $this->token();
if (Cache::get($token) == false) return json(['code'=>500,'msg'=>"您还没有登陆。"]);
$userid = Cache::get($token);
$base = json_decode(base64_decode($token,true),true);
$tabnames = $base['tablename'];
$page = isset($_GET['page'])?input('get.page'):"1";
$limt = isset($_GET['limit'])?input('get.limit'):"10";
$sort = isset($_GET['sort'])?input('get.sort'):"id";
$order = isset($_GET['order'])?input('get.order'):"asc";
$where = [];//判断条件
$count = Db::table('users')->where($where)->count();
// 取整函数(ceil,floor,round)
$page_count = ceil($count/$limt);//页数
$result = Db::table('users')->where($where)->limit(($page-1)*10,$limt)->order($sort." ".$order)->select();
return json([
'code' => 0,
'data' => [
"total" => $count,
"pageSize" => $limt,
"totalPage" => $page_count,
"currPage" => $page,
"list" => $result
]
]);
}
/**
* 保存接口 post
*
*/
public function save(){
$token = $this->token();
$session = Cache::get($token);
if ($session == false) return json(['code'=>500,'msg'=>"您还没有登陆。"]);
$postData = input('post.');
if (!empty($postData)&&!is_array($postData)){
$postData = json_decode($postData,true);
}
$v = array();
foreach ($postData as $key => $value){
if (in_array($key, $this->columData)){
$v[$key] = $value;
}
}
$result = Db::table('users')->insert($v);
if (!$result) return json(['code'=>500,'msg'=>"新增失败"]);
return json(['code'=>0]);
}
/**
* 更新接口 post
* 包含主键
*/
public function update(){
$postData = input('post.');
$token = $this->token();
if (Cache::get($token)==false) return json(['code'=>500,'msg'=>"您还没有登陆。"]);
$v = $where = array();
foreach ($postData as $key => $value){
if (in_array($key, $this->columData)){
if ($key == "id"){
$where[$key] = $value;
}
$v[$key] = $value;
}
}
$result = Db::table('users')->where($where)->update($v);
if (!$result) return json(['code'=>500]);
return json(['code'=>0]);
}
/**
* 删除接口 post
* $id id
*/
public function delete(){
$ids = input('post.');
$result = Db::table('users')->delete($ids);
return json(["code"=> 0]);
}
/**
* 详情接口info ,后台接口
* get
* $id id
* */
public function info($id=false){
$token = $this->token();
if (Cache::get($token)==false) return json(["code"=> 500,'msg'=>"您还没有登陆。"]);
$where = ['id'=>$id];
$result = Db::table('users')->where($where)->find();
return json(["code"=> 0,'data' => $result]);
}
}
目录
1 绪论 1
1.1课题背景 1
1.2课题研究现状 1
1.3初步设计方法与实施方案 2
1.4本文研究内容 2
2 系统开发环境 4
2.1 使用工具简介 4
2.2 环境配置 4
2.3 B/S结构简介 4
2.4 MySQL数据库 5
2.5 框架介绍 5
3 系统分析 6
3.1系统可行性分析 6
3.1.1经济可行性 6
3.1.2技术可行性 6
3.1.3运行可行性 6
3.2系统现状分析 6
3.3功能需求分析 7
3.4系统设计规则与运行环境 8
3.5系统流程分析 8
3.5.1操作流程 8
3.5.2添加信息流程 9
3.5.3删除信息流程 10
4 系统设计 11
4.1系统设计主要功能 11
4.2数据库设计 11
4.2.1数据库设计规范 11
4.2.2 E/R图 11
4.2.3数据表 12
5 系统实现 25
5.1系统功能模块 25
5.2后台模块 27
5.2.1管理员功能模块 27
5.2.2用户功能模块 30
6 系统测试 33
6.1功能测试 33
6.2可用性测试 33
6.3性能测试 34
6.4测试结果分析 34
7结 论 35
参考文献 36
致 谢 37