疫情數據庫可視化

package dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import entity.Info; import utils.DBUtil; public class dao { public List<Info> Query(String Date) { List<Info> infos=new ArrayList<>(); Info info= null; ResultSet rs = null; try { String sql="select * from info where Date=? " ; Object [] params= {Date}; rs=DBUtil.executeQuery(sql, params); while(rs.next()) { int Id=rs.getInt("Id"); String Province=rs.getString("Province"); String City=rs.getString("City"); String Confirmed_num=rs.getString("Confirmed_num"); String Yisi_num=rs.getString("Yisi_num"); String Cured_num=rs.getString("Cured_num"); String Dead_num=rs.getString("Dead_num"); String Code=rs.getString("Code"); info=new Info(Id,Date,Province,City,Confirmed_num,Yisi_num,Cured_num,Dead_num,Code); infos.add(info); } }catch(SQLException e) { e.printStackTrace(); }catch(Exception e) { e.printStackTrace(); }finally { try { //先開的後關,後開的先關
               if(rs!=null)rs.close(); if(DBUtil.pstmt!=null)DBUtil.pstmt.close(); if(DBUtil.connection !=null)DBUtil.connection.close(); }catch(SQLException e) { e.printStackTrace(); }finally { } } return infos; } }
package entity; 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 int getId() { return Id; } public void setId(int id) { Id = id; } public String getDate() { return Date; } public void setDate(String date) { Date = date; } public String getProvince() { return Province; } public void setProvince(String province) { Province = province; } public String getCity() { return City; } public void setCity(String city) { City = city; } public String getConfirmed_num() { return Confirmed_num; } public void setConfirmed_num(String confirmed_num) { Confirmed_num = confirmed_num; } public String getYisi_num() { return Yisi_num; } public void setYisi_num(String yisi_num) { Yisi_num = yisi_num; } public String getCured_num() { return Cured_num; } public void setCured_num(String cured_num) { Cured_num = cured_num; } public String getDead_num() { return Dead_num; } public void setDead_num(String dead_num) { Dead_num = dead_num; } public String getCode() { return Code; } public void setCode(String code) { Code = code; } @Override public String toString() { return "Info [Id=" + Id + ", Date=" + Date + ", Province=" + Province + ", City=" + City + ", Confirmed_num="
                + Confirmed_num + ", Yisi_num=" + Yisi_num + ", Cured_num=" + Cured_num + ", Dead_num=" + Dead_num + ", Code=" + Code + "]"; } public Info(int id, String date, String province, String city, String confirmed_num, String yisi_num, String cured_num, String dead_num, String code) { Id = id; Date = date; Province = province; City = city; Confirmed_num = confirmed_num; Yisi_num = yisi_num; Cured_num = cured_num; Dead_num = dead_num; Code = code; } public Info(String date, String province, String city, String confirmed_num, String yisi_num, String cured_num, String dead_num) { Date = date; Province = province; City = city; Confirmed_num = confirmed_num; Yisi_num = yisi_num; Cured_num = cured_num; Dead_num = dead_num; } public Info() { } }
package servlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.dao; import entity.Info; @SuppressWarnings("serial") public class QueryServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /** * 這裏是設置編碼集,以免出現亂碼問題 */ request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); /** * 下面是獲取從query.jsp頁面傳回的值 */ String Date=request.getParameter("Date"); System.out.println(Date); /** * 實現服務的實例化 */ dao dao=new dao(); List<Info> infos=dao.Query(Date); System.out.println(infos); request.setAttribute("infos",infos); request.getRequestDispatcher("show.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub
 doGet(request, response); } }
package utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class DBUtil { //數據庫URL和帳號密碼
            private static final String URL="jdbc:mysql://localhost:3306/payiqing?serverTimezone=UTC&characterEncoding=utf-8"; private static final String UNAME="root"; private static final String UPWD="root"; public static PreparedStatement  pstmt=null; public static ResultSet  rs = null; public static Connection  connection=null; //增刪改
     public static boolean executeUpdate(String sql,Object [] params) { boolean flag = false; try { //a.導入驅動,加載具體的驅動類
         Class.forName("com.mysql.cj.jdbc.Driver"); //b.與數據庫創建鏈接
         connection = DriverManager.getConnection(URL,UNAME,UPWD); pstmt = connection.prepareStatement(sql); for(int i=0;i<params.length;i++) { pstmt.setObject(i+1, params[i]); } int count=pstmt.executeUpdate();//返回值表示,增刪改幾條數據 //處理結果
         if(count>0) { System.out.println("操做成功!!!"); flag=true; } }catch(ClassNotFoundException e) { e.printStackTrace(); }catch(SQLException e) { e.printStackTrace(); }catch(Exception e){ e.printStackTrace(); }finally { try { //先開的後關,後開的先關
             if(pstmt!=null)pstmt.close(); if(connection !=null)connection.close(); }catch(SQLException e) { e.printStackTrace(); }finally { } } return flag; } //
     public static ResultSet executeQuery(String sql,Object [] params) { try { //a.導入驅動,加載具體的驅動類
                 Class.forName("com.mysql.cj.jdbc.Driver"); //b.與數據庫創建鏈接
                 connection = DriverManager.getConnection(URL,UNAME,UPWD); pstmt = connection.prepareStatement(sql); if(params!=null) { for(int i=0;i<params.length;i++) { pstmt.setObject(i+1, params[i]); } } rs = pstmt.executeQuery(); return rs; }catch(ClassNotFoundException e) { e.printStackTrace(); return null; }catch(SQLException e) { e.printStackTrace(); return null; }catch(Exception e){ e.printStackTrace(); return null; } } }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>疫情查詢</title>
</head>
<frameset rows="20%,10%,*">
        <frame src="top.html" >
        <frame src="query.jsp" >
        <frame name="show">
    </frameset>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 <!--         這個用來選擇日期 -->
    <div align="center">
    <form action="QueryServlet" target="show" method="post"> 按日期查詢<input type="datetime" name="Date">
          <input type="submit" value="查詢">
    </form>
    </div>
</body>
</html>
<%@page import="entity.Info"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="Echart/echarts.min.js"></script>
</head>
<body>
<%         request.setCharacterEncoding("utf-8"); List <Info> infos =(List<Info>) request.getAttribute("infos"); int i=0;%>
<div id="main" align="center" style="width: 600px;height:400px;" ></div>
    <script type="text/javascript">
        var myChart = echarts.init(document.getElementById('main')); var option = { dataset: { source: [ [ '省份','確診人數'], <%
                        //獲取request域中的數據
                        if(infos!=null){ for(Info info:infos){i++; %> [<%=Integer.parseInt(info.getConfirmed_num())%>,'<%=info.getProvince()%>'], <%
                        if(i>33)break; } } %> ] }, grid: {containLabel: true}, xAxis: {}, yAxis: {type: 'category'}, series: [ { type: 'bar', encode: { // 將 "amount" 列映射到 X 軸。
                            x: '省份', // 將 "product" 列映射到 Y 軸。
                            y: '確診人數' } }] }; // 使用剛指定的配置項和數據顯示圖表。
 myChart.setOption(option); </script>
    <table border="1px" align="center">
         <tr>
         <th>省份</th>
         <th>城市</th>
         <th>確診人數</th>
         <th>疑似人數</th>
         <th>死亡人數</th>
         </tr>
         <%

         if(infos!=null){ for(Info info:infos){ %>
               
               <tr>                   
                   <td><%=info.getProvince() %></td>
                   <td><%=info.getCity() %></td>
                   <td><%=info.getConfirmed_num() %></td>
                   <td><%=info.getYisi_num() %></td>
                   <td><%=info.getDead_num() %></td>
               </tr>
               <% } } %>
      </table>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div align="center">
    <font size="7" >查詢疫情情況</font>
   </div>
</body>
</html>

再加上echart資源,教程見https://echarts.apache.org/zh/tutorial.html#5%20%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B%20EChartsjavascript

 

 

相關文章
相關標籤/搜索