2022.07.16 第九小组 王茜 学习笔记

今天主要进行了昨天晚上作业的讲解,作业的主要思想是建立一个员工查询系统,之后进行查,增,删,改

解题思路:

1、

把员工的姓名和工号保存到对应的数组里
    有问题?
    如果第一次输入的员工信息,保存到0的位置
    第二次输入的员工信息,保存到1的位置

代码:

case "1":
case "1":
System.out.println("请输入员工姓名:");
String name = sc.next();
nos[i] = no;
names[i] = name;
System.out.println("添加成功:员工的工号为:" + nos[i] + ",姓名:" + names[i]);
i++;
no++;
if(i >= nos.length){
    // 数组要扩容
    int [] newNos = new int[nos.length + 1];
    String [] newNames = new String[names.length + 1];
    for (int j = 0; j < nos.length; j++) {
        // 数组中的数据的复制
        newNos[j] = nos[j];
        newNames[j] = names[j];
    }
    // 重新赋值
    nos = newNos;
    names = newNames;
}
break;

 2、

分析:
怎么才能知道即将要越界?
1.数组的最后一个元素不为null,0
2.当i的值和数组的最大下标,在进入到添加功能就先判断数组的下标是否合法
3.在添加成功之后,i自增之后,在判断下一次的数组的下标是否合法

 代码:

case "2":
case "2":
    System.out.println("请选择功能:1、根据工号查询  2、查询所有");
    String n = sc.next();
    switch (n) {
        case "1":
            System.out.println("请输入要查询的员工号:");
            int s = sc.nextInt();
            int index = -1;
            for (int j = 0; j < nos.length; j++) {
                if(nos[j] == s){
                    index = j;
                    break;
                }
            }
            if(index!= -1) {
                System.out.println("工号:" + s + ",姓名:" + names[index]);
            }else {
                System.out.println("工号:" + s + "不存在!");
            }
            break;
        case "2":
            for (int j = 0; j < nos.length; j++) {
                if(nos[j] != 0){
                    System.out.println("工号:" + nos[j] + ",姓名:" + names[j]);
                }
            }
            break;
        default:
    }

    break;

3、

先要去工号的数组中找,如果工号存在,拿到工号对应的下标
我还要拿着这个下标去姓名的数组中找姓名
找到了
System.out.println("工号:" + s + ",姓名:" + names[j]);
b = true;

代码:

case"3":
 case "3":
    System.out.println("请输入要修改的工号:");
    int x = sc.nextInt();
    int index = -1;
    for (int j = 0; j < nos.length; j++) {
        if(nos[j] == x){
            index = j;
            break;
        }
    }
    if(index!= -1) {
        System.out.println("工号:" + x + ",姓名:" + names[index]);
        System.out.println("请输入新的姓名:");
        String newName = sc.next();
        names[index] = newName;
        System.out.println("修改成功!工号:" + x + ",姓名:" + names[index]);
    }else {
        System.out.println("工号:" + x + "不存在!");
    }
    break;

4、

修改实际上是两个操作:
修改之前要先根据工号查询,看看这个人在不在我们的数组里
如果在,就执行修改的操作
如果不在,则显示当前用户不存在

代码:

case "4":
 case "4":
        System.out.println("请输入要查询的员工号:");
        int s = sc.nextInt();
        int y = -1;
        for (int j = 0; j < nos.length; j++) {
            if(nos[j] == s){
                y = j;
                break;
            }
        }
        if(y!= -1) {
            System.out.println("工号:" + s + ",姓名:" + names[y]);
            nos[y] = 0;
            names[y] = null;

            int [] newNos = new int[nos.length - 1];
            String [] newNames = new String[names.length - 1];

            for (int j = 0; j < nos.length - 1; j++) {
                if(nos[j] == 0){
                    newNos[j] = nos[j + 1];
                    nos[j + 1] = 0;
                }else {
                    newNos[j] = nos[j];
                }
                if(names[j] == null){
                    newNames[j] = names[j + 1];
                    names[j + 1] = null;
                }else {
                    newNames[j] = names[j];
                }
            }
            nos = newNos;
            names = newNames;
            System.out.println("工号:" + s + "删除成功!");
        }else {
            System.out.println("工号:" + s + "不存在!");
        }
        break;
    default:
}

今天的我理解了一大半的代码是什么意思,还有一些是问了同学,经过同学的帮助讲解,使我理解了这些代码的意义,但是我也就只能先把它看懂,自己写真的不能,只能写出一点点......

 

posted @ 2022-07-16 21:23  无聊的wx  阅读(18)  评论(0编辑  收藏  举报