基于SSM和MySQL实现的疫情数据统计分析系统

基于SSM和MySQL实现的疫情数据统计分析系统 1,项目简介 疫情数据统计分析系统是一个基于SSM框架的网页端系统,项目中实现的功能如下:用户访问网站可以浏览全国疫情的图表信息

本文包含相关资料包-----> 点击直达获取<-------

基于SSM和MySQL实现的疫情数据统计分析系统

1.项目简介

疫情数据统计分析系统是一个基于SSM框架的网页端系统,项目中实现的功能如下:用户访问网站可以浏览全国疫情的图表信息,管理员登录后台管理系统,可以进行数据录入、数据查询、图表展示、用户录入和用户编辑。

功能描述

  • 图表展示 :到目前为止,全国疫情分布图、扇形图、柱状图和表格

  • 数据录入 :录入各个省份的确诊人数、疑似人数、隔离人数、治愈人数和死亡人数

  • 数据查询 :展示录入疫情数据的各个省份的确诊人数、疑似人数、隔离人数、治愈人数和死亡人数,以及查询输入省份的疫情数据

  • 用户录入 :录入用户信息,包括账号、用户名和密码,使用账号和密码可以登录后台进行数据管理和系统管理

  • 用户编辑 :查询和修改用户的信息

功能结构

系统用例

项目流程图

2.数据库设计

2.1 表结构

epidemics

provinces

users

2.2 E-R图

3.软件架构

  • 后端 :Spring+SpringMVC+Mybatis

  • 前端 :jsp页面

  • jdk :1.8

  • 开发环境 :IDEA

  • 数据库 :MySQL 5.7

安装教程

  • 在SQLyog或者Navicat中导入数据库文件,创建数据库和相关表

  • 将代码导入IDEA中

  • 启动成功,可以在浏览器中访问

地图上没有显示数据,因为需要录入当天各个省份的疫情数据,才能看到。

4.项目实现

4.1 配置类

MybatisConfig.java

```java @Configuration @MapperScan(basePackages = "com.liu.epidemic.mapper") public class MybatisConfig { @Bean public BasicDataSource basicDataSource(){ BasicDataSource dataSource=new BasicDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/epidemic?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf8"); dataSource.setUsername("root"); dataSource.setPassword("123456"); //配置连接池的相关参数 dataSource.setInitialSize(3); //连接池的初始容量 dataSource.setMaxActive(10); //连接最大活动数量 dataSource.setMaxIdle(1); //连接最大的空闲数量 dataSource.setMaxWait(4000); //连接的超时时间 dataSource.setDefaultAutoCommit(false); //取消SQL语句的自动提交 return dataSource; }

@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource){
    SqlSessionFactoryBean factoryBean=new SqlSessionFactoryBean();
    factoryBean.setDataSource(dataSource);
    //给实体类起别名 com.liu.epidemic.bean.UserInfo==UserInfo
    factoryBean.setTypeAliasesPackage("com.liu.epidemic.bean");
    //创建一个配置对象,该对象可以设置实体类中的成员变量名与数据库的对应关系
    org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
    //将数据库表中的字段名中的下划线取消,紧跟后面的第一个字符变大写,形成实体类中的成员变量名
    //user_id --- userId    province_name --- provinceName
    configuration.setMapUnderscoreToCamelCase(true);
    factoryBean.setConfiguration(configuration);
    SqlSessionFactory sessionFactory = null;
    try {
        sessionFactory = factoryBean.getObject();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return sessionFactory;
}

} ```

SpringMVCConfig.java

java @Configuration //表示当前类是配置类 @EnableWebMvc //表示当前类是springMVC的配置类 //将Controller注解的类纳入springMVC的组件扫描中(让springMVC管理Controller类) @ComponentScan(includeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = Controller.class)) public class SpringMVCConfig extends WebMvcConfigurerAdapter { @Autowired //给变量赋值 private DateConverter dateConverter; /* URL请求没有匹配到 */ @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); //给静态页面资源放行 } /* 添加格式化规则 */ @Override public void addFormatters(FormatterRegistry registry) { registry.addConverter(dateConverter); } /* 添加视图控制器 设置默认的资源访问路径 /epidemic */ @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("epidemic"); } /* 配置视图解析器 给视图添加前缀和后缀 */ @Override public void configureViewResolvers(ViewResolverRegistry registry) { registry.jsp("/",".jsp"); } }

4.2 业务代码

```java @Service public class EpidemicServiceImpl implements EpidemicService { @Autowired private EpidemicMapper epidemicMapper; @Autowired private ProvinceMapper provinceMapper; @Override public List saveEpidemicInfos(Integer userId, DailyEpidemicInfo dailyEpidemicInfo) { String date = dailyEpidemicInfo.getDate(); List array = dailyEpidemicInfo.getArray(); String[] strings = date.split("-"); int year = Integer.parseInt(strings[0]); int month = Integer.parseInt(strings[1]); int day = Integer.parseInt(strings[2]); for(int i=0;i<array.size();i++){ //epidemicInfo封装页面提交过来的数据 EpidemicInfo epidemicInfo = array.get(i); epidemicInfo.setDataYear(year); epidemicInfo.setDataMonth(month); epidemicInfo.setDataDay(day); epidemicInfo.setUserId(userId); epidemicInfo.setInputDate(new Date()); //设置当前时间作为数据录入时间 //保存所有的疫情信息数据 epidemicMapper.saveEpidemicInfos(epidemicInfo); } //返回下一组 List noDataProvinceList = provinceMapper.findNoDataProvinceList(year, month, day); return noDataProvinceList; } @Override public List findEpidemicInfoTotal() { GregorianCalendar calendar = new GregorianCalendar(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH)+1; int day = calendar.get(Calendar.DATE);

    List<EpidemicDetailInfo> epidemicInfoTotals = epidemicMapper.findEpidemicInfoTotal(year, month, day);
    return epidemicInfoTotals;
}
@Override
public EpidemicDetailInfo queryEpidemicInfoByProvince(String province) {
    GregorianCalendar calendar = new GregorianCalendar();
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH)+1;
    int day = calendar.get(Calendar.DATE);

    EpidemicDetailInfo epidemicDetailInfo = epidemicMapper.queryEpidemicInfoByProvince(year, month, day, province);
    return epidemicDetailInfo;
}

} ```

4.3 控制层代码

java @Controller @RequestMapping("/epidemicData") public class EpidemicController { @Autowired private EpidemicService epidemicService; @RequestMapping("/ajax/input") //@RequestBody作用是将页面提交的json格式的数据转换成对象 @ResponseBody //将return对象转换成json格式响应给页面 public AjaxResponseInfo saveEpidemicInfo(@RequestBody DailyEpidemicInfo dailyEpidemicInfo, HttpSession session){ AjaxResponseInfo ajaxResponseInfo=new AjaxResponseInfo(); UserInfo loginedUser = (UserInfo) session.getAttribute("loginedUser"); System.out.println("saveEpidemicInfo "+dailyEpidemicInfo); if(loginedUser!=null){ //已经登录 Integer userId = loginedUser.getUserId(); List<ProvinceInfo> provinceInfos = epidemicService.saveEpidemicInfos(userId, dailyEpidemicInfo); ajaxResponseInfo.setCode(0); ajaxResponseInfo.setMsg("保存成功"); ajaxResponseInfo.setData(provinceInfos); }else{ //表示用户没有登录 ajaxResponseInfo.setCode(-2); ajaxResponseInfo.setMsg("权限不足,请登录后再试"); } return ajaxResponseInfo; } @RequestMapping("/ajax/lastestData") @ResponseBody public AjaxResponseInfo findEpidemicInfoTotal(){ List<EpidemicDetailInfo> epidemicInfoTotals = epidemicService.findEpidemicInfoTotal(); AjaxResponseInfo ajaxResponseInfo = new AjaxResponseInfo(); ajaxResponseInfo.setCode(0); ajaxResponseInfo.setMsg("查询成功"); ajaxResponseInfo.setData(epidemicInfoTotals); return ajaxResponseInfo; } @RequestMapping("/ajax/queryProvince") @ResponseBody public AjaxResponseInfo queryEpidemicInfoByProvince(@RequestBody String province){ EpidemicDetailInfo epidemicDetailInfo = epidemicService.queryEpidemicInfoByProvince(province); AjaxResponseInfo ajaxResponseInfo = new AjaxResponseInfo(); if(epidemicDetailInfo!=null){ ajaxResponseInfo.setCode(0); ajaxResponseInfo.setMsg("查询成功"); ajaxResponseInfo.setData(epidemicDetailInfo); }else{ ajaxResponseInfo.setCode(-1); ajaxResponseInfo.setMsg("查询失败"); } return ajaxResponseInfo; } }

UserController.java

java @Controller //该注解表示当前类被springmvc框架管理 @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @RequestMapping("/login") public String login(UserInfo userInfo, Model model, HttpSession session){ UserInfo login = userService.login(userInfo); System.out.println("usercontroller"+login); if(login!=null){ //登录成功,记录用户的登录状态 session.setAttribute("loginedUser",login); //重定向,跳转页面 return "redirect:/main.jsp"; }else{ //请求转发 //跳转到 /login.jsp model.addAttribute("msg","账号或密码有误!"); return "login"; } } @RequestMapping("/logout") public String logout(HttpSession session){ session.invalidate(); //使所有Attribute失效 return "redirect:/login.jsp"; } @RequestMapping("/input") public String userInput(UserInfo userInfo,Model model){ userService.userInput(userInfo); model.addAttribute("msg1","用户录入成功!"); return "admin/user_input"; } @RequestMapping("/ajax/query") @ResponseBody public AjaxResponseInfo queryUserByAccount(@RequestBody String account){ UserInfo userInfo = userService.queryUserByAccount(account); AjaxResponseInfo ajaxResponseInfo = new AjaxResponseInfo(); if(userInfo!=null){ ajaxResponseInfo.setCode(0); ajaxResponseInfo.setMsg("查询成功"); ajaxResponseInfo.setData(userInfo); }else{ ajaxResponseInfo.setCode(-1); ajaxResponseInfo.setMsg("该账号不存在!"); } return ajaxResponseInfo; } @RequestMapping("/ajax/update") @ResponseBody public AjaxResponseInfo updateUser(@RequestBody UserInfo userInfo){ AjaxResponseInfo ajaxResponseInfo = new AjaxResponseInfo(); int res = userService.updateUser(userInfo); if(res>0){ ajaxResponseInfo.setCode(0); ajaxResponseInfo.setMsg("修改成功!"); }else{ ajaxResponseInfo.setCode(-1); ajaxResponseInfo.setMsg("修改失败!"); } return ajaxResponseInfo; } }

5.项目展示

登录

若登录失败,则显示如下 :

首页

数据录入

数据查询

若输入省份,点击查询,则会查询相关省份的疫情信息

图表展示

全国疫情分布图:各个省份颜色会随着确诊人数的增加而变深,当鼠标悬停在某个省的地图上时,这个省的颜色会变成黄色,并显示该省的名字和确诊人数。

扇形图

表格

当日全国疫情柱状图

用户录入

若输入账号已存在,会提示用户

用户编辑

管理员可以修改用户名和密码,然后点击修改

用户操作

普通用户访问 http://localhost:8080/epidemic/ ,查看全国疫情数据统计信息。和上面图表展示信息相同。

参考文献

  • 移动互联网数据分析系统设计与实现(北京邮电大学·左猛)
  • Web数据库系统应用技术的研究(天津大学·高云)
  • 数据分析流程编排系统设计与实现(大连理工大学·闫欣)
  • 基于SSM框架的微生物数据分析与挖掘平台的设计与实现(华中科技大学·郑照翔)
  • 智慧园区物业电子服务系统设计与实现(华东师范大学·陈宇鹏)
  • 互联网金融数据平台的设计与实现(北京交通大学·揭杰)
  • 基于QSEIR模型的COVID-19发展趋势预测系统研究与开发(长春师范大学·郭皓钰)
  • 承压设备泄漏事故应急决策与救援指挥系统的建设(北京邮电大学·宋丹杰)
  • 新冠疫情舆情信息分析系统的设计与实现(华中科技大学·胡永辉)
  • 基于SSM的企业网站设计与实现(黑龙江大学·张泷元)
  • 济宁市林业局动物疫病防控信息管理系统设计与实现(山东大学·房璐璐)
  • 中小型建筑施工企业ERP管理系统(电子科技大学·陈巍祥)
  • 基于微服务的疫情联防联控平台研究与实现(上海第二工业大学·张亮)
  • 新冠疫情舆情信息分析系统的设计与实现(华中科技大学·胡永辉)
  • 济宁市林业局动物疫病防控信息管理系统设计与实现(山东大学·房璐璐)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:源码导航 ,原文地址:https://bishedaima.com/yuanma/35471.html

相关推荐

  • 基于python实现的小区停车数据分析

    某小区停车数据分析 核心内容:处理大量excel表格数据,数据可视化 一,问题描述 现有2018年9月的某小区停车数据,如下图, 30共30天的excel表格
    2024年05月14日
    2 1 2
  • 基于Java Web的投票管理系统

    基于Java Web的投票管理系统 摘 要 相较于传统投票方式,在线投票是任何一-次商演(时间短,影响范围小),电视(投入大,效果不明显)或者户外广告(不能快速吸引消费者眼球)在投入产出效率上都难以企及的
    2024年05月14日
    3 1 1
  • 基于python的安全即时通讯系统

    Uchat——基于 python 的安全即时通讯系统 目的 设计完成简易的安全即时通讯系统,实现类似于 QQ 的聊天软件; 需求分析 功能需求 聊天客户端 注册:用户与集中服务器通信完成注册
    2024年05月14日
    27 1 2
  • 算法合成之Python

    1000 研究代码语言功能分类方式,探索代码推荐过程中的方法,近年来新出现的语言越来越友好,有越来越多新的特性减少开发时间与人力成本,但是代码仍然需要程序员用专门的语言手工精确地编写
    2024年05月14日
    2 1 1
  • 基于Python的Django框架实现的人物信息检索系统

    基于Python的Django框架实现的人物信息检索系统 1 简介 这是一个利用Django搭建的一个人物信息检索系统,大约从Wikipedia爬取了10000 个人物信息
    2024年05月14日
    8 1 2
  • 基于SSM和MySQL的新闻博客管理系统的设计与实现

    基于SSM和MySQL的新闻博客管理系统的设计与实现 摘 要 博客英文名称为BLOG,是web log的缩写,简单翻译成中文就是网络日志,它是1972年由美国的Jorn Barger提出的
    2024年05月14日
    17 1 4
  • 基于SpringBoot框架的网络海鲜市场系统

    这是一套采用Java语言构建的🔥🔥SpringBoot为核心的网上海鲜市场平台源代码,该项目运用了SpringBoot框架和Vue技术,开发工具为Idea或Eclipse
    2024年05月23日
    10 1 1
  • 基于JSP和Sql Server实现的美食网

    基于JSP和Sql Server实现的美食网 摘 要 本论文阐述了整个美食网的功能及实现,实现了从菜品管理,名店加盟,到后台管理实现,留言处理,再到系统管理
    2024年05月14日
    33 1 6
  • 基于jsp+servlet+mysql的图书管理系统

    Book-management-jsp 基于jsp+servlet+mysql的图书管理系统 参考文献 基于RBAC的SSH架构下的图书管理应用研究(大连理工大学·姜楠) 高校图书管理系统的设计与实现(东北大学·黄鑫) 复旦大学数字图书馆个人图书管理系统的设计与实现(电子科技大学·陆卫国) 图书综合管理系统(吉林大学·王宇) 宁波职业技术学院图书管理系统分析与设计(云南大学·赵顺勇) 大同实验小学图书馆借还系统的设计与实现(电子科技大学·王洪宇) 山西电大图书管理信息系统的设计与实现(北京工业大学·李莹) 山西电大图书管理信息系统的设计与实现(北京工业大学·李莹) 山西电大图书管理信息系统的设计与实现(北京工业大学·李莹) 医疗卫生图书网的设计与实现(电子科技大学·张占平) 基于Web的书刊进销存系统的设计与实现(大连理工大学·王宁) 基于JSP/Servlet的三层式网上书店的研究与实现(吉林大学·郭小雪) 基于RBAC的SSH架构下的图书管理应用研究(大连理工大学·姜楠) 基于B/S架构的网上书店系统的设计与实现(电子科技大学·陈云英) 基于
    2024年05月14日
    26 1 3
  • python爬取双色球数据更新及数据库使用

    python爬取双色球数据更新及数据库使用 解析网站并获取数据 python # 彩票数据所在的url url = 'http://datachart
    2024年05月14日
    3 1 2

发表回复

登录后才能评论