第 3 章高校学生考证资源共享小程序总体设计
在上一章节中分析了高校学生考证资源共享小程序的功能性需求,并且根据需求分析了高校学生考证资源共享小程序中的用例。那么接下来就要开始对高校学生考证资源共享小程序架构、主要功能和数据库开始进行设计。
3.1系统功能模块设计
系统的整体架构确定以后,再来看高校学生考证资源共享小程序的主要功能模块图。整体的功能模块包括管理员+用户两个模块,实现的模块主要有用户管理、考证资讯管理、资讯分类管理、考证交流管理、练习题库管理、考证分类管理、考证资料管理等。
图3.1 高校学生考证资源共享小程序功能模块图
3.2数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有E-R模型和逻辑结构设计两部分。
3.2.1数据库概念结构设计
下面是整个高校学生考证资源共享小程序中主要的数据库表总E-R实体关系图。
图3.2 高校学生考证资源共享小程序总E-R关系图
下面根据高校学生考证资源共享小程序的数据库总E-R关系图可以得出高校学生考证资源共享小程序需要很多E-R图,在此罗列出来一些主要的数据库E-R模型图。
图3.3 考证交流E-R关系图
图3.4 考证资料E-R关系图
图3.5 练习题库E-R关系图
3.2.2数据库逻辑结构设计
通过前面E-R关系图一共需要创建很多个数据表。在此罗列这几个主要数据库表的关系模型如下:
(1)registered_users表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
registered_users_id | int | 11 | 是 | 是 | 注册用户ID |
full_name | varchar | 64 | 否 | 否 | 姓名 |
gender | varchar | 64 | 否 | 否 | 性别 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
(2)data_classification表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
data_classification_id | int | 11 | 是 | 是 | 资料分类ID |
data_type | varchar | 64 | 否 | 否 | 资料类型 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
(3)exam_question表
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
exam_question_id | mediumint | 8 | 是 | 是 | 练习题库 |
type | varchar | 20 | 否 | 否 | 类型 |
title | varchar | 255 | 否 | 否 | 题目 |
question_item | varchar | 500 | 否 | 否 | 选项 |
answer | varchar | 500 | 否 | 否 | 参考答案 |
score | double | 8 | 否 | 否 | 总分 |
question_order | int | 11 | 否 | 否 | 排序 |
exam_id | mediumint | 8 | 否 | 否 | 所属试卷 |
create_time | timestamp | 0 | 是 | 否 | 创建时间: |
update_time | timestamp | 0 | 是 | 否 | 更新时间: |
(4)exam表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
exam_id | mediumint | 8 | 是 | 是 | 考试id |
name | varchar | 32 | 是 | 否 | 考试名称:[2,32] |
duration | int | 11 | 否 | 否 | 答题时长 |
score | double | 8 | 否 | 否 | 总分 |
status | varchar | 10 | 否 | 否 | 状态:启用、禁用 |
create_time | timestamp | 0 | 是 | 否 | 创建时间: |
update_time | timestamp | 0 | 是 | 否 | 更新时间: |
(5)notice表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
notice_id | mediumint | 8 | 是 | 是 | 公告id: |
title | varchar | 125 | 是 | 否 | 标题: |
content | longtext | 0 | 否 | 否 | 正文: |
create_time | timestamp | 0 | 是 | 否 | 创建时间: |
update_time | timestamp | 0 | 是 | 否 | 更新时间: |
(6)textual_research_classificationn表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
textual_research_classification_id | int | 11 | 是 | 是 | 考证分类ID |
name | varchar | 64 | 否 | 否 | 考证名称 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
(7)textual_research_materials表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
textual_research_materials_id | int | 11 | 是 | 是 | 考证资料ID |
data_name | varchar | 64 | 否 | 否 | 资料名称 |
data_type | varchar | 64 | 否 | 否 | 资料类别 |
name | varchar | 64 | 否 | 否 | 考证名称 |
cover | varchar | 255 | 否 | 否 | 封面 |
data | varchar | 255 | 否 | 否 | 资料 |
data_introduction | text | 0 | 否 | 否 | 资料介绍 |
hits | int | 11 | 是 | 否 | 点击数 |
praise_len | int | 11 | 是 | 否 | 点赞数 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
(8)upload表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
upload_id | int | 11 | 是 | 是 | 上传ID |
name | varchar | 64 | 否 | 否 | 文件名 |
path | varchar | 255 | 否 | 否 | 访问路径 |
file | varchar | 255 | 否 | 否 | 文件路径 |
display | varchar | 255 | 否 | 否 | 显示顺序 |
father_id | int | 11 | 否 | 否 | 父级ID |
dir | varchar | 255 | 否 | 否 | 文件夹 |
type | varchar | 32 | 否 | 否 | 文件类型 |
praise_len | int | 11 | 是 | 否 | 点赞数 |
第 4 章关键模块的设计与实现
高校学生考证资源共享小程序的详细设计与实现主要是根据前面的高校学生考证资源共享小程序的需求分析和高校学生考证资源共享小程序的总体设计来设计页面并实现业务逻辑。主要从高校学生考证资源共享小程序界面实现、业务逻辑实现这两部分进行介绍。
4.1用户模块
4.1.1前台首页界面
当进入高校学生考证资源共享小程序的时候,首先映入眼帘的是系统的导航栏,在左上角能够看到导航栏,其主界面展示如下图4.1所示。
图4.1 首页界面图
4.1.2 用户登录界面
高校学生考证资源共享小程序中的前台上注册后的用户是可以通过自己的username和password进行登录的,当会员输入完整的自己的username和password信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的username和password在数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到高校学生考证资源共享小程序的首页中;否则将会提示相应错误信息,用户登录界面如下图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考证资讯界面图
考证资讯的关键代码如下。
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
4.1.4考证交流界面
当访用户击高校学生考证资源共享小程序中导航栏上的“考证交流”后将会进入到该考证交流列表,可以搜索查看某个交流信息,考证交流面如下图4.4所示。
图4.4考证交流界面图
考证交流的关键代码如下。
public function avg_group()
{
$request = Request::param();
if (isset($request['groupby']) && isset($request['field'])) {
if (!empty($request['groupby']) && !empty($request['field'])) {
$result = $this->model->avg_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练习题库界面图
4.1.6我的收藏界面
当用户点击右上角“我的收藏”这个按钮,会出现个人收藏信息,我的收藏界面如下图4.6所示。
图4.6我的收藏界面图
4.1.7基本信息界面
当用户在后台点击 “基本信息”这个按钮,会出现自己个人信息,支持在线修改,基本信息界面如下图4.7所示。
图4.7基本信息界面图
基本信息关键代码:
public function avg()
{
$request = Request::param();
if (isset($request['field'])) {
if (!empty($request['field'])) {
$result = $this->model->avg_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.2管理人员角色模块
高校学生考证资源共享小程序的管理员人员包括了管理员,用户两部分,其中管理员拥有最高的权限,可以对用户信息、系统信息进行管控。
4.2.1登录界面
管理员在登录界面输入账号+密码,点击“登录”按钮,系统在用户数据库表中会对管理员的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,如果管理人员忘记密码的话,点击“忘记密码”根据提示可以找回密码,然后再进行登录其主界面展示如下图4.8所示。
图4.8登录界面图
4.2.2用户管理界面
用户管理模块包含了管理员、用户两个部分,管理员在后台都可以查看到用户的信息,可以对用户进行增删改查操作;这里以用户用户为例,界面如下图4.9所示。
图4.9用户管理界面图
用户管理关键代码:
$obj = $this->where($where)->field($field)->find();
$result = self::allowField(true)->save($request);
$result = $this->where($where)->update($request);
$result = $this->where($where)->delete();
4.2.3考证资料管理界面
管理员点击“考证资料”这一按钮后会显示出考证资料列表,任选一条信息,点击“编辑”这一按钮后,会对考证资料状态进行设置;考证资料界面如下图4.10所示。
图4.10考证资料管理界面图
考证资料管理关键代码
public function add($request=[],$table_name = '',$table_id = ''){
$result = self::allowField(true)->save($request);
if ($result) {
return ['result' => 1];
} else {
return ['error' => ['code' => 3000, 'message' => '数据添加失败']];
}
}
4.2.4考证资讯管理界面
点击“考证资讯”这一按钮后会显示出所有的考证资讯,在考证资讯界面可以添加新的考证资讯,可以对考证资讯进行修改、删除,考证资讯管理界面如下图4.11所示。
图4.11考证资讯管理界面图
考证资讯管理关键代码
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.2.5练习题库管理界面
点击“练习题库管理”这一按钮后会显示出所有的练习题库,在练习题库界面可以添加新的练习题库,可以对练习题库进行修改、删除,练习题库管理界面如下图4.12所示。
图4.12 练习题库管理界面图
练习题库管理关键代码
public function avg()
{
$request = Request::param();
if (isset($request['field'])) {
if (!empty($request['field'])) {
$result = $this->model->avg_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.2.6资料分类管理界面
点击“资料分类管理”这一按钮后会显示出所有的资料分类信息,在资料分类信息界面可以添加新的资料分类信息,可以对其进行修改、删除,资料分类管理界面如下图4.13所示。
图4.13资料分类管理界面图
互联网十大排行榜宣传推广的方式江苏盐城疫情最新消息ppt的制作方法商业空间设计的特点湖南人文科技学院招聘重庆seo霸屏网站百度云链接外贸海外网站推广国家卫生健康委临床检验中心搜索引擎优化特点营销策划方案设计的技巧智慧园区 展厅设计南阳seo优化100件创意产品宁波网络优化seo报价域名停靠app免费下载网站购物app首页ui设计湖北潜江信息网营销技巧的重要性个人网站建设方案书 学生永久免费网站推荐包装袋设计免费网站2022年能用的网址电子商务网站设计中影响客户体验的元素有牛商网抖音培训靠谱吗山东酷雅展陈装饰有限公司黄骅烈士网络营销的技巧有哪些网店设计方案范文河南搜索引擎推广公司