• 需求分析
  1. 登录功能(后台,管理员)
  2. 数据录入(后台,管理员)
  3. 数据展示(前台,面向用户,地图、图表、表格)
  • 开发环境
  1. JDK 1.8(运行环境)
  2. MySQL5.7
  3. Tomcat8.0

mode层:管理员

package com.ycu.epidemic.bean;public class UserInfo {private Integer userId;private String account;private String password;private String userName;public Integer getUserId() {return userId;}public void setUserId(Integer userId) {this.userId = userId;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}@Overridepublic String toString() {return "UserInfo{" +"userId=" + userId +", account='" + account + '\'' +", password='" + password + '\'' +", userName='" + userName + '\'' +'}';}
}

Model层省份

package com.ycu.epidemic.bean;public class ProvinceInfo {private Integer provinceId;private String provinceName;private String provincePinYing;public Integer getProvinceId() {return provinceId;}public void setProvinceId(Integer provinceId) {this.provinceId = provinceId;}public String getProvinceName() {return provinceName;}public void setProvinceName(String provinceName) {this.provinceName = provinceName;}public String getProvincePinYing() {return provincePinYing;}public void setProvincePinYing(String provincePinYing) {this.provincePinYing = provincePinYing;}
}

model层:疫情信息:确诊,治愈等

package com.ycu.epidemic.bean;import java.util.Date;public class EpidemicInfo {private Integer serialId;private Integer provinceId;private Short dataYear,dataMonth,dataDay;private Integer affirmed,suspected,cured,isolated,dead;//每日疫情数据private Integer userId;private Date inputDate;public Integer getSerialId() {return serialId;}public void setSerialId(Integer serialId) {this.serialId = serialId;}public Integer getProvinceId() {return provinceId;}public void setProvinceId(Integer provinceId) {this.provinceId = provinceId;}public Short getDataYear(short year) {return dataYear;}public void setDataYear(Short dataYear) {this.dataYear = dataYear;}public Short getDataMonth() {return dataMonth;}public void setDataMonth(Short dataMonth) {this.dataMonth = dataMonth;}public Short getDataDay() {return dataDay;}public void setDataDay(Short dataDay) {this.dataDay = dataDay;}public Integer getAffirmed() {return affirmed;}public void setAffirmed(Integer affirmed) {this.affirmed = affirmed;}public Integer getSuspected() {return suspected;}public void setSuspected(Integer suspected) {this.suspected = suspected;}public Integer getCured() {return cured;}public void setCured(Integer cured) {this.cured = cured;}public Integer getIsolated() {return isolated;}public void setIsolated(Integer isolated) {this.isolated = isolated;}public Integer getDead() {return dead;}public void setDead(Integer dead) {this.dead = dead;}public Integer getUserId() {return userId;}public void setUserId(Integer userId) {this.userId = userId;}public Date getInputDate() {return inputDate;}public void setInputDate(Date inputDate) {this.inputDate = inputDate;}
}

model:累计疫情数据

package com.ycu.epidemic.bean;public class EpidemicDetailInfo extends EpidemicInfo {private String provinceName;//累计的:确诊,疑似。。。private Integer affirmedTotal,suspectedTotal,curedTotal,isolatedTotal,deadTotal;public String getProvinceName() {return provinceName;}public void setProvinceName(String provinceName) {this.provinceName = provinceName;}public Integer getAffirmedTotal() {return affirmedTotal;}public void setAffirmedTotal(Integer affirmedTotal) {this.affirmedTotal = affirmedTotal;}public Integer getSuspectedTotal() {return suspectedTotal;}public void setSuspectedTotal(Integer suspectedTotal) {this.suspectedTotal = suspectedTotal;}public Integer getCuredTotal() {return curedTotal;}public void setCuredTotal(Integer curedTotal) {this.curedTotal = curedTotal;}public Integer getIsolatedTotal() {return isolatedTotal;}public void setIsolatedTotal(Integer isolatedTotal) {this.isolatedTotal = isolatedTotal;}public Integer getDeadTotal() {return deadTotal;}public void setDeadTotal(Integer deadTotal) {this.deadTotal = deadTotal;}
}

model:每日疫情数据

package com.ycu.epidemic.bean;import java.util.List;public class DailyEpidemicInfo {private String date;private List<EpidemicInfo> array;//对应多个省疫情public String getDate() {return date;}public void setDate(String date) {this.date = date;}public List<EpidemicInfo> getArray() {return array;}public void setArray(List<EpidemicInfo> array) {this.array = array;}
}

model:ajax异步请求,封装前台数据(json)

package com.ycu.epidemic.bean;public class AjaxResponseInfo<T> {private int code;//0:正常,其它不正常private String msg;private T data;public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public T getData() {return data;}public void setData(T data) {this.data = data;}
}

日期转换类:

package com.ycu.epidemic.common;import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;@Componentpublic class DateConverter implements Converter<String,Date> {private  SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");public Date convert(String s){if(s == null || s.length()==0){return null;}Date date = null;try {date = sdf.parse(s);}catch (ParseException e) {e.printStackTrace();System.out.println("转换提交的参数"+s+"为日期值时出错:"+e.getMessage());}return date;}
}

Controller控制器:

package com.ycu.epidemic.controller;import com.ycu.epidemic.bean.*;
import com.ycu.epidemic.service.EpidemicService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpSession;
import java.util.List;@Controller
@RequestMapping("/epidemicData")
public class EpidemicController {@Autowiredprivate EpidemicService epidemicService;@PostMapping("/ajax/input")@ResponseBodypublic AjaxResponseInfo inputData(@RequestBody DailyEpidemicInfo dailyEpidemicInfo, HttpSession session){AjaxResponseInfo responseInfo = new AjaxResponseInfo();UserInfo user = (UserInfo) session.getAttribute("loginUser");if (user == null){responseInfo.setCode(-2);responseInfo.setMsg("您没有登录");}else {/***   录入每日疫情数据* @Param dailyEpidemicInfo 对前台数据封装* @Param session 取到当前用户* @Author:lijinhua* @Date:2020/7/12*/List<ProvinceInfo>  list = epidemicService.saveData(dailyEpidemicInfo,user.getUserId());responseInfo.setData(list);}return responseInfo;}@GetMapping("/ajax/lastestData")@ResponseBodypublic AjaxResponseInfo findLastestData(){/*** 查最近的数据(累计)* @Param* @Author:lijinhua* @Date:2020/7/12*/AjaxResponseInfo ajaxResponseInfo = new AjaxResponseInfo();List<EpidemicDetailInfo> list = epidemicService.findLastestData();ajaxResponseInfo.setData(list);//转成json串
//       System.out.println(ajaxResponseInfo.getData());return ajaxResponseInfo;}
}
package com.ycu.epidemic.controller;import com.ycu.epidemic.bean.AjaxResponseInfo;
import com.ycu.epidemic.bean.ProvinceInfo;
import com.ycu.epidemic.service.ProvinceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.List;@Controller
@RequestMapping("/province")
public class ProvinceController {@Autowiredprivate ProvinceService provinceService;@GetMapping("/ajax/noDataList")@ResponseBodypublic AjaxResponseInfo noDataProvinceList(String date){List<ProvinceInfo> list = null;AjaxResponseInfo<List<ProvinceInfo>> responseInfo = new AjaxResponseInfo<>();if (!StringUtils.isEmpty(date)){list = provinceService.findNoDataProvince(date);//调用业务responseInfo.setData(list);}else{responseInfo.setCode(-1);responseInfo.setMsg("参数不足");}return responseInfo;}}
package com.ycu.epidemic.controller;import com.ycu.epidemic.bean.UserInfo;
import com.ycu.epidemic.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;import javax.servlet.http.HttpSession;@Controller
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;/**** @Param user  封装前台请求数据* @Author:lijinhua* @Date:2020/7/12*/@RequestMapping("/login")public String login(UserInfo user, Model model, HttpSession session) {UserInfo u = userService.findByAccount(user);if (u == null) {model.addAttribute("msg", "账号或密码不正确");return "login";}if (u.getPassword().equals(user.getPassword())) {//登录成功session.setAttribute("loginUser", u);return "redirect:/main.jsp";}session.setAttribute("msg", "账号或密码不正确");return "login";}//退出登录@RequestMapping("/logout")public String logout(HttpSession session){session.invalidate();return "redirect:/epidemic.jsp";}}

Mapper层:

疫情Mapper层(保存已录入的数据;查询到累计的疫情数据)package com.ycu.epidemic.mapper;import com.ycu.epidemic.bean.EpidemicDetailInfo;
import com.ycu.epidemic.bean.EpidemicInfo;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;
import java.util.Map;
@Mapper
public interface EpidemicMapper {@Insert(value = "INSERT INTO epidemics(province_id,data_year,data_month,data_day,affirmed,suspected,isolated,dead,cured,user_id,input_date)" +"VALUES(#{provinceId},#{dataYear},#{dataMonth},#{dataDay},#{affirmed},#{suspected},#{isolated},#{dead},#{cured},#{userId},#{inputDate})")public int saveInfo(EpidemicInfo epidemicInfo);@Select(value="SELECT e1.province_id,temp.province_name,e1.data_year,e1.data_month,e1.data_day," +"   temp.affirmed_total,temp.suspected_total,temp.isolated_total,temp.cured_total,temp.dead_total" +"   FROM epidemics e1 RIGHT OUTER JOIN(" +"      SELECT e. province_id,p.province_name,SUM(e.affirmed) affirmed_total," +"      SUM(e.suspected) suspected_total,SUM(e.isolated) isolated_total," +"      SUM(e.cured) cured_total,SUM(e.dead) dead_total" +"      FROM epidemics e RIGHT OUTER JOIN provinces p ON e.province_id = p.province_id" +"      GROUP BY e.province_id,p.province_name" +"   ) temp ON e1.province_id = temp.province_id" +"   WHERE e1.data_year=#{year} AND e1.data_month =#{month} AND e1.data_day =#{day}")public List<EpidemicDetailInfo> findLastestData(Map<String,Short> condition);
}
省份mapper层(查找还未录入数据的省份)package com.ycu.epidemic.mapper;import com.ycu.epidemic.bean.ProvinceInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;@Mapper
public interface ProvinceMapper {@Select(value = "SELECT p.province_id,p.province_name,p.province_py FROM provinces p" +"  WHERE (p.del_flag IS NULL OR p.del_flag = 0)" +"  AND p.province_id NOT IN(" +"     SELECT e.province_id FROM epidemics e" +"     WHERE e.data_year=#{arg0} AND e.data_month=#{arg1} AND e.data_day =#{arg2}" +"  ) ORDER BY p.province_id LIMIT 0,6")public List<ProvinceInfo> findNoDataProvince(short year,short month,short day);
}

管理员登录验证Mapper

package com.ycu.epidemic.mapper;import com.ycu.epidemic.bean.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;@Mapper
public interface UserMapper {@Select("SELECT * from users where account=#{account}")public UserInfo findByAccount(UserInfo user);
}

Service层:

package com.ycu.epidemic.service;import com.ycu.epidemic.bean.DailyEpidemicInfo;
import com.ycu.epidemic.bean.EpidemicDetailInfo;
import com.ycu.epidemic.bean.EpidemicInfo;
import com.ycu.epidemic.bean.ProvinceInfo;import java.util.List;public interface EpidemicService {//返回还未录入的省份public List<ProvinceInfo> saveData(DailyEpidemicInfo dailyEpidemicInfo,Integer userId);public List<EpidemicDetailInfo> findLastestData();
}
package com.ycu.epidemic.service;import com.ycu.epidemic.bean.DailyEpidemicInfo;
import com.ycu.epidemic.bean.EpidemicDetailInfo;
import com.ycu.epidemic.bean.EpidemicInfo;
import com.ycu.epidemic.bean.ProvinceInfo;
import com.ycu.epidemic.common.DateConverter;
import com.ycu.epidemic.mapper.EpidemicMapper;
import com.ycu.epidemic.mapper.ProvinceMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;@Service
public class EpidemicServiceImp implements EpidemicService{@Autowiredprivate EpidemicMapper epidemicMapper;@Autowiredprivate ProvinceMapper provinceMapper;@Overridepublic List<ProvinceInfo> saveData(DailyEpidemicInfo dailyEpidemicInfo, Integer userId) {/*** 保存每日疫情数据* @Param dailyEpidemicInfo 每日疫情数据* @Param userId 录入用户ID* @Author:lijinhua* @Date:2020/7/12*/
//        Date curDate = new Date();String curDate = "2020-7-12";//用上面的new Date实现保存每日数据String [] arr = dailyEpidemicInfo.getDate().split("-");short year=2020,month=7,day=12;
//        year = Short.parseShort(arr[0]);
//        month = Short.parseShort(arr[1]);
//        day = Short.parseShort(arr[2]);DateConverter dateConverter  = new DateConverter();Date curDte = dateConverter.convert(curDate);for (EpidemicInfo epidemicInfo:dailyEpidemicInfo.getArray()) {epidemicInfo.setUserId(userId);epidemicInfo.setInputDate(curDte);epidemicInfo.setDataYear(year);epidemicInfo.setDataMonth(month);epidemicInfo.setDataDay(day);epidemicMapper.saveInfo(epidemicInfo);}return provinceMapper.findNoDataProvince(year,month,day);}@Overridepublic List<EpidemicDetailInfo> findLastestData() {/*** 查询每个省份累计疫情* @Param* @Author:lijinhua* @Date:2020/7/12*/Calendar calendar = new GregorianCalendar();short year=2020,month=7,day=12;//注:日期此处写死了
//        year = (short) calendar.get(Calendar.YEAR);
//        month = (short) (calendar.get(Calendar.MONTH)+1);//0~11
//        day = (short) calendar.get(Calendar.DATE);Map<String,Short> condition = new HashMap<>();condition.put("year",year);condition.put("month",month);condition.put("day",day);return epidemicMapper.findLastestData(condition);}
}
package com.ycu.epidemic.service;import com.ycu.epidemic.bean.ProvinceInfo;import java.util.List;public interface ProvinceService {public List<ProvinceInfo> findNoDataProvince(String date);
}
package com.ycu.epidemic.service;import com.ycu.epidemic.bean.ProvinceInfo;
import com.ycu.epidemic.mapper.ProvinceMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class ProvinceServiceImp implements ProvinceService{@Autowiredprivate ProvinceMapper provinceMapper;@Overridepublic List<ProvinceInfo> findNoDataProvince(String date) {/***查询还没录入数据的省份* @Param date* @Author:lijinhua* @Date:2020/7/12*/List<ProvinceInfo> list = null;short year =0,month=0,day=0;String [] arr = date.split("-");if (arr.length >=3){year = Short.parseShort(arr[0]);month = Short.parseShort(arr[1]);day = Short.parseShort(arr[2]);list = provinceMapper.findNoDataProvince(year,month,day);}return list;}
}
package com.ycu.epidemic.service;import com.ycu.epidemic.bean.UserInfo;public interface UserService {public UserInfo  findByAccount(UserInfo user);
}
package com.ycu.epidemic.service;import com.sun.deploy.security.BadCertificateDialog;
import com.ycu.epidemic.bean.UserInfo;
import com.ycu.epidemic.mapper.UserMapper;
import org.apache.ibatis.annotations.Mapper;
import org.aspectj.apache.bcel.generic.FADD;
import org.aspectj.apache.bcel.generic.IADD;
import org.aspectj.apache.bcel.generic.LADD;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;@Service
@Transactional
public class UserServiceImp  implements UserService{@Autowiredprivate UserMapper userMapper;@Overridepublic UserInfo findByAccount(UserInfo user) {/*** 通过账号查询用户* @Param user* @Author:lijinhua* @Date:2020/7/12*/return userMapper.findByAccount(user);}
}

前端使用echarts展示:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>疫情信息</title><style type="text/css">#body1 {background-color: #10AEB5;}</style><!-- Bootstrap --><link href="${pageContext.request.contextPath}/bootstrap/css/bootstrap.css" rel="stylesheet"><!--[if lt IE 9]><script src="${pageContext.request.contextPath}/bootstrap/js/html5shiv.js"></script><script src="${pageContext.request.contextPath}/bootstrap/js/respond.js"></script><![endif]-->
</head>
<body id="body1">
<div class="container"><div class="row"><div class="col-md-12" style="background-color:#fff;margin-bottom: 5px;"><div id="myMap" style="height: 600px;"></div></div></div><div class="row" style="height: 400px; overflow: auto;"><div class="col-md-16" style="background-color:#fff;"><table class="table table-hover table-bordered table-striped"><thead><tr><th>省份</th><th>确诊人数</th><th>疑似人数</th><th>隔离人数</th><th>治愈人数</th><th>死亡人数</th></tr></thead><tbody id="tbody1"></tbody></table></div></div><div class="row" style="margin-top: 5px;"><div class="col-md-12"><div id="mycharts" style="height: 500px;border: 1px solid gray;background-color:#fff;"></div></div></div><div class="row"><a href="login.jsp">登录</a></div>
</div><script src="${pageContext.request.contextPath}/bootstrap/js/jquery-1.11.2.js"></script>
<script src="${pageContext.request.contextPath}/bootstrap/js/bootstrap.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/echarts/echarts.js"></script>
<script type="text/javascript">$(function () {//获取当前日期var myDate = new Date("2020-7-12");//参数去掉即获取当前日期!!!!(日期此处写死了)var y = myDate.getFullYear();var m = myDate.getMonth()+1;var d = myDate.getDate();var nowDate = y+"-"+m+"-"+d;//定义个用来给表格中装载数据的函数var fillToTable = function (epidemics) {var tbody1 = $("#tbody1");tbody1.empty();$.each(epidemics, function (index, epidemic) {var tr = $("<tr>");var td = $("<td>");td.text(epidemic.provinceName);tr.append(td);td = $("<td>");td.html("" + epidemic.affirmedTotal);tr.append(td);td = $("<td>");td.html("" + epidemic.suspectedTotal);tr.append(td);td = $("<td>");td.html("" + epidemic.isolatedTotal);tr.append(td);td = $("<td>");td.html("" + epidemic.curedTotal);tr.append(td);td = $("<td>");td.html("" + epidemic.deadTotal);tr.append(td);tbody1.append(tr);});};//初始化图表var myCharts = echarts.init($("#mycharts").get(0));var option = {title: {text: "当日全国疫情柱状图",subtext: nowDate},grid: {show: true},legend: {data: [nowDate]},tooltip: {trigger: 'axis'},xAxis: {data: []},yAxis: {},series: [{type: 'bar',name: nowDate,data: []}]};myCharts.setOption(option);//将服务器端返回的数据设置到图表上var fillToChart = function (epidemics) {var provinceNames = [];var affirmedTotal = [];$.each(epidemics, function (index, epidemic) {provinceNames.push(epidemic.provinceName);affirmedTotal.push(epidemic.affirmedTotal);});myCharts.setOption({xAxis: {data: provinceNames},series: [{data: affirmedTotal}]});};var myMap = echarts.init($("#myMap").get(0));//获取地图json数据,显示中国地图$.getJSON("${pageContext.request.contextPath}/echarts/china.json", {}, function (chinaJson) {echarts.registerMap("china", chinaJson);var option = {title: {text: nowDate+" 全国疫情分布图"},legend: {data: ["累计确诊人数"]},tooltip: {},visualMap: {type: 'piecewise',min: 0,max: 10000,splitList:[{start: 1000,end: 10000}, {start: 500,end: 1000}, {start: 100,end: 500}, {start: 0,end: 100}],textStyle:{color: 'orange'}},series: [{name: '累计确诊人数',type: 'map',mapType: 'china',data: []}]};myMap.setOption(option);}, "json");//将数据填充到地图中var fillToMap = function (epidemics) {var data = [];$.each(epidemics, function (index, epidemic) {var obj = {};obj.name = epidemic.provinceName;obj.value = epidemic.affirmedTotal;data.push(obj);});myMap.setOption({series: [{name: '累计确诊人数',type: 'map',mapType: 'china',data: data}]});};//发送请求获取最新疫情数据$.get("${pageContext.request.contextPath}/epidemicData/ajax/lastestData", {}, function (resp) {if (resp.code < 0) {alert(resp.msg);} else {fillToTable(resp.data);fillToChart(resp.data);fillToMap(resp.data);}}, "json");});
</script>
</body>
</html>

管理员登录页面:

<%--Created by IntelliJ IDEA.User: AdministratorDate: 2020/3/12Time: 21:16To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html lang="zh-CN">
<head><meta charset="utf-8"><title>登录界面</title><link rel="stylesheet" href="${pageContext.request.contextPath}/bootstrap/css/bootstrap.css">
</head><body style="background-color: #10aeb5"><div class="modal-dialog" style="margin-top: 20%"><form action="${pageContext.request.contextPath}/user/login" method="post" class="form-horizontal"><div class="modal-content"><div class="modal-header" style="text-align: center" ;><h4>登录</h4></div><div class="modal-body" id="modal-body"><div class="form-group" style="margin-left: 20px;margin-right:20px"><input type="text" class="form-control" placeholder="请输入账号" name="account" autocomplete="off" ></div><div class="form-group" style="margin-left: 20px;margin-right:20px"><input type="text" class="form-control" placeholder="请输入密码" name="password" autocomplete="off" ></div></div><div class="modal-footer" id="modal-footer"><div class="form-group" style="margin-left: 20px;margin-right: 20px; "><button type="submit" class="btn btn-primary form-control">登录</button></div></div><c:if test="${not empty msg}"><div class="row"><div class="col-md-4 col-md-offset-4"><div class="alert alert-danger alert-dismissable" ><button type="button" class="close" data-dismiss="alert"><span>x</span></button>${msg}</div></div></div></c:if></div></form></div><script src="${pageContext.request.contextPath}/bootstrap/js/jquery-1.11.2.js"></script><script src="${pageContext.request.contextPath}/bootstrap/js/bootstrap.js"></script></body>
</html>

录入数据页面:

<%--Created by IntelliJ IDEA.User: lijinhuaDate: 2020/7/10Time: 10:56To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>疫情数据统计系统后台管理</title><jsp:include page="template/bootstrap_common.jsp"></jsp:include>
</head>
<body><script src="${pageContext.request.contextPath}/bootstrap/js/jquery-1.11.2.js"></script><script src="${pageContext.request.contextPath}/bootstrap/js/bootstrap.js"></script><div class="container"><%-- 头部--%><jsp:include page="template/top.jsp"></jsp:include><div class="row"><%-- 左边菜单--%><div class="col-md-3"><jsp:include page="template/menu.jsp"></jsp:include></div><div class="col-md-9"><%--右边--%><ul class="breadcrumb"><li><a href="${pageContext.request.contextPath}/main.jsp">主页</a></li><li>后台主页</li></ul>欢迎使用疫情数据统计系统</div></div></div>
</body>
</html>

源码地址:https://gitee.com/ycu17050539113/Epidemic2020

基于SSM框架实现的疫情统计系统相关推荐

  1. 计算机毕业设计ssm基于SSM框架的股票交易系统3cwg3系统+程序+源码+lw+远程部署

    计算机毕业设计ssm基于SSM框架的股票交易系统3cwg3系统+程序+源码+lw+远程部署 计算机毕业设计ssm基于SSM框架的股票交易系统3cwg3系统+程序+源码+lw+远程部署 本源码技术栈: ...

  2. 计算机毕业设计ssm基于SSM框架的众筹管理系统f5244系统+程序+源码+lw+远程部署

    计算机毕业设计ssm基于SSM框架的众筹管理系统f5244系统+程序+源码+lw+远程部署 计算机毕业设计ssm基于SSM框架的众筹管理系统f5244系统+程序+源码+lw+远程部署 本源码技术栈: ...

  3. 计算机毕业设计ssm基于SSM框架在线电影评论投票系统3gr0f系统+程序+源码+lw+远程部署

    计算机毕业设计ssm基于SSM框架在线电影评论投票系统3gr0f系统+程序+源码+lw+远程部署 计算机毕业设计ssm基于SSM框架在线电影评论投票系统3gr0f系统+程序+源码+lw+远程部署 本源 ...

  4. 基于 SSM 框架搭建的宠物领养系统

    近年来,随着人们对于宠物领养.保护的意识日益提高,宠物领养市场逐渐走向规范化.高效化.而针对这一市场需求,基于 SSM 框架搭建的宠物领养系统应运而生. 一.关于 SSM 框架 SSM 是一个基于 S ...

  5. 计算机毕业设计ssm基于SSM框架的药店管理系统ghao1系统+程序+源码+lw+远程部署

    计算机毕业设计ssm基于SSM框架的药店管理系统ghao1系统+程序+源码+lw+远程部署 计算机毕业设计ssm基于SSM框架的药店管理系统ghao1系统+程序+源码+lw+远程部署 本源码技术栈: ...

  6. java ssm框架论文,基于SSM框架的个人博客系统(源码+论文)

    需求分析 使用spring+springmvc+mybatis实现一个个人博客系统,可以记录个人生活日志, 进行技术分享, 并且浏览者可以对博客进行阅览与评论 本站提供了其他类型的 在线个人博客网站源 ...

  7. 基于SSM框架的企业考勤报销系统Spring+SpringMVC+MyBatis

    系统主要涉及到公司人事部门.财务人员.员工和管理员4种用户,人事部门可通过系统对员工上传的请假单进行审核同时可以查看所有员工的考勤状态.财务人员可以通过系统对员工上传的报销信息进行审核,员工可浏览对应 ...

  8. 基于SSM框架的企业考勤报销系统

    系统主要涉及到公司人事部门.财务人员.员工和管理员4种用户,人事部门可通过系统对员工上传的请假单进行审核同时可以查看所有员工的考勤状态.财务人员可以通过系统对员工上传的报销信息进行审核,员工可浏览对应 ...

  9. java计算机毕业设计ssm基于SSM框架的旅游订票系统s0s38(附源码、数据库)

    java计算机毕业设计ssm基于SSM框架的旅游订票系统s0s38(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstor ...

  10. 基于SSM框架的民宿预订系统的设计与实现

    SSM民宿预订系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题.针对民 ...

最新文章

  1. CUDA编程--实现并行矩阵乘法【80行代码】
  2. 使用xmake优雅地描述工程
  3. nest 架构_当有人打来您的Nest Hello时,如何让Google Home通知您
  4. Easyui动态加载后台数据的例子
  5. 记一次从Sql Server中图片二进制流还原回图片的开发过程
  6. 魅族POP2s真无线耳机正式发布:售价299元!
  7. 三条中线分的六个三角形_解读三角形中的三边关系和三条线段的应用
  8. 温故js系列(4)-运算符详解
  9. MATLAB实现多元正态Copula分布
  10. EXCEL导入SQL的语句
  11. 智鼎在线测评是测什么_人才测评工具和人才测评方法
  12. 数字信号处理——线性相位型(Ⅱ、Ⅳ型)FIR滤波器设计(2)
  13. 【渝粤题库】广东开放大学 建筑设备 形成性考核
  14. 工地实名制人脸识别门禁通道闸机如何安装?
  15. python3.7的idle打不开解决办法_python3.4idle为什么打不开
  16. 生物信息学习——tophat使用手册
  17. 【JZOJ 省选模拟】6691.六道剑「一念无量劫」
  18. 建议更新IE浏览器的版本
  19. Part1---3.数据库编程与完整性
  20. C++数字图像处理篇之图像加马赛克

热门文章

  1. iOS -- 开源项目和库
  2. 从零基础开始学习(一) esp32 micro python编程软件环境Thonny的安装
  3. 2018北大数学夏令营游记
  4. 怎么打开产品原型是html,如何打开产品原型图(axure)
  5. Linux HA Cluster的实例演示(2)
  6. ue4 无限地图_基于UE4的开放世界地图架构
  7. 个人笔记应用 - 思源笔记
  8. 云呐|固定资产管理的目的,固定资产管理办法的目的
  9. antv图例出现分页_AntV - G2
  10. 两部苹果手机同步照片_苹果手机误删照片怎么恢复?