其他分享
首页 > 其他分享> > 2022-07-16 第10组 蒋萍 关于用数组实现员工管理系统的操作

2022-07-16 第10组 蒋萍 关于用数组实现员工管理系统的操作

作者:互联网

一步一步,稳步前行

目录

写在前面

我觉得今天的进步是巨大的,在经过昨晚一系列的思考和尝试,但没有实现所有功能,今天跟着老师的思路又分析了一遍,关于昨晚的所有不清楚的地方,今天我都有了更深刻的认识,在一次次跟着老师走的过程中,不管是代码的熟练度还是分析问题的放方方面面,我明显感觉我是真的在进步,虽然我一年前也接触过Java,但扪心自问,我从前学的并不熟练,事实证明,这个东西是需要要重复和不断练习的,

  • 我现在把自己当小白,一切重新学习,稳步前进。

  • 一定要自己先思考,明确问题出在哪

  • 大胆尝试,多敲,敲着敲着熟练度就上来了,上头那一刻的感觉,简直是神清气爽!!

哈哈哈哈哈,祝大家学习愉快~~·

分析

员工管理系统

实现

/*
唉,我只实现了单个模块的简单功能,员工信息查询排序功能未实现;
而且无法实现功能之间的衔接;
循环使用不够灵活,
条件思考得不够完善
代码实现能力差 !!
还得努力不止一点点
 */

public class ManageSystem {
    public static void main(String[] args) {
        // 数组应该声明在哪??考虑作用域问题,四种操作用的是统一数据,所以数组应该写在外面,每次循环就可以避免初始化为0
        String[] names = new String[2];
        int[] nos = new int[2];
        int no = 1001; // 第一个员工工号
        int i = 0; // 要操作的数组下标

        while (true) {
        Scanner scanner = new Scanner(System.in);
            System.out.println("欢迎使用员工管理系统");
            System.out.println("请选择功能:1、添加员工    2、查询员工  3、修改信息  4、删除员工 ");
            String flag = scanner.next();

                switch (flag) {
                    case "1": // 添加
                        System.out.println("请输入员工姓名:");
                        String name = scanner.next();
                        // 如何保存数据??? 如果第一次输入的员工保存到下标为0的位置,往数组里赋值
                        // 如何让id自增??? 刚开始的时候,这一步我没理顺.
/*nos[0] = no;
names[0] = name;
no++;*/
/*  nos[1] = no
names[1] = name */
// 每加一个人,下标就自增
                        nos[i] = no;
                        names[i] = name;
                        System.out.println("添加成功," + "姓名:" + names[i] + "工号:" + nos[i]);
                        i++;
                        no++;


                        /* 怎么知道要越界了 ???
                        1、数组最后一个元素不为空
                        2、当i的值和数组最大下标相等,在进入到添加时就先判断是否越界(此时leng要-1)
                        3、在添加成功后,i++之后,再判断下一次是否越界
                        */
                        if (i >= nos.length) { // 注意这里不能-1,因为已经i++了,
                            // 扩容
                            // 新数组
                            int[] newNos = new int[nos.length + 2];
                            String[] newNames = new String[names.length + 2];
                            for (int j = 0; j < nos.length; j++) {
                                // 复制
                                newNos[j] = nos[j];
                                newNames[j] = names[j];
                            }
                            // 重新赋值
                            nos = newNos;
                            names = newNames;
                        }
                            break;
                            case "2": // 查询
                                // String n = scanner.next();
                                System.out.println("请输入要查询员工的工号:");
                                int enquire = scanner.nextInt();

                                // 根据工号查询
                                /*
                                * 先遍历是否存在,如果存在,拿到下标去找姓名
                                * */
                                int index = -1; // 不想让它重复输出,// 用 boolean  b = false; 也可以
                                    for (int j = 0; j < nos.length; j++) { // 遍历
                                        if (enquire == nos[j]){ // 拿到下标
                                        // System.out.println("工号" + nos[j] + "的姓名:" + names[j]);
                                        index = j;
                                        break;
                                        // 如果
                                    }
                                }
                                   if (index != -1){
                                       System.out.println("工号" + nos[index] + "的姓名:" + names[index]);
                                   } else {
                                       System.out.println("工号不存在!");
                                   }

                                // 排序未实现
                                break;
                            case "3": // 修改
                                /*
                                 * 修改两个操作:先输入工号,先查询工号在不在,如果不存在,提示错误
                                 * 在的话,先显示出原有信息,请输入新名字
                                 * */
                                index = -1;
                                System.out.println("请输入要修改的工号:");
                                int reno = scanner.nextInt();

                                for (int i1 = 0; i1 < names.length; i1++) {
                                    if (reno == nos[i]) {
                                        index = i1;
                                        break;
                                    }
                                }
                                if (index != -1) {
                                    System.out.println("请输入新的姓名:");
                                    String newName = scanner.nextLine();
                                    names[index] = newName;
                                    System.out.println("修改成功!");
                                }else {
                                    System.out.println("该员工不存在!");
                                }
                            case "4":
                                /*
                                * 新建一个数组
                                * 赋值回去,0不要
                                *
                                * 输入工号时得先查询保证存在;
                                * */
                                index = -1;
                                System.out.println("请输入要修改的工号:");
                                int no1 = scanner.nextInt();

                                for (int i1 = 0; i1 < names.length; i1++) {
                                    if (no1 == nos[i]) {
                                        index = i1;
                                        break;
                                    }
                                }
                                if (index != -1) {
                                    // 找到了就删除
                                    nos[index] = 0;
                                    names[index] = null;

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

                                    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];
                                            newNames[j + 1] = null;
                                        }else {
                                            newNos[j] = nos[j];
                                            newNames[j] = names[j];
                                        }
                                    }
                                    nos = newNos;
                                    names = newNames;
                                }else {
                                    System.out.println("该员工不存在!");
                                }

                              /* 那删了之后,数组容量能变小吗?? */

                            default:
                                System.out.println("谢谢使用!");
                }
            }
    }
}
/*员工信息要保存到数组里
 * 1、工号
 *   不能输入,自动生成的自动递增的一个数字1001
 * 2、姓名
 * 工号和姓名都保存到数组里
 * int[] nos = new int[2]
 * String[] names = new String[2]
 * 要考虑扩容问题
 * */
/*根据工号查询,有能力,做根据姓名查询(二分,线性),姓名可以重名*/
/*根据工号倒序(从大到小)排序*/

标签:10,07,16,int,System,names,println,工号,nos
来源: https://www.cnblogs.com/fulfill/p/16483997.html