文末获取源码
开发语言:Java
框架:SSM
技术:Jsp
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7/8.0
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器
一、前言介绍
随着信息化时代的到来,管理系统都趋向于智能化、系统化,新冠疫情下的校园出入系统也不例外,但目前国内的市场仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而新冠疫情下的校园出入系统能很好地解决这一问题,轻松应对平时的工作,既能提高人力物力财力,又能加快工作的效率,取代人工管理是必然趋势。
新冠疫情下的校园出入系统以java技术,b/s模式以及MySql作为后台运行的数据库,同时使用Tomcat用为系统的服务器。本系统主要包括以下功能模块:个人中心,通知公告管理,用户管理,工作人员管理,进门登记管理,出门登记管理,出入统计管理,外来登记管理等模块,通过这些模块的实现能够基本满足日常管理的操作。
本文着重阐述了新冠疫情下的校园出入系统的分析、设计与实现,首先介绍开发系统和环境配置、数据库的设计,接着说明功能模块的详细实现,最后进行了总结。
二、系统实现的功能
本次设计任务是要设计一个新冠疫情下的校园出入系统,通过这个系统能够满足新冠疫情下的校园出入系统的管理及用户的功能。系统的主要功能包括:个人中心,通知公告管理,用户管理,工作人员管理,进门登记管理,出门登记管理,出入统计管理,外来登记管理等功能。
管理员可以根据系统给定的账号进行登录,登录后可以进入该系统对新冠疫情下的校园出入系统的所有模块进行管理。包括查看和修改自己的个人信息以及登录密码。
该系统为每一个用户都分配了一个用户账号,用户通过账号的登录可以在系统中查看新冠疫情下的校园出入信息及对个人信息进行修改等功能。
2.1需求分析
利用Java、MyEclipse和mysql数据库等知识点,结合相关设计模式、以及软件工程的相关知识,设计一个新冠疫情下的校园出入系统,来进行记录用户的信息,以及系统信息的增删改查的功能,根据实现需求,系统需完成这些基本功能:
(1)系统合理显示系统管理员功能界面、用户后台管理等界面。
(2)用户和管理员所有的信息都保存与数据库中。
(3)对新冠疫情下的校园出入系统能够进行查询、修改、删除、添加等操作。
2.2总体设计
根据新冠疫情下的校园出入系统的功能需求,进行系统设计。
后台主要是管理员,管理员功能包括个人中心,通知公告管理,用户管理,工作人员管理,进门登记管理,出门登记管理,出入统计管理,外来登记管理等;
系统对这些功能进行整合,产生的功能结构图如下:
2.3数据库概念结构设计
数据库的E-R图反映了实体、实体的属性和实体之间的联系。下面是各个实体以及实体的属性。
通知公告管理实体属性图如下所示:
用户管理实体属性图如下所示:
工作人员管理实体属性图如下所示:
三、系统功能的具体实现
系统登录,用户通过填写注册时输入的用户名、密码、选择角色等信息进行登录操作,如图
管理员功能模块
管理员登录进入新冠疫情下的校园出入系统可以查看个人中心,通知公告管理,用户管理,工作人员管理,进门登记管理,出门登记管理,出入统计管理,外来登记管理等信息进行详细操作,如图
通知公告管理
在通知公告管理页面中可以对标题,简介,发布时间,封面等内容进行查看,修改和删除等操作;如图
用户管理
在用户管理页面中可以对账号,姓名,年龄,性别,手机,照片等内容进行查看,修改和删除等操作;如图
工作人员管理
在工作人员管理页面中可以对人员账号,人员姓名,年龄,性别,手机,照片等内容进行查看,修改和删除等操作;如图
进门登记管理
在进门登记管理页面中可以对登记编号,账号,姓名,手机,体温,健康码,核酸检测,来源地区,来源轨迹,目的地,高危人员,进门目的,登记时间,备注,人员账号,人员姓名等内容进行查看和删除等操作;如图
出门登记管理
在出门登记管理页面中可以对登记编号,账号,姓名,手机,体温,核酸检测,高危人员,进门轨迹,登记时间,备注,人员账号,人员姓名等内容进行查看和删除等操作;如图
出入统计管理
在出入统计管理页面中可以对统计编号,进门人数,出门人数,总人数,登记日期,备注,人员账号,人员姓名等内容进行查看和删除等操作;如图
工作人员功能模块
工作人员登录进入系统可以查看个人中心,通知公告管理,进门登记管理,出门登记管理,出入统计管理,外来登记管理等内容,并进行详细操作,如图
个人中心
在个信息页面中可以对人员账号,人员姓名,年龄,性别,手机,照片等内容进行提交操作;如图
进门登记管理
在进门登记管理页面中可以对登记编号,账号,姓名,手机,体温,健康码,核酸检测,来源地区,来源轨迹,目的地,高危人员,进门目的,登记时间,备注,人员账号,人员姓名等内容进行查看,修改和删除等操作;如图
用户功能模块
用户登录进入系统可以查看个人中心,通知公告管理,进门登记管理,出门登记管理等内容,并进行详细操作,如图
四、部分核心代码
出门登记
/*** 出门登记* 后端接口* @author * @email * @date -03-31 14:06:42*/@RestController@RequestMapping("/chumendengji")public class ChumendengjiController {@Autowiredprivate ChumendengjiService chumendengjiService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,ChumendengjiEntity chumendengji, HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yonghu")) {chumendengji.setZhanghao((String)request.getSession().getAttribute("username"));}if(tableName.equals("gongzuorenyuan")) {chumendengji.setRenyuanzhanghao((String)request.getSession().getAttribute("username"));}EntityWrapper<ChumendengjiEntity> ew = new EntityWrapper<ChumendengjiEntity>();PageUtils page = chumendengjiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chumendengji), params), params));request.setAttribute("data", page);return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,ChumendengjiEntity chumendengji, HttpServletRequest request){EntityWrapper<ChumendengjiEntity> ew = new EntityWrapper<ChumendengjiEntity>();PageUtils page = chumendengjiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chumendengji), params), params));request.setAttribute("data", page);return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( ChumendengjiEntity chumendengji){EntityWrapper<ChumendengjiEntity> ew = new EntityWrapper<ChumendengjiEntity>();ew.allEq(MPUtil.allEQMapPre( chumendengji, "chumendengji")); return R.ok().put("data", chumendengjiService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(ChumendengjiEntity chumendengji){EntityWrapper< ChumendengjiEntity> ew = new EntityWrapper< ChumendengjiEntity>();ew.allEq(MPUtil.allEQMapPre( chumendengji, "chumendengji")); ChumendengjiView chumendengjiView = chumendengjiService.selectView(ew);return R.ok("查询出门登记成功").put("data", chumendengjiView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){ChumendengjiEntity chumendengji = chumendengjiService.selectById(id);return R.ok().put("data", chumendengji);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){ChumendengjiEntity chumendengji = chumendengjiService.selectById(id);return R.ok().put("data", chumendengji);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody ChumendengjiEntity chumendengji, HttpServletRequest request){chumendengji.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(chumendengji);chumendengjiService.insert(chumendengji);return R.ok();}/*** 前端保存*/@IgnoreAuth@RequestMapping("/add")public R add(@RequestBody ChumendengjiEntity chumendengji, HttpServletRequest request){chumendengji.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(chumendengji);chumendengjiService.insert(chumendengji);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody ChumendengjiEntity chumendengji, HttpServletRequest request){//ValidatorUtils.validateEntity(chumendengji);chumendengjiService.updateById(chumendengji);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){chumendengjiService.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<ChumendengjiEntity> wrapper = new EntityWrapper<ChumendengjiEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("yonghu")) {wrapper.eq("zhanghao", (String)request.getSession().getAttribute("username"));}if(tableName.equals("gongzuorenyuan")) {wrapper.eq("renyuanzhanghao", (String)request.getSession().getAttribute("username"));}int count = chumendengjiService.selectCount(wrapper);return R.ok().put("count", count);}}
上传文件
@RequestMapping("/upload")public R upload(@RequestParam("file") MultipartFile file, String type,HttpServletRequest request) throws Exception {if (file.isEmpty()) {throw new EIException("上传文件不能为空");}String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);String fileName = new Date().getTime()+"."+fileExt;File dest = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);file.transferTo(dest);/*** 如果使用idea或者eclipse重启项目,发现之前上传的图片或者文件丢失,将下面一行代码注释打开* 请将以下的"D:\\ssmpiv99\\src\\main\\webapp\\upload"替换成你本地项目的upload路径,* 并且项目路径不能存在中文、空格等特殊字符*///FileUtils.copyFile(dest, new File("D:\\ssmpiv99\\src\\main\\webapp\\upload"+"/"+fileName)); /**修改了路径以后请将该行最前面的//注释去掉**/if(StringUtils.isNotBlank(type) && type.equals("1")) {ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));if(configEntity==null) {configEntity = new ConfigEntity();configEntity.setName("faceFile");configEntity.setValue(fileName);} else {configEntity.setValue(fileName);}configService.insertOrUpdate(configEntity);}return R.ok().put("file", fileName);}
注册
@IgnoreAuth@PostMapping(value = "/register")public R register(@RequestBody UserEntity user){// ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}