Java面向对象练习-员工管理系统(ArrayList+IO写入文件)

需求详见:需求内容
本次将存储方式变下,通过List保存员工信息,并最终写入文件。只修改Test.java。

代码新增四个文件操作方法:
createFile:创建文件
saveFile:保存单个员工信息
saveFileListAndClearHistory:保存多个员工信息覆盖原有文件
clearFile:清空文件

Test.java代码如下:

package jingshenxiaohuo.com.test;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @program: testApplication
 * @description:
 **/
public class Test {
    private static File file = new File("D:/Employ.txt");
    private static Scanner sc = new Scanner(System.in);
    private static ArrayList em = new ArrayList();

    //静态代码块,类初始化时执行
    static {
        //先创建文件
        createFile();
    }

    //操作入口
    public static void opt() {
        System.out.println("----     工资管理系统                  ----");
        System.out.println("-------------------------------");
        System.out.println("---        1     增加                        ---");
        System.out.println("---        2     删除                        ---");
        System.out.println("---        3     修改                        ---");
        System.out.println("---        4     查询                        ---");
        System.out.println("---        0     退出                        ---");
        System.out.println("-------------------------------");
        System.out.println("请输入你要选择的操作:");
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        switch (s) {
            case "1":
                addEmployee();
                break;
            case "2":
                delEmployee();
                break;
            case "3":
                updateEmployee();
                break;
            case "4":
                queryEmployee();
                break;
            case "0":
                System.out.println("谢谢使用");
                break;
            default:
                System.out.println("指令错误请重新输入!");
                opt();
                break;
        }

    }

    //新增员工
    public static void addEmployee() {
        System.out.println("------增加员工------");
        System.out.println("请输入相关信息:");
        System.out.print("ID:");
        String id = sc.next();
        System.out.print("姓名:");
        String name = sc.next();
        System.out.print("职务:");
        String position = sc.next();
        System.out.print("请假天数:");
        int holiday = sc.nextInt();
        System.out.print("基本工资:");
        double salary = sc.nextInt();
        Employee a = null;
        switch (position) {
            case "普通员工":
                a = new CommonEmployee(id,name,position,holiday,salary);
                break;
            case "经理":
                a = new Manager(id,name,position,holiday,salary);
                break;
            case "董事长":
                a = new Director(id,name,position,holiday,salary);
                break;
            default:
                System.out.println("不存在此职务,请重新输入!");
                addEmployee();
                break;
        }
        if (a != null) {
            a.sumSalary();
            em.add(a);
            saveFile(a);
            System.out.println("添加成功!");
        }
        opt();
    }

    //删除员工
    public static void delEmployee() {
        System.out.println("----------删除员工---------");
        System.out.println("请输入员工姓名:");
        String n = sc.next();
        for (int i = 0; i < em.size(); i++) {
            if (em.get(i).name.equals(n)) {
                System.out.println("你要删除的是:");
                em.get(i).display();
                System.out.println("你确定要删除吗?\n [Y]确定,[N]取消");
                String s = sc.next();
                if (s.equals("y")) {
                    em.remove(i);
                    //重新写入List
                    saveFileListAndClearHistory(em);
                    System.out.println("删除成功!");
                    opt();
                } else if (s.equals("n")) {
                    opt();
                } else {
                    System.out.println("输入指令不正确,请重新输入!");
                    delEmployee();
                }
            } else {
                if (i != em.size() - 1) {
                    continue;
                } else {
                    System.out.println("你输入的账号不存在!请重新输入!");
                    delEmployee();
                }

            }
        }
    }

    //修改员工
    public static void updateEmployee(){
        System.out.println("--------------修改员工资料-------------");
        System.out.println("请输入你要修改的姓名:");
        String s = sc.next();
        out: for (int i = 0; i < em.size(); i++) {
            if (em.get(i).name.equals(s)) {
                System.out.println("你要修改的是:");
                em.get(i).display();
                System.out.println("请重新输入相关信息:");
                System.out.print("ID:");
                String id = sc.next();
                System.out.print("姓名:");
                String name = sc.next();
                System.out.print("职务:");
                String position = sc.next();
                System.out.print("请假天数:");
                int holiday = sc.nextInt();
                System.out.print("基本工资:");
                double salary = sc.nextDouble();
                if (em.get(i).position.equals(position)) {
                    em.get(i).ID = id;
                    em.get(i).name = name;
                    em.get(i).position = position;
                    em.get(i).holiday = holiday;
                    em.get(i).salary = salary;
                    em.get(i).sumSalary();
                    System.out.println("修改成功!");
                    em.get(i).display();
                }else{
                    Employee a = null;
                    switch (position) {
                        case "普通员工":
                            a = new CommonEmployee(id,name,position,holiday,salary);
                            break;
                        case "经理":
                            a = new Manager(id,name,position,holiday,salary);
                            break;
                        case "董事长":
                            a = new Director(id,name,position,holiday,salary);
                            break;
                        default:
                            System.out.println("不存在此职务,请重新输入!");
                            addEmployee();
                            break;
                    }
                    if (a != null) {
                        a.sumSalary();
                        em.set(i, a);
                        saveFileListAndClearHistory(em);
                    }

                }
                opt();
            } else {
                if (i != em.size() - 1) {
                    continue out;
                } else {
                    System.out.println("你输入的员工不存在!请重新输入!");
                    updateEmployee();
                }
            }
        }
    }

    //查询员工
    public static void queryEmployee() {
        System.out.println("--------------所有员工信息---------------");
        try {
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);
            String s = "";
            while ((s = br.readLine()) != null) {
                System.out.println(s);
            }
            br.close();
        } catch (Exception e) {
            System.out.println("读取失败!异常信息:"+e.getMessage());
        }
        opt();
    }


    //创建文件
    private static void createFile() {
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                System.out.println("创建失败!异常信息:"+e.getMessage());
            }
        } else {
            file.delete();
        }
    }
    //增量保存文件
    private static void saveFile(Employee employee){
        try {
            FileWriter fw = new FileWriter(file, true);
            fw.append(employee.ID + "\t");
            fw.append(employee.name + "\t");
            fw.append(employee.position + "\t");
            fw.append(employee.holiday + "\t");
            fw.append(employee.salary + "\t\r\n");
            fw.flush();
            fw.close();
        }catch (Exception e){
            System.out.println("保存失败!异常信息:"+e.getMessage());
        }
    }
    //全量覆盖文件
    private static void saveFileListAndClearHistory(List employeeList){
        try {
            FileWriter fw = new FileWriter(file);
            for (Employee employee : employeeList) {
                fw.append(employee.ID + "\t");
                fw.append(employee.name + "\t");
                fw.append(employee.position + "\t");
                fw.append(employee.holiday + "\t");
                fw.append(employee.salary + "\t\r\n");
            }
            fw.flush();
            fw.close();
        }catch (Exception e){
            System.out.println("保存失败!异常信息:"+e.getMessage());
        }
    }
    //清空文件
    private static void clearFile(){
        try {
            FileWriter fileWriter = new FileWriter(file);
            fileWriter.flush();
            fileWriter.close();
        } catch (Exception e) {
            System.out.println("清空失败!异常信息:"+e.getMessage());
        }
    }

    public static void main(String[] args) {
        Test.opt();
    }
}

你可能感兴趣的:(JAVA初学者)