本学生公寓管理系统是针对目前学生公寓管理的实际需求,从实际工作出发,对过去的学生公寓管理系统存在的问题进行分析,完善学生的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。
本系统结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用PHP语言,结合Thinkphp5框架以及MYSQL数据库设计并实现的。本学生公寓管理系统主要包括系统学生管理、宿管管理、学生管理、缴费管理、缴费类型管理、通知公告管理、留校申请管理、学生报修管理、维修状况管理、留校申请管理、留言板等多个模块。它帮助学生公寓管理实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了学生公寓管理数据资源,有效的减少了学生公寓管理的经济投入,大大提高了学生公寓管理的效率
PHP语言是当前最流行的高级语言之一,它主要是为了网页开发而诞生的,尤其是最近两年随着互联网的高速发展,越来越多的网站诞生了,这也就导致更多的人喜欢上了PHP,和JAVA等其他语言相比,它的语法结构简单,大多数学习过编程的人基本只需要看下说明和教程就可以快速的上手进行开发,而其他语言都需要经过漫长的学习和培训才能做到这一点。为此很多人说PHP是世界上最好的语言。
PHP虽然是为了WEB诞生的,但是它在配置和运行方面都非常的方便,它也是一个可以跨平台的语言,可以在Windows和Unix,Linux甚至苹果的Mac IOS上运行,在环境配置方面现在市面上有很多的集成开发环境,比较知名的有PHPstudy,Wamp,XAMPP等,这些环境安装都是傻瓜式的,及其方便安装和部署,这些都是让PHP快速吸粉的主要因素。而且PHP语言是一种开源且免费的语言,这更加让它深受广发开发人员的喜欢。
系统主要是以后台管理员管理为主。管理员需要先登录系统然后才可以使用本系统,管理员可以对系统学生管理、学生信息管理、学生管理、通知公告管理、缴费信息管理、维修状况管理、系统管理进行添加、查询、修改、删除,以保障学生公寓管理系统的正常运行。
如图3.2是管理员用例图,学生公寓管理系统中管理员的主要功能包括对系统学生管理、学生管理、缴费类型管理、通知公告管理、缴费信息管理、维修状况管理等
<?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