集合之ArrayList

/*
 * 结合类在实际问题中的应用
 * 问题:
 * 请坐一个公司职员 薪水管理系统,要求实现以下功能:
 * 当有新员工是,将员工添加到管理系统
 * 可以根据员工工号显示员工的信息
 * 可以显示所有员工信息
 * 可以修改员工的薪水
 * 当员工离职时,将员工的信息在管理系统中删除
 * 可以按照薪水由低到高排序
 * 可以统计员工的平均工资和最低最高工资
 * 由以上的项目的需求可以看出,要存储员工的信息,必须有一个数组或者类似数组的存储结构来储存,但是数组的长度必须指定,不能够动态增加,
 * 而这里的员工的人数是不确定的,需要一个可以动态增加的存储结构来表示,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)
			}
		}
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值