用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` 方法在用户选择退出时结束程序。 这是一个简单的实现,可以根据需求进行修改和扩展。

相关推荐

最新推荐

recommend-type

基于北斗的尾矿库监测系统

基于北斗的尾矿库安全监测预警系统能够在线实时监测坝体位移、渗流、库水位、干滩、雨量和库区,是利用我国北斗、现代电子、信息、通信及计算机技术,实现对尾矿库监测指标数据实时、自动、连续采集、传输、管理及...
recommend-type

使用sufer软件绘制雨量等值线图的文献

这事一篇使用sufer软件绘制雨量等值线图的文献,将有助于vb和surfer进行二次开发。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SPDK_NVMF_DISCOVERY_NQN是什么 有什么作用

SPDK_NVMF_DISCOVERY_NQN 是 SPDK (Storage Performance Development Kit) 中用于查询 NVMf (Non-Volatile Memory express over Fabrics) 存储设备名称的协议。NVMf 是一种基于网络的存储协议,可用于连接远程非易失性内存存储器。 SPDK_NVMF_DISCOVERY_NQN 的作用是让存储应用程序能够通过 SPDK 查询 NVMf 存储设备的名称,以便能够访问这些存储设备。通过查询 NVMf 存储设备名称,存储应用程序可以获取必要的信息,例如存储设备的IP地址、端口号、名称等,以便能
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

实现实时监控告警系统:Kafka与Grafana整合

![实现实时监控告警系统:Kafka与Grafana整合](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy9BVldpY3ladXVDbEZpY1pLWmw2bUVaWXFUcEdLT1VDdkxRSmQxZXB5R1lxaWNlUjA2c0hFek5Qc3FyRktudFF1VDMxQVl3QTRXV2lhSWFRMEFRc0I1cW1ZOGcvNjQw?x-oss-process=image/format,png) # 1.1 Kafka集群架构 Kafka集群由多个称为代理的服务器组成,这
recommend-type

Windows 运行Python脚本

要在 Windows 上运行 Python 脚本,你需要先安装 Python。可以从官网下载 Python 安装包并按照提示进行安装。安装完成后,就可以在命令行中输入 `python` 命令,进入 Python 解释器环境。 接着,你可以编写 Python 脚本,保存为 `.py` 后缀的文件。在命令行中进入脚本所在的目录,输入 `python script.py` 命令来运行脚本。其中 `script.py` 是你的脚本文件名。 如果你想在 Windows 上运行一个 Python 程序,但不想打开命令行窗口,可以将脚本文件拖动到 Python 可执行文件 `python.exe` 上,