集合之ArrayList

来源:互联网 发布:手机淘宝扫码在哪 编辑:程序博客网 时间:2024/05/17 15:58
/* * 结合类在实际问题中的应用 * 问题: * 请坐一个公司职员 薪水管理系统,要求实现以下功能: * 当有新员工是,将员工添加到管理系统 * 可以根据员工工号显示员工的信息 * 可以显示所有员工信息 * 可以修改员工的薪水 * 当员工离职时,将员工的信息在管理系统中删除 * 可以按照薪水由低到高排序 * 可以统计员工的平均工资和最低最高工资 * 由以上的项目的需求可以看出,要存储员工的信息,必须有一个数组或者类似数组的存储结构来储存,但是数组的长度必须指定,不能够动态增加, * 而这里的员工的人数是不确定的,需要一个可以动态增加的存储结构来表示,arraylist便是一个很好的选择,在本例中主要用到了arraylist * 的一些基本的用法,比如arraylist的声明,实例化等。 * arraylist可以理解成一个数据类型,它的使用类似类,需要定义对象和实例化对象。 * 在本例中还有一个就是系统操作界面以及控制流程的启发,在以前一直使用switch来实现菜单的选择,但是他的欠缺就是只能够使用一次,使用完成 * 之后就会推出,可以使用while训话来实现重复多次的操作,知道你想推出为止。 * 退出系统函数:System.exit();参数0为正常终止,参数-1为异常终止 */import java.util.*;import java.io.*;public class Demo4 {public static void main(String[] arg){//创建clerkmanage对象ClerkManage clerkmanage=new ClerkManage();//菜单Scanner scanner=new Scanner(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=scanner.next();if(operType.equals("1")){System.out.print("请输入编号:");String clerkNO=scanner.next();System.out.print("请输入姓名:");String clerkName=scanner.next();System.out.print("请输入工资:");float clerkSalery=Float.parseFloat(scanner.next());//创建clerk对象Clerk clerk=new Clerk(clerkNO,clerkName,clerkSalery);clerkmanage.addClerk(clerk);clerkmanage.showInfo(clerkNO);}else if(operType.equals("2")){System.out.print("请输入雇员的编号:");String clerkNO=scanner.next();clerkmanage.showInfo(clerkNO);}else if(operType.equals("3")){System.out.print("请输入雇员的编号:");String clerkNO=scanner.next();System.out.print("请输入雇员的工资");float clerkSalery=Float.parseFloat(scanner.next());clerkmanage.updateSalery(clerkNO, clerkSalery);clerkmanage.showInfo(clerkNO);}else if(operType.equals("4")){}else if(operType.equals("5")){System.exit(-1);}}}}//职工类class Clerk{private String clerkNo;//职员工号private String clerkName;//职员姓名private float clerkSalery;//职员工资//构造函数public Clerk(){};public Clerk(String clerkNo,String clerkName,float clerkSalery){this.clerkName=clerkName;this.clerkNo=clerkNo;this.clerkSalery=clerkSalery;}//成员函数public String getClerkNo() {return clerkNo;}public void setClerkNo(String clerkNo) {this.clerkNo = clerkNo;}public String getClerkName() {return clerkName;}public void setClerkName(String clerkName) {this.clerkName = clerkName;}public float getClerkSalery() {return clerkSalery;}public void setClerkSalery(float clerkSalery) {this.clerkSalery = clerkSalery;}}//雇员管理类class ClerkManage{private ArrayList al=null;//定义ArrayList对象,并且初始化为空//构造函数public ClerkManage(){al=new ArrayList();//实例化arraylist对象}//加入员工public void addClerk(Clerk clerk){al.add(clerk);}//显示员工的相关信息public void showInfo(String clerKNO){//遍历整个arraylist来查找for(int i=0;i<al.size();i++){//取出对象Clerk clerk=(Clerk)al.get(i);//比较,字符串的比较if(clerk.getClerkNo().equals(clerKNO)){System.out.println("找到该员工,该员工的信息如下:");System.out.println("编号:"+clerKNO);System.out.println("姓名:"+clerk.getClerkName());System.out.println("工资:"+clerk.getClerkSalery());}}}//修改public void updateSalery(String clerkNO,float newsal){for(int i=0;i<al.size();i++){Clerk clerk=(Clerk)al.get(i);if(clerk.getClerkNo().equals(clerkNO)){clerk.setClerkSalery(newsal);}}}//删除员工public void delClerk(String clerkNO){for(int i=0;i<al.size();i++){Clerk clerk=(Clerk)al.get(i);if(clerk.getClerkNo().equals(clerkNO)){al.remove(i);//或者al.remove(clerk)}}}}