zoukankan      html  css  js  c++  java
  • java----统计疫情可视化展示--echarts

    今天课上的作业,没有完成。于是课下终于把它给弄完了。做这个折线图需要用echart这个包,所以我们得导入它的包
    想法:先通过输入框获取某天内所有的疫情信息,然后列出来。然后再通过按钮讲折线图绘制出来。绘制折线图还用到了ajax的知识。页面的美化我用了bootstrap


    实体类:

    package bin;
    
    public class Info {
    	private int id;
    	private String date;
    	private String province;
    	private String city;
    	private String confirmed_num;
    	private String yisi_num;
    	private String cured_num;
    	private String dead_num;
    	private String code;
    	public Info() {}
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getDate() {
    		return date;
    	}
    	public void setDate(String date) {
    		this.date = date;
    	}
    	public String getProvince() {
    		return province;
    	}
    	public void setProvince(String province) {
    		this.province = province;
    	}
    	public String getCity() {
    		return city;
    	}
    	public void setCity(String city) {
    		this.city = city;
    	}
    	public String getConfirmed_num() {
    		return confirmed_num;
    	}
    	public void setConfirmed_num(String confirmed_num) {
    		this.confirmed_num = confirmed_num;
    	}
    	public String getYisi_num() {
    		return yisi_num;
    	}
    	public void setYisi_num(String yisi_num) {
    		this.yisi_num = yisi_num;
    	}
    	public String getCured_num() {
    		return cured_num;
    	}
    	public void setCured_num(String cured_num) {
    		this.cured_num = cured_num;
    	}
    	public String getDead_num() {
    		return dead_num;
    	}
    	public void setDead_num(String dead_num) {
    		this.dead_num = dead_num;
    	}
    	public String getCode() {
    		return code;
    	}
    	public void setCode(String code) {
    		this.code = code;
    	}
    	
    
    }
    

    dao:

    package Dao;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    import DBUtil.Util;
    import bin.Info;
    public class Dao {
    	public List<Info> searchAllComfirmed(String date1,String date2) {
    		Connection con = null;
    		PreparedStatement ps = null;
    		ResultSet rs = null;
    		List<Info> info_list = new ArrayList<>();
    		try {
    			con = Util.getConnection();
    			String sql = "select * from info where Date between ? and ?";
    			ps = con.prepareStatement(sql);
    			ps.setString(1,date1);
    			ps.setString(2,date2);
    			rs = ps.executeQuery();
    			while(rs.next()) {
    				Info info = new Info();
    				info.setId(rs.getInt(1));
    				info.setDate(rs.getString(2));
    				info.setProvince(rs.getString(3));
    				info.setCity(rs.getString(4));
    				info.setConfirmed_num(rs.getString(5));
    				info.setYisi_num(rs.getString(6));
    				info.setCured_num(rs.getString(7));
    				info.setDead_num(rs.getString(8));
    				info_list.add(info);
    			}
    			System.out.println(info_list.size());
    			return info_list;
    		}catch(Exception e) {
    			throw new RuntimeException(e);
    		}finally {
    			try {
    				rs.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    			Util.release(con, ps);
    		}
    	}
    	public List<Info> getAllProvince(String date1,String date2) {
    		Connection con = null;
    		PreparedStatement ps = null;
    		ResultSet rs = null;
    		List<Info> info_list = new ArrayList<>();
    		try {
    			con = Util.getConnection();
    			String sql = "select * from info where Date between ? and ? and City is not null";
    			ps = con.prepareStatement(sql);
    			ps.setString(1,date1);
    			ps.setString(2,date2);
    			rs = ps.executeQuery();
    			while(rs.next()) {
    				Info info = new Info();
    				info.setId(rs.getInt(1));
    				info.setDate(rs.getString(2));
    				info.setProvince(rs.getString(3));
    				info.setCity(rs.getString(4));
    				info.setConfirmed_num(rs.getString(5));
    				info.setYisi_num(rs.getString(6));
    				info.setCured_num(rs.getString(7));
    				info.setDead_num(rs.getString(8));
    				info_list.add(info);
    			}
    			return info_list;
    		}catch(Exception e) {
    			throw new RuntimeException(e);
    		}finally {
    			try {
    				rs.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    			Util.release(con, ps);
    		}
    	}
    }
    

    Servlet:

    package Servlet;
    
    import java.io.IOException;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    import com.google.gson.Gson;
    
    import Dao.Dao;
    import bin.Info;
    
    /**
     * Servlet implementation class SearchConfirmedServlet
     */
    @WebServlet("/SearchConfirmedServlet")
    public class SearchConfirmedServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
        Dao dao = new Dao();
        /**
         * @see HttpServlet#HttpServlet()
         */
        public SearchConfirmedServlet() {
            super();
            // TODO Auto-generated constructor stub
        }
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String method = request.getParameter("method");
    		if(method.equals("getAllProvince")) {
    			getAllProvince(request, response);
    		}else if(method.equals("getAllConfirmed")) {
    			getAllConfirmed(request, response);
    		}
    	}
    
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		doGet(request, response);
    	}
    	protected void getAllProvince(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.setCharacterEncoding("UTF-8");
    		String date1 = request.getParameter("date1");
    		String date2 = request.getParameter("date2");
    		List<Info> info_list = dao.searchAllComfirmed(date1,date2);
    		request.setAttribute("info_list",info_list);
    		request.setAttribute("date1",date1);
    		request.setAttribute("date2",date2);
    		request.getRequestDispatcher("jieguo.jsp").forward(request, response);
    	}
    	
    	protected void getAllConfirmed(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.setCharacterEncoding("UTF-8");
    		String date1 = request.getParameter("date1");
    		String date2 = request.getParameter("date2");
    		System.out.println(date1);
    		System.out.println(date2);
    		List<Info> info_list = dao.searchAllComfirmed(date1,date2);
    		HttpSession session = request.getSession();
    		session.setAttribute("info_list",info_list);
    		Gson gson = new Gson();
    		String json = gson.toJson(info_list);
    		response.getWriter().write(json);
    	}
    }
    

    链接数据库的就不写了

    主页

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>BootStrap的使用</title>
    <link href="${pageContext.request.contextPath }/css/bootstrap.min.css"  rel="stylesheet">
    <script src="${pageContext.request.contextPath }/js/jquery-3.3.1.min.js"></script>
    <script src="${pageContext.request.contextPath }/js/bootstrap.min.js"></script>
    
    <style type="text/css">
    	.skyblue{
    		background:skyblue;
    	}
    	.pink{
    		background:pink;
    	}
    	*{
    		margin:0px;
    		padding:0px;
    	}
    	a{
    		font-size:15px;
    	}
    	
    </style>
    </head>
    <body>
    	<div class="container">
    		<form action="SearchConfirmedServlet?method=getAllProvince" method="post">
    			<div class="row" style="padding-top: 20px">
    				<div class="col-xs-4">
    					<h4>请输入起始时间:</h4>
    					<input type="text" class="form-control" name="date1">
    				</div>
    				<div class="col-xs-4">
    					<h4>请输入终止时间:</h4>
    					<input type="text" class="form-control" name="date2">
    				</div>
    				<div class="col-xs-2">
    					<input type="submit" class="btn btn-default" value="查询">
    				</div>
    			</div>
    		</form>
    
    	</div>
    </body>
    </html>
    

    结果:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <link href="${pageContext.request.contextPath }/css/bootstrap.min.css"  rel="stylesheet">
    <script src="${pageContext.request.contextPath }/js/jquery-3.3.1.min.js"></script>
    <script src="${pageContext.request.contextPath }/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath }/js/echarts.min.js"></script>
    </head>
    <script type="text/javascript">
    var dt;
    function getAllConfirmed(){
    	
    	var date1 = "${date1}";
    	var date2 = "${date2}";
    $.ajax({
    	url:"SearchConfirmedServlet?method=getAllConfirmed",
    	async:true,
    	type:"POST",
    	data:{"date1":date1,
    		  "date2":date2
    		 },
    	success:function(data){
    		dt = data;
    		//alert(dt);
    	},
    	error:function(){
    		alert("请求失败");
    	},
    	dataType:"json"
    });
    	
        var myChart = echarts.init(document.getElementById('yiqingchart'));
    	var xd = new Array(0)//长度为33
    	var yd = new Array(0)//长度为33
    	for(var i=0;i<32;i++){
    		xd.push(dt[i].province);
    		yd.push(dt[i].confirmed_num);
    	}
            // 指定图表的配置项和数据
           var option = {
    	    title: {
    	        text: '全国各省的确诊人数'
    	    },
    	    tooltip: {
    	    	show: true,
    	        trigger: 'axis'
    	        
    	    },
    	    legend: {
    	        data: ['确诊人数']
    	    },
    	    grid: {
    	        left: '3%',
    	        right: '4%',
    	        bottom: '3%',
    	        containLabel: true
    	    },
    	    toolbox: {
    	        feature: {
    	            saveAsImage: {}
    	        }
    	    },
    	    xAxis: {
    	        type: 'category',
    	        boundaryGap: false,
    	        axisLabel:{
    	        	                        //横坐标上的文字斜着显示 文字颜色 begin 
    	        	                             interval:0,
    	        	                             rotate:45,
    	        	                             margin:60,
    	        	                             textStyle:{color:"#ec6869" }
    	        	                        //横坐标上的文字换行显示 文字颜色end
    	        	                             },
    	        data: xd
    	    },
    	    yAxis: {
    	        type: 'value'
    	    },
    	    series: [
    	        {
    	            name: '确诊人数',
    	            type: 'line',
    	            stack: '总量',
    	            data: yd,
    	            barWidth:20,
    	            barGap:'10%'
    	        }
    	    ]
    	};
    
           
    
            // 使用刚指定的配置项和数据显示图表。
            myChart.setOption(option);
    }
    </script>
    <body>
    	<button class="btn btn-default" onclick="getAllConfirmed()" style="padding-top:20px;font-size:20px">显示折线图</button>
    	<div id="yiqingchart" style="900px; height: 600px;">
    		
    	</div>
    	<table class="table table-striped" style="font-size:20px">
    		<tr>
    			<td>编号</td>
    			<td>日期</td>
    			<td>省份</td>
    			<td>城市</td>
    			<td>确诊人数</td>
    			<td>疑似人数</td>
    			<td>治愈人数</td>
    			<td>死亡人数</td>
    		</tr>
    		<c:forEach items="${info_list}" var="info">
    		<tr>
    			<td>${info.id}</td>
    			<td>${info.date}</td>
    			<td>${info.province}</td>
    			<td>${info.city}</td>
    			<td>${info.confirmed_num}</td>
    			<td>${info.yisi_num}</td>
    			<td>${info.cured_num}</td>
    			<td>${info.dead_num}</td>
    		</tr>
    		</c:forEach>
    	</table>
    </body>
    </html>
    

    运行结果:


  • 相关阅读:
    HDU5418.Victor and World(状压DP)
    POJ2686 Traveling by Stagecoach(状压DP)
    POJ3254Corn Fields(状压DP)
    HDU5407.CRB and Candies(数论)
    CodeForces 352D. Jeff and Furik
    CodeForces 352C. Jeff and Rounding(贪心)
    LightOj 1282 Leading and Trailing
    Ural 1057. Amount of Degrees(数位DP)
    HDU 2089 不要62 (数位DP)
    HDU5366 The mook jong (DP)
  • 原文地址:https://www.cnblogs.com/yangxiao-/p/12404763.html
Copyright © 2011-2022 走看看