package Database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class DataDAO {
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/t";
private static final String JDBC_USER = "root";
private static final String JDBC_PASSWORD = "123456";
public List<DataPoint> getData() {
List<DataPoint> dataPoints = new ArrayList<>();
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection connection = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
String query = "SELECT id, total FROM result3";
PreparedStatement preparedStatement = connection.prepareStatement(query);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
String date = resultSet.getString("id");
String value = resultSet.getString("total");
DataPoint dataPoint = new DataPoint(date, value);
dataPoints.add(dataPoint);
}
resultSet.close();
preparedStatement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
return dataPoints;
}
}
package Database;
public class DataPoint {
private String ip;
private String total;
public DataPoint(String date, String value) {
this.ip = date;
this.total = value;
}
public String getDate() {
return ip;
}
public String getValue() {
return total;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="Database.DataPoint" %>
<%@ page import="Database.DataDAO" %>
<%@ page import="java.util.List" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>饼状图</title>
<!-- 引入ECharts库 -->
<script src="js/echarts.min.js"></script>
</head>
<body>
最受欢迎的Top10课程
<!-- Create separate containers for pie chart and legend -->
<div style="width: 100%; display: flex; justify-content: space-around;">
<!-- Container for the pie chart -->
<div id="pieChart" style="width: 50%; height: 600px;"></div>
<!-- Container for the legend -->
<div id="legendContainer" style="width: 30%;"></div>
</div>
<%
// 获取数据并转换为JSON格式
DataDAO dataDAO = new DataDAO();
List<DataPoint> dataPoints = dataDAO.getData();
String dataJSON = "[";
for (DataPoint dataPoint : dataPoints) {
// 在这里,将日期作为饼状图的标签,值作为饼状图的数据
dataJSON += "{'name': '" + dataPoint.getDate() + "', 'value': " + dataPoint.getValue() + "},";
}
dataJSON = dataJSON.substring(0, dataJSON.length() - 1) + "]";
%>
<script>
var data = <%= dataJSON %>;
// 使用ECharts绘制饼状图
var myChart = echarts.init(document.getElementById('pieChart'));
var option = {
title: {
text: '饼状图'
},
tooltip: {
trigger: 'item',
formatter: '{a} <br/>{b}: {c} ({d}%)'
},
series: [
{
name: '数据',
type: 'pie',
radius: '55%',
center: ['50%', '50%'],
data: data
}
]
};
myChart.setOption(option);
// Create a legend
var legendContainer = document.getElementById('legendContainer');
var legendHtml = '<div style="padding: 10px;"><h4>Legend</h4><ul>';
data.forEach(function(item) {
legendHtml += '<li>' + item.name + '</li>';
});
legendHtml += '</ul></div>';
legendContainer.innerHTML = legendHtml;
</script>
</body>
</html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统