课堂练习-全国疫情统计可视化地图

1 第一阶段目标:
导入全国疫情数据库payiqing.sql(MySQL数据库)。
可以按照时期查询各个省市的疫情统计表格。
以折线图或柱状图展示某天的全国各省的确诊人数。

1.首先完成数据库的导入,然后编写数据库代码。建立DBUtil.java。实现相关数据的查询,并转化为json,以供Echart柱状图获取数据使用。

package dbutil;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import javabeen.Things;

public class DButil {
    //数据库URL和账号密码
        public static final String connectionURL="jdbc:mysql://localhost:3306/keshi?useUnicode=true&characterEncoding=GB18030&useSSL=false&serverTimezone=GMT&allowPublicKeyRetrieval=true";
        public static final String username="root";
        public static final String password="123456";
        static Connection connection;
        static ResultSet rSet;
        static PreparedStatement sql;
        //数据库连接
        public static Connection getConnection()
        {
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                return DriverManager.getConnection(connectionURL, username, password);
            } catch (Exception e) {
                // TODO: handle exception
                System.out.println("数据库连接失败");
                e.printStackTrace();
            }
            return null;
        }
        public static String search(String  date)//查
        {
            try {

                connection=getConnection();
                sql=connection.prepareStatement("select * from info where Date like ‘"+date+"%‘ and  City=‘‘");
                System.out.println(sql);
                rSet=sql.executeQuery();
                //ArrayList<Things> list =new ArrayList<>();

                JSONArray jsonArray=new JSONArray();
                while(rSet.next())
                {
                    //System.out.println(rSet.getString(3));
                    JSONObject json=new JSONObject();
                    json.put("name",rSet.getString(3) );
                    json.put("num", rSet.getString(5));
                    json.put("yisi",rSet.getString(6));
                    json.put("cure", rSet.getString(7));
                    json.put("dead", rSet.getString(8));
                    json.put("code", rSet.getString(9));
                    jsonArray.add(json);
                }
                return jsonArray.toString();
            } catch (Exception e) {
                // TODO: handle exception
                return null;
            }

        }
//        public static void main(String[] args) {
//            search("2020-02-12");
//        }

}

2.建立selvlet,接收jsp中的时间数据,并通过调用DBUtil中的方法获取数据并传回到jsp

package selvlet;

import java.io.IOException;
import java.util.ArrayList;

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 com.alibaba.fastjson.JSONArray;

import dbutil.DButil;
import javabeen.Things;

/**
 * Servlet implementation class Selvletsearch
 */
@WebServlet("/Selvletsearch")
public class Selvletsearch extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    /**
     * @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);
         request.setCharacterEncoding("utf-8");
         response.setContentType("text/html;charset=UTF-8");
           // String date=request.getParameter("date");
            response.getWriter().write(DButil.search(request.getParameter("date")));
    }

}

3.main.jsp 界面,实现柱状图的答印和各个地区疫情情况的数据的表格打印

<%@page import="com.alibaba.fastjson.JSON"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
 <script src="echarts.min.js"></script>
 <script src="https://cdn.staticfile.org/jquery/3.2.1/jquery.min.js"></script>
 <script src="https://cdn.staticfile.org/popper.js/1.15.0/umd/popper.min.js"></script>
 <script src="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
<style>
            #one{
                /*border: 1px solid black;*/
                width: 1000px;
                height:auto;
                background-color: ghostwhite;
                margin: auto;
            }
            #main{
            width:1000px;
            height:outo;
            background-color: ghostwhite;
            margin: auto;
            }
            .table
            {
            margin: auto;
            }
</style>
</head>
<body>
        <div id="one">
            请输入时间:<input type="text" name="date" id="date" />
             <input type="submit" value="查询" onclick="search()">
        </div>
        <br/>
<div id="main" style="width: 100%;height:400px;overflow: auto;"></div>
<table class="table">
        <thead class="head">
            </thead>
        <tbody class="main"></tbody>
    </table>
<script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById(‘main‘));

        // 指定图表的配置项和数据
        myChart.showLoading();
        function search() {
            var date=$("#date").val();
           alert("查找成功");
            $.post(
                ‘Selvletsearch‘,
                {date:date},
                function(msg){
                    var json=JSON.parse(msg);
                    var size=json.length;
                    var names=[];
                    var nums=[];
                    for(i=0;i<size;i++){
                        names.push(json[i].name);
                        nums.push(json[i].num);
                        i++;
                    }
                    myChart.hideLoading();
                    var option = {
                            title: {
                                text: $("input[name=date]").val()+‘确诊人数‘
                            },
                            tooltip: {},
                            legend: {
                                data:[‘确诊人数‘]
                            },
                            xAxis: {
                                data: names
                            },
                            yAxis: {},
                            series: [{
                                name: ‘确诊人数‘,
                                type: ‘bar‘,
                                data: nums
                            }]
                        };
                  myChart.setOption(option);
                  tr="<tr><th>省份</th><th>确诊人数</th><th>疑似人数</th><th>治愈人数</th><th>死亡人数</th><th>编码</th></tr>";
                  $(‘.head‘).append(tr);
                  for(i=0;i<size;i++)
                      $(‘.main‘).append("<tr></tr>");
                  $(‘.main tr‘).each(function(i){
                      $(this).append("<td>"+json[i].name+"</td>");
                      $(this).append("<td>"+json[i].num+"</td>");
                      $(this).append("<td>"+json[i].yisi+"</td>");
                      $(this).append("<td>"+json[i].cure+"</td>");
                      $(this).append("<td>"+json[i].dead+"</td>");
                      $(this).append("<td>"+json[i].code+"</td>");
                  })

                },
               //"json"
                );

        }

   </script>
</body>
</html>

实验结果:

原文地址:https://www.cnblogs.com/zwx655/p/12432474.html

时间: 2024-08-29 18:01:35

课堂练习-全国疫情统计可视化地图的相关文章

全国疫情统计可视化地图(2)

第二阶段的要求是通过地图展示全国疫情的情况. 1:首先要下载中国地图的插件 china.js  ,由于目前Echarts官网已经不提供地图的下载.下面是echarts.min.js  china.js和各个省份地图的js的资源,方便大家下载. 链接: https://pan.baidu.com/s/1MFt-0LqAUQXzpiI1qy-Q0w 提取码: q7y4 2: 要将数据库中数据传进地图去,自然要书写相应的bean目录.dao层以及servlet.bean目录的话不用多说,和之前的代码一

全国疫情统计可视化地图(3)

第三阶段是数据下钻,要求点击省可以下钻到各个地市的数据显示. 1:首先,要显示相应的地图需要导入相应的js 上一篇文章中分享的链接同样包含各个省份的js  链接: https://pan.baidu.com/s/1MFt-0LqAUQXzpiI1qy-Q0w 提取码: q7y4.点击省可以跳转到地市,所以需要在 myChart.on中加一个跳转的语句.语句中加上时间和省份,用于查找. myChart.on('click', function (params) { var url = "Hebei

全国疫情统计可视化地图(第一阶段)

DBUtil.java package com.helloechart; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBUtil { public static String db_url = "jdbc:mysql://loca

全国疫情统计可视化(图表)

题目描述           问题分析 使用Echarts处理柱形图 源码 前台的目录结构 构建路径 后台的路径 后台的代码 1 package com.pjh.DBUtils; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLExceptio

全国疫情统计地图可视化(1)

写在前面 该思路借鉴了王正帅同学和张凯鑫同学的博客(地址:https://www.cnblogs.com/20183544-wangzhengshuai/p/12405503.html和 https://www.cnblogs.com/wuren-best/p/12404361.html),并在其基础上进行了修改和改进. 题目要求: 在全国地图上使用不同的颜色代表大概确诊人数区间,颜色的深浅表示疫情的严重程度,可以直观了解高危区域: 鼠标移到每个省份会高亮显示.点击鼠标会显示该省具体疫情情况.点

结对第一次—某次疫情统计可视化(原型设计)

https://w7if3z.axshare.com/#id=mx82vm&p=page_1 原文地址:https://www.cnblogs.com/hylog/p/12370065.html

号外号外:9月21号关于Speed-BI 《全国人口统计数据分析》开讲了

引言:如何快速分析纷繁复杂的数据?如何快速做出老板满意的报表?如何快速将Speed-BI云平台运用到实际场景中? 本课程将通过各行各业案例背景,将Speed-BI云平台运用到实际场景中,通过熟练使用云平台可视化技巧,将枯燥的数字灵活化.可动化:通过统计图表的应用,将灵活可动的图表多样化.专业化,全方位多视角观察.分析案例相关数据,达到报表目的清晰.界面简洁.可分析维度多.反馈性强等目标,操作过程从数据整理至报表生成一步到位,主要涉及分析意图挖掘.指标判断选择.适用图表选择.多维度选择.报表快速生

利用django打造自己的工作流平台(二):疫情统计系统

相关文章: 利用django打造自己的工作流平台(一):从EXCEL到流程化运作 本文是“利用django打造自己的工作流平台”系列文章的第二篇,在自己开发的工作流平台中添加了一个用于排查统计可能受感染人员的项目,可用于公司.部门对员工以及各行政单位对辖区内的人员进行受感染情况的跟踪和统计,为疫情防控贡献一点力量.演示试用地址[点击此处],两个试用账号/密码为:testuser1/testuser1, testuser2/testuser2. 对人员的排查流程如下图1所示: 图1.可能受感染人员

疫情有望好转,新增指标持续下降|2月12日全国疫情播报

#永洪科技今日疫情播报#最新数据显示:截至2月12日9:00,我国共确诊44631例,疑似21675例,治愈4635例 ,死亡1114例.(注:国家卫建委12日暂未发布最新数据,数据来源参考各省市卫健委总和)整体来看,疫情在向好的趋势发展,湖北地区新增确诊病例继续出现下降,全国不含湖北地区新增确诊也连续几天下滑,青海连续5日无新增病例,西藏地区尚在医学观察的人数为0.但需要注意的是,贵州与其周边地区相比,确诊人数较少,但治愈率最低,死亡与治愈与当地的医疗环境有很大关系,贵州的疫情依然需要重视.疫