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; } }