控制台工资管理系统

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);
    }
}
相关推荐
一个闪现必杀技1 分钟前
Python入门--函数
开发语言·python·青少年编程·pycharm
Fan_web5 分钟前
jQuery——事件委托
开发语言·前端·javascript·css·jquery
龙图:会赢的8 分钟前
[C语言]--编译和链接
c语言·开发语言
IT学长编程1 小时前
计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·玩具租赁系统
莹雨潇潇1 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
杨哥带你写代码1 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
XKSYA(小巢校长)2 小时前
NatGo我的世界联机篇
开发语言·php
Cons.W2 小时前
Codeforces Round 975 (Div. 1) C. Tree Pruning
c语言·开发语言·剪枝
憧憬成为原神糕手2 小时前
c++_ 多态
开发语言·c++
VBA63372 小时前
VBA信息获取与处理第三个专题第三节:工作薄在空闲后自动关闭
开发语言