学了一段时间的Java,但是总有一些困惑,于是写了这篇文章,来帮助理解Java中的ArrayList,以及完成一个简单的学生管理系统
先看最终成果:
java学生管理系统演示
让我们先来分析一下学生管理系统的组成
作为一个学生管理系统来说,其作用就是为了管理学生,所以,我计划从以下几个方面来完成这个学生管理系统
还有一些小bug的修复
关于主界面的编写
一、打开Java开发工具:IDEA,在里面创建一个学生类(Student),并填写好相关信息。
- 添加学生的 学 号 , 姓 名 \color{red}{学号},\color{red}{姓名} 学号,姓名, 年 龄 \color{red}{年龄} 年龄和 家 庭 住 址 \color{red}{家庭住址} 家庭住址信息,为了保证数据不被其他类更改,所以使用private关键字进行修饰。
2.由于使用了private关键字修饰了这个学生类,所以必须使用 ( g e t / s e t ) 方 法 \color{red}{(get/set)方法} (get/set)方法 进行学生信息的设置和读取,这里以获取学生的年龄为例,获取学生其他信息类似:
//设置年龄的成员方法
public void setAge(String age) {
this.age = age;
}
/*
其中该方法不需要static关键字也不需要返回值,方法名为需要获取的变量,首字母大写
this是一个修饰符,this.age指代的是成员变量中的age,
用this修饰之后,就不会和setAge方法中的形参age冲突
*/
public String getAge() {
return age;
}
/*
该方法用于获取被private关键字修饰的成员变量的值,也不需要static关键字进行修饰,
但是不同的是,改方法是获取变量值的,所以需要用String类型进行修饰,
又因为改方法中不存在变量名重复问题,返回的age就是成员变量age
*/
3.无参构造方法和带参构造方法的编写( 构 造 方 法 主 要 用 于 创 建 对 象 \color{red}{构造方法主要用于创建对象} 构造方法主要用于创建对象)
无参构造方法
// 无参构造
public Student(){}
带有参数的构造方法
// 有参构造
public Student(String sid,String name,String age,String address){
this.sid=sid;
this.name=name;
this.age=age;
this.address=address;
}
二、新建一个学生测试类(Student Manager),用于编写主界面
1.写出学生管理系统的主界面
public static void main(String[] args) {
ArrayList<Student> arr=new ArrayList<Student>();
System.out.println("----欢迎进入学生管理系统----");
System.out.println("1.添加学生信息");
System.out.println("2.查看学生信息");
System.out.println("3.删除学生信息");
System.out.println("4.修改学生信息");
System.out.println("退出系统")
System.out.println("请输入您想要进行的操作,回车键进入:");
}
2.使用switch语句接收键盘录入的选项
//导包
Scanner sc = new Scanner(System.in);
//定义一个变量,用键盘接收录入的值,然后进行判断
int num = sc.nextInt();
switch (num) {
case 1:
System.out.println("添加学生信息成功");
break;
case 2:
System.out.println("查看学生信息成功");
break;
case 3:
System.out.println("删除学生信息成功");
break;
case 4:
System.out.println("修改学生信息成功");
break;
case 5:
System.out.println("退出系统成功");
break;
default:
System.out.println("该功能暂不支持,请等待后续版本更新");
}
3.至此主界面的编写就完成了,准备开始编写程序具体内容的实现代码
添加学生页面的编写
定义一个集合,用于存储学生对象,这个集合的名字是arr
ArrayList<Student> arr=new ArrayList<Student>();
/*
这个集合的名字是arr,又因为这个集合里面存储的是学生信息,
所以该集合的数据类型是Student
*/
定义一个方法(addStudent),用于添加学生功能的实现
分析一下问题,不难得出,由于是添加信息,所以 不 需 要 返 回 值 \color{#FF3030}{不需要返回值} 不需要返回值;又因为需要将信息添加到集合中,所以 需 要 一 个 集 合 类 型 的 参 数 a r r \color{#FF3030}{需要一个集合类型的参数arr} 需要一个集合类型的参数arr ,方法写完之后,不要忘记调用方法哦
public static void addStudent(ArrayList<Student> arr){
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要添加的学生的学号:");
String sid = sc.nextLine();
System.out.println("请输入你要添加的学生的姓名:");
String name = sc.nextLine();
System.out.println("请输入你要添加的学生的年龄:");
String age = sc.nextLine();
System.out.println("请输入你要添加的学生的家庭住址:");
String address = sc.nextLine();
// 创建学生对象
Student s=new Student();
// 添加学号,姓名,年龄,家庭住址
s.setSid(sid);
s.setName(name);
s.setAge(age);
s.setAddress(address);
// 将对象添加到集合中
arr.add(s);
System.out.println("添加成功!");
查看学生页面的编写
分析思路如下:
1.首先使用输出语句,将表头进行输出
2.使用 a r r . s i z e ( ) \color{red}{arr.size()} arr.size()和 a r r . g e t ( ) \color{red}{arr.get()} arr.get()方法获取集合的长度和指定索引处的元素值
3创建一个对象s用于保存获取到的索引处的元素值
4.使用循环将学生信息输出即可
public static void findAllStudent(ArrayList<Student> arr) {
// 表头信息编写
System.out.println("学号\t\t姓名\t\t年龄\t\t家庭住址\t\t");
for (int i = 0; i < arr.size(); ++i) {
// 创建一个变量s来接收arr.get(i);这个方法的返回值
Student s = arr.get(i);
System.out.println(s.getSid() + "" + s.getName() + "" + s.getAge() + "" + s.getAddress());
}
}
删除学生页面的编写
分析思路如下:
1.输入提示信息提供用户输入要删除的学号
2.创建变量接收用户输入的数据
3.遍历集合,得到每一个学生对象
4.调用方法( g e t S i d \color{red}{getSid} getSid)获得学生对象中的学号信息,并与键盘输入的进行比较( e q u a l s \color{red}{equals} equals);如果相同,则进行删除操作
public static void deleteStudent(ArrayList<Student> arr) {
Scanner sc = new Scanner(System.in);
// 提示用户输入
System.out.println("请输入您需要删除学生的学号:");
String sid = sc.nextLine();//变量sid接收输入的值
// 创建变量并接收学生学号
// 使用循环进行遍历
for (int i = 0; i < arr.size(); i++) {
//
Student s = arr.get(i);
if (s.getSid().equals(sid)) {
arr.remove(i);
}
System.out.println("删除成功!");
}
修改学生页面的编写
分析思路如下:
1.给出提示信息并保存用户输入的学生数据
2.使用 s e t ( ) 方 法 \color{red}{set()方法} set()方法对学生信息进行修改
3.遍历学生对象,如果学生的学号和键盘录入的学生学号相同,则进行修改操作,并给出修改成功的提示
public static void updateStudent(ArrayList<Student> arr) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您需要修改信息的学生的学号:");
String sid = sc.nextLine();
System.out.println("请输入学生新姓名:");
String name = sc.nextLine();
System.out.println("请输入学生新年龄:");
String age = sc.nextLine();
System.out.println("请输入学生新住址:");
String address = sc.nextLine();
// 创建学生对象
Student s = new Student();
// 开始进行修改
s.setSid(sid);
s.setName(name);
s.setAge(age);
s.setAddress(address);
// 遍历学生信息
for (int i = 0; i < arr.size(); i++) {
// 获取每个学生对象
Student student = arr.get(i);
if (student.getSid().equals(sid))
//使用集合进行学生信息的修改
arr.set(i, s);
break;
}
System.out.println("修改成功!");
}
到这里,一个简单的学生管理系统大致就做好了,当然还有一些小bug,比如学号重复,学号不存在等等,我相信根据上面的案例,您应该也能将这些bug修复啦,有什么不理解的可以联系我,也欢迎您的批评指正,谢谢您了。