• 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>
    

    运行结果:


  • 相关阅读:
    情报分析技术领域主要研究人员
    《Dynamic Topic Detection and Tracking: A Comparison of HDP, C-Word, and Cocitation Methods》笔记
    Adobe Acrobat 9 Pro 注册码
    文件访问被拒绝 需要管理员权限
    批量文件重命名工具-极力推荐 advanced renamer
    Discuz登录慢、退出也慢的原因?
    一些需要阅读的论文
    webview上传图片
    自定义圆形图片
    touch ImageView
  • 原文地址:https://www.cnblogs.com/yangxiao-/p/12404763.html
Copyright © 2020-2023  润新知