学习记录09 --- 使用List集合写一个基于本地的简洁版教务管理系统

前段时间写的教务管理系统后端用到了集合,只是当时并不是太懂集合的作用,只是根据一些资料来用

通过一个简单的本地教务管理系统重新来认识下集合到底是什么

为了方便,我就把所有的都写在一个类中,我们创建学生类就直接采用内部类的方式创建

 1 //采用内部类的方式创建学生类
 2     public static class Student {
 3         //暂且创建三个属性,重点是为了理解List集合
 4         public int id;
 5         public String name;
 6         public String pwd;
 7 
 8         //创建一个构造函数
 9         public Student(int id, String name, String pwd) {
10             this.id = id;
11             this.name = name;
12             this.pwd = pwd;
13         }
14 
15         //重写toString方法
16         @Override
17         public String toString() {
18             return "Student{" +
19                     "id=" + id +
20                     ", name='" + name + '\'' +
21                     ", pwd='" + pwd + '\'' +
22                     '}';
23         }
24     }

创建完内部类,我们开始创建List集合的全局变量,这里要说一下,导包绝对是util包,不是awt包,不然会出问题

//创建List集合的全局变量
    static List<Student> list = new ArrayList<Student>();

尖括号中的Student表示的是泛型,这个不给也可以,不给的话默认都是Object类型,如果给了,就都是Student类型

ArrayList是线性存储,我们做教务管理系统用这个就足够了

因为List集合有完整的增删改的方法,所以我们可以把所有的操作都写在switch里面,当然,工作中是不允许这样做

添加和查询是最好做的,添加可以直接用add方法

//调用add方法添加数据
list.add(new Student(getInt("请输入学生ID:"),getString("请输入学生姓名:"),getString("请输入学生密码:")));

这样一行代码就可以解决了,接下来查询,使用foreach循环就行了

//使用foreach循环遍历集合
for(Student info:list){
     pl(info.toString());
}

但是接下来,使用修改和删除的时候,这2个的方法是通过下标来工作的,所以在写这2个方法的时候,我们需要写一个获取下标的方法

 1 //根据ID获取集合下标
 2     public static int getIndexById(int id){
 3         //使用一个变量来存取下标
 4         int index = 0;
 5         //开始遍历
 6         for(Student info:list) {
 7             //判断是否找到,找到就返回
 8             if(info.id==id)
 9                 return index;
10             //没有找到就自增,找下一个
11             index++;
12         }
13         //如果所有都没找到,就返回-1
14         return -1;
15     }

那么接下来,写删除和修改就不是什么难事了,调用方法就行,贴上所有代码

  1 package org.lanqiao.jwglx;
  2 
  3 import java.util.ArrayList;
  4 import java.util.List;
  5 import java.util.Scanner;
  6 
  7 public class demo {
  8 
  9     //采用内部类的方式创建学生类
 10     public static class Student {
 11         //暂且创建三个属性,重点是为了理解List集合
 12         public int id;
 13         public String name;
 14         public String pwd;
 15 
 16         //创建一个构造函数
 17         public Student(int id, String name, String pwd) {
 18             this.id = id;
 19             this.name = name;
 20             this.pwd = pwd;
 21         }
 22 
 23         //重写toString方法
 24         @Override
 25         public String toString() {
 26             return "Student{" +
 27                     "id=" + id +
 28                     ", name='" + name + '\'' +
 29                     ", pwd='" + pwd + '\'' +
 30                     '}';
 31         }
 32     }
 33 
 34     //创建List集合的全局变量
 35     static List<Student> list = new ArrayList<Student>();
 36     //创建输入对象
 37     static Scanner input = new Scanner(System.in);
 38 
 39     public static void main(String[] args) {
 40         //死循环让菜单一直输出
 41         while(true) {
 42             //打印菜单
 43             pl("------------------------");
 44             pl("1、添加学生");
 45             pl("2、删除学生");
 46             pl("3、修改学生");
 47             pl("4、查询学生");
 48             pl("0、退出系统");
 49             pl("------------------------");
 50 
 51             //进行功能选择
 52             switch(getInt("请输入功能编号<0-4>:")) {
 53                 case 1:
 54                     //调用add方法添加数据
 55                     list.add(new Student(getInt("请输入学生ID:"),getString("请输入学生姓名:"),getString("请输入学生密码:")));
 56                     break;
 57                 case 2:
 58                     //调用remove方法删除指定对象
 59                     list.remove(getIndexById(getInt("请输入需要删除的学生ID:")));
 60                     break;
 61                 case 3:
 62                     //调用set方法替换对象
 63                     list.set(getIndexById(getInt("请输入需要修改的学生ID:")),new Student(getInt("请输入修改后的学生ID:"),getString("请输入修改后的学生姓名:"),getString("请输入修改后的学生密码:")));
 64                     break;
 65                 case 4:
 66                     //使用foreach循环遍历集合
 67                     for(Student info:list) {
 68                         pl(info.toString());
 69                     }
 70                     break;
 71                 case 0:
 72                     System.exit(0);
 73                 default:
 74                     pl("编号输入有误!");
 75             }
 76         }
 77     }
 78 
 79     //根据ID获取集合下标
 80     public static int getIndexById(int id){
 81         //使用一个变量来存取下标
 82         int index = 0;
 83         //开始遍历
 84         for(Student info:list) {
 85             //判断是否找到,找到就返回
 86             if(info.id==id)
 87                 return index;
 88             //没有找到就自增,找下一个
 89             index++;
 90         }
 91         //如果所有都没找到,就返回-1
 92         return -1;
 93     }
 94 
 95     //以下都为工具方法,为了便捷而创建
 96     public static void p(String msg) {
 97         System.out.print(msg);
 98     }
 99 
100     public static void pl(String msg) {
101         System.out.println(msg);
102     }
103 
104     public static int getInt(String msg) {
105         p(msg);
106         return input.nextInt();
107     }
108 
109     public static String getString(String msg) {
110         p(msg);
111         return input.next();
112     }
113 }

猜你喜欢

转载自www.cnblogs.com/huajidafahao/p/11295005.html