• 初学java 学生管理系统——v0002版本


    续上一篇

    上一篇也就简单的把界面打印到了控制台

    同时把学生的class写好了

    现在开始写功能实现

    由于是刚学习java,所以数据的存储暂时只能使用集合变量存储

    开始写第一个方法——添加学生信息

     1     // 添加学生的方法
     2     public static void addStudent(ArrayList<Student> list) {
     3         Scanner sc = new Scanner(System.in);
     4         // 1. 给出录入的提示信息
     5         System.out.println("请输入学号:");
     6         String sid = sc.next();
     7 
     8         System.out.println("请输入姓名:");
     9         String name = sc.next();
    10 
    11         System.out.println("请输入年龄:");
    12         int age = sc.nextInt();
    13 
    14         System.out.println("请输入生日:");
    15         String birthday = sc.next();
    16 
    17         // 2. 将键盘录入的信息封装为学生对象
    18         Student stu = new Student(sid, name, age, birthday);
    19         // 3. 将封装好的学生对象, 添加到集合容器当中
    20         list.add(stu);
    21         // 4. 给出添加成功的提示信息
    22         System.out.println("添加成功!");
    23     }

    之后是查看学生的方法

     1     // 查看学生的方法
     2     public static void queryStudents(ArrayList<Student> list) {
     3         // 1. 判断集合中是否存在数据, 如果不存在直接给出提示
     4         if (list.size() == 0) {
     5             System.out.println("无信息, 请添加后重新查询");
     6             return;
     7         }
     8         // 2. 存在: 展示表头数据
     9         System.out.println("学号		姓名	年龄	生日");
    10         // 3. 遍历集合, 获取每一个学生对象的信息, 打印在控制台
    11         for (int i = 0; i < list.size(); i++) {
    12             Student stu = list.get(i);
    13             System.out.println(stu.getSid() + "	" + stu.getName() + "	" + stu.getAge() + "		" + stu.getBirthday());
    14         }
    15     }

    接下来是删除学生的方法

    删除需要判断将要删除的信息是否在集合中

    因此需要额外写一个方法,用于查找元素在集合中出现的位置

     1     /**
     2      * getIndex : 接收一个集合对象, 接收一个学生学号
     3      * 查找这个学号, 在集合中出现的索引位置    [stu1,stu2,stu3]
     4      */
     5     public static int getIndex(ArrayList<Student> list, String sid) {
     6         // 1. 假设传入的学号, 在集合中不存在
     7         int index = -1;
     8         // 2. 遍历集合, 获取每一个学生对象, 准备进行查找
     9         for (int i = 0; i < list.size(); i++) {
    10             // 获取学生对象
    11             Student stu = list.get(i);
    12             // 3. 获取每一个学生对象的学号
    13             String id = stu.getSid();
    14             // 4. 使用获取出的学生学号, 和传入的学号(查找的学号)进行比对
    15             if (id.equals(sid)) {
    16                 // 存在: 让index变量记录正确的索引位置
    17                 index = i;
    18             }
    19         }
    20         return index;
    21     }

    接着写删除的方法

     1     // 删除学生的方法
     2     public static void deleteStudent(ArrayList<Student> list) {
     3         // 1. 给出提示信息 (请输入您要删除的学号)
     4         System.out.println("请输入您要删除的学生学号:");
     5         // 2. 键盘接收要删除的学号
     6         Scanner sc = new Scanner(System.in);
     7         String deleteSid = sc.next();
     8         
     9         // 3. 调用getIndex方法, 查找该学号在集合中出现的索引位置
    10         int index = getIndex(list, deleteSid);
    11         
    12         // 4. 根据索引判断, 学号在集合中是否存在
    13         if (index == -1) {
    14             // 不存在: 给出提示
    15             System.out.println("查无信息, 请重新输入");
    16         } else {
    17             // 存在:删除
    18             list.remove(index);
    19             System.out.println("删除成功!");
    20         }
    21     }

    现在还差个修改学生的方法

     1     // 修改学生的方法
     2     public static void updateStudent(ArrayList<Student> list) {
     3         System.out.println("请输入您要修改的学生学号:");
     4         Scanner sc = new Scanner(System.in);
     5         String updateSid = sc.next();
     6         // 3. 调用getIndex方法, 查找该学号在集合中出现的索引位置
     7         int index = getIndex(list, updateSid);
     8         // 4. 根据索引判断, 学号在集合中是否存在
     9         if (index == -1) {
    10             // 不存在: 给出提示
    11             System.out.println("查无信息, 请重新输入");
    12         } else {
    13             // 存在: 接收新的学生信息
    14             System.out.println("请输入新的学生姓名:");
    15             String name = sc.next();
    16             System.out.println("请输入新的学生年龄:");
    17             int age = sc.nextInt();
    18             System.out.println("请输入新的学生生日:");
    19             String birthday = sc.next();
    20             // 封装为新的学生对象
    21             Student stu = new Student(updateSid, name, age, birthday);
    22             // 调用集合的set方法, 完成修改
    23             list.set(index, stu);
    24             System.out.println("修改成功!");
    25         }
    26     }

    到此基本算是写完了

    该添加一点点小优化

    首先是main方法中的switch语句记得修改下 加上方法的调用

     1             switch (choice) {
     2                 case "1":
     3                     // System.out.println("添加学生");
     4                     addStudent(list);
     5                     break;
     6                 case "2":
     7                     // System.out.println("删除学生");
     8                     deleteStudent(list);
     9                     break;
    10                 case "3":
    11                     // System.out.println("修改学生");
    12                     updateStudent(list);
    13                     break;
    14                 case "4":
    15                     // System.out.println("查看学生");
    16                     queryStudent(list);
    17                     break;
    18                 case "5":
    19                     System.out.println("感谢您的使用");
    20                     break lo;
    21                 default:
    22                     System.out.println("您的输入有误");
    23                     break;
    24             }

    其次是,在添加学生的信息时

      一般来说 学号是不能重复的

      所以,这里要增加一个限制条件

      修改后的方法如下

     1     // 添加学生的方法
     2     public static void addStudent(ArrayList<Student> list) {
     3         Scanner sc = new Scanner(System.in);
     4         // 1. 给出录入的提示信息
     5         String sid;
     6         while (true) {
     7             System.out.println("请输入学号:");
     8             sid = sc.next();
     9             int index = getIndex(list, sid);
    10             if (index == -1) {
    11                 // sid不存在, 学号可以使用
    12                 break;
    13             }
    14         }
    15 
    16         System.out.println("请输入姓名:");
    17         String name = sc.next();
    18         System.out.println("请输入年龄:");
    19         int age = sc.nextInt();
    20         System.out.println("请输入生日:");
    21         String birthday = sc.next();
    22         // 2. 将键盘录入的信息封装为学生对象
    23         Student stu = new Student(sid, name, age, birthday);
    24         // 3. 将封装好的学生对象, 添加到集合容器当中
    25         list.add(stu);
    26         // 4. 给出添加成功的提示信息
    27         System.out.println("添加成功!");
    28     }

    这个简易的学生管理系统就写完了

    简单总结下思路

    通过ArrayList来存储学生信息

    学生的信息通过Student类进行封装

    使用while死循环配合switch语句让用户选择功能菜单

    每一个独立的功能写一个单独的方法,注意方法的参数都是ArrayList集合,都不需要返回值

  • 相关阅读:
    十分钟-Nginx 入门到上线
    83.面向忙碌开发者的 Android 知识点收录 (转)
    技术人,为什么需要构建知识图谱 (转载)
    C# 4.0四大新特性代码示例与解读
    .NET 项目代码风格要求
    .NET 推荐博客
    C# 五、谈扩展方法的理解
    ASP.NET 一步步开发自己的博客 .NET版(11、Web.config文件的读取和修改)
    ASP.NET 你必须知道的EF知识和经验
    Linq表达式、Lambda表达式你更喜欢哪个?
  • 原文地址:https://www.cnblogs.com/yao-xi/p/13748279.html
Copyright © 2020-2023  润新知