• 薪资管理系统(Java面向对象思想)


    package com.test3;
    import java.util.*;
    import java.io.*;
    /**
     * @author qingfeng
     * 重要思想:面向对象思想(添加员工管理类)
     * 功能:公司职员薪水管理系统
     */
    public class SalarySystem {
    
        public static void main(String[] args) throws IOException {
            
            ClerkManager cm = new ClerkManager();//创建员工管理类
            
            InputStreamReader isr = new InputStreamReader(System.in);
            BufferedReader br = new BufferedReader(isr);
            
            while(true)
            {
                //简易菜单
                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("请选择序号:");
                
                String no = br.readLine();
                
                if(no.equals("1")){
                    System.out.println("添加新员工:");
                    System.out.println("请输入姓名:");
                    String name = br.readLine();
                    
                    
                    System.out.println("请输入性别:");
                    String sex = br.readLine();
                    
                    System.out.println("请输入年龄:");//如何用InputStreamReader来输入一个int型的数据
                    Scanner sc = new Scanner(System.in);
                    int age = sc.nextInt();
                    
                    System.out.println("请输入工号:");
                    String clerkNo = br.readLine();
                    
                    System.out.println("请输入薪资:");
                    float salary = Float.parseFloat(br.readLine());
                    
                    Clerk clerk = new Clerk(name, sex, age, clerkNo, salary);//创建员工对象并且调用构造方法初始化
                    cm.addClerk(clerk);//调用“添加新员工”方法
                    
                }else if(no.equals("2")){
                    System.out.println("请输入员工号:");
                    String clerkNo = br.readLine();//接收输入的工号
                    cm.showInfo(clerkNo);
                    
                }else if(no.equals("3")){
                    System.out.println("显示所有员工信息:");
                    cm.showAllInfo();
                    
                }else if(no.equals("4")){
                    System.out.println("修改员工的薪水:");
                    System.out.println("输入员工工号:");
                    String clerkNo = br.readLine();//接收输入的工号
                    System.out.println("修改员工薪资:");
                    String sal = br.readLine();
                    float salary = Float.parseFloat(sal);
                    cm.modifySal(clerkNo, salary);
                    
                }else if(no.equals("5")){
                    System.out.println("根据工号删除该员工的信息:");
                    System.out.println("输入员工工号:");
                    String clerkNo = br.readLine();//接收输入的工号
                    cm.deleteInfo(clerkNo);
                    
                }else if(no.equals("6")){
                    System.out.println("根据薪资由低到高排序");
                    cm.Qsort(0, cm.al.size()-1);
                    cm.showAllInfo();
                }else if(no.equals("7")){
                    System.out.println("统计员工的平均工资、最高工资和最低工资:");
                    cm.calSalary();
                }else if(no.equals("8")){
                    System.exit(0);
                }else{
                    System.out.println("输入不合法!");
                }
            }
                    
            
        }
    }
    //员工管理类(非常重要!面向对象)
    class ClerkManager
    {
        //成员属性
        ArrayList al = null;
        
        //构造方法:初始化 不断创造新对象
        public ClerkManager()
        {
            al = new ArrayList();//注意写法!!
        }
        
        //成员方法
        //添加新员工!
        public void addClerk(Clerk clerk) //注意用增加的对象的引用作为参数!
        {
            al.add(clerk); //ArrayList添加方法用add()方法!
        }
        
        //根据工号显示该员工的信息
        public void showInfo(String no)
        {
            int flag = 0;
            for(int i=0; i<al.size(); i++)
            {
                Clerk clerk= (Clerk)al.get(i);
                if(clerk.getNo().equals(no))
                {
                    flag = 1;
                    System.out.println("clerk"+(i+1)+"的信息是:");
                    System.out.print("姓名:"+clerk.getName());
                    System.out.print("  性别:"+clerk.getSex());
                    System.out.print("  年龄:"+clerk.getAge());
                    System.out.print("  工号:"+clerk.getNo());
                    System.out.println("  薪资:"+clerk.getSalary());
                }    
            }
            if(flag == 0)
                System.out.println("找不到所查工号!");
        }
        
        //显示所有员工信息
        public void  showAllInfo()
        {
            for(int i=0; i<al.size(); i++)
            {
                Clerk clerk= (Clerk)al.get(i);
                System.out.println("clerk"+(i+1)+"的信息是:");
                
                System.out.print("姓名:"+clerk.getName());
                System.out.print("  性别:"+clerk.getSex());
                System.out.print("  年龄:"+clerk.getAge());
                System.out.print("  工号:"+clerk.getNo());
                System.out.println("  薪资:"+clerk.getSalary());
            }
        }
        
        //修改员工的薪水
        public void  modifySal(String no, float sal) //员工编号   最新的薪资
        {
            int flag = 0;
            for(int i=0; i<al.size(); i++)
            {
                Clerk clerk= (Clerk)al.get(i);
                if(clerk.getNo().equals(no))
                {
                    flag = 1;
                    clerk.setSalary(sal);
                }    
            }
            if(flag == 0)
                System.out.println("找不到所查工号!");
        }
    
        //根据工号删除该员工的信息
        public void deleteInfo(String no)
        {
            int flag = 0;
            for(int i=0; i<al.size(); i++)
            {
                Clerk clerk= (Clerk)al.get(i);
                if(clerk.getNo().equals(no))
                {
                    flag = 1;
                    al.remove(i);
                }    
            }
            if(flag == 0)
                System.out.println("找不到所查工号!");
        }
    
        //根据薪资由低到高排序
        public void Qsort(int left, int right)
        {
            int i = left;
            int j = right;
            
            if(i < j)//递归结束条件
            {
                Clerk clerk = (Clerk)al.get(left);
                float key  = clerk.getSalary();
                while(i<j)//一趟快速排序
                {
                    while(i<j && ((Clerk)al.get(j)).getSalary() >= key)
                    {
                        j--;
                    }
                    if(i<j)
                    {
                        al.set(i,al.get(j));
                        i++;
                    }
                    while(i<j && ((Clerk)al.get(i)).getSalary() <= key)
                    {
                        i++;
                    }
                    if(i<j)
                    {
                        al.set(j, al.get(i));
                    }
                }
                al.set(i, clerk);
                Qsort(left, i-1);
                Qsort(i+1, right);
            }
        }
    
        //统计员工的平均工资、最高工资和最低工资
        public void calSalary()
        {
            float totalSal = 0;
            float minSal = ((Clerk)al.get(0)).getSalary();
            float maxSal = ((Clerk)al.get(0)).getSalary();
            
            for(int i=0; i<al.size(); i++)
            {
                Clerk clerk = (Clerk)al.get(i);
                totalSal += clerk.getSalary();
                if(minSal > clerk.getSalary())
                {
                    minSal = clerk.getSalary();
                }
                if(maxSal < clerk.getSalary())
                {
                    maxSal = clerk.getSalary();
                }
            }
            System.out.println(al.size()+"个人的平均薪资为:" + totalSal/al.size());
            System.out.println(al.size()+"个人的最低薪资为:"+minSal);
            System.out.println(al.size()+"个人的最高薪资为:"+maxSal);
        }
    }
    //员工类
    class Clerk 
    {
        private String name;
        private String sex;
        private int age;
        private String no;
        private float salary;
        
        public Clerk(String name, String sex, int age, String no, float salary) 
        {
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.no = no;
            this.salary = salary;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getNo() {
            return no;
        }
    
        public void setNo(String no) {
            this.no = no;
        }
    
        public float getSalary() {
            return salary;
        }
    
        public void setSalary(float salary) {
            this.salary = salary;
        }
    }
  • 相关阅读:
    lua 学习
    IOS表情存入MYSQL数据库失败
    C# string数组转int数组
    打开端口
    win10下设置IIS、安装php7.2
    NET Core 应用程序 IIS 运行报错 502.3-Gateway
    微信小程序(一)--简单的介绍
    C#socket通信
    使用VScode 的插件
    Vue学习笔记:Slot
  • 原文地址:https://www.cnblogs.com/qingfengzhuimeng/p/6509965.html
Copyright © 2020-2023  润新知