维拉斯斯 2021-12-17 11:16 采纳率: 53.3%
浏览 63
已结题

为什么添加信息过后查询不到


/**
 * @Title:StudentMenu
 * @author:LJJ
 * @version:2.0
 * @date:2021/12/10
 */
package com.tomato.www;

import java.util.Scanner;

public class StudentMenu {

    public static void main(String[] args) {
        zero();
        studentmenu();
    }

    // 定义一个数组
    static String[][] stu = new String[10][4];
    private static String stunum;

    // 初始化数组
    private static void zero() {
        stu[0] = new String[] { "001", "张三", "21级1班", "软件技术" };
        stu[1] = new String[] { "002", "李四", "21级1班", "软件技术" };
        stu[2] = new String[] { "003", "王五", "21级1班", "软件技术" };
    }

    // 显示所有学生信息
    private static void showstudent() {
        System.out.println("学号" + "\t" + "姓名" + "\t" + "班级" + "\t" + "专业");
        for (int i = 0; i < stu.length; i++) {
            for (int j = 0; j < stu[i].length; j++) {
                if (stu[i][j] != null) {// 如果数组元素不为空,则打印出来
                    System.out.print(stu[i][j] + "\t");
                }
            }
            // 使用println()方法控制外层循环进行换行
            System.out.println("");
        }
    }

    // 选择菜单
    private static void studentmenu() {
        System.out.println("学生信息管理系统");
        System.out.println("---------------------");
        System.out.println("1、新增学生信息");
        System.out.println("2、删除学生信息");
        System.out.println("3、修改学生信息");
        System.out.println("4、查询学生信息");
        System.out.println("请您输入编号,进行选择");
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        // 选择结构语句switch语句,进行选择
        switch (input) {
        case "1":
            addstudent();
            break;
        case "2":
            deletestudent();
            break;
        case "3":
            editstudent();
            break;
        case "4":
            searchstudent();
            break;
        default:
            System.out.println("您输入的编号错误,请重新输入");
            studentmenu();
            break;
        }
    }

    // 添加学生信息的菜单
    private static void addstudent() {
        int rowIndex = selectstudent();
        // 输入学生信息
        if (rowIndex < 0) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入添加的姓名");
            String stuname = scanner.nextLine();
            System.out.println("请输入添加的班级");
            String stuclass = scanner.nextLine();
            System.out.println("请输入添加的专业");
            String major = scanner.nextLine();
            // 用循环与条件增加信息
            for (int i = 0; i < stu.length; i++) {
                if (stu[i][0] == null) {
                    stu[i][0] = stunum;
                    stu[i][1] = stuname;
                    stu[i][2] = stuclass;
                    stu[i][3] = major;
                    System.out.println("添加成功!!!");
                    break;
                }
            }
        } else {
            System.out.println("学生学号已经存在,请重新输入!");
            studentmenu();
        }
        studentmenu();
    }

    // 删除学生信息的菜单
    private static void deletestudent() {
        Scanner scanner = new Scanner(System.in);
        int i = selectstudent();
        // 如果i>大于-1,代表学号在查询范围之内
        if (i > -1) {
            System.out.println("请确认是否删除,输入Y/N");
            String choice = scanner.nextLine();
            if (choice.equals("Y") || choice.equals("y")) {
                for (int j = 0; j < stu[i].length; j++) {
                    stu[i][j] = null;// 令查询的学号学生信息设为空
                }
                System.out.println("删除成功!");
            }
        } else {
            System.out.println("输入的学号不存在");// 输入的学号不匹配,执行
            studentmenu();
        }
        studentmenu();
    }

    // 修改学生信息的菜单
    private static void editstudent() {
        // 定义一个flag为布尔类型的变量
        boolean flag = false;
        System.out.println("请输入学号");
        Scanner scanner = new Scanner(System.in);
        String stunum = scanner.nextLine();
        // 用循环与条件查找信息
        for (int i = 0; i < stu.length; i++) {
            if (stu[i][0] != null) {
                if (stu[i][0].equals(stunum.trim())) {
                    flag = true;// 如果为flag=true,代表学号存在,即可修改
                    System.out.println(stu[i][0] + "\t" + stu[i][1] + "\t" + stu[i][2] + "\t" + stu[i][3]);
                    editTwo(i);
                }
            }
        }
        // 如果为flag=flase,代表学号不存在,即不可修改
        if (!flag) {
            System.out.println("输入的学号不存在");
            studentmenu();
        }
    }

    // 修改学生信息的主菜单
    private static void editTwo(int i) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("1、姓名");
        System.out.println("2、班级");
        System.out.println("3、专业");
        System.out.println("请您输入编号,进行修改");
        String editIndex = scanner.nextLine();
        // 选择结构语句switch语句,进行选择
        switch (editIndex) {
        case "1": {
            editOne(i, 1);
            break;
        }
        case "2": {
            editOne(i, 2);
            break;
        }
        case "3": {
            editOne(i, 3);
            break;
        }
        default:
            System.out.println("输入的修改编号不存在,请重新输入!");
            studentmenu();
            break;
        }
    }

    // 修改学生信息菜单中定义rowIndex与columnIndex
    private static void editOne(int rowIndex, int columnIndex) {
        System.out.println("请输入要修改的内容");
        Scanner scanner = new Scanner(System.in);
        String editContent = scanner.nextLine();
        // 修改学生信息菜单中将输入修改的内容赋值到数组中
        stu[rowIndex][columnIndex] = editContent;
        System.out.println("修改成功!");
        studentmenu();
    }

    // 查询学生信息菜单
    private static void searchstudent() {
        int i = selectstudent();
        // 如果i>大于-1,代表学号在查询范围之内
        if (i > -1) {
            System.out.print(stu[i][0] + "\t" + stu[i][1] + "\t" + stu[i][2] + "\t" + stu[i][3] + "\t");
        } else {
            System.out.println("输入的学号不存在");// 输入的学号不匹配,执行
        }
        studentmenu();
    }

    // 输入学生学号查询
    private static int selectstudent() {
        // 定义rowIndex为-1,代表没有数据
        int rowIndex = -1;
        System.out.println("请输入学生的学号");
        Scanner scanner = new Scanner(System.in);
        String stunum = scanner.nextLine();
        // 用循环与条件查找信息
        for (int i = 0; i < stu.length; i++) {
            if (stu[i][0] != null) {
                if (stu[i][0].equals(stunum.trim())) {
                    rowIndex = i;
                }
            }
        }
        return rowIndex;
    }
}
  • 写回答

4条回答 默认 最新

  • cy子见 2021-12-17 14:29
    关注

    请问是按学号查不到吗

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 12月28日
  • 已采纳回答 12月20日
  • 修改了问题 12月17日
  • 修改了问题 12月17日
  • 展开全部

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看