我需要Java的代码
时间: 2024-02-27 15:56:41 浏览: 14
好的,以下是使用Java实现港口不同类型货物吞吐趋势和统计港口吞吐量的代码示例:
1. 绘制港口不同类型货物吞吐趋势图
```java
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
public class PortCargoTrendChart extends JFrame {
public PortCargoTrendChart() {
super("港口不同类型货物吞吐趋势");
CategoryDataset dataset = createDataset();
JFreeChart chart = createChart(dataset);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new Dimension(500, 300));
getContentPane().add(chartPanel);
}
private CategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "货物类型A", "2016年");
dataset.addValue(150, "货物类型A", "2017年");
dataset.addValue(200, "货物类型A", "2018年");
dataset.addValue(250, "货物类型A", "2019年");
dataset.addValue(300, "货物类型A", "2020年");
dataset.addValue(120, "货物类型B", "2016年");
dataset.addValue(170, "货物类型B", "2017年");
dataset.addValue(220, "货物类型B", "2018年");
dataset.addValue(270, "货物类型B", "2019年");
dataset.addValue(320, "货物类型B", "2020年");
dataset.addValue(140, "货物类型C", "2016年");
dataset.addValue(190, "货物类型C", "2017年");
dataset.addValue(240, "货物类型C", "2018年");
dataset.addValue(290, "货物类型C", "2019年");
dataset.addValue(340, "货物类型C", "2020年");
return dataset;
}
private JFreeChart createChart(CategoryDataset dataset) {
JFreeChart chart = ChartFactory.createBarChart(
"港口不同类型货物吞吐趋势",
"年份",
"吞吐量(单位:万吨)",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false
);
chart.setBackgroundPaint(Color.white);
CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
BarRenderer renderer = (BarRenderer) plot.getRenderer();
renderer.setDrawBarOutline(false);
renderer.setItemMargin(0.2);
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
domainAxis.setTickLabelFont(new Font("SansSerif", Font.BOLD, 12));
domainAxis.setTickLabelsVisible(true);
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
rangeAxis.setTickLabelsVisible(true);
return chart;
}
public static void main(String[] args) {
PortCargoTrendChart chart = new PortCargoTrendChart();
chart.pack();
chart.setVisible(true);
}
}
```
2. 统计港口吞吐量
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class PortThroughputStatistics {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 连接数据库
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/port_throughput";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
System.out.println("成功连接到数据库!");
// 查询港口吞吐量
stmt = conn.createStatement();
String sql = "SELECT year, SUM(cargo_volume) AS total_volume FROM throughput GROUP BY year";
rs = stmt.executeQuery(sql);
System.out.println("年份\t吞吐量(单位:万吨)");
while (rs.next()) {
int year = rs.getInt("year");
int totalVolume = rs.getInt("total_volume");
System.out.println(year + "\t" + totalVolume);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
以上是使用Java实现港口不同类型货物吞吐趋势和统计港口吞吐量的示例代码,您可以根据自己的需要进行修改和完善。