Java基础项目——人事信息管理系统

一、项目介绍

人事信息管理系统,可以实现对公司员工(包括姓名、年龄、性别、部门、电话号码和工资等属性)信息记录的增加、删除、查找、修改、排序等操作。

二、项目需求分析

2.1功能性需求分析

2.1.1 添加员工记录:

描述: 用户可以添加新的员工记录,包括姓名、年龄、性别、部门、电话号码和工资。

输入: 用户输入员工的姓名、年龄、性别、部门、电话号码和工资。

处理: 系统验证员工各项信息输入格式是否正确。

输出: 在员工信息列表中添加新的员工记录,并显示添加成功的消息。

2.1.2 显示所有员工记录:

描述: 用户可以查看系统中所有员工的记录。

输入: 用户选择查看所有员工记录的选项。

处理: 系统从存储员工信息的数据结构中获取所有员工记录。

输出: 在控制台或用户界面上显示所有员工的姓名、年龄、性别、部门、电话号码和工资。

2.1.3 更改员工记录:

描述: 用户可以更新已有的员工记录,包括修改员工的姓名、年龄、性别、部门、电话号码和工资。

输入: 用户输入要修改的员工姓名以及新的员工信息。

处理: 系统在员工列表中查找匹配的记录,如果找到,则更改相应的属性。

输出: 显示更改成功的消息。

2.1.4 删除员工记录:

描述: 用户可以删除指定姓名的员工记录。

输入: 用户输入要删除的员工姓名。

处理: 系统在员工列表中查找匹配的记录,如果找到,则从列表中删除该记录。

输出: 显示删除成功的消息。

2.1.5 排序员工记录:

描述: 用户可以按照姓名、年龄、性别、部门、电话号码和工资对员工记录进行排序。

输入: 用户选择排序方式。

处理: 系统使用相应的比较器对员工列表进行排序。

输出: 显示排序后的员工记录。

2.1.6 查找员工记录:

描述: 用户可以通过员工一项信息查找员工记录。

输入: 用户输入要查找的员工信息。

处理: 系统在员工列表中查找匹配的记录。

输出: 显示查找到的员工记录,或者提示未找到记录。

2.2非功能性需求分析

2.2.1 用户界面:

描述:用户界面应简洁友好,方便用户操作。

标准:用户能够轻松理解和使用系统的各项功能。

2.2.2 输入验证:

描述:对用户输入进行验证,确保输入的信息符合规定格式和范围。

标准:当用户输入不符合规定格式时,系统能够给出明确的错误提示。

2.2.3 性能:

描述:能够在处理大量员工记录时保持稳定。

标准:系统在常规操作下的响应时间应保持在合理的范围内。

2.2.4 可扩展性:

描述:系统应具备一定的可扩展性,便于日后增加新的功能或调整现有功能。

标准:在不修改原有代码的情况下,能够方便地扩展系统功能。

三、项目规划和设计实施

3.1项目设计规划

Menu 对应 Menu (菜单类)

Operate 对应 Operate (业务处理类)

Person 对应 Person (实体类)

PersonVerify 对应 PersonVerify(用户输入验证类)

OrderByName 对应 OrderByName (姓名排序比较器)

OrderByAge 对应 OrderByAge (年龄排序比较器)

OrderBySex 对应 OrderBySex(性别排序比较器)

OrderByDepartment 对应 OrderByDepartment(部门排序比较器)

OrderByTelephone 对应 OrderByTelephone(电话号码排序比较器)

OrderByMoney 对应 OrderByMoney(工资排序比较器)

main() 程序入口函数

Operate类中方法及成员变量

DepartmentLogic() 用户添加信息业务逻辑控制

searchLogic() 用户查询信息业务逻辑控制

updateLogic() 修改信息业务逻辑控制

removeLogic() 删除信息业务逻辑控制

orderLogic() 排序信息业务逻辑控制

DepartmentOperation () 添加新用户信息

showAll() 查询全部用户信息

searchByName() 按姓名查询用户信息

searchByAge() 按年龄查询用户信息

searchBySex() 按性别查询用户信息

searchByTelephone() 按电话号码查询用户信息

searchByDepartment() 按部门查询用户信息

searchByMoney() 按工资查询用户信息

update() 修改指定记录信息

remove() 删除指定用户信息

removeAll() 删除全部用户信息

orderName() 按用户姓名排序信息

orderAge() 按用户年龄排序信息

orderSex() 按用户性别排序信息

orderDepartment() 按用户部门排序信息

orderTelephone() 按用户电话号码排序信息

orderMoney() 按用户工资排序信息

PersonVerify类中方法(无成员变量)

menuVerify (int min, int max ) 对菜单输入选项的验证

nameVerify ( ) 对用户输入姓名的验证

ageVerify ( ) 对用户输入年龄的验证

sexVerify ( ) 对用户输入性别的验证

telephoneVerify ( ) 对用户输入电话号码的验证

departmentVerify ( ) 对用户输入部门的验证

moneyVerify ( ) 对用户输入工资的验证

Menu类中的方法(无成员变量)

mainMenu() 主菜单

addMenu () 添加用户菜单

searchMenu () 查找用户菜单

updateMenu () 修改用户信息主菜单

update () 修改用户信息子菜单

removeMenu () 删除用户信息菜单

orderMenu () 排序用户信息菜单

Person类中的方法及成员变量

private int id; 用户ID 属性

private String name; 用户姓名属性

private int age; 用户年龄属性

private String sex; 用户性别属性

private String telephone; 用户电话号码属性

private String department; 用户部门属性

private String money; 用户工资属性

Person() 无参数构造方法

Person(String name, int age, String sex, String telephone, String department,String money) 有参数构造方法

getName() 读取用户名

setName(String name) 设置用户名

getAge() 读取用户年龄

setAge(int age) 设置用户年龄

getSex() 读取用户性别

setSex(String sex) 设置用户性别

getTelephone() 读取用户电话号码

setTelephone (String Telephone) 设置用户电话号码

getDepartment() 读取用户部门

setDepartment(String Department) 设置用户部门

getMoney () 读取用户工资

setMoney (String money) 设置用户工资

getID () 读取用户ID号

setID (int ID) 设置用户ID号

toString() 连接字符串方法

3.2实施方案

3.2.1人事信息管理系统主界面

3.2.2删除记录主界面

3.2.3查找记录和排序记录的界面

3.2.4Person类:

用于表示员工的基本信息,包括姓名、年龄、性别、部门、电话号码和工资等属性。

提供了构造函数、Get和Set方法以及toString方法。

PersonVerify类:

包含用于验证员工信息格式的静态方法,如姓名、年龄、性别、部门、电话号码和工资等属性。

比较器类(OrderByName、OrderByAge、OrderBySex等):

实现了Comparator接口,用于在Operate类中进行排序操作。

Operate类:

包含一个ArrayList用于存储员工信息。

提供了添加、显示、更新、删除、排序和查找员工记录的方法。

Menu类:

用于显示系统的主菜单。

App类(主程序类):

包含了main方法,实现了用户与系统的交互。

使用Operate类处理学生信息的各种操作。

引入异常处理,确保用户输入的有效性。

3.3运行结果(截图)

3.3.1添加运行结果

3.3.2查找运行结果

3.3.3修改运行结果

3.3.4删除运行结果

3.4.5退出程序

3.4.6添加主要代码

3.3.7查找主要代码

3.3.8修改主要代码

3.3.9删除主要代码

3.3.10排序主要代码

3.3.11验证主要代码

四、项目总结

人事信息管理系统是一个复杂的项目,需要对Java编程知识、数据库管理、用户界面设计等多方面有深入的理解。以下是对这个项目的总结:

1. 项目概述:这个项目是一个基于Java的人事信息管理系统,用于管理公司或组织的人事信息。这个系统需要实现员工信息的录入、查询、修改和删除等功能,并能够生成报告,以便于管理层进行决策。

2. 技术栈:

这个项目使用了Java语言,以及一些常用的Jar包,如util、io等。

3. 主要功能:

这个系统的主要功能包括:员工信息的录入、查询、修改和删除;员工信息的导出和导入;员工信息的分类和排序;生成报告等。

4. 用户界面设计:

用户界面是用户与系统交互的接口,需要设计得友好、易用。简洁明了的界面更容易得到信息。

6. 安全性考虑:

由于人事信息的重要性,系统的安全性非常重要。这个系统需要考虑用户身份认证等问题。

7. 可维护性和扩展性:

为了使系统能够长期稳定地运行,并能够适应未来的需求变化,这个系统需要具备良好的可维护性和扩展性。这需要采用合理的架构设计、代码规范、文档编写等措施。

总之,人事信息管理系统是一个常用的项目,需要开发人员具备全面的知识和技能。通过这个项目的开发,提高了我的Java编程能力、用户界面设计能力等。同时,提高了我解决问题的能力。

五、项目代码

5.1Person类

class Person {
    Operate O = new Operate();
    private int id;//用户id属性
    private String name;//用户姓名属性
    private int age;//用户年龄属性
    private String sex;//用户性别属性
    private String department;/*department部门*///用户部门属性
    private String telephone;//用户电话号码属性
    private String money;//用户工资属性

    public Person(){
        super();
    }
    public Person(int id, String name, int age, String sex, String department, String telephone, String money) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.department = department;
        this.telephone = telephone;
        this.money = money;
    }

    public int getID() {
        return id;
    }
    public void setID(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getDepartment() {
        return department;
    }
    public void setDepartment(String department) {
        this.department = department;
    }

    public String getTelephone() {
        return telephone;
    }
    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public String getMoney() {
        return money;
    }
    public void setMoney(String money) {
        this.money = money;
    }

    public String toString() {
        return "id=" + id +",name=" + name +", age=" + age +", sex=" + sex +", department=" + department +", telephone=" + telephone +", money=" + money +"}";
    }
}

5.2App类

public class App
{
    public static void main(String[] args){
        Menu m = new Menu();
        m.mainMenu();
    }
}

5.3Menu类

import java.util.*;
import java.io.*;
public class Menu {
    Operate o = new Operate();
    Scanner sc = new Scanner(System.in);

    //主菜单:添加记录,查找记录,修改记录,删除记录,对记录进行排序
    public void mainMenu(){
        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("***          5:排序记录           ***");
        System.out.println("***          6:退出记录           ***");
        System.out.println("*************************************");
        System.out.println("请输入正确的数字(最小是: 1,最大是: 6):");
        int select1 = 0;
        while(true) {
            try {
                select1 = Integer.parseInt(sc.nextLine().trim());
            }catch(Exception e) {
                System.out.println("输入的数据类型错误,请重新输入");
                continue;
            }

            //菜单
            switch(select1) {
                case 1:
                    addMenu();//添加用户菜单
                    break;
                case 2:
                    searchMenu();//查找用户菜单
                    break;
                case 3:
                    updateMenu();//更改用户菜单
                    break;
                case 4:
                    removeMenu();//删除用户菜单
                    break;
                case 5:
                    orderMenu();//排序用户菜单
                    break;
                case 6:
                    try {
                        End();
                    } catch (IOException e) {
                        throw new RuntimeException(e);
                    }
                    System.exit(0);
                default:
                    System.out.println("输入数字错误,请重新输入");
                    break;
            }
        }
    }

    public void End() throws IOException{// 退出保存文件
        FileOutputStream fos = new FileOutputStream("text.txt", true);
        Iterator<Person> it = Operate.list.iterator();
        while (it.hasNext()) {
            Person p = it.next();
            String str = p.toString() + "\r\n";
            byte buff[] = str.getBytes();
            fos.write(buff);
        }
        fos.flush();
        fos.close();
        System.out.println("退出系统成功");
    }

    //增
    public void addMenu(){
        System.out.println("***************添加记录**************");
        System.out.println("*************************************");
        System.out.println("***          1:添加新记录         ***");
        System.out.println("***          2:查找全记录         ***");
        System.out.println("***          3:返回上一级         ***");
        System.out.println("*************************************");
        System.out.println("请输入正确的数字(最小是: 1,最大是: 3):");

        o.addLogic();
    }

    //查
    public void searchMenu(){
        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("***          5:按号码查找         ***");
        System.out.println("***          6:按工资查找         ***");
        System.out.println("***          7:查看全记录         ***");
        System.out.println("***          8:返回上一级         ***");
        System.out.println("*************************************");
        System.out.println("请输入正确的数字(最小是: 1,最大是: 8):");

        o.searchLogic();
    }

    //改
    public void updateMenu(){
        System.out.println("****************修改记录**************");
        System.out.println("*************************************");
        System.out.println("***          1:查看全记录         ***");
        System.out.println("***          2:修改某记录         ***");
        System.out.println("***          3:返回上一级         ***");
        System.out.println("*************************************");
        System.out.println("请输入正确的数字(最小是: 1,最大是: 3):");

        o.updateLogicLogic();
    }
    public void update(){
        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("***           5:修改号码          ***");
        System.out.println("***           6:修改工资          ***");
        System.out.println("***           7:返回上一级        ***");
        System.out.println("*************************************");
        System.out.println("请输入正确的数字(最小是: 1,最大是: 7):");

        o.updateLogic();
    }

    //删
    public void removeMenu(){
        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("*************************************");
        System.out.println("请输入正确的数字(最小是: 1,最大是: 4):");

        o.removeLogic();
    }

    //排
    public void orderMenu(){
        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("***          5:按号码排序         ***");
        System.out.println("***          6:按工资排序         ***");
        System.out.println("***          7:输出全信息         ***");
        System.out.println("***          8:返回上一级         ***");
        System.out.println("*************************************");
        System.out.println("请输入正确的数字(最小是: 1,最大是: 8):");

        o.orderLogic();
    }
}

5.4Operate类

import java.io.*;
import java.util.*;
public class Operate {
    static Person p = new Person();
    static ArrayList<Person> list = new ArrayList<Person>();
    static Menu m = new Menu();
    Scanner sc = new Scanner(System.in);

    //用户添加信息业务逻辑控制
    public void addLogic(){
        while(true) {
            int select = 0;
            try {
                select = Integer.parseInt(sc.nextLine().trim());
            }catch(Exception e) {
                System.out.println("输入数据类型错误,请重新输入");
                continue;
            }
            switch(select) {
                case 1:
                    addOperation();//添加新记录
                    m.mainMenu();
                case 2:
                    showAll();//查看全记录
                    m.mainMenu();
                case 3:
                    m.mainMenu();//返回上级菜单
                    break;
                default:
                    System.out.println("输入错误,请重新输入");
                    break;
            }
        }
    }

    //用户查询信息业务逻辑控制
    public void searchLogic(){
        while(true) {
            int select = 0;
            try {
                select = Integer.parseInt(sc.nextLine().trim());
            }catch(Exception e) {
                System.out.println("输入数据类型错误,请重新输入");
                continue;
            }
            switch (select) {
                case 1:
                    searchByName();
                    break;
                case 2:
                    searchByAge();
                    break;
                case 3:
                    searchBySex();
                    break;
                case 4:
                    searchByDepartment();
                    break;
                case 5:
                    searchByTelephone();
                    break;
                case 6:
                    searchByMoney();
                    break;
                case 7:
                    showAll();
                    m.searchMenu();
                    break;
                case 8:
                    m.mainMenu();
                    break;
                default:
                    System.out.println("输入错误,请重新输入");
                    break;
            }
        }
    }

    //用户修改信息业务逻辑控制
    public void updateLogicLogic(){
        while(true) {
            int select = 0;
            try {
                select = Integer.parseInt(sc.nextLine().trim());
            }catch(Exception e) {
                System.out.println("输入数据类型错误,请重新输入");
                continue;
            }
            switch(select) {
                case 1:
                    showAll();
                    m.updateMenu();
                    break;
                case 2:
                    m.update();
                    break;
                case 3:
                    m.mainMenu();
                    break;
                default:
                    System.out.println("输入错误,请重新输入");
                    updateLogic();
            }
        }
    }

    //用户删除信息业务逻辑控制
    public void removeLogic(){
        while(true) {
            int select = 0;
            try {
                select = Integer.parseInt(sc.nextLine().trim());
            }catch(Exception e) {
                System.out.println("输入数据类型错误,请重新输入");
                continue;
            }
            switch(select) {
                case 1:
                    showAll();
                    m.removeMenu();
                    break;
                case 2:
                    remove();
                    break;
                case 3:
                    removeAll();
                    break;
                case 4:
                    m.mainMenu();
                    break;
                default:
                    System.out.println("输入错误,请重新输入");
                    break;
            }
        }
    }

    //用户排序信息业务逻辑控制
    public void orderLogic(){
        while(true) {
            int select = 0;
            try {
                select = Integer.parseInt(sc.nextLine().trim());
            }catch(Exception e) {
                System.out.println("输入数据类型错误,请重新输入");
                continue;
            }
            switch(select) {
                case 1:
                    orderName();
                    m.orderMenu();
                    break;
                case 2:
                    orderAge();
                    m.orderMenu();
                    break;
                case 3:
                    orderSex();
                    m.orderMenu();
                    break;
                case 4:
                    orderDepartment();
                    m.orderMenu();
                    break;
                case 5:
                    orderTelephone();
                    m.orderMenu();
                    break;
                case 6:
                    orderMoney();
                    m.orderMenu();
                    break;
                case 7:
                    showAll();
                    m.orderMenu();
                    break;
                case 8:
                    m.mainMenu();
                    break;
                default:
                    System.out.println("输入错误,请重新输入");
                    break;
            }
        }
    }

    //添加新记录
    public void addOperation(){
        // FileInputStream fis= new FileInputStream("text.txt");
        while(true) {
            // FileOutputStream fos= new FileOutputStream("text.txt",true);
            System.out.println("请输入人员信息:");
            System.out.println("输入姓名:1~10位字母");
            String name = sc.nextLine();
            name = PersonVerify.nameVerify(name);
            System.out.println("输入年龄:1~100+");
            int age = Integer.parseInt(sc.nextLine());
            age = PersonVerify.ageVerify(age);
            System.out.println("请输入性别:男m女f");
            String sex = sc.nextLine();
            sex = PersonVerify.sexVerify(sex);
            System.out.println("请输入部门:1-50位字母或数字");
            String department = sc.nextLine();
            department = PersonVerify.departmentVerify(department);
            System.out.println("请输入电话号码:6-11位数字");
            String telephone = sc.nextLine();
            telephone = PersonVerify.telephoneVerify(telephone);
            System.out.println("请输入工资:4-6位数字");
            String money = sc.nextLine();
            money = PersonVerify.moneyVerify(money);

            // 创建Person对象,并设置值
            Person p1 = new Person();
            int id = 1;
            p1.setID(id);
            p1.setName(name);
            p1.setAge(age);
            p1.setSex(sex);
            p1.setDepartment(department);
            p1.setTelephone(telephone);
            p1.setMoney(money);
            // 将p1添加进集合list中
            list.add(p1);
            System.out.println("录入成功");
            System.out.println("是否继续输入?1:是              0:否");

            int message1 = Integer.parseInt(sc.nextLine());
            if (message1 != 1) {
                break;
            }
            id = id + 1;
        }

        m.addMenu();
    }

    //删除指定用户信息
    public void remove(){
        System.out.println("请输入所要删除人员的序号:(1-" + list.size() + ")");
        int ID = Integer.parseInt(sc.nextLine());
        if(ID < 1 || ID > list.size())
            System.out.println("输入序号错误");
        else {
            list.remove(ID - 1);
            System.out.println("删除成功!");
        }
        m.removeMenu();
        int id=1;
        Iterator<Person> it = list.iterator();
        while(it.hasNext()) {
            it.next().setID(id);
            id++;
        }
    }

    //删除全部用户信息
    public void removeAll(){
        list.clear();
        System.out.println("已清空人事管理信息");
        m.removeMenu();
    }

    //用户修改信息子功能
    public void updateLogic() {
        while (true) {
            int select = 0;
            try {
                select = Integer.parseInt(sc.nextLine().trim());
            } catch (Exception e) {
                System.out.println("你输入的数据类型不对,请重新输入");
                continue;
            }
            switch(select) {
                case 1:
                    name();
                    m.update();
                    break;
                case 2:
                    age();
                    m.update();
                    break;
                case 3:
                    sex();
                    m.update();
                    break;
                case 4:
                    department();
                    m.update();
                    break;
                case 5:
                    telephone();
                    m.update();
                    break;
                case 6:
                    money();
                    m.update();
                    break;
                case 7:
                    m.updateMenu();
                    break;
            }
        }
    }

    //修改姓名
    public void name() {
        System.out.println("请输入所要修改人员的序号:(1-"+list.size()+")");
        int ID;
        while(true) {
            try {
                ID = Integer.parseInt(sc.nextLine().trim());
            }catch(Exception e) {
                System.out.println("输入数据类型错误,请重新输入");
                continue;
            }
            if(ID > list.size()||ID<1) {
                System.out.println("序号不存在");
                break;
            }
            else {
                System.out.println("请输入新的姓名:1~10位字母");
                String name = sc.nextLine();
                name = PersonVerify.nameVerify(name);
                list.get(ID - 1).setName(name);
                System.out.println("修改成功!");
                break;
            }
        }
    }

    //修改年齡
    public void age() {
        System.out.println("请输入所要修改人员的序号:(1-" + list.size() + ")");
        int ID;
        boolean flag = false;
        while(true) {
            try {
                ID = Integer.parseInt(sc.nextLine().trim());
            }catch(Exception e) {
                System.out.println("输入数据类型错误,请重新输入");
                continue;
            }
            if(ID < 1 || ID > list.size()) {
                System.out.println("输入序号错误");
                break;
            }
            else {
                Iterator<Person> it = list.iterator();
                while(it.hasNext()) {
                    Person p = it.next();
                    if (p.getID() == ID) {
                        System.out.println("请输入新的年龄:");
                        int age = Integer.parseInt(sc.nextLine());
                        age = PersonVerify.ageVerify(age);
                        p.setAge(age);
                        System.out.println("修改成功!");
                        flag = true;
                        break;
                    }
                }
            }
            if(flag)
                break;
        }
    }

    //修改性別
    public void sex() {
        System.out.println("请输入所要修改人员的序号:(1-" + list.size() + ")");
        int ID;
        boolean flag = false;
        while(true) {
            try {
                ID = Integer.parseInt(sc.nextLine().trim());
            } catch(Exception e) {
                System.out.println("输入数据类型错误,请重新输入");
                continue;
            }
            if (ID < 1 || ID > list.size()){
                System.out.println("输入序号错误");
                break;
            }
            else {
                Iterator<Person> it = list.iterator();
                while(it.hasNext()) {
                    Person p = it.next();
                    if (p.getID() == ID) {
                        System.out.println("请输入新的性别:(男 m 或 女 f )");
                        String sex = sc.nextLine();
                        sex = PersonVerify.sexVerify(sex);
                        p.setSex(sex);
                        System.out.println("修改成功!");
                        flag = true;
                        break;
                    }
                }
            }
            if(flag)
                break;
        }
    }

    //修改部门
    public void department() {
        System.out.println("请输入所要修改人员的序号:(1-" + list.size() + ")");
        int ID;
        boolean flag = false;
        while(true) {
            try {
                ID = Integer.parseInt(sc.nextLine().trim());
            }catch(Exception e) {
                System.out.println("输入数据类型错误,请重新输入");
                continue;
            }
            if(ID < 1 || ID > list.size()) {
                System.out.println("输入序号错误");
                break;
            }
            else {
                Iterator<Person> it = list.iterator();
                while (it.hasNext()) {
                    Person p = it.next();
                    if (p.getID() == ID) {
                        System.out.println("请输入新的部门:1~50位字母或数字");
                        String department = sc.nextLine();
                        department = PersonVerify.departmentVerify(department);
                        p.setDepartment(department);
                        System.out.println("修改成功!");
                        flag = true;
                        break;
                    }
                }
            }
            if(flag)
                break;
        }
    }

    //修改电话号码
    public void telephone() {
        System.out.println("请输入所要修改人员的序号:(1-" + list.size() + ")");
        int ID;
        boolean flag = false;
        while(true) {
            try {
                ID = Integer.parseInt(sc.nextLine().trim());
            }catch(Exception e) {
                System.out.println("输入数据类型错误,请重新输入");
                continue;
            }
            if(ID < 1 || ID > list.size()) {
                System.out.println("输入序号错误");
                break;
            }
            else {
                Iterator<Person> it = list.iterator();
                while (it.hasNext()) {
                    Person p = it.next();
                    if (p.getID() == ID) {
                        System.out.println("请输入新的电话号码:6~11位数字");
                        String telephone = sc.nextLine();
                        telephone = PersonVerify.telephoneVerify(telephone);
                        p.setTelephone(telephone);
                        System.out.println("修改成功!");
                        flag = true;
                        break;
                    }
                }
            }
            if(flag)
                break;
        }
    }

    //修改工资
    public void money() {
        System.out.println("请输入所要修改人员的序号:(1-" + list.size() + ")");
        int ID;
        boolean flag = false;
        while(true) {
            try {
                ID = Integer.parseInt(sc.nextLine().trim());
            }catch(Exception e) {
                System.out.println("输入数据类型错误,请重新输入");
                continue;
            }
            if(ID < 1 || ID > list.size()) {
                System.out.println("输入序号错误");
                break;
            }
            else {
                Iterator<Person> it = list.iterator();
                while (it.hasNext()) {
                    Person p = it.next();
                    if (p.getID() == ID) {
                        System.out.println("请输入新的工资:4-8位数字");
                        String money = sc.nextLine();
                        money = PersonVerify.moneyVerify(money);
                        p.setMoney(money);
                        System.out.println("修改成功!");
                        flag = true;
                        break;
                    }
                }
            }
            if(flag)
                break;
        }
    }

    //按姓名查找
    public void searchByName(){
        System.out.println("请输入要查找的姓名:1-10个字母");
        String name = sc.nextLine();
        name = PersonVerify.nameVerify(name);
        Iterator<Person> it = list.iterator();
        boolean flag = false;
        while(it.hasNext()) {
            Person person = it.next();
            if (person.getName().equals(name)) {
                System.out.println(person);
                flag = true;
            }
        }
        if (!flag) {
            System.out.println("不存在此人");
        }
        m.searchMenu();
    }

    //按年龄查找
    public void searchByAge(){
        System.out.println("请输入要查找的年龄:");
        int age = Integer.parseInt(sc.nextLine());
        age = PersonVerify.ageVerify(age);
        Iterator<Person> it = list.iterator();
        boolean flag = false;
        while (it.hasNext()) {
            Person person = it.next();
            if (person.getAge() == age) {
                System.out.println(person);
                flag = true;
            }
        }
        if (!flag) {
            System.out.println("不存在此人");
        }
        m.searchMenu();
    }

    //按性别查找
    public void searchBySex() {
        System.out.println("请输入要查找的性别:");
        String sex = sc.nextLine();
        sex = PersonVerify.sexVerify(sex);
        Iterator<Person> it = list.iterator();
        boolean flag = false;
        while (it.hasNext()) {
            Person person = it.next();
            if (person.getSex().equals(sex)) {
                System.out.println(person);
                flag = true;
            }
        }
        if (!flag) {
            System.out.println("不存在此人");
        }
        m.searchMenu();
    }

    //按部门查找
    public void searchByDepartment() {
        System.out.println("请输入要查找的地址:");
        String department = sc.nextLine();
        department = PersonVerify.departmentVerify(department);
        Iterator<Person> it = list.iterator();
        boolean flag = false;
        while (it.hasNext()) {
            Person person = it.next();
            if (person.getDepartment().equals(department)) {
                System.out.println(person);
                flag = true;
            }
        }
        if (!flag) {
            System.out.println("不存在此人");
        }
        m.searchMenu();
    }

    // 按电话号码查找
    public void searchByTelephone(){
        System.out.println("请输入要查找的电话号码:");
        String telephone = sc.nextLine();
        telephone = PersonVerify.telephoneVerify(telephone);
        Iterator<Person> it = list.iterator();
        boolean flag = false;
        while (it.hasNext()) {
            Person person = it.next();
            if (person.getTelephone().equals(telephone)) {
                System.out.println(person);
                flag = true;
            }
        }
        if (!flag) {
            System.out.println("不存在此人");
        }
        m.searchMenu();
    }

    //按工资查找
    public void searchByMoney(){
        System.out.println("请输入要查找的工资:");
        String money = sc.nextLine();
        money = PersonVerify.moneyVerify(money);
        Iterator<Person> it = list.iterator();
        boolean flag = false;
        while (it.hasNext()) {
            Person person = it.next();
            if (person.getMoney() == money) {
                System.out.println(person);
                flag = true;
            }
        }
        if (!flag) {
            System.out.println("不存在此人");
        }
        m.searchMenu();
    }

    //查看全记录
    public void showAll(){
        Iterator<Person> it = list.iterator();
        int id = 1;
        while (it.hasNext()) {
            Person person = it.next();
            person.setID(id++);
            System.out.println(" 序号:" + person.getID() + "  " + person);
        }
    }

    //按用户姓名排序信息
    public void orderName() {
        Collections.sort(list, new NameComparator());
        System.out.println("排序成功!");
    }

    //按用户年龄排序信息
    public void orderAge() {
        Collections.sort(list, new AgeComparator());
        System.out.println("排序成功!");
    }

    //按用户性别排序信息
    public void orderSex() {
        Collections.sort(list, new SexComparator());
        System.out.println("排序成功!");
    }

    //按用户部门排序信息
    public void orderDepartment() {
        Collections.sort(list, new DepartmentComparator());
        System.out.println("排序成功!");
    }

    // 按用户电话号码排序信息
    public void orderTelephone() {
        Collections.sort(list, new TelephoneComparator());
        System.out.println("排序成功!");
    }

    //按用户工资排序信息
    public void orderMoney() {
        Collections.sort(list, new MoneyComparator());
        System.out.println("排序成功!");
    }
}

//自定义姓名排序类
class NameComparator implements Comparator<Person> {
    public int compare(Person p1, Person p2) {
        return p1.getName().compareTo(p2.getName());
    }
}
//自定义性别排序类
class SexComparator implements Comparator<Person> {
    public int compare(Person p1, Person p2) {
        return p1.getSex().compareTo(p2.getSex());
    }
}
//自定义年龄排序类
class AgeComparator implements Comparator<Person> {
    public int compare(Person p1, Person p2) {
        return Integer.valueOf(p1.getAge()).compareTo(Integer.valueOf(p2.getAge()));
    }
}
//自定义部门排序类
class DepartmentComparator implements Comparator<Person> {
    public int compare(Person p1, Person p2) {
        return p1.getDepartment().compareTo(p2.getDepartment());
    }
}
//自定义电话号码排序类
class TelephoneComparator implements Comparator<Person> {
    public int compare(Person p1, Person p2) {
        return Integer.valueOf(p1.getTelephone()).compareTo(Integer.valueOf(p2.getTelephone()));
    }
}
//自定义工资排序类
class MoneyComparator implements Comparator<Person> {
    public int compare(Person p1, Person p2) {
        return Integer.valueOf(p1.getMoney()).compareTo(Integer.valueOf(p2.getMoney()));
    }
}

5.5PersonVerify类

import java.util.*;
import java.io.*;
public class PersonVerify {
    static Scanner sc = new Scanner(System.in);

    public static String nameVerify(String name) {
        while(true) {
            if (!name.matches("[a-zA-Z]{1,10}")) {
                System.out.println("您的输入操作不正确!请重新输入");
                name = sc.nextLine();
            }
            else {
                break;
            }
        }
        return name;
    }

    public static int ageVerify(int age) {
        while(true) {
            if (age < 1 || age > 199) {
                System.out.println("您的输入操作不正确!请重新输入");
                age = Integer.parseInt(sc.nextLine());
            }
            else {
                break;
            }
        }
        return age;
    }

    public static String sexVerify(String sex) {
        while(true) {
            if(!sex.matches("[fm]")) {
                System.out.println("您的输入操作不正确!请重新输入");
                sex = sc.nextLine();
            }
            else {
                break;
            }
        }
        return sex;
    }

    public static String departmentVerify(String department) {
        while(true) {
            if (!department.matches("[0-9A-Za-z]{1,50}")) {
                System.out.println("您的输入操作不正确!请重新输入");
                department = sc.nextLine();
            }
            else {
                break;
            }
        }
        return department;
    }

    public static String telephoneVerify(String telephone) {
        while(true) {
            if (!telephone.matches("[0-9]{6,11}")) {
                System.out.println("您的输入操作不正确!请重新输入");
                telephone = sc.nextLine();
            }
            else {
                break;
            }
        }
        return telephone;
    }

    public static String moneyVerify(String money) {
        while(true) {
            if (!money.matches("[0-9]{4,8}")) {
                System.out.println("您的输入操作不正确!请重新输入");
                money = sc.nextLine();
            }
            else {
                break;
            }
        }
        return money;
    }
}

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值