用Java编写软件工程师管理系统

1.输入工程师资料工程师的资料主要包括:

编号、姓名、性别、生日、籍贯、学历、地址、电话、工龄、基本薪水。

要求:编号为数字,编号使用4位数字,格式为0001、0002....,不能重复。

姓名:为字符串,最长不超过20个字符。不能为空。

性别:用布尔表示true表示女,false表示男。不能为其它数值。

生日:表示年、月、日。

籍贯:使用字符串表示,最长不超过10个字符。不能为空。学历:使用数字表示高中0、学士1、硕士2、博士3、其它为4。不能为其它数字。

地址:使用字符串表示,最长不超过30个字符。不能为空。

电话:使用字符串表示,最长不超过15个字符。不能为空。

工龄:使用数字表示,工龄范围是(0,50]。

基本薪水:使用数字表示,正整数。对这些输入的信息进行合法性检查。保证系统接收合法的输入。用户输入错误时具有提示功能和重新输入功能
 

2.定义工程师的基本属性

生成其get,set,tostring方法

public class Engineer implements Serializable {
    private String no;
    private String name;
    private boolean gender;
    private String birthday;
    private int degree;
    private String address;
    private String phone;
    private int workYear;
    private int salary;

    @Override
    public String toString() {
        return "Engineer{" +
                "no='" + no + '\'' +
                ", name='" + name + '\'' +
                ", gender=" + gender +
                ", birthday='" + birthday + '\'' +
                ", degree=" + degree +
                ", address='" + address + '\'' +
                ", phone='" + phone + '\'' +
                ", workYear=" + workYear +
                ", salary=" + salary +
                '}';
    }

    public String getNo() {
        return no;
    }

    public void setNo(String no) {
        this.no = no;
    }

    public String getName() {
        return name;
    }

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

    public boolean isGender() {
        return gender;
    }

    public void setGender(boolean gender) {
        this.gender = gender;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public int getDegree() {
        return degree;
    }

    public void setDegree(int degree) {
        this.degree = degree;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public int getWorkYear() {
        return workYear;
    }

    public void setWorkYear(int workYear) {
        this.workYear = workYear;
    }

    public int getSalary() {
        return salary;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }

}

3.编写它需要完成的功能

//工程师数据管理类
public class EngineerManager {


    List<Engineer> list=new ArrayList<>();
    private InputService is=new InputService();


    public EngineerManager(){
        try {
            FileInputStream in = new FileInputStream("engineer.txt");
            ObjectInputStream ois=new ObjectInputStream(in);
            list=(List)ois.readObject();
        }catch (Exception e){
            list=new ArrayList<>();
        }
    }
    public static void main(String[] args) {
        EngineerManager em=new EngineerManager();
        while(true){
            em.menu();
            em.function();
        }
    }

        public  void add(){
            System.out.println("你选择了添加工程师的功能");
            Engineer en=new Engineer();
            String no=is.inputNo();
            String name=is.inputName();
            boolean gender=is.inputGender();
            String date=is.inputBirthday();
            en.setNo(no);
            en.setName(name);
            en.setGender(gender);
            en.setBirthday(date);



            list.add(en);
            System.out.println("添加成功");
        }

        public  void delete(){
            System.out.println("1.根据编号删除,2.根据姓名删除");
            Scanner sc=new Scanner(System.in);
            int type=sc.nextInt();
            switch(type){
                case 1:
                    deleteByNo();
                    break;
                case 2:
                    deleteByName();
                    break;
                default:
                    System.out.println("输入错误,请重新选择");
                    delete();
                    break;
            }
        }
        public  void deleteByNo(){
        String no=is.inputNo();
        for(int i=0;i<list.size();i++){
            Engineer en=list.get(i);
            //判断工程师对象的编号与用户输入的编号是否一致,如果一致则删除该工程师
            if(en.getNo().equals(no)){
                 list.remove(en);
                System.out.println("删除成功");
                 return;
            }
        }
            System.out.println("删除失败,没有该工程师");
        }
        public void deleteByName(){
        String  name=is.inputName();
        boolean flag=true;
        for(int i=0;i<list.size();i++){
            Engineer en=list.get(i);
            if(en.getName().equals(name)){
                list.remove(en);
                i--;
                flag=false;
                System.out.println(name+en.getNo()+"删除成功");
            }
        }
        if(flag)
            System.out.println("删除失败,没有该员工");
        }
         public  void query(){

    }
        public void update(){
            String no=is.inputNo();
            for (Engineer en:list){
                if (en.getNo().equals(no)){
                    String name=is.inputName();
                    boolean gender=is.inputGender();
                    String birthday=is.inputBirthday();
                    en.setName(name);
                    en.setGender(gender);
                    en.setBirthday(birthday);
                    System.out.println("修改成功");
                    return;
                }
            }
            System.out.println("没有该员工");
        }

        public  void save(){
        try {
            FileOutputStream out = new FileOutputStream("engineer.txt");
            ObjectOutputStream oos=new ObjectOutputStream(out);
            //直接把集合对象写到文件里,保证文件中只有一个集合对象
            //这样做的目的时间少多对象读取时的错误问题
            oos.writeObject(list);
            oos.close();
            out.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
        public  void sort(){
            System.out.println("1.编号升序,2.姓名升序");
            Scanner sc=new Scanner(System.in);
            int type =sc.nextInt();
            switch(type){
                case 1:
                    Comparator<Engineer> c=new Comparator<Engineer>() {
                        @Override
                        public int compare(Engineer o1, Engineer o2) {
                            return o1.getNo().compareTo(o2.getNo());
                        }
                    };
                    //使用比较器对集合进行排序
                    Collections.sort(list,c);
//                    Comparator c=new Comparator() {
//                        @Override
//                        public int compare(Object o1, Object o2) {
//                            Engineer e1=(Engineer)o1;
//                            Engineer e2=(Engineer)o2;
//                            return 0;
//                        }
//                    };
                    break;
                case 2:
                    Comparator<Engineer> d=new Comparator<Engineer>() {
                        @Override
                        public int compare(Engineer o1, Engineer o2) {
                            return o1.getName().compareTo(o2.getName());
                        }
                    };
                    Collections.sort(list,d);
                    break;
                default:
                    System.out.println("输入错误,重新输入");
                    sort();
            }
        }

        public  void print(){
          for(Engineer en:list){
              System.out.println(en);
          }
        }
        public  void empty(){

        }


        public  void reload(){

        }
        public  void exit(){

        }

        public void menu(){
        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("----9.重新拉取工程师信息----");
        System.out.println("----0.退出系统----");
    }

    //用力啊获取用户的输入,选择对应的功能
    public void function(){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入对应的编号,选择功能:");
        int n=sc.nextInt();
        switch (n){
            case 1:
                add();
                break;
            case 2:
                delete();
                break;
            case 3:
                query();
                break;
            case 4:
                update();
                break;
            case 5:
                save();
                break;
            case 6:
                sort();
                break;
            case 7:
                print();
                break;
            case 8:
                empty();
                break;
            case 9:
                reload();
                break;
            case 0:
                System.exit(0);

        }
    }

}

4.通过一些限制条件完成他的最终功能

//负责处理用户输入以及格式校验的类
public class InputService {

    public String inputNo() {
        System.out.println("请输入编号");
        Scanner sc=new Scanner(System.in);
        String no=sc.nextLine();
        if(no.length()!=4){
            System.err.println("编号长度必须是4位");
            return inputNo();
        }
        try{
            //尝试把字符串转换成整数,主要是为了验证它是不是纯数字
            Integer.parseInt(no);
        }catch(Exception e){
            System.err.println("编号必须是纯数字");
            return inputNo();
        }
        return  no;
    }
    public String inputName(){
        System.out.println("请输入姓名");
        Scanner sc=new Scanner(System.in);
        String name= sc.nextLine();
        if(name.length()<=0 || name.length()>20) {
            System.out.println("姓名长度必须小于20");
            return inputName();
        }
        return name;
    }
    public boolean inputGender(){
        System.out.println("请输入性别,true表示女,false表示男");
        Scanner sc=new Scanner(System.in);
        try {
            boolean g = sc.nextBoolean();
            return  g;
        }catch ( Exception e){
            System.out.println("性别格式错误");
            return inputGender();
        }
    }
    public  String inputBirthday(){
        System.out.println("请输入出生日期:格式必须是:yyyy-MM-dd");
        Scanner sc=new Scanner(System.in);
        String date=sc.nextLine();
        //使用-分割字符串
        String[] arr =date.split("-");
        if(arr.length != 3){
            System.out.println("日期格式不对,重新输入");
            return inputBirthday();
        }
        try{
            int year=Integer.parseInt(arr[0]);
            int month=Integer.parseInt(arr[1]);
            int day=Integer.parseInt(arr[2]);
            if(year<1900 || year>2004){
                System.out.println("年份必须在1900~2004之间");
                return inputBirthday();
            }
            if(month<1 || month>12){
                System.out.println("月份必须在1-12之间");
                return inputBirthday();
            }
            if(day<1||day>31){
                System.out.println("日必须在1-31之间");
                return inputBirthday();
            }
        }catch (Exception e){
            System.out.println("年月日必须是数字");
            return inputBirthday();
        }
        return date;
    }
}

5.运行效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值