薪資管理系統(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;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM