wshger 2013-12-25 15:05 采纳率: 0%
浏览 2261

请大神帮我看看这个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条回答 默认 最新

  • wangzhidavl 2013-12-26 01:50
    关注

    从控制台管理员工信息

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算