用java写一个有关职工工作的添加,查询,显示,编辑,删除,统计,保存,读取功能的程序

时间: 2024-04-30 14:25:01 浏览: 10
以下是一个简单的职工管理系统的Java程序,包括添加、查询、显示、编辑、删除、统计、保存和读取职工信息的功能: ```java import java.util.ArrayList; import java.util.Scanner; import java.io.*; public class EmployeeManagementSystem { private static ArrayList<Employee> employees = new ArrayList<Employee>(); public static void main(String[] args) { Scanner input = new Scanner(System.in); boolean exit = false; while (!exit) { System.out.println("1. 添加职工信息"); System.out.println("2. 查询职工信息"); System.out.println("3. 显示所有职工信息"); System.out.println("4. 编辑职工信息"); System.out.println("5. 删除职工信息"); System.out.println("6. 统计职工信息"); System.out.println("7. 保存职工信息到文件"); System.out.println("8. 从文件中读取职工信息"); System.out.println("0. 退出"); System.out.print("请选择操作:"); int choice = input.nextInt(); switch (choice) { case 1: addEmployee(); break; case 2: searchEmployee(); break; case 3: displayEmployees(); break; case 4: editEmployee(); break; case 5: deleteEmployee(); break; case 6: statistics(); break; case 7: saveToFile(); break; case 8: readFromFile(); break; case 0: exit = true; break; default: System.out.println("无效的选择,请重新输入!"); } } } private static void addEmployee() { Scanner input = new Scanner(System.in); System.out.print("请输入职工姓名:"); String name = input.nextLine(); System.out.print("请输入职工工号:"); String id = input.nextLine(); System.out.print("请输入职工工资:"); double salary = input.nextDouble(); Employee employee = new Employee(name, id, salary); employees.add(employee); System.out.println("职工信息添加成功!"); } private static void searchEmployee() { Scanner input = new Scanner(System.in); System.out.print("请输入要查询的职工工号:"); String id = input.nextLine(); for (Employee employee : employees) { if (employee.getId().equals(id)) { System.out.println(employee); return; } } System.out.println("未找到该职工的信息!"); } private static void displayEmployees() { for (Employee employee : employees) { System.out.println(employee); } } private static void editEmployee() { Scanner input = new Scanner(System.in); System.out.print("请输入要编辑的职工工号:"); String id = input.nextLine(); for (Employee employee : employees) { if (employee.getId().equals(id)) { System.out.print("请输入职工姓名(原姓名:" + employee.getName() + "):"); String name = input.nextLine(); System.out.print("请输入职工工资(原工资:" + employee.getSalary() + "):"); double salary = input.nextDouble(); employee.setName(name); employee.setSalary(salary); System.out.println("职工信息编辑成功!"); return; } } System.out.println("未找到该职工的信息!"); } private static void deleteEmployee() { Scanner input = new Scanner(System.in); System.out.print("请输入要删除的职工工号:"); String id = input.nextLine(); for (int i = 0; i < employees.size(); i++) { if (employees.get(i).getId().equals(id)) { employees.remove(i); System.out.println("职工信息删除成功!"); return; } } System.out.println("未找到该职工的信息!"); } private static void statistics() { double totalSalary = 0; double maxSalary = Double.MIN_VALUE; double minSalary = Double.MAX_VALUE; Employee maxEmployee = null; Employee minEmployee = null; for (Employee employee : employees) { totalSalary += employee.getSalary(); if (employee.getSalary() > maxSalary) { maxSalary = employee.getSalary(); maxEmployee = employee; } if (employee.getSalary() < minSalary) { minSalary = employee.getSalary(); minEmployee = employee; } } System.out.println("职工总数:" + employees.size()); System.out.println("职工平均工资:" + (totalSalary / employees.size())); System.out.println("最高工资的职工:" + maxEmployee); System.out.println("最低工资的职工:" + minEmployee); } private static void saveToFile() { try { ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("employees.dat")); out.writeObject(employees); out.close(); System.out.println("职工信息保存成功!"); } catch (IOException e) { System.out.println("保存职工信息失败:" + e); } } private static void readFromFile() { try { ObjectInputStream in = new ObjectInputStream(new FileInputStream("employees.dat")); employees = (ArrayList<Employee>) in.readObject(); in.close(); System.out.println("职工信息读取成功!"); } catch (IOException e) { System.out.println("读取职工信息失败:" + e); } catch (ClassNotFoundException e) { System.out.println("读取职工信息失败:" + e); } } } class Employee implements Serializable { private String name; private String id; private double salary; public Employee(String name, String id, double salary) { this.name = name; this.id = id; this.salary = salary; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } @Override public String toString() { return "姓名:" + name + ",工号:" + id + ",工资:" + salary; } } ``` 在这个程序中,`Employee` 类表示一个职工,包含姓名、工号和工资三个属性。`EmployeeManagementSystem` 类是程序的主体,包含了各种操作职工信息的方法,例如添加、查询、显示、编辑、删除和统计职工信息。职工信息保存在一个 `ArrayList` 中,可以通过保存到文件和从文件读取的方式来实现职工信息的持久化。

相关推荐

最新推荐

recommend-type

Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法

主要介绍了Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法,涉及java文件I/O操作及字符串遍历、运算实现统计功能相关技巧,需要的朋友可以参考下
recommend-type

Java从数据库中读取Blob对象图片并显示的方法

主要介绍了Java从数据库中读取Blob对象图片并显示的方法,实例分析了Java读取数据库中Blob对象图片的技巧与操作方法,需要的朋友可以参考下
recommend-type

Java实现简单棋盘存档和读取功能

主要为大家详细介绍了Java实现简单棋盘存档和读取功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Java将对象保存到文件中/从文件中读取对象的方法

下面小编就为大家带来一篇Java将对象保存到文件中/从文件中读取对象的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

Java8中使用一行代码读取文件

主要介绍了Java8中使用一行代码读取文件,要注意,本文介绍的方法不适合读取很大的文件,因为可能存在内存空间不足的问题,需要的朋友可以参考下
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

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

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