文末获取源码
开发语言:Java
开发工具:IDEA /Eclipse
数据库:MYSQL5.7
应用服务:Tomcat7/Tomcat8
使用框架ssm+vue
JDK版本:jdk1.8
前言介绍
本系统从学生的功能要求出发,建立了高校生活服务平台 ,系统中的功能模块主要是实现管理员;首页、个人中心、学生管理、维修师傅管理、宿舍公告管理、自习室管理、预约信息管理、设备报修管理、维修信息管理、维修评价管理、试卷管理、试题管理、论坛管理、系统管理、考试管理,学生;首页、个人中心、预约信息管理、设备报修管理、维修信息管理、维修评价管理,维修师傅;首页、个人中心、设备报修管理、维修信息管理、维修评价管理系统管理,前台首页;首页、宿舍公告、自习室、论坛、试卷列表、校园公告、个人中心、后台管理、在线沟通等功能部分;经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与高校生活服务平台实现的实际需求相结合,讨论了java开发的高校生活服务平台的使用。
系统设计
高校生活服务平台的设计主要是为了满足学生的实际需求。 因此,它需要通过Internet实现,因此它必须具备硬件和软件基础。该平台最终可以通过科学技术和各种方式达到支持智能化的信息管理的目的。因此,它必须具备网络高校生活服务平台信息所需的环境和各种资料,并保证实现开放性,模块性和实用性三个原则。
高校生活服务平台,主要包括管理员、学生、维修师傅三个权限角色,对于用户角色不同,所使用的功能模块相应不同。如下图
数据库设计
数据库是信息系统的基础和核心。数据库设计的好坏直接影响到信息系统开发的成败。创建数据库表首先确定实体的属性和实体之间的关系。根据关系创建一个数据表。
实体ER图
管理员信息实体属性图如图
维修师傅信息实体属性图如图
预约信息实体属性图如图
维修评价信息实体属性图如图
数据表
根据系统功能设计的要求和功能模块的划分,高校生活服务平台的设计与实现一共涉及到四个数据表。下面就介绍一下各别主要数据库表的设计结构及其功能建立数据库表:
shebeibaoxiu设备报修表
Field | Type | Comment |
id | int(11) | 主键 |
addtime | varchar(200) | 添加时间 |
mingcheng | varchar(200) | 名称 |
gonghao | 工号 | |
shifuxingming | varchar(200) | 师傅姓名 |
baoxiuneirong | varchar(200) | 报修内容 |
baoxiuriqi | varchar(200) | 报修日期 |
xuehao | varchar(200) | 学号 |
xueshengxingming | varchar(200) | 学生姓名 |
sushe | varchar(200) | 宿舍 |
sushegonggao宿舍公告表
Field | Type | Comment |
id | int(11) | 主键 |
addtime | varchar(200) | 添加时间 |
biaoti | varchar(200) | 标题 |
tupian | varchar(200) | 图片 |
gonggaoneirong | varchar(200) | 公告内容 |
fabushijian | varchar(200) | 发布时间 |
weixiupingjia维修评价表
Field | Type | Comment |
id | int(11) | 主键 |
addtime | varchar(200) | 添加时间 |
mingcheng | varchar(200) | 名称 |
gonghao | varchar(200) | 工号 |
shifuxingming | varchar(200) | 师傅姓名 |
pingfen | varchar(200) | 评分 |
pingjianeirong | varchar(200) | 评价内容 |
riqi | varchar(200) | 日期 |
xuehao | varchar(200) | 学号 |
weixiushifu维修师傅表
Field | Type | Comment |
id | int(11) | 主键 |
addtime | varchar(200) | 添加时间 |
gonghao | varchar(200) | 工号 |
mima | varchar(200) | 密码 |
shifuxingming | varchar(200) | 师傅姓名 |
xingbie | varchar(200) | 性别 |
touxiang | varchar(200) | 头像 |
dianhua | varchar(200) | 电话 |
系统实现
前台首页功能模块
学生登录功能是系统中一个非常重要的功能模块。这个函数模块需要做的第一件事是设计系统的安全性。不能说任何打开登录界面的人都可以进入系统。我们想控制管理。学生的账号和密码,只有拥有权限的学生才能通过这个登录界面进入管理界面,这是非常重要的。学生想要登录和使用系统首先进入登录账户和登录密码,然后我们使用程序来检索,检索数据库中的账户信息一致输入账号密码,如果输入账号信息让学生登录时,如果它不存在,给一个提示,非法登陆,所以这个功能模块是非常重要的。
学生通过网址进入到网站界面,进行填写自己的用户名和密码等信息输入完成后学生登录成功,如图1所示,如果学生没有自己的账户信息,则需要学生进行在线注册,学生注册时根据需求可以通过注册界面提示的文本框信息进行在线填写自己的基本信息内容,信息编辑完成后核对信息无误后进行在线提交,新的学生注册完成,如图2
图1
如图2
学生登录进入到前台首页界面,可以进行查看首页、宿舍公告、自习室、论坛、试卷列表、校园公告、个人中心、后台管理、在线沟通等功能模块,进行相对应操作,通过自习室进行填写图书馆名称、自习室号、时间段、容纳人数,进行预约操作,如图
宿舍公告
自习室
论坛
试卷列表
校园公告
个人中心
在线沟通
学生功能模块
学生通过点击后台管理,进入页面可以进行首页、个人中心、预约信息管理、设备报修管理、维修信息管理、维修评价管理等功能模块,进行相对应操作,如图
设备报修管理:通过设备报修管理可以进行名称、工号、师傅姓名、保修内容、保修日期、学号等信息进行详情,如图
维修信息管理:学生通过列表可以获取名称、学号、学生姓名、维修情况、维修内容、费用、维修日期、工号、师傅姓名、是否支付等信息,进行详情操作,如图
维修评价管理:学生通过列表可以获取名称、工号、师傅姓名、评分、评价内容、日期、学号等信息,进行详情修改操作,如图
管理员功能模块
管理员通过后台登录窗口进行输入用户名、密码、角色等信息,进行登录,如图
学生管理,管理员通过列表进行填写学号、密码、学生姓名、性别、头像、手机等信息,进行详情、修改或删除操作,如图
维修师傅管理,管理员通过维修师傅管理可以在线查看工号、密码、师傅姓名、性别、头像、电话等信息,进行详情或修改、删除操作,如图
宿舍公告管理,管理员通过宿舍公告管理可以在线查看标题、图片、发布时间等信息,进行查看或修改、删除操作,如图
自习室管理,管理员通过自习室管理可以在线查看图书馆名称、自习室号、图片、时间段、容纳人数等信息,进行查看或添加修改或删除,如图
轮播图;该页面为轮播图管理界面。管理员可以在此页面进行首页轮播图的管理,通过新建操作可在轮播图中加入新的图片,还可以对以上传的图片进行修改操作,以及图片的删除操作 ,如图
预约信息管理:通过列表可以获取图书馆名称、自习室号、人数、预约日期、预约时间、学号、学生姓名等信息,进行查看、详情、修改或删除操作,如图
维修评价管理:通过列表可以获取名称、工号、师傅姓名、评分、评价内容、日期、学号等信息,进行查看、详情、修改或删除操作,如图
维修师傅功能模块
维修师傅通过点击后台管理,进入页面可以进行首页、个人中心、设备报修管理、维修信息管理、维修评价管理 、系统管理等功能模块,进行相对应操作,如图
在线沟通:通过在线沟通可以获取新消息、状态等信息进行详情,如图
维修信息管理:通过维修信息管理列表可以获取名称、学号、学生姓名、维修情况、维修内容、费用、维修日期、工号、师傅姓名、是否支付等信息,进行详情操作,如图
维修评价管理:通过维修评价管理列表可以获取名称、工号、师傅姓名、评分、评价内容、日期、学号等信息,进行详情修改操作,如图
部分核心代码:
package com.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;
import com.entity.ZixishiEntity;
import com.entity.view.ZixishiView;
import com.service.ZixishiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.CommonUtil;
/**
* 自习室
* 后端接口
* @author
* @date 2021-01-25 17:37:50
*/
@RestController
@RequestMapping("/zixishi")
public class ZixishiController {
@Autowired
private ZixishiService zixishiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,ZixishiEntity zixishi, HttpServletRequest request){
EntityWrapper<ZixishiEntity> ew = new EntityWrapper<ZixishiEntity>();
PageUtils page = zixishiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zixishi), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,ZixishiEntity zixishi, HttpServletRequest request){
EntityWrapper<ZixishiEntity> ew = new EntityWrapper<ZixishiEntity>();
PageUtils page = zixishiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zixishi), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( ZixishiEntity zixishi){
EntityWrapper<ZixishiEntity> ew = new EntityWrapper<ZixishiEntity>();
ew.allEq(MPUtil.allEQMapPre( zixishi, "zixishi"));
return R.ok().put("data", zixishiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(ZixishiEntity zixishi){
EntityWrapper< ZixishiEntity> ew = new EntityWrapper< ZixishiEntity>();
ew.allEq(MPUtil.allEQMapPre( zixishi, "zixishi"));
ZixishiView zixishiView = zixishiService.selectView(ew);
return R.ok("查询自习室成功").put("data", zixishiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
ZixishiEntity zixishi = zixishiService.selectById(id);
return R.ok().put("data", zixishi);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
ZixishiEntity zixishi = zixishiService.selectById(id);
return R.ok().put("data", zixishi);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody ZixishiEntity zixishi, HttpServletRequest request){
zixishi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(zixishi);
zixishiService.insert(zixishi);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody ZixishiEntity zixishi, HttpServletRequest request){
zixishi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(zixishi);
zixishiService.insert(zixishi);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody ZixishiEntity zixishi, HttpServletRequest request){
//ValidatorUtils.validateEntity(zixishi);
zixishiService.updateById(zixishi);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
zixishiService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<ZixishiEntity> wrapper = new EntityWrapper<ZixishiEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = zixishiService.selectCount(wrapper);
return R.ok().put("count", count);
}
}