zoukankan      html  css  js  c++  java
  • 全国疫情

    源程序代码:

    获取数据库数据

    package dao;

    import java.sql.Connection;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import com.alibaba.fastjson.JSONArray;

    import com.alibaba.fastjson.JSONObject;

    import util.DButil;

    public class Function {

    public static  String query(String a,String b) throws SQLException{

    JSONArray jsonArray=new JSONArray();

    String sql = "select province,sum(confirmed_num) as total from info  where date_format(Date,'%Y-%m-%d') between '"+a+"' and '"+b+"'"

    + "group by province order by total desc";

    Connection conn = DButil.getConn();

    conn.setAutoCommit(false);

    PreparedStatement preparedStatement = conn.prepareStatement(sql);

    ResultSet resultSet = preparedStatement.executeQuery();

    while (resultSet.next()) {

    JSONObject json=new JSONObject();

    String province=resultSet.getString("province");

    if(province==null||province.equals("")) {

    province="等待调查";

    }

    int total=resultSet.getInt("total");

    json.put("province", province);

    json.put("count", total+"");

    jsonArray.add(json);

    }

    conn.commit();

    conn.close();

    return jsonArray.toString();

    }

    public static String getData(String a,String b) throws SQLException{

    JSONArray jsonArray=new JSONArray();

    String sql="select * from info where date_format(Date,'%Y-%m-%d') between '"+a+"' and '"+b+"' ";

    Connection conn=DButil.getConn();

    try {

    Statement st=conn.createStatement();

    ResultSet rs=st.executeQuery(sql);

    while(rs.next()) {

    JSONObject json=new JSONObject();

    json.put("id",rs.getInt("id"));

    json.put("date", rs.getTimestamp("Date").toString());

    String province=rs.getString("province");

    if(province==null||province.equals("")) {

    province="等待调查";

    }

    json.put("province", province);

    String city=rs.getString("city");

    if(city==null||city.equals("")) {

    city="无法得知";

    }

    json.put("city", city);

    json.put("confirmed_num", rs.getInt("Confirmed_num"));

    json.put("Cured_num", rs.getString("Cured_num"));

    json.put("Dead_num",rs.getString("Dead_num"));

    jsonArray.add(json);

    }

    }

    catch(Exception e) {

    System.out.println(e.getMessage());

    }

    finally {

    if(conn!=null) {

       conn.close();

    }

    }

    return jsonArray.toString();

    }

    }

    传递数据给前端

    package servlet;

    import java.io.IOException;

    import java.io.PrintWriter;

    import java.sql.SQLException;

    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 dao.Function;

    @WebServlet("/GetdataServlet")

    public class GetdataServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

       

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

    request.setCharacterEncoding("utf-8");      

    response.setContentType("utf-8");         

    response.setCharacterEncoding("utf-8");        

    String time1=request.getParameter("time1");

    String time2=request.getParameter("time2");

    System.out.println(time1+"--->"+time2);

    String json=null;

    try {

     json=Function.getData(time1, time2);

    } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    System.out.println(json);

    PrintWriter out=response.getWriter();

    out.println(json);

    out.close();

    }

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

    request.setCharacterEncoding("utf-8");     

    response.setContentType("utf-8");        

    response.setCharacterEncoding("utf-8");        

    String time1=request.getParameter("time1");

    String time2=request.getParameter("time2");

    System.out.println(time1+"--->"+time2);

    String json=null;

    try {

     json=Function.query(time1, time2);

    } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    System.out.println(json);

    PrintWriter out=response.getWriter();

    out.println(json);

    out.close();

    }

    }

    前端可视化展示

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>全国疫情统计</title>

    <style type="text/css">

    #btn {

    /* 按钮美化 */

    margin-top: 5px;

    75px; /* 宽度 */

    height: 23px; /* 高度 */

    border- 0px; /* 边框宽度 */

    border-radius: 3px; /* 边框半径 */

    background: #1E90FF; /* 背景颜色 */

    cursor: pointer; /* 鼠标移入按钮范围时出现手势 */

    outline: none; /* 不显示轮廓线 */

    font-family: Microsoft YaHei; /* 设置字体 */

    color: white; /* 字体颜色 */

    font-size: 14px; /* 字体大小 */

    }

    #btn:hover {

    background: orange;

    }

    table td,th{

     padding: 20px;

    text-align: center;

    border:1px solid #70aefb ;

    vertical-align:middle;

    }

    #table{

    margin-left:100px;

    }

    </style>

    <script src="echarts.min.js"></script>

    <script src="jquery-3.4.1.min.js"></script>

    <script>

    $(function(){

    $("#btn").click(function(){

    $.post("GetdataServlet",{time1:$("#time1").val(),time2:$("#time2").val()},function(result){

    if(result!=null){

    var array=JSON.parse(result);

    console.log(result);

    console.log(array);

    var province=[];

    var count=[];

    for(var i=0;i<array.length;i++){

    province.push(array[i].province);

    count.push(array[i].count);

    }

    var myChart = echarts.init(document.getElementById('main'));

    myChart.hideLoading();

    myChart.setOption({

     title: {

          text: '疫情统计'

      },

    legend: {

             data:['确诊人数']

        },

            xAxis: {

                data: province,

                axisLabel: {interval:0,rotate:40 }

            },

            

            yAxis: {

            

            },

            series: [{

                // 根据名字对应到相应的系列

               name: '确诊人数',

                data:count

            }]

            

        });

    $.get("GetdataServlet?time1="+$("#time1").val()+"&time2="+$("#time2").val(),function(result){

    if(result!=null){

    var html="<table><tr><td>编号</td><td>日期</td><td>省份</td><td>城市</td><td>确诊人数</td><td>治愈人数</td><td>死亡人数</td></tr>";

    var json=JSON.parse(result);

    for(var j=0;j<json.length;j++){

    html+="<tr><td>"+json[j].id+"</td><td>"+json[j].date+"</td><td>"+json[j].province+"</td><td>"+json[j].city+"</td><td>"+json[j].confirmed_num+"</td><td>"+json[j].Cured_num+"</td><td>"+json[j].Dead_num+"</td></tr>"

    }

    console.log(json);

    $("#table").html(html+"</table>");

    }else{

    }

    });

    }else{

    alert("暂无该数据统计情况");

    }

    });

    });

    });

    </script>

    </head>

    <body>

    <span>时间段:</span>

    <input type="text" id="time1" name="time1" />

    <span>--------></span>

    <input type="text" id="time2" name="time2" />

    <input type="button" value="查询" id="btn">

    <div id="main" style=" 1200px; height: 500px;"></div>

    <div id="table"></div>

    <script>

    var myChart = echarts.init(document.getElementById('main'));

    // 显示标题,图例和空的坐标轴

    myChart.setOption({

    title : {

    text : '疫情统计柱形图'

    },

    tooltip : {},

    legend : {

    data : [ '确诊人数' ]

    },

    xAxis : {

    data : []

    },

    yAxis : {},

    series : [ {

    name : '确诊人数',

    type : 'bar',

    data : []

    } ]

    });

    </script>

    </body>

    </html>

    运行截图:

    第二和第三阶段进行整合

    源程序代码:

    获取数据库数据:

    package dao;

    import java.sql.Connection;

    import java.sql.PreparedStatement;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import java.util.ArrayList;

    import java.util.List;

    import com.alibaba.fastjson.JSON;

    import com.alibaba.fastjson.JSONArray;

    import com.alibaba.fastjson.JSONObject;

    import bean.People;

    import util.DButil;

    public class Function {

    public static  String query(String start,String end) throws SQLException{

    JSONArray jsonArray=new JSONArray();

    String sql = "select province,sum(confirmed_num) as total from info  where date_format(Date,'%Y-%m-%d') between '"+start+"' and '"+end+"'"

    + "group by province order by total desc";

    Connection conn = DButil.getConn();

    conn.setAutoCommit(false);

    PreparedStatement preparedStatement = conn.prepareStatement(sql);

    //执行查询语句并返回结果集

    ResultSet resultSet = preparedStatement.executeQuery();

    while (resultSet.next()) {

    //注意:这里要与数据库里的字段对应

    JSONObject json=new JSONObject();

    String province=resultSet.getString("province");

    if(province==null||province.equals("")) {

    province="地址不明";

    }

    int total=resultSet.getInt("total");

    json.put("name", province);

    json.put("value", total);

    jsonArray.add(json);

    System.out.println(province);

    }

    conn.commit();

    conn.close();

    return jsonArray.toString();

    }

    public static String getPeople(String start,String end) throws SQLException{

    List<People> list=new ArrayList<People>();

    String sql="select * from info where date_format(Date,'%Y-%m-%d') between '"+start+"' and '"+end+"' ";

    Connection conn=DButil.getConn();

    try {

    //连接对象coon调用createStatement()方法,创建一个执行SQL语句的对象st

    Statement st=conn.createStatement();

    //执行SQL语句中的对象st调用executeQuery()方法,执行查询语句,将查询到的结果返回到一个结果集中

    ResultSet rs=st.executeQuery(sql);

    //遍历结果集对象

    while(rs.next()) {

    People pl=new People();

    pl.setId(rs.getInt("id"));

    pl.setData(rs.getTimestamp("Date").toString());

    pl.setConfirmed_num(rs.getInt("Confirmed_num"));

    pl.setCured_num(rs.getString("Cured_num"));

    pl.setDead_num(rs.getString("Dead_num"));

    String province=rs.getString("province");

    if(province==null||province.equals("")) {

    province="地址不明";

    }

    pl.setProvince(province);

    String city=rs.getString("city");

    if(city==null||city.equals("")) {

    city="尚不清楚";

    }

    pl.setCity(city);

    list.add(pl);

    }

    }

    catch(Exception e) {

    System.out.println(e.getMessage());

    }

    finally {

    if(conn!=null) {

       conn.close();

    }

    }

    String json=JSON.toJSONString(list);

    return json;

    }

    }

    将数据传递给前端

    package servlet;

    import java.io.IOException;

    import java.io.PrintWriter;

    import java.sql.SQLException;

    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 dao.Function;

    /**

     * Servlet implementation class QueryServlet

     */

    @WebServlet("/QueryServlet")

    public class QueryServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

           

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

    request.setCharacterEncoding("utf-8");      //服务器接受前台数据转换为中文

    response.setContentType("utf-8");         // 指定服务器给浏览器发送的代码

    response.setCharacterEncoding("utf-8");        //get,post返回数据给前台

    String start=request.getParameter("start");

    String end=request.getParameter("end");

    System.out.println(start+"--->"+end);

    String json=null;

    try {

     json=Function.getPeople(start, end);

    } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    System.out.println(json);

    PrintWriter out=response.getWriter();

    out.println(json);

    out.close();

    }

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

    request.setCharacterEncoding("utf-8");      //服务器接受前台数据转换为中文

    response.setContentType("utf-8");         // 指定服务器给浏览器发送的代码

    response.setCharacterEncoding("utf-8");        //get,post返回数据给前台

    String start=request.getParameter("start");

    String end=request.getParameter("end");

    System.out.println(start+"--->"+end);

    String json=null;

    try {

     json=Function.query(start, end);

    } catch (SQLException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    System.out.println(json);

    PrintWriter out=response.getWriter();

    out.println(json);

    out.close();

    }

    }

    前端展示可视化界面

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>中国地图展示</title>

    <style type="text/css">

    #btn {

    /* 按钮美化 */

    margin-top: 5px;

    75px; /* 宽度 */

    height: 23px; /* 高度 */

    border- 0px; /* 边框宽度 */

    border-radius: 3px; /* 边框半径 */

    background: #1E90FF; /* 背景颜色 */

    cursor: pointer; /* 鼠标移入按钮范围时出现手势 */

    outline: none; /* 不显示轮廓线 */

    font-family: Microsoft YaHei; /* 设置字体 */

    color: white; /* 字体颜色 */

    font-size: 14px; /* 字体大小 */

    }

    #btn:hover {

    background: orange;

    }

    </style>

    <script src="./js/jquery-3.4.1.js"></script>

    <script src="./js/echarts.min.js"></script>

    <script src="./js/china.js"></script>

    <script>

    $(function(){

    $("#btn").click(function(){

    $.post("QueryServlet",{start:$("#start").val(),end:$("#end").val()},function(result){

    if(result!=null){

    var splitList=[   

                    {start: 10000, end:200000},{start: 5000, end: 10000},  

                    {start: 3000, end: 5000},{start: 1000, end: 3000},  

                    {start: 500, end: 1000},{start: 0, end: 500}  

                ];   

    var array=JSON.parse(result);

    var mydata=[];

    for(var i=0;i<array.length;i++){

    var temp={};

    if(array[i].name=="内蒙古自治区"||array[i].name=="黑龙江省"){

    temp.name=array[i].name[0]+array[i].name[1]+array[i].name[2];

    }else{

    temp.name=array[i].name[0]+array[i].name[1];

    }

    temp.value=array[i].value;

    mydata[i]=temp;

    }

    console.log(mydata);

    var optionMap = {  

            backgroundColor: '#FFFFFF',  

            title: {  

                text: '疫情全国分布图',  

                subtext: '',  

                x:'center'  

            },  

            tooltip : {  

                trigger: 'item'  

            },  

            

            //左侧小导航图标

            visualMap: {  

                show : true,  

                x: 'left',  

                y: 'center',  

                splitList: splitList,

                color: ['#59EA3A','#FFFA40','#E238A7','#8DB42D','#3DA028','#BFBC30']  

            },  

            

            //配置属性

            series: [{  

                name: '确诊人数',  

                type: 'map',  

                mapType: 'china',   

                roam: true,  

                label: {  

                    normal: {  

                        show: true  //省份名称  

                    },  

                    emphasis: {  

                        show: false  

                    }  

                },  

                data:mydata  //数据

            }]  

        };  

    //初始化echarts实例

    var myChart = echarts.init(document.getElementById('main'));

    //使用制定的配置项和数据显示图表

    myChart.setOption(optionMap);

    var temp2=[];

    $.get("QueryServlet?start="+$("#start").val()+"&end="+$("#end").val(),function(result){

    if(result!=null){

    var json=JSON.parse(result);

    for(var j=0;j<json.length;j++){

    temp2.push({name:json[j].city,value:json[j].confirmed_num});

    }

    }else{

    }

    });

       myChart.on('click', function (params) {

       

       console.log("我被点击了"+params.name);

         goProvince(myChart,params,splitList,mydata1,optionMap);

        });

       console.log(temp2);

       var mydata1 = temp2;

       

    //渲染城市地图

    function goProvince(myChart,params,splitList,mydata1,optionMap){

    $.getJSON('js/mapjson/' +params.name + '.json', function (geoJson) {

    myChart.hideLoading();

    echarts.registerMap(params.name, geoJson);

    var option = {

                backgroundColor: '#FFFFFF',  

                tooltip : {

                    trigger: 'item'  

                },  

                //左侧小导航图标

                visualMap: {

                    left: 'left',

                    top: 'top',

                    splitList:splitList,

                    color: ['red', '#9feaa5', '#85daef','#74e2ca', '#e6ac53'],

                    show:true

                },

                //配置属性

                series: [{  

                    name: '确诊人数',  

                    type: 'map',  

                    mapType: params.name, // 地图类型,支持world,china及全国34个省市自治区,例如:河北、北京  

                    roam: false,  // 是否开启滚轮缩放和拖拽漫游,默认为false(关闭),其他有效输入为true(开启),'scale'(仅开启滚轮缩放),'move'(仅开启拖拽漫游)

                    label: {  

                        normal: {  

                            show: true  //省份名称  

                        },  

                        emphasis: {  

                            show: false  

                        }  

                    },

                    data:mydata1  //数据

                }]

            };

    //使用制定的配置项和数据显示图表

        myChart.setOption(option);

    //点击城市返回全国地图

        myChart.on('click', function (params) {

         myChart.setOption(optionMap);

        });

    });

    }

    }else{

    alert("暂无该数据统计情况");

    }

    });

    });

    });

    </script>

    </head>

    <body>

    <span>请输入查询的时间段:</span>

    <input type="text" id="start" name="start"

    placeholder="(格式:yyyy-MM-dd)" />

    <span>--------></span>

    <input type="text" id="end" name="end" placeholder="(格式:yyyy-MM-dd)" />

    <input type="button" value="查询" id="btn">

    <div id="main" style=" 1200px; height: 500px;"></div>

    <div id="china_div" class="col-md-12" style="height:600px;"></div>

    <!-- 渲染容器一定要设置宽高 -->

    </body>

    </html>

  • 相关阅读:
    Facebook的体系结构分析---外文转载
    简易的IOS位置定位服务
    【简易版】IOS仿periscope自制狂赞飘桃心
    The Linux Programming Interface
    freeswitch嵌入lua脚本
    Epoll Tutorial – epoll In 3 Easy Steps!
    基于freeswitch的webrtc与sip终端呼叫
    buildroot添加第三方库
    rfc
    TCP/UDP Server-Client implementation in C
  • 原文地址:https://www.cnblogs.com/2506236179zhw/p/13237965.html
Copyright © 2011-2022 走看看