用java 写一个雨量监测站,要求有1.新增(序号,区域名,检测时间,雨量值,监测站,检测地址)) 2.删除(按序号删除,删除后序号自动更改).3修改4.序号查询 5查询全部 6.退出功能
时间: 2023-09-25 21:11:06 浏览: 34
好的,这是一个简单的控制台程序实现:
```java
import java.util.ArrayList;
import java.util.Scanner;
public class RainfallMonitoringSystem {
private static ArrayList<RainfallData> dataList = new ArrayList<>();
private static int sequenceNumber = 1;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请选择功能:\n1.新增\n2.删除\n3.修改\n4.序号查询\n5.查询全部\n6.退出");
int option = scanner.nextInt();
switch (option) {
case 1:
addData(scanner);
break;
case 2:
deleteData(scanner);
break;
case 3:
updateData(scanner);
break;
case 4:
queryDataById(scanner);
break;
case 5:
queryAllData();
break;
case 6:
System.exit(0);
default:
System.out.println("无效选项,请重新选择。");
}
}
}
private static void addData(Scanner scanner) {
System.out.println("请输入区域名:");
String areaName = scanner.next();
System.out.println("请输入检测时间:");
String detectionTime = scanner.next();
System.out.println("请输入雨量值:");
double rainfallValue = scanner.nextDouble();
System.out.println("请输入监测站:");
String monitoringStation = scanner.next();
System.out.println("请输入检测地址:");
String detectionAddress = scanner.next();
RainfallData data = new RainfallData(sequenceNumber++, areaName, detectionTime, rainfallValue, monitoringStation, detectionAddress);
dataList.add(data);
System.out.println("数据添加成功。\n" + data);
}
private static void deleteData(Scanner scanner) {
System.out.println("请输入要删除的数据的序号:");
int id = scanner.nextInt();
for (int i = 0; i < dataList.size(); i++) {
if (dataList.get(i).getId() == id) {
dataList.remove(i);
for (int j = i; j < dataList.size(); j++) {
dataList.get(j).setId(dataList.get(j).getId() - 1);
}
System.out.println("数据删除成功。");
return;
}
}
System.out.println("未找到对应序号的数据。");
}
private static void updateData(Scanner scanner) {
System.out.println("请输入要修改的数据的序号:");
int id = scanner.nextInt();
for (RainfallData data : dataList) {
if (data.getId() == id) {
System.out.println("请输入修改后的区域名(原值为 " + data.getAreaName() + "):");
String areaName = scanner.next();
System.out.println("请输入修改后的检测时间(原值为 " + data.getDetectionTime() + "):");
String detectionTime = scanner.next();
System.out.println("请输入修改后的雨量值(原值为 " + data.getRainfallValue() + "):");
double rainfallValue = scanner.nextDouble();
System.out.println("请输入修改后的监测站(原值为 " + data.getMonitoringStation() + "):");
String monitoringStation = scanner.next();
System.out.println("请输入修改后的检测地址(原值为 " + data.getDetectionAddress() + "):");
String detectionAddress = scanner.next();
data.setAreaName(areaName);
data.setDetectionTime(detectionTime);
data.setRainfallValue(rainfallValue);
data.setMonitoringStation(monitoringStation);
data.setDetectionAddress(detectionAddress);
System.out.println("数据修改成功。\n" + data);
return;
}
}
System.out.println("未找到对应序号的数据。");
}
private static void queryDataById(Scanner scanner) {
System.out.println("请输入要查询的数据的序号:");
int id = scanner.nextInt();
for (RainfallData data : dataList) {
if (data.getId() == id) {
System.out.println(data);
return;
}
}
System.out.println("未找到对应序号的数据。");
}
private static void queryAllData() {
System.out.println("序号\t区域名\t检测时间\t\t雨量值\t监测站\t检测地址");
for (RainfallData data : dataList) {
System.out.println(data);
}
}
}
class RainfallData {
private int id;
private String areaName;
private String detectionTime;
private double rainfallValue;
private String monitoringStation;
private String detectionAddress;
public RainfallData(int id, String areaName, String detectionTime, double rainfallValue, String monitoringStation, String detectionAddress) {
this.id = id;
this.areaName = areaName;
this.detectionTime = detectionTime;
this.rainfallValue = rainfallValue;
this.monitoringStation = monitoringStation;
this.detectionAddress = detectionAddress;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAreaName() {
return areaName;
}
public void setAreaName(String areaName) {
this.areaName = areaName;
}
public String getDetectionTime() {
return detectionTime;
}
public void setDetectionTime(String detectionTime) {
this.detectionTime = detectionTime;
}
public double getRainfallValue() {
return rainfallValue;
}
public void setRainfallValue(double rainfallValue) {
this.rainfallValue = rainfallValue;
}
public String getMonitoringStation() {
return monitoringStation;
}
public void setMonitoringStation(String monitoringStation) {
this.monitoringStation = monitoringStation;
}
public String getDetectionAddress() {
return detectionAddress;
}
public void setDetectionAddress(String detectionAddress) {
this.detectionAddress = detectionAddress;
}
@Override
public String toString() {
return id + "\t" + areaName + "\t" + detectionTime + "\t" + rainfallValue + "\t" + monitoringStation + "\t" + detectionAddress;
}
}
```
这个程序中,我们使用了一个 `RainfallData` 类来表示雨量数据,其中包含了序号、区域名、检测时间、雨量值、监测站和检测地址六个属性,以及对应的 getter 和 setter 方法。我们使用一个静态的 `ArrayList` 来存储所有的数据,并且使用一个静态的变量 `sequenceNumber` 来表示下一个数据的序号。
在 `main` 方法中,我们使用一个无限循环来接收用户的操作,根据用户的选择调用对应的方法。其中,`addData` 方法接收用户输入并新增一条数据,`deleteData` 方法从列表中删除一条数据,`updateData` 方法更新一条数据,`queryDataById` 方法根据序号查询一条数据,`queryAllData` 方法查询所有数据,`main` 方法在用户选择退出时结束程序。
这是一个简单的实现,可以根据需求进行修改和扩展。