基于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://m.bishedaima.com/yuanma/35471.html

相关推荐

发表回复

登录后才能评论