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