路过人间65 2022-06-10 17:35 采纳率: 63.6%
浏览 61
已结题

请详细说明这两段代码是如何运行的(要非常详细详细到每一句程序是怎么被执行的?),在编写的过程中容易出现的问题及解决方法

问题遇到的现象和发生背景

请详细说明这两段代码是如何运行的(一句一句的解读,这段程序在全部程序中是怎么被执行的?),在编写的过程中容易出现问题及解决方法
您好,我需要的是.学生信息列表功能是怎么实现的、学生信息添加功能是怎么实现,学生信息查询功能实现,学生信息删除是怎么实现的,学生信息修改是怎么实现的,越详细越好

问题相关代码,请勿粘贴截图

第一段
package mm;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentManager {
public static void main(String[] args) {

    ArrayList<Student> array = new ArrayList<Student>();

    while(true){
        System.out.println("----------欢迎来到学生管理系统--------------");
        System.out.println("1 添加学生");
        System.out.println("2 删除学生");
        System.out.println("3 修改学生");
        System.out.println("4 查看学生");
        System.out.println("5 退出");
        System.out.println("请输入您的选择");

        Scanner scanner = new Scanner(System.in);
        String s=scanner.nextLine();
        switch (s){
            case "1":
                addStudent(array);
                break;
            case "2":
                deleteStudent(array);
                break;
            case "3":
                changeStudent(array);
                break;
            case "4":
                searchStudent(array);
                break;
            case "5":
                System.out.println("退出");
                System.exit(0);//JVM退出虚拟机
                System.out.println("谢谢使用");
                break;
        }
    }

}
public static void addStudent(ArrayList<Student> array){


    Scanner sc = new Scanner(System.in);
    int index =-1;
    String sid2="";


    //为了保证程序可以回来,用一个循环实现
    while (true) {
        System.out.println("请输入学生学号");
        String sid = sc.nextLine();
       for (int i = 0; i < array.size(); i++) {
           Student s1 = array.get(i);
           if (s1.getSid().equals(sid)) {
                index = i;
           }
        }
        if(index!=-1){
            System.out.println("学生已存在,请重新输入");
           index=-1;
        }else{
            sid2=sid;
           break;
        }
    }

    System.out.println("请输入学生姓名");
    String name=sc.nextLine();
    System.out.println("请输入学生年龄");
    String age=sc.nextLine();
    System.out.println("请输入学生居住地");
    String address=sc.nextLine();

    //创建学生对象
    Student st = new Student();
    st.setSid(sid2);
    st.setName(name);
    st.setAge(age);
    st.setAddress(address);

    array.add(st);
    System.out.println("添加学生成功");
}
public static void searchStudent(ArrayList<Student> array){

   if(array.size()==0){
       System.out.println("请先添加学生信息");
       return;//程序不再向下执行
   }
        System.out.println("学号\t\t\t姓名\t\t年龄\t居住地");
        for (int i = 0; i < array.size(); i++) {
            Student stt = array.get(i);
            System.out.println(stt.getSid() + "\t\t" + stt.getName() + "\t\t" + stt.getAge() + "岁" + "\t" + stt.getAddress());
        }

}
public static void deleteStudent(ArrayList<Student> array){
    System.out.println("请输入你要删除的学生学号");
    Scanner scanner = new Scanner(System.in);
    String n=scanner.nextLine();
    int index=-1;//索引先设为-1,不影响集合
    for (int i = 0; i <array.size() ; i++) {
        Student st2 = new Student();
        st2=array.get(i);
        if(st2.getSid().equals(n)){//字符串的比较,需要采用equals方法
            index =i;//通过学号找到了学生,索引改变先记录下索引
            array.remove(i);
            System.out.println("删除成功");
            break;
        }

    }
    if(index==-1){
        System.out.println("该学生不存在,请重新输入");
    }
}
public static void changeStudent(ArrayList<Student> array){
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入你要修改学生的学号");
    String c=scanner.nextLine();
    int index=-1;
    for (int i = 0; i <array.size() ; i++) {
        Student st =array.get(i);
        if(st.getSid().equals(c)){
            index=i;
            System.out.println("请输入学生学号");
           st.setSid(scanner.nextLine());
            System.out.println("请输入学生姓名");
            st.setName(scanner.nextLine());
            System.out.println("请输入学生年龄");
            st.setAge(scanner.nextLine());
            System.out.println("请输入学生居住地");
            st.setAddress(scanner.nextLine());
            System.out.println("修改成功");
        }

        }
    if(index==-1){
        System.out.println("该学生不存在");
    }

}

}
第二段
package mm;

public class Student {
private String sid;
private String age;
private String name;
private String address;

public Student(){}
public Student(String sid,String name,String age,String address){
    this.sid=sid;
    this.name=name;
    this.age=age;
    this.address=address;

}

public String getSid() {
    return sid;
}

public void setSid(String sid) {
    this.sid = sid;
}

public String getAge() {
    return age;
}

public void setAge(String age) {
    this.age = age;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getAddress() {
    return address;
}

public void setAddress(String address) {
    this.address = address;
}

}

  • 写回答

4条回答 默认 最新

  • CSDN专家-sinJack 2022-06-10 17:41
    关注

    看main方法的while结构,通过输入要执行的功能,在switch中调用对应的方法。
    每个方法可以看下,按住Ctrl+左键点击可以跳到对应方法中。

    while(true){
            System.out.println("----------欢迎来到学生管理系统--------------");
            System.out.println("1 添加学生");
            System.out.println("2 删除学生");
            System.out.println("3 修改学生");
            System.out.println("4 查看学生");
            System.out.println("5 退出");
            System.out.println("请输入您的选择");
     
            Scanner scanner = new Scanner(System.in);
            String s=scanner.nextLine();
            switch (s){
                case "1":
                    addStudent(array);
                    break;
                case "2":
                    deleteStudent(array);
                    break;
                case "3":
                    changeStudent(array);
                    break;
                case "4":
                    searchStudent(array);
                    break;
                case "5":
                    System.out.println("退出");
                    System.exit(0);//JVM退出虚拟机
                    System.out.println("谢谢使用");
                    break;
            }
        }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月19日
  • 已采纳回答 6月11日
  • 赞助了问题酬金5元 6月11日
  • 修改了问题 6月11日
  • 展开全部

悬赏问题

  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题