控制台工资管理系统

bash 复制代码
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;
    }

    @Override
    public 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-over

            switch (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-over

        Employee 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-over

                emp.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);
    }
}
相关推荐
爱码小白8 小时前
Python 异常处理 完整学习笔记
开发语言·python
c++之路8 小时前
C++20概述
java·开发语言·c++20
Championship.23.248 小时前
Linux Top 命令族深度解析与实战指南
java·linux·服务器·top·linux调试
芝士就是力量啊 ೄ೨9 小时前
Python如何编写一个简单的类
开发语言·python
橘子海全栈攻城狮9 小时前
【最新源码】养老院系统管理A013
java·spring boot·后端·web安全·微信小程序
逻辑驱动的ken9 小时前
Java高频面试考点18
java·开发语言·数据库·算法·面试·职场和发展·哈希算法
HLJ洛神千羽9 小时前
电脑右下角显示【周几或星期几】和【上下午】方法
windows
MoonBit月兔9 小时前
「Why MoonBit 」第一期——Singularity Note AI 学习助手
开发语言·人工智能·moonbit
ITHAOGE159 小时前
下载 | Windows Server 2025官方原版ISO映像!(4月更新、标准版、数据中心版、26100.32690)
服务器·windows·科技·微软·电脑
木木_王9 小时前
嵌入式Linux学习 | 数据结构 (Day05) 栈与队列详解(原理 + C 语言实现 + 实战实验 + 易错点剖析)
linux·c语言·开发语言·数据结构·笔记·学习