zoukankan      html  css  js  c++  java
  • Java 雇员管理小练习(理解面向对象编程)

    在学习集合框架的时候,初学者很容易练习到学生管理系统、雇员管理体统等练习题。在学习集合框架之前,基本上Java基本语法都学完了,集合框架也从侧面的检验对前面学习的理解。下面用一个曾经做过的练习题,回顾集合框架,以及简要介绍面向对象编程思想。我发现旧的知识,当你再回头去看的时候,理解会更透彻。最近巩固基础ing。

    工具:记事本,方便编译和演示

    环境:将代码放在一个类当中了(这个习惯很不好)

    目的:回顾知识,理解面向对象编程

    代码实例(分四块,直接用即可)

    1.导包

    import java.util.ArrayList;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;

    2.测试类

    public class GuanLi {
    
        public static void main(String[] args) throws Exception {
            // TODO Auto-generated method stub
    
            // 创建EmpManage对象
            EmpManage em = new EmpManage();
    
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            // 做出一个简单的菜单
            while (true) {
                System.out.println("请输入你要进行的操作:");
                System.out.println("1:表示要添加一个雇员");
                System.out.println("2:表示要查找一个雇员");
                System.out.println("3:表示要修改雇员工资");
                System.out.println("4:表示要删除一个雇员");
                System.out.println("5:表示要您要退出操作");
    
                String operType = br.readLine();
    
                if (operType.equals("1")) {
    
                    System.out.println("请输入编号");
                    String num = br.readLine();
    
                    System.out.println("请输入名字");
                    String name = br.readLine();
    
                    System.out.println("请输入工资");
                    float sal = Float.parseFloat(br.readLine());
    
                    // 此时此刻,经过输入信息,对象创建好
                    Emp2 emp = new Emp2(num, name, sal);
    
                    // 将它添加进去
                    em.addEmp(emp);
    
                } else if (operType.equals("2")) {
    
                    System.out.println("请输入编号");
                    String num = br.readLine();
    
                    em.showInfo(num);
    
                } else if (operType.equals("3")) {
    
                    System.out.println("请输入编号");
                    String num = br.readLine();
    
                    System.out.println("请输入工资");
                    float sal = Float.parseFloat(br.readLine());
    
                    em.updateSal(num, sal);
    
                } else if (operType.equals("4")) {
    
                    System.out.println("请输入编号");
                    String num = br.readLine();
    
                    em.delEmp(num);
    
                } else if (operType.equals("5")) {
                    System.exit(0);
                }
            }
        }
    
    }

    3.雇员管理类(包括对雇员信息的动态管理

    // 创建雇员管理类
    class EmpManage {
    
        // 定义集合类(属性)
        private ArrayList<Emp2> al = null;
    
        // 构造函数,初始化成员变量
        public EmpManage() {
            al = new ArrayList<Emp2>();
        }
    
        // 封装的方法
        // 1.加入员工
        public void addEmp(Emp2 emp) {
            al.add(emp);
        }
    
        // 2.显示员工相关信息
        public void showInfo(String num) {
            // 遍历整个ArrayList
            for (int i = 0; i < al.size(); i++) {
    
                // 取出Emp2对象
                Emp2 emp = (Emp2) al.get(i);
    
                // 比较编号
                if (emp.getNum().equals(num)) {
    
                    System.out.println("找到该员工,他的信息是:");
                    System.out.println("编号:" + emp.getNum());
                    System.out.println("名字:" + emp.getName());
                    System.out.println("工资:" + emp.getSal());
                }
            }
        }
    
        // 3.修改员工工资(依照编号来修改工资)
        // 即,第一个参数是编号;第二个是用户传进来“新的”薪水
        public void updateSal(String num, float newSal) {
            // 遍历
            for (int i = 0; i < al.size(); i++) {
    
                Emp2 emp = (Emp2) al.get(i);
    
                // 判断编号
                if (emp.getNum().equals(num)) {
                    // 修改薪水
                    emp.setSal(newSal);
                }
    
            }
    
        }
    
        // 4.删除某个员工
        public void delEmp(String unm) {
            // 遍历
            for (int i = 0; i < al.size(); i++) {
    
                Emp2 emp = (Emp2) al.get(i);
    
                if (emp.getNum().equals(unm)) {
    
                    // 按编号删除
                    al.remove(i);
    
                    // 按对象删除
                    // al.remove(emp);
                }
    
            }
    
        }
    }

    4.雇员类(包括雇员的基本信息)

    // 创建雇员类
    class Emp2 {
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getNum() {
            return num;
        }
    
        public void setNum(String num) {
            this.num = num;
        }
    
        public float getSal() {
            return sal;
        }
    
        public void setSal(float sal) {
            this.sal = sal;
        }
    
        // 学号里面可能出现字母,所以定义为String
        private String num;
        private float sal;
    
        // 构造函数,一堆初始化的工作
        public Emp2(String num, String name, float sal) {
            this.num = num;
            this.name = name;
            this.sal = sal;
        }
    }

    在这里,雇员类和雇员管理类分开,方法、属性都进行了相应的封装,各司其职。

    在测试类中,我们想用做什么,就调用其类中的方法即可,而不用操心方法是咋实现的呀,里面都有哪些函数呀,这即是很好的面向对象编程思想。

    在dos中编译的时候发现,.java文件中所有的类会被分别编译成.class文件。在使用IDE后,这一点没注意。

  • 相关阅读:
    Leetcode 92. Reverse Linked List II
    Leetcode 206. Reverse Linked List
    Leetcode 763. Partition Labels
    Leetcode 746. Min Cost Climbing Stairs
    Leetcode 759. Employee Free Time
    Leetcode 763. Partition Labels
    搭建数据仓库第09篇:物理建模
    Python进阶篇:Socket多线程
    Python进阶篇:文件系统的操作
    搭建数据仓库第08篇:逻辑建模–5–维度建模核心之一致性维度2
  • 原文地址:https://www.cnblogs.com/1693977889zz/p/8359828.html
Copyright © 2011-2022 走看看