基于ssm的社区疫情返乡管控系统设计实现

news2024/11/22 11:06:37

项目描述

临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给大家介绍一篇基于ssm的社区疫情返乡管控系统设计实现。

功能需求

截止到目前,无论是国内还是国外新冠病毒仍在肆虐,社区疫情防控趋势化越来越明显,以社区为单位进行疫情防控,毫无疑问能够对疫情防控取到很好的作用。社区疫情防控系统方便对社区疫情的信息管理,对居民健康信息、行程、以及疫情防控所需的活动进行系统化、信息化管理。例如居民每日健康填报,核酸检测记录、发放防控物资等。社区疫情防控管理系统的设计需要考虑两种角色,用户和系统管理员。

具备以下功能:

前端用户模块:用户登录注册、忘记密码、首页、关于我们、疫情新闻、信息记录、健康打卡等功能。
后端管理员模块:管理员登录、人员管理、工作人员管理、返乡信息录入、健康打卡管理、网站管理配置、用户留言板留言管理、修改密码、退出系统。

部分效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部分代码
	
 @RequestMapping({ "/user/register.html" })
    @ResponseBody
    public Map<String, Object> reg(@Validated final Member member, final BindingResult result, @RequestParam("gender") final String gender, @RequestParam("repassword") final String repassword) {
        final Map<String, Object> errorMap = new HashMap<String, Object>();
        final List<String> errorList = new ArrayList<String>();
        if (result.hasErrors() || !member.getMpassword().equals(repassword)) {
            errorMap.put("status", "0");
            if (!member.getMpassword().equals(repassword)) {
                errorList.add("\u4e24\u6b21\u8f93\u5165\u5bc6\u7801\u4e0d\u4e00\u81f4");
            }
            final FieldError nameError = result.getFieldError("mname");
            final FieldError mpasswordError = result.getFieldError("mpassword");
            final FieldError midnoError = result.getFieldError("midno");
            final FieldError mphoneError = result.getFieldError("mphone");
            final FieldError memailError = result.getFieldError("memail");
            if (nameError != null) {
                errorList.add(nameError.getDefaultMessage());
            }
            if (mpasswordError != null) {
                errorList.add(mpasswordError.getDefaultMessage());
            }
            if (midnoError != null) {
                errorList.add(midnoError.getDefaultMessage());
            }
            if (mphoneError != null) {
                errorList.add(mphoneError.getDefaultMessage());
            }
            if (memailError != null) {
                errorList.add(memailError.getDefaultMessage());
            }
            errorMap.put("errorList", errorList);
        }
        else {
            if (gender.equals("1")) {
                member.setMgender(1);
            }
            else {
                member.setMgender(0);
            }
            member.setMdate(new Date());
            this.memberService.addMember(member);
            errorMap.put("status", "1");
            errorMap.put("msg", "\u6ce8\u518c\u6210\u529f\uff0c\u8bf7\u524d\u5f80\u767b\u5f55\uff01");
        }
        return errorMap;
    }
    
    @RequestMapping({ "/user/verifyemailandphone.html" })
    @ResponseBody
    public Map<String, Object> verifyEmailAndPhone(final String memail, final String mphone) {
        final Map<String, Object> verifyMap = new HashMap<String, Object>();
        if (memail != null && !memail.equals(" ")) {
            final MemberExample memberExample1 = new MemberExample();
            final MemberExample.Criteria criteria = memberExample1.createCriteria();
            criteria.andMemailEqualTo(memail);
            final long memailCount = this.memberService.countByExample(memberExample1);
            if (memailCount > 0L) {
                verifyMap.put("status", 0);
                verifyMap.put("msg", "\u90ae\u7bb1\u5df2\u88ab\u6ce8\u518c");
                return verifyMap;
            }
        }
        if (mphone != null && !mphone.equals(" ")) {
            final MemberExample memberExample2 = new MemberExample();
            final MemberExample.Criteria criteria2 = memberExample2.createCriteria();
            criteria2.andMphoneEqualTo(mphone);
            final long mphoneCount = this.memberService.countByExample(memberExample2);
            if (mphoneCount > 0L) {
                verifyMap.put("status", 0);
                verifyMap.put("msg", "\u624b\u673a\u53f7\u5df2\u88ab\u6ce8\u518c");
                return verifyMap;
            }
        }
        verifyMap.put("status", 1);
        return verifyMap;
    }
    
    @RequestMapping({ "/login/captcha.html" })
    public void captcha(final HttpServletRequest request, final HttpServletResponse response) throws Exception {
        final String capText = this.kaptcha.createText();
        request.getSession().setAttribute("KAPTCHA_SESSION_KEY", (Object)capText);
        final BufferedImage bi = this.kaptcha.createImage(capText);
        final ServletOutputStream out = response.getOutputStream();
        ImageIO.write(bi, "jpg", (OutputStream)out);
        try {
            out.flush();
        }
        finally {
            out.close();
        }
        out.close();
    }
    
    @RequestMapping({ "/kaptchaverify.html" })
    @ResponseBody
    public Map<String, Object> verifyCode(final String code, final HttpServletResponse response, final HttpServletRequest request) {
        final Map<String, Object> verifyMap = new HashMap<String, Object>();
        final String codeText = (String)request.getSession().getAttribute("KAPTCHA_SESSION_KEY");
        if (codeText.equals(code)) {
            verifyMap.put("status", 1);
        }
        else {
            verifyMap.put("status", 0);
            verifyMap.put("msg", "\u9a8c\u8bc1\u7801\u9519\u8bef");
        }
        return verifyMap;
    }
    
    @RequestMapping({ "/user/resetpwd.html" })
    @ResponseBody
    public Map<String, Object> resetPwd(final String email) {
        final Map<String, Object> map = new HashMap<String, Object>();
        if (email != null && !email.equals(" ")) {
            final MemberExample memberExample = new MemberExample();
            final MemberExample.Criteria criteria = memberExample.createCriteria();
            criteria.andMemailEqualTo(email);
            final List<Member> members = this.memberService.selectByExample(memberExample);
            if (members.size() > 0) {
                if (SendMail.sendMail(email, members.get(0).getMname())) {
                    final String newPwd = Funcs.MD5("stern123456789");
                    members.get(0).setMpassword(newPwd);
                    this.memberService.updateByPrimaryKeySelective(members.get(0));
                    map.put("msg", "\u91cd\u7f6e\u6210\u529f\uff0c\u8bf7\u7528\u65b0\u5bc6\u7801\u767b\u5f55,\u5982\u679c\u6ca1\u6709\u67e5\u6536\u5230\u90ae\u4ef6\uff0c\u8bf7\u5230\u5783\u573e\u7bb1\u4e2d\u67e5\u770b\uff01");
                }
                else {
                    map.put("msg", "\u91cd\u7f6e\u5931\u8d25");
                }
            }
            else if (members.size() == 0) {
                map.put("msg", "\u8be5\u90ae\u7bb1\u6ca1\u6709\u88ab\u6ce8\u518c");
            }
        }
        else {
            map.put("msg", "\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u90ae\u7bb1");
        }
        return map;
    }
    
    @RequestMapping({ "/login.html" })
    public String loginPage(final HttpServletRequest request, final Model model) throws IOException {
        final Cookie[] cookies = request.getCookies();
        String username = "";
        String pwd = "";
        if (cookies != null) {
            Cookie[] array;
            for (int length = (array = cookies).length, i = 0; i < length; ++i) {
                final Cookie cookie = array[i];
                if (cookie.getName().equals("user")) {
                    username = URLDecoder.decode(cookie.getValue().split("#")[0], "UTF-8");
                    pwd = cookie.getValue().split("#")[1];
                    break;
                }
            }
            model.addAttribute("mname", (Object)username);
            model.addAttribute("mpassword", (Object)pwd);
        }
        return "login";
    }
    
    @RequestMapping({ "/user/login.html" })
    @ResponseBody
    public Map<String, String> login(final String mname, final String mpassword, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
        final Map<String, String> res = new HashMap<String, String>();
        final Member member = this.memberService.selectMemberByNameAndPwd(mname, mpassword);
        if (member != null) {
            res.put("status", "1");
            if (request.getParameter("isRemember") != null) {
                final Cookie cookie = new Cookie("user", String.valueOf(URLEncoder.encode(mname, "utf-8")) + "#" + mpassword);
                cookie.setPath("/");
                cookie.setMaxAge(604800);
                response.addCookie(cookie);
            }
            res.put("username", mname);
            request.getSession().setAttribute("member", (Object)member);
        }
        else {
            res.put("status", "0");
            res.put("msg", "\u7528\u6237\u540d\u6216\u8005\u5bc6\u7801\u9519\u8bef\uff01");
        }
        return res;
    }
    
    @RequestMapping({ "/member/loginout.html" })
    @ResponseBody
    public Map<String, Object> loginout(final HttpServletRequest request) {
        final Map<String, Object> loginoutMap = new HashMap<String, Object>();
        request.getSession().removeAttribute("member");
        request.getSession().invalidate();
        loginoutMap.put("status", 1);
        return loginoutMap;
    }
    
    @RequestMapping({ "admin/adminindex.html" })
    public Object admin(final HttpServletRequest request, final HttpServletResponse response, final Model model) throws IOException {
        final Member member = (Member)request.getSession().getAttribute("member");
        if (!member.getMname().equals("admin")) {
            response.setCharacterEncoding("utf-8");
            response.setContentType("text/html;charset=utf-8;");
            final PrintWriter writer = response.getWriter();
            writer.print("<script>alert('\u6ca1\u6709\u8bbf\u95ee\u6743\u9650\uff01');parent.location.href='" + request.getContextPath() + "/index.html'</script>");
            return false;
        }
        return String.valueOf(request.getContextPath()) + "/admin/adminindex";
    }
    
    @RequestMapping({ "/admin/memberlist.html" })
    public String memberlistPage() {
        return "admin/member/membermanage";
    }

安装部署需求

eclipse、idea运行启动

系统部署

系统开发后,在生产环境配置项目运行环境,具体步骤如下:
安装linux或者windows10操作系统;
安装JDK1.8并配置环境变量;
安装MySQL5.7版本以上版本数据库,创建数据库并执行脚本创建表;
在eclipse中编辑进行打包;
下载并配置Tomcat8.0服务器,配置系统服务,上传项目打包文件

本项目用到的技术和框架

1.开发语言:Java
2.开发模式:B/S
3.数据库:MySQL
4.框架:jsp+SSM

本项目中的关键点

此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。

环境工具

开发工具 Eclipse/IDEA
语言 JDK1.8 、jsp、CSS、SSM
硬件:笔记本电脑;
软件:Tomcat8.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;
以上是本系统的部分功能展示,如果你的选题正好相符,那么可以做毕业设计或课程设计使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/65987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# 学习之路(类型、存储和变量)

C# 学习之路&#xff08;类型、存储和变量&#xff09; C# 是一组类型声明 如果泛泛的描述 C 和 C 程序源代码的特征&#xff0c;可以说 C 程序是一组函数和数据类型&#xff0c;C 是一组函数和类&#xff0c;而 C# 程序是一组类型的声明。 命名空间是一种将相关的类型声明分组…

mongodb 5.0.14 副本集 安装 单机版 记录

1、下载tgz 连接地址&#xff1a;mongodb 5.0.14下载 2、创建用户 useradd mongouserpasswd mongouser 3、解压tgz wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.14.tgz tar -zxvf mongodb-linux-x86_64-rhel70-5.0.14.tgz 4、拆分3个独立的mo…

编程团体赛

目录 1047:编程团体赛 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 思路: 代码: 时间复杂度: 总结: 题目链接: 1047:编程团体赛 编程团体赛的规则为&#xff1a;每个参赛队由若干队员组成&#xff1b;所有队员独立比赛&a…

Protocol buffe vs Json 为什么还会大量使用Json?

JSON&#xff1a;的最大优点就是可读性好&#xff0c;但是体积大。 Protocol Buffers&#xff1a;最大的特点就是体积小&#xff0c;传输需要带宽小&#xff0c;速度快。但是可读性较差 尽管JSON和Protobuf消息可以互换使用&#xff0c;但这些技术的设计目标不同。JSON代表Ja…

【元胞自动机】格子波尔兹曼模型及其应用研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

我去!Python 不愧是脚本之王,这 23 种命令行用法你全部 get 了吗?

1. 快速打印函数的调用栈 在阅读源码的时候&#xff0c;有时候我们想要看整个程序的调用栈是怎样的&#xff1f; 比较常规的做法是使用全局搜索函数&#xff0c;一层一层往上走&#xff0c;效率非常之低。 而我习惯了使用 pdb 对代码进行调试&#xff0c;在使用pdb时&#x…

vscode环境中配置git

1. 建立project空目录用于存放electron基本环境这个环境中得文件不能加入git项目中否则每次更新文件太大github不支持大于100M得文件上传 2. 使用vscode打开project目录 3.打开终端运行npm install electron 运行完成后会生成electron相关得两个json文件和一个文件夹 4.新建一个…

读取图片输出字符图案:用字符输出足球的图案

用字符输出足球的图案前言功能描述实现思路代码实现1️⃣ 获取像素点的RGB数值2️⃣ 判断每个像素点的RGB值是否符合3️⃣ main方法结果测试前言 世界杯&#xff0c;如火如荼的进行着&#xff0c;作为程序员也参加一下活动&#xff0c;蹭一下世界杯的热度 功能描述 通过读取足球…

跨行新手学习并备考阿里云云计算专业认证ACP大概需要多长时间呢?

先来了解一下阿里云认证&#xff1a; 阿里云认证是基于核心技术及岗位的权威认证&#xff0c; 阿里云针对不同产品类别、用户成长阶段、生态岗位&#xff0c;精心打造不同的认证考试。 个人&#xff1a;证明您在对应技术领域的专业度&#xff0c;能够基于阿里云产品解决实际问…

(附源码)spring boot投票系统 毕业设计 261136

基于springboot投票系统 摘 要 在科学管理机制越来越完善的今天&#xff0c;投票管理者只能依赖手工记录数据,这不仅仅浪费时间&#xff0c;并且对人力也是一种浪费&#xff0c;不能做到随时监控&#xff0c;对数据的准确性和及时性也是一种影响。所以投票非常急需一套既有与时…

Python到底适合什么后端团队和项目?

前言 1、我的Python从业经历 本人从2015年开始基本上都在使用Python语言&#xff0c;主要做扫描器、分布式任务、后台接口、AI、图像和3D点阵处理、数据接收处理等等&#xff0c;也待过几个公司&#xff0c;所在部门基本上也是多种语言的开发小组都有&#xff0c;统计了下如下…

JAVA五子棋手机网络对战游戏的设计与实现(源代码+论文)

五子棋网络对战游戏的设计与实现 论文作者姓名&#xff1a;申请学位专业&#xff1a;申请学位类别&#xff1a;指导教师姓名&#xff08;职称&#xff09;&#xff1a;论文提交日期&#xff1a; 五子棋网络对战游戏的设计与实现 摘 要 在现代社会中,及其它无线设备越来越多的…

铁矿行业BI经营分析框架(四)经营分析

在中国大部分的铁矿企业集团都是有央国企背景的&#xff0c;都是属于一个大集团下的二级集团性企业。所以&#xff0c;首先是需要背上集团下发的经营业绩指标的&#xff0c;这个一定是整个经营管理分析的核心要重点关注。 业绩情况 第一个分析要点就是这家企业集团在整个集团中…

Matplotlib入门[04]——处理图像

Matplotlib入门[04]——处理图像 参考&#xff1a; https://ailearning.apachecn.org/Matplotlib官网 图片来源&#xff1a;百度&#xff08;如有侵权&#xff0c;立删&#xff09; 使用Jupyter进行练习 import matplotlib.pyplot as plt import matplotlib.image as mpimg imp…

sqlserver时间字段索引失效,重建后索引又正常了

文章目录前言索引相关操作1 、查看全部索引信息2 、重建所有表索引3 、查看某个表索引信息4 、重建某个表索引查询索引字段说明执行修复索引字段前言 这几天被一个项目搞得烦死了&#xff0c;客户老是反馈后台查询前一天注册的用户数据失败&#xff0c;看了错误日志&#xff0…

【Java面试】能说说你对volatile关键字的理解吗?

文章目录volatile能否保证线程安全&#xff1f;原子性可见性有序性volatile能否保证线程安全&#xff1f; 下文使用到了javap命令进行class文件的反汇编来查看字节码&#xff0c;如果想要了解的可以学习一下javap命令。 什么是javap命令 javap命令的参数 要解决这个问题首先要…

【数据库】数据库的慢查询问题

现象&#xff1a; 在压测过程中发现接口返回数据非常慢&#xff0c;甚至超时&#xff0c;页面加载不出数据 问题定位&#xff1a;如果有慢查询怎么恢复&#xff1f; 1.查看服务日志&#xff0c;打印连接数据库超时&#xff0c;接口返回超时 查看数据库所在节点cpu占用很高使…

夯实算法-跳跃游戏

题目&#xff1a;LeetCode 给定一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 示例 1&#xff1a; 输入&#xff1a; nums [2,3,1,1,4] 输出&#xff1a; tru…

【测试沉思录】23. 如何实现基于场景的接口自动化测试用例?

作者&#xff1a;陈爱娇 编辑&#xff1a;毕小烦 自动化本身是为了提高工作效率&#xff0c;不论选择何种框架&#xff0c;何种开发语言&#xff0c;我们最终想实现的效果&#xff0c;就是让大家用最少的代码&#xff0c;最小的投入&#xff0c;完成自动化测试的工作。 基于这…

EMQ 宣布推出 LF Edge eKuiper 全新 Logo 标识

全球领先的开源物联网数据基础设施软件供应商 EMQ 映云科技宣布,即日起,将正式启用全新的 LF Edge eKuiper(以下简称 eKuiper)产品 Logo。焕然一新的 eKuiper 产品 Logo 标志着 EMQ 在不断提升品牌全球化战略之上,对于打造高性能、高可用、高安全的世界级开源软件产品的极致追求…