2 wshger wshger 于 2013.12.25 23:05 提问

请大神帮我看看这个java程序是什么意思,看的不是很懂,求大神讲解,谢谢!

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Clerk {
//成员变量,职员的基本信息:编号、姓名和工资
private String no;
private String name;
private float sla;

Clerk(String n,String na,float s){
no=n;
name=na;
sla=s;
}
Clerk(){

}
public String getNo() {
    return no;
}
public void setNo(String no) {
    this.no = no;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public float getSla() {
    return sla;
}
public void setSla(float sla) {
    this.sla = sla;
}
public String toString(){
    return "编号:" + no+"\n姓名:" + name+"\n工资:" + sla;

}

}

class ClerkManage {
Clerk al[] = null;
int size=0; //标识存入的元素个数

public ClerkManage(int n) {
    al = new Clerk[n];
}

// 添加职员
public void addClerk(Clerk c) {
    al[size]=c; //把元素存入数组当前的最后一个元素之后
    size++;
    System.out.println("添加职员,他的信息是");
    System.out.println(c);
}

// 查找并显示职员的相关信息
public int showInfo(String no) {
    // 遍历整个ArrayList
    boolean flag=true;
    for (int i = 0; flag&&(i < size); i++) {
        // 取出一个职员

        Clerk ct=al[i];
        // 比较编号
        if (ct.getNo().equals(no)) {
            System.out.println("该职员的信息是");
            System.out.println(ct);
            flag=false;
            return i;
        }
    }
    if(flag) System.out.println("查无此人!");
    return -1;
}

// 修改工资
public void updateSal(String no, float newsal) {
    int n=showInfo(no);
    if(n!=-1){
        al[n].setSla(newsal);
        System.out.println("修改后,他的信息是");
        System.out.println(al[n]);
    }       
}

// 删除职员
public void delClerk(String no) {
    int n=showInfo(no);
    if(n!=-1){
        //将之后元素向前移动
        for(int j=n;j<size-1;j++){
            al[j]=al[j+1];
        }
        size--; //元素个数减一
        System.out.println("删除成功!");
    }

}

}

class ClerkNode{
Clerk clerkdata;
ClerkNode next;
ClerkNode(Clerk c,ClerkNode cn){
clerkdata=c;
next=cn;
}
}
class ClerkManageLink {
ClerkNode head; //头结点
ClerkNode rear; //尾结点
int size;

ClerkManageLink(){
    head=new ClerkNode(null,null);
    rear=head;
    size=0;
}

// 添加职员
public void addClerk(Clerk c) {
     //用c生成一个结点,链入链表中,并让rear指向它
    ClerkNode cn=new ClerkNode(c,null);
    if(head.next==null){
        head.next=cn;
        rear=cn;
    }else{
        rear.next=cn;
        rear=cn;
    }
    size++;
    System.out.println("添加职员,他的信息是");
    System.out.println(c);
}

// 查找并显示职员的相关信息
public ClerkNode showInfo(String no) {
    // 遍历整个ArrayList
    boolean flag=true;

    for (ClerkNode p=head; flag&&(p.next!=null); p=p.next) {
        // 取出一个职员

        Clerk ct=p.next.clerkdata;
        // 比较编号
        if (ct.getNo().equals(no)) {
            System.out.println("该职员的信息是");
            System.out.println(ct);
            flag=false;
            return p;//返回的是要查找的这个结点的前一个结点,此举是为了后面删除方便
        }
    }
    if(flag) System.out.println("查无此人!");
    return null;
}

// 修改工资
public void updateSal(String no, float newsal) {
    ClerkNode n=showInfo(no);
    if(n!=null){
        n.next.clerkdata.setSla(newsal);
        System.out.println("修改后,他的信息是");
        System.out.println(n.next.clerkdata);
    }       
}

// 删除职员
public void delClerk(String no) {
    ClerkNode n=showInfo(no);
    if(n!=null){

        n.next=n.next.next ;
        size--; //元素个数减一
        System.out.println("删除成功!");
    }

}

}

public class ClerkTester {

public static void main(String[] args) throws IOException{




    ClerkManageLink cm=new ClerkManageLink();
    //给出一个菜单
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    while(true){
        System.out.println("**********欢迎使用职员管理系统*********");
        System.out.println("\n\t请选择你要进行的操作:");
        System.out.println("\n\t1.添加一个职员:");
        System.out.println("\n\t2.查找一个职员:");
        System.out.println("\n\t3.修改一个职员的工资:");
        System.out.println("\n\t4.删除一个职员:");
        System.out.println("\n\t5.退出!");
        String operType=br.readLine();
        if(operType.equals("1")){
            System.out.println("请输入职员的编号:");
            String no=br.readLine();
            System.out.println("请输入职员的姓名:");
            String responsibilities=br.readLine();
            System.out.println("请输入职员的职位:");
            String name=br.readLine();
            System.out.println("请输入职员的工资:");
            float sla=Float.parseFloat(br.readLine());  
            Clerk ck=new Clerk(no,name,sla);
            cm.addClerk(ck);
        }else if(operType.equals("2")){
            System.out.println("请输入职员的编号:");
            String no=br.readLine();
            cm.showInfo(no);

        }else if(operType.equals("3")){
            System.out.println("请输入职员的编号:");
            String no=br.readLine();
            System.out.println("请输入职员的工资:");
            float sla=Float.parseFloat(br.readLine());  
            cm.updateSal(no, sla);
        }else if(operType.equals("4")){
            System.out.println("请输入职员的编号:");
            String no=br.readLine();
            cm.delClerk(no);

        }else if(operType.equals("5")){
            System.exit(0);
        }
    }



}

}

2个回答

dongtianliubuzhu
dongtianliubuzhu   2013.12.26 19:13

这个其实就是创建了一个员工的数组,然后一个个查,其实再深入一点用数据库就更明白了, al = new Clerk[n];这个创建了员工的对象数组,也就是员工1,员工2。。。的这些对象,然后对这个添加删除,做操作

wangzhidavl
wangzhidavl   2013.12.26 09:50

从控制台管理员工信息

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!