3 新冠疫情风险区域管理系统 总体设计
3.1 系统功能模块设计
新冠疫情风险区域管理系统整体的功能模块包括管理员+系统用户两个模块,其总体设计模块图如图3-1所示。
图3-1 新冠疫情风险区域管理系统功能模块图
3.2系统E-R图设计
下面是整个新冠疫情风险区域管理系统中主要的数据库表总E-R实体关系图。
图3-2 新冠疫情风险区域管理系统 总E-R关系图
3.3 数据库设计
通过上一节中新冠疫情风险区域管理系统 中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
表administrative_division (行政区划)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | administrative_division_id | int | 10 | 0 | N | Y | 行政区划ID | |
2 | prefecture_level | varchar | 64 | 0 | Y | N | 地级行政区 | |
3 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
4 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表article (文章:用于内容管理系统的文章)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
表article_type (文章分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表auth (用户权限管理)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表collect (收藏)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表comment (评论)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表epidemic_information (疫情信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | epidemic_information_id | int | 10 | 0 | N | Y | 疫情信息ID | |
2 | information_no | varchar | 64 | 0 | Y | N | 信息编号 | |
3 | prefecture_level | varchar | 64 | 0 | Y | N | 地级行政区 | |
4 | release_date | date | 10 | 0 | Y | N | 发布日期 | |
5 | cumulative_diagnosis | int | 10 | 0 | Y | N | 0 | 累计确诊 |
6 | cumulative_cure | int | 10 | 0 | Y | N | 0 | 累计治愈 |
7 | cumulative_death | int | 10 | 0 | Y | N | 0 | 累计死亡 |
8 | mortality | varchar | 64 | 0 | Y | N | 死亡率 | |
9 | existing_diagnosis | int | 10 | 0 | Y | N | 0 | 现存确诊 |
10 | new_diagnosis | int | 10 | 0 | Y | N | 0 | 新增确诊 |
11 | existing_suspicion | int | 10 | 0 | Y | N | 0 | 现存疑似 |
12 | new_symptom_free | int | 10 | 0 | Y | N | 0 | 新增无症 |
13 | new_cure | int | 10 | 0 | Y | N | 0 | 新增治愈 |
14 | new_death | int | 10 | 0 | Y | N | 0 | 新增死亡 |
15 | new_suspected | int | 10 | 0 | Y | N | 0 | 新增疑似 |
16 | publishing_users | int | 10 | 0 | Y | N | 0 | 发布用户 |
17 | management | varchar | 64 | 0 | Y | N | 管理人员 | |
18 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
19 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表hits (用户点击)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表notice (公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表ordinary_users (普通用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | ordinary_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表praise (点赞)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
表prefecture_level_city_managers (地级市管理者)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | prefecture_level_city_managers_id | int | 10 | 0 | N | Y | 地级市管理者ID | |
2 | management | varchar | 64 | 0 | Y | N | 管理人员 | |
3 | prefecture_level | varchar | 64 | 0 | Y | N | 地级行政区 | |
4 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
5 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表risk_area (风险区域)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | risk_area_id | int | 10 | 0 | N | Y | 风险区域ID | |
2 | prefecture_level | varchar | 64 | 0 | Y | N | 地级行政区 | |
3 | information_cover | varchar | 255 | 0 | Y | N | 信息封面 | |
4 | epidemic_degree | varchar | 64 | 0 | Y | N | 疫情程度 | |
5 | existing_diagnosis | int | 10 | 0 | Y | N | 0 | 现存确诊 |
6 | new_diagnosis | int | 10 | 0 | Y | N | 0 | 新增确诊 |
7 | data_date | date | 10 | 0 | Y | N | 数据日期 | |
8 | regions_involved | text | 65535 | 0 | Y | N | 涉及地区 | |
9 | relevant_information | longtext | 2147483647 | 0 | Y | N | 相关情况 | |
10 | publishing_users | int | 10 | 0 | Y | N | 0 | 发布用户 |
11 | management | varchar | 64 | 0 | Y | N | 管理人员 | |
12 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
13 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
4 新冠疫情风险区域管理系统详细设计与实现
新冠疫情风险区域管理系统的详细设计与实现主要是根据前面的新冠疫情风险区域管理系统的需求分析和新冠疫情风险区域管理系统 的总体设计来设计页面并实现业务逻辑,开发工具采用ecplice,数据库在MYSQL中存储,运用了当下比较主流的SSM框架。
4.1系统前台部分功能模块的实现
当进入新冠疫情风险区域管理系统的时候,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图,再往下是疫情资讯信息,其主界面展示如下图4-1所示。
图4-1 前台首页界面图
新冠疫情风险区域管理系统 的用户可以进行注册登录,当用户左上角“注册”按钮的时候,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号,选择身份,然后填写身份信息后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可注册成功。其用注册界面展示如下图4-2所示。
图4-2注册界面图
注册关键代码如下所示。
/**
* 注册
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = service.readBody(request.getReader());
query.put("username",String.valueOf(map.get("username")));
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
baseMapper.insert(entity);
log.info("[{}] - 插入操作:{}",entity);
}
新冠疫情风险区域管理系统 中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当会员输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到新冠疫情风险区域管理系统 的首页中;否则将会提示相应错误信息,用户登录界面如下图4-3所示。
图4-3用户登录界面图
登录关键代码如下所示。
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
所有的用户都可以通过网页进入到新冠疫情风险区域管理系统 中对信息进行查看,但是要实现点赞、收藏、评论的话,就不是所有人都能操作的,必须成为新冠疫情风险区域管理系统的用户,注册登录的流程图如下图4-4所示。
图4-4注册登录流程图
4.1.4搜索风险区域界面
在新冠疫情风险区域管理系统首页上的搜索框中输入自己想要快速检索的风险区域的关键词并点击“搜索”按钮后将会输入的关键词进行和数据库中保存的风险区域进行模糊匹配,并将检索到最匹配的风险区域显示出来。搜索风险区域界面如下图4-5所示。
图4-5搜索风险区域界面图
4.1.5疫情资讯界面
当访客点击新冠疫情风险区域管理系统中导航栏上的“疫情资讯”后将会进入到该“疫情资讯”列表的界面,然后选择想要看的疫情资讯信息,点击进入到详细界面,在详细界面可以收藏+点赞+评论等操作,疫情资讯界面如下图4-6所示。
图4-6疫情资讯界面图
4.1.6疫情信息详情界面
当访客点击了任意疫情信息后将会进入该款疫情信息的详情界面,可以了解到该疫情信息的信息编号、地级行政区、发布日期、累计确诊、累计治愈、累计死亡、死亡率、现存确诊、新增确诊、现存疑似、管理人员等,疫情信息详情展示页面如图4-7所示。
图4-7 疫情信息详情界面图
4.1.7个人账户界面
当用户点击导航栏上面“个人账户”这个按钮,会出现子菜单,点击“个人账户”可以对个人的资料以及登录系统的密码进行设置,个人账户界面如下图4-8所示。
图4-8个人账户界面图
4.2系统后台部分功能模块的实现
管理员在登录界面输入账号+密码,点击“登录”按钮,系统在用户数据库表中会对管理员,系统用户的账号进行匹配,账号+密码正确的话,就会登录到系统中各个用户的主管理界面,否则提示对应的信息,返回到登录的界面,如果管理人员忘记密码的话,点击“忘记密码”根据提示可以找回密码,然后再进行登录其主界面展示如下图4-9所示。
图4-9登录界面图
新冠疫情风险区域管理系统中的管理员在“人员管理”这一菜单是中可以对注册的普通用户、地级市管理者以及管理员人员进行管控。界面如下图4-10所示。
图4-10人员管理界面图
人员管理关键代码如下所示。
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
4.2.3网站管理界面
网站管理模块是对公告消息和轮播图的设置,只有管理员权限才能进行更新维护。界面如下图4-11所示。
图4-11网站管理界面图
4.2.4疫情资讯管理界面
点击“疫情资讯”按钮会显示自己添加的疫情资讯,如果想要添加新的疫情资讯,点击“添加”按钮根据提示输入疫情资讯,点击“提交”后在疫情资讯管理界面就可以显示了,如果信息有错可以对疫情资讯进行更新维护,也可以直接删除某一疫情资讯,还可以管理评论信息,界面如下图4-12所示。
图4-12疫情资讯管理界面图
点击“风险区域”这个按钮可以查看到自己提交的所有的风险区域,支持通过疫情程度或者数据日期进行查询风险区域,如果想要添加新的风险区域,点击“添加”按钮然后根据提示输入风险区域,点击“提交”后,在风险区域管理界面就会显示新增的风险区域信息,可以点击某一日志查看健康信息的详情,也可以直接点击“删除”进行删除风险区域。界面如下图4-13所示。
图4-13风险区域管理界面图
风险区域关键代码如下所示。
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
5系统测试
5.1测试目的
5.2 系统测试用例
在对新冠疫情风险区域管理系统的测试的时候,我主要是对用户登录功能测试、疫情信息添加功能、查询风险区域、请假功能测试这六个方面进行展示的,如表5-1、5-2、5-3、5-4、所示:
表5.1 用户登录功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
用户登录模块测试 | 用户登录成功的情况 | 点击前登录界面输入账号和密码分别输入admin和admin后点击“登录”按钮。 | 登录成功并调整到用户界面 | 正确 |
疫情信息添加功能测试:
表5.2 疫情信息添加功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
疫情信息添加模块测试 | 疫情信息添加成功的情况 | 在疫情信息的页面中将点击添加,输入疫情相关信息,输入正确的信息后然后点击“提交”按钮。 | 提示添加成功 | 正确 |
疫情信息添加模块测试 | 疫情信息添加失败的情况 | 在疫情信息页面中不填写的信息编号,其他信息正常输入“提交”按钮。 | 提示“添加失败,信息不能为空” | 正确 |
查询风险区域功能模块测试:
表5.3 查询风险区域功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
查询风险区域功能测试 | 查询成功的情况 | 在风险区域界面输入数据日期或者疫情程度进行查询 | 查询成功 | 正确 |
行政区划添加功能测试:
表5.4 行政区划添加功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
行政区划添加模块测试 | 行政区划添加成功的情况 | 在行政区划的页面中将点击添加,输入行政区划相关信息,输入正确的信息后然后点击“提交”按钮。 | 提示添加成功 | 正确 |
行政区划添加模块测试 | 行政区划添加失败的情况 | 在行政区划页面中不填写的地级行政区,其他信息正常输入“提交”按钮。 | 提示“添加失败,信息不能为空” | 正确 |
5.3 系统测试结果
结论
本文描述了新冠疫情风险区域管理系统 设计与实现的原理和开发过程,该系统是通过Spring+SpringMVC+MyBatis框架来搭建后台,中间件使用的是Tomcat服务器,数据库管理平台采用开源的Mysql数据库,前台使用的是JQuery框架,同时使用Validate校验框架,这样就可以减少前端代码的输入量,而且基于JQuery框架的Validat框架使用简单,是流行的前端使用框架,前端使用的主要是Java页面展示技术。
在开发这个新冠疫情风险区域管理系统之前做了许多的准备,比如到学校进行调研,了解现在大学生对新冠疫情风险区域管理系统所要实现的功能,同时在新冠疫情风险区域管理系统的设计和开发过程中去行政区划馆以及网上查阅和学习了许多相关的文献资料,与此同时从开发这个新冠疫情风险区域管理系统的过程当中我也收获了许许多多宝贵的实践方法以及设计的思路,对系统的开发也起到了很重要的作用,新冠疫情风险区域管理系统 的开发技术选用的都是自己比较熟悉的,比如Web、SSM、MYSQL等,这些技术都在平时的课程当中学到,而且平时都能够熟练运用,在开发新冠疫情风险区域管理系统 的过程当中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,开发新冠疫情风险区域管理系统 对于我来说工作量还是比较大的,毕竟是一个完整的系统,正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在开发该新冠疫情风险区域管理系统的过程当中也是离不开导师以及同学们的帮助的,在遇到自己搞不定的问题的时候,我首先会和同学们探讨,找出解决方法,实在解决不了的时候,我会请教我的导师,在开发新冠疫情风险区域管理系统的过程中正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时新冠疫情风险区域管理系统 还有很多需要改进的地方,但是由于专业知识的浅薄,开发的系统并不是十全十美,希望以后有机会可以对其进行完善,让其真正的投入到使用之中。
致 谢
到此,整个新冠疫情风险区域管理系统 就算完成了,虽然过程十分艰难,但是等到都完成的时候,我感觉无比的自豪,虽然设计的系统还存在许多的纰漏,但是我已经拼劲全力,给自己的大学四年画上了一个圆满的句号。
在这里我首先要感谢的就是大学四年来所有教导我的老师,是他们教会了我许多的专业知识以及做人的道理,从一进校门对对开发系统一窍不通到现在能自主开发一个管理系统,里面包含了前台框架、后台框架、业务流程、数据结构、操作系统等各种知识,只有把他们统一运用好,才能够完成整个系统,这都是老师的功劳;其次我要感谢我的指导老师,在开发这个系统的时候,我遇到了无数的问题,经常通过线上、线下的方式去请教导师,每次去请教导师,他从来没有不耐烦,都是细心的引导,告诉我怎么样实现这个功能,怎么样才能使得系统更加完善,然后通过自己查询相关资料解决问题,提高了自己自主解决问题的能力,授人以鱼不如授人以渔,指导老师的这种工作态度受益终生,我也会向老师不断靠拢,向他学习,在此我只想说一句:“老师,谢谢您,您辛苦了”!最后我还要感谢我的室友、同学,在一起学习这四年,他们不但学习上给了我很多建议,在生活上更加给了我帮助,正是有他们的帮助,我的大学生涯才如此完美。
最后,希望自己在未来的道路上能够越走越远,不辜负在大学的学习以及老师们的细致的教导,追风赶月莫停留,平荒尽处是春山。
邳州网站设计价格汕头如何做网页设计简便网站建设电子产品开发流程8个步骤免费网站设计神器seo关键词是什么意思如何进行app推广2023西安疫情最新公布虚拟机下载手机版在手机里面开网店怎么开邯郸网站设计怎么申请搜题在线使用网页版seo优化的主要内容沈阳男科医院哪家正规的一比一高仿手表网站沈阳关键词优化公司网站建设的网络海口建站费用html语言个人网址怎么填写蘑菇头表情包制作网站app制作企业网络架构指什么电子工程师是干啥的建筑设计模板网页版qq空间电脑版uniapp小程序开发教程如何做网络营销推广工作深圳工程造价信息网官网网站建设优质公司海口专业网站建设地址