控制台工资管理系统

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;// 员工类
class Employee {private String id;private String name;private String department;private double salary;public Employee(String id, String name, String department, double salary) {this.id = id;this.name = name;this.department = department;this.salary = salary;}public String getId() {return id;}public String getName() {return name;}public String getDepartment() {return department;}public double getSalary() {return salary;}public void setName(String name) {this.name = name;}public void setDepartment(String department) {this.department = department;}public void setSalary(double salary) {this.salary = salary;}@Overridepublic String toString() {return "👤 员工信息 {" +"工号='" + id + '\'' +", 姓名='" + name + '\'' +", 部门='" + department + '\'' +", 工资=¥" + salary +'}';}
}// 工资管理系统类
public class SalaryManagementSystem {private static List<Employee> employees = new ArrayList<>();private static Scanner scanner = new Scanner(System.in);public static void main(String[] args) {login(); // 登录boolean exit = false;while (!exit) {displayMenu();int choice = scanner.nextInt();scanner.nextLine(); // Consume newline left-overswitch (choice) {case 1:addEmployee();break;case 2:deleteEmployee();break;case 3:updateEmployee();break;case 4:queryEmployee();break;case 5:showStatistics();break;case 6:exit = true;break;case 7:sortEmployeesBySalary();break;// 显示所有员工信息case 8:displayAllEmployees();break;default:System.out.println("❌ 请输入有效的选项!");break;}}System.out.println("👋 感谢使用工资管理系统!");}private static void sortEmployeesBySalary() {if (employees.isEmpty()) {System.out.println("⚠️ 当前没有员工信息!");return;}employees.sort(Comparator.comparingDouble(Employee::getSalary));System.out.println("✨ 员工信息按工资升序排序:");for (Employee emp : employees) {System.out.println(emp);}}// 显示所有员工信息private static void displayAllEmployees() {if (employees.isEmpty()) {System.out.println("⚠️ 当前没有员工信息!");return;}System.out.println("✨ 所有员工信息:");for (Employee emp : employees) {System.out.println(emp);}}// 登录功能,这里简单模拟,可以根据实际情况扩展private static void login() {System.out.println("=== 欢迎使用工资管理系统 ===");while (true) {System.out.print("🔑 请输入用户名:");String username = scanner.nextLine();System.out.print("🔑 请输入密码:");String password = scanner.nextLine();// 简单模拟用户名和密码if (username.equals("admin") && password.equals("admin")) {System.out.println("✅ 登录成功!");break;} else {System.out.println("❌ 用户名或密码错误,请重试!");}}}// 显示菜单private static void displayMenu() {System.out.println("\n请选择操作:");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.print("请输入数字选择操作:");}// 添加员工信息private static void addEmployee() {System.out.print("请输入员工工号:");String id = scanner.nextLine();System.out.print("请输入员工姓名:");String name = scanner.nextLine();System.out.print("请输入员工部门:");String department = scanner.nextLine();System.out.print("请输入员工工资:");double salary = scanner.nextDouble();scanner.nextLine(); // Consume newline left-overEmployee newEmployee = new Employee(id, name, department, salary);employees.add(newEmployee);System.out.println("✅ 员工信息添加成功!");}// 删除员工信息private static void deleteEmployee() {System.out.print("请输入要删除的员工工号:");String id = scanner.nextLine();boolean found = false;for (Employee emp : employees) {if (emp.getId().equals(id)) {employees.remove(emp);System.out.println("✅ 员工信息删除成功!");found = true;break;}}if (!found) {System.out.println("❌ 未找到该员工!");}}// 修改员工信息private static void updateEmployee() {System.out.print("请输入要修改的员工工号:");String id = scanner.nextLine();boolean found = false;for (Employee emp : employees) {if (emp.getId().equals(id)) {System.out.print("请输入新的员工姓名:");String newName = scanner.nextLine();System.out.print("请输入新的员工部门:");String newDept = scanner.nextLine();System.out.print("请输入新的员工工资:");double newSalary = scanner.nextDouble();scanner.nextLine(); // Consume newline left-overemp.setName(newName);emp.setDepartment(newDept);emp.setSalary(newSalary);System.out.println("✅ 员工信息修改成功!");found = true;break;}}if (!found) {System.out.println("❌ 未找到该员工!");}}// 查询员工信息private static void queryEmployee() {System.out.print("请输入要查询的员工工号:");String id = scanner.nextLine();boolean found = false;for (Employee emp : employees) {if (emp.getId().equals(id)) {System.out.println(emp);found = true;break;}}if (!found) {System.out.println("❌ 未找到该员工!");}}// 查看统计信息private static void showStatistics() {if (employees.isEmpty()) {System.out.println("⚠️ 当前没有员工信息!");return;}double totalSalary = 0;double maxSalary = Double.MIN_VALUE;double minSalary = Double.MAX_VALUE;for (Employee emp : employees) {double salary = emp.getSalary();totalSalary += salary;if (salary > maxSalary) {maxSalary = salary;}if (salary < minSalary) {minSalary = salary;}}double averageSalary = totalSalary / employees.size();System.out.println("📊 统计信息:");System.out.println("总员工人数:" + employees.size());System.out.println("平均工资:¥" + averageSalary);System.out.println("最高工资:¥" + maxSalary);System.out.println("最低工资:¥" + minSalary);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/30863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab数学建模实战应用:案例4 - 图像处理

目录 前言 一、图像处理基础 二、Matlab图像处理工具箱 三、案例&#xff1a;图像锐化、去噪和分割 步骤 1&#xff1a;读取和显示图像 步骤 2&#xff1a;图像锐化 步骤 3&#xff1a;图像去噪 步骤 4&#xff1a;图像分割 完整代码示例 四、实际应用 实例总结 总…

如何选择理想CDN服务商来提升网站性能

在数字时代&#xff0c;网络速度已成为衡量网站成功的关键指标之一。快速加载的网站不仅提升用户体验&#xff0c;还对网站的搜索引擎排名产生显著影响。用户期望网站能够迅速响应其请求&#xff0c;而任何延迟都可能导致用户不满和流失。研究表明&#xff0c;网站加载时间的每…

Python3 使用 clickhouse-connect 操作 clickhouse

版本&#xff1a; Python 3.7 x86 clickhouse 24.6.1.3573 clickhouse-connect 0.6.22 代码一&#xff1a; # pip install clickhouse-connectimport clickhouse_connect# 准备参数 host "192.168.1.112" port 8123 username "default" passw…

openh264 帧级码率控制原理:RcCalculateIdrQp 函数

RcCalculateIdrQp函数 功能 在码控中&#xff0c;当eSliceType为I_SLICE时 计算 IDR 帧的帧级量化参数QP 值。 原理过程 初始化变量&#xff1a; dBpp&#xff1a;初始化为0&#xff0c;用来存储比特率每像素&#xff08;bits per pixel&#xff09;的值。i&#xff1a;一个…

代码还原动态调试之 pstree 0x68(%rbx,%rdx,8)

结构体里的数组访问 &#xff0c;其中rbx是结构体的基址&#xff0c;rdx为数组下标&#xff0c;8为一个数组位占8个字节&#xff0c;0x68为结构体中数组的基址&#xff1b; 0 8 (gdb) x/25xg $rbx-0xc0 0x5555555691a0: 0x0000000000000000 0x000000000…

人工智能驱动材料科学前沿:微软与PNNL联合推进电池材料创新

新型电池技术的研发对实现绿色能源目标具有决定性意义 微软公司与美国太平洋西北国家实验室&#xff08;PNNL&#xff09;近期开展了一项开创性的合作&#xff0c;利用尖端人工智能技术&#xff0c;在极短时间内完成对海量潜在电池材料的系统筛选。 微软和PNNL的研究团队采用了…

解决数据孤岛/计算消耗/误差累积问题,上海人工智能实验室苏锐:FengWu-GHR实现AI气象预测多重突破

「AI 方法出现之前&#xff0c;每 10 年才可以提高 1 天的气象预报技巧&#xff0c;而引入 AI 后&#xff0c;几个月就能提高预报技巧。」 在 2024 北京智源大会「AI for Science」论坛上&#xff0c;上海人工智能实验室青年研究员苏锐回顾了 AI 气象预报的历史发展&#xff0…

深入了解 AndroidX ConstraintLayout 中的 Barrier

androidx.constraintlayout.widget.Barrier&#xff08;简称Barrier&#xff09;是 ConstraintLayout 2.0 中引入的一个新特性&#xff0c;它可以极大地简化复杂布局的实现。本文将详细介绍Barrier 的概念、使用方法以及在实际开发中的应用场景。 什么是 Barrier&#xff1f; …

将一个整型数字翻转

1 题目 输入一个整数n&#xff0c;并将其反转后输出。 2 分析 反转一个整数可以想象成逆置字符串&#xff0c;只不过在这里是以数的形式&#xff0c;如1234&#xff0c;反转后4321&#xff0c;这里可以采用除余分解数的方法&#xff0c;也就是当n不为0时&#xff0c;将其取余…

Leaflet 加载非标栅格切片

Leaflet支持的坐标系Leaflet默认加载切片主要支持WGS84(4326)和web_mecator(3857), 具体的切片规则如下: 1)4326 "lods": [ { "level": 0, "resolution": 1.40625,

web前端组织分析:深入剖析其结构、功能与未来趋势

web前端组织分析&#xff1a;深入剖析其结构、功能与未来趋势 在数字化浪潮的推动下&#xff0c;Web前端组织作为连接用户与数字世界的桥梁&#xff0c;其重要性日益凸显。本文将从四个方面、五个方面、六个方面和七个方面对Web前端组织进行深入分析&#xff0c;揭示其结构特点…

超详细的Linux-Conda环境安装教程

Conda是一个强大的包管理器和环境管理器&#xff0c;广泛应用于数据科学和机器学习领域。本文将详细介绍如何在CentOS系统上安装和配置Conda环境&#xff0c;从而助你高效管理Python及其他语言的开发环境。 前言 在开始安装Conda之前&#xff0c;请确保你的CentOS系统已经更新…

产品心理学:曝光效应

曝光效应&#xff08;the exposure effect or the mere exposure effect&#xff09;&#xff1a;又谓多看效应、&#xff08;简单、单纯&#xff09;暴露效应、&#xff08;纯粹&#xff09;接触效应等等。 它是一种心理现象&#xff0c;指的是我们会偏好自己熟悉的事物&#…

Python开源大模型ChatTTS构建聊天机器人与语音识别系统的好选择

随着人工智能技术的不断发展&#xff0c;开源大模型已成为越来越多开发者关注的焦点。其中&#xff0c;ChatTTS是一个备受瞩目的开源项目&#xff0c;它是一款基于Python的自然语言处理库&#xff0c;可用于构建聊天机器人和语音识别系统。  **项目介绍**  ChatTTS是一个开…

基于PCL实现多边形框选点云并进行裁剪(附C++源码)

文章目录 一.算法效果二.算法原理PNPoly算法直线相交性判断三.代码实现一.算法效果 通过在PCL可视化界面上绘制2D封闭多边形来提取位于该封闭多边形内部或者外部的 的点,算法效果如下: 图1多边形裁剪点云效果图 二.算法原理 PNPoly算法 2D多边形框选裁剪点云,实际上可以简…

java LambdaQueryWapper日期查询

Java LambdaQueryWrapper日期查询 Java LambdaQueryWrapper是MyBatis-Plus提供的一个强大的查询条件构造器。它可以方便地进行复杂的查询操作。在实际开发中&#xff0c;经常需要根据日期进行查询&#xff0c;并且还需要支持各种日期格式的输入。本文将介绍如何使用LambdaQuer…

AI交互数字人如何赋能数智教育?

随着AI交互数字人技术的飞速发展&#xff0c;教育领域正经历着前所未有的变革。AI交互数字人为教育领域注入了全新活力&#xff0c;重塑着教学模式&#xff0c;为学生带来沉浸式学习体验。 AI交互数字人在教育领域中&#xff0c;可以应用在&#xff1a; 1、个性化学习教学指导…

RPA案例学习

京东采集数据 一、搜索商品 流程块 相对应源代码 二、抓取数据 流程块 相对应源代码

React-Redux学习笔记(自用)

1. 环境搭建 插件安装&#xff1a;Redux Toolkit和react-redux npm i reduxjs/toolkit react-redux2、 store目录结构设计 集中状态管理的部分会单独创建一个store目录&#xff08;在src下&#xff09;应用通常会有很多个子模块&#xff0c;所以还会有个modules目录&#x…

医学记录 --- 口腔异味

逻辑图地址 症状 1、反复口臭、腹胀、放屁多还臭 2、牙结石 3、龋病 4、牙周炎 病因 1、口腔卫生不良。如果你不刷牙、不使用牙线或不定期洗牙&#xff0c;口腔中的细菌会繁殖并产生恶臭。 2、吸烟、饮酒、吃辛辣食物、胃肠道问题、口腔干燥等 3、吃糖后没有及时刷牙&#…