学生管理系统(ArrayList简易版)
学生管理系统实现思路
① 定义学生类
② 主界面的代码编写
③ 添加学生的代码编写
④ 查看学生的代码编写
⑤ 删除学生的代码编写
⑥ 修改学生的代码编写
⑦ 解决添加学生学号重复的问题
⑧ 解决删除/修改学生学号不存在的问题
定义学生类
-
学生类:
- Student
-
成员变量:
- 学号:sid
- 姓名:name
- 年龄:age
- 居住地:address
-
构造方法:
- 无参构造
- 带四个参数的构造
-
成员方法:
- 每个成员变量对应的get/set方法
这里的构造方法和成员方法可以使用Alt+Ins组合键生成即可
package cn.wolfcode;
public class Student {
//学号
private String sid;
//姓名
private String name;
//年龄
private Integer age;
//居住地
private String address;
public Student() {
}
public Student(String sid, String name, Integer 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 getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
下面是分模块编写代码,完整的StudentManager代码在最下面
主界面的代码编写
思路:
① 用输出语句完成主界面的编写
② 用Scanner实现舰炮录入数据
③ 用switch语句完成操作的选择
④ 用循环完成再次回到主界面
主界面示例图:
package cn.wolfcode;
import java.util.Scanner;
public class StudentManager {
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
List<Student> array = new ArrayList<>();
a : 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("请输入你的选择:");
int i = sc.nextInt();
/*
* 这里先用文字代替方法,等后面写完方法再删掉这个,改成调用方法
*/
switch (i) {
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 a;
}
}
}
}
添加学生的代码编写
思路:
- 用键盘录入选择添加学生
- 定义一个方法,用于添加学生
- 显示提示信息,提示要录入是吗信息
- 键盘录入学生对象所需的数据
- 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
- 将学生对象添加到集合中(保存)
- 给出添加成功提示
- 调用方法
//添加学生
private static void add(List<Student> array) {
System.out.println("请输入学生的学号:");
String sid = sc.next();
System.out.println("请输入学生的姓名:");
String name = sc.next();
System.out.println("请输入学生的年龄:");
int age = sc.nextInt();
System.out.println("请输入学生的地址:");
String address = sc.next();
Student student = new Student(sid, name, age, address);
array.add(student);
System.out.println("学生信息添加成功");
}
再把case1中的控制台打印改成调用方法
case 1:
add(array);
break;
查看学生的代码编写
思路:
- 用键盘录入选择查看所有学生信息
- 定义一个方法,用于查看学生学习
- 判断集合中是否有学生信息,如果没有显示提示信息
- 显示表头信息
- 将集合中数据取出按照对应格式显示学生信息
- 调用方法
//查看学生
private static void selectAll(List<Student> array) {
if(array.isEmpty()) {
System.err.println("无信息,请添加消息再查询!");
return;
}
//显示表头
System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");
//for循环遍历array集合
for(int i=0; i<array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getSid()+ "\t\t" + s.getName() + "\t\t" + s.getAge() + "岁\t" + s.getAddress());
}
}
再把case4中的控制台打印改成调用方法
case 4:
selectAll(array);
break;
删除学生的代码编写
思路:
- 用键盘录入选择删除学生信息
- 定义一个方法,用于删除学生信息
- 显示提示信息
- 键入要删除的学生学号
- 遍历集合将对应的学生对象从集合中删除
- 给出删除成功提示
- 调用方法
//删除学生
private static void delete(List<Student> array) {
System.out.println("请输入要删除的学生学号");
String sid = sc.next();
for(int i=0; i<array.size(); i++) {
if(sid.equals(array.get(i).getSid())) {
array.remove(i);
}
}
System.out.println("学生信息删除成功");
}
再把case2中的控制台打印改成调用方法
case 2:
delete(array);
break;
修改学生的代码编写
思路:
- 用键盘录入选择修改学生信息
- 定义一个方法,用于修改学生信息
- 显示提示信息
- 键入要修改的学生学号
- 键入要修改的学生信息
- 遍历集合修改对应的学生信息
- 给出修改成功提示
- 调用方法
//修改学生信息
private static void update(List<Student> array) {
System.out.println("请输入要修改信息的学生学号");
String sid = sc.next();
System.out.println("请输入学生的新姓名:");
String name = sc.next();
System.out.println("请输入学生的新年龄:");
int age = sc.nextInt();
System.out.println("请输入学生的新地址:");
String address = sc.next();
Student student = new Student(sid, name, age, address);
for(int i=0; i<array.size(); i++) {
if(sid.equals(array.get(i).getSid())) {
array.set(i,student);
}
}
System.out.println("学生信息修改成功");
}
再把case3中的控制台打印改成调用方法
case 3:
update(array);
break;
解决添加学生学号重复的问题
思路:
- 定义一个方法,对学号是否被使用进行判断
- 如果与集合中的某个学生学号相同,返回true
- 否则,返回false
- 在添加学生录入学号后调用该方法
- 如果返回true,弹出提示,重新输入学号
- 否则可以正常添加学生对象
//判断学号是否重复
private static boolean hasSid(List<Student> array, String sid) {
for(int i=0; i<array.size(); i++) {
if(sid.equals(array.get(i).getSid())) {
return true;
}
}
return false;
}
编写完方法后修改添加学生对象的代码
//添加学生
private static void add(List<Student> array) {
String sid = null;
while (true) {
System.out.println("请输入学生的学号:");
sid = sc.next();
if (hasSid(array, sid)) {
System.out.println("你输入的学号已被占用,请重新输入学号");
} else {
break;
}
}
System.out.println("请输入学生的姓名:");
String name = sc.next();
System.out.println("请输入学生的年龄:");
int age = sc.nextInt();
System.out.println("请输入学生的地址:");
String address = sc.next();
Student student = new Student(sid, name, age, address);
array.add(student);
System.out.println("学生信息添加成功");
}
解决删除/修改学生学号不存在的问题
思路:
- 调用
hasSid(array, sid)
判断学号是否存在
- 如果返回false,弹出提示,重新输入学号
- 否则可以正常删除/修改学生对象
由于修改删除与修改方法的代码一样,这里只演示删除方法,想看修改方法可在下面全部完整代码中查看
//删除学生
private static void delete(List<Student> array) {
String sid;
while(true) {
System.out.println("请输入要删除的学生学号");
sid = sc.next();
if (!hasSid(array, sid)) {
System.err.println("该信息不存在,请重新输入");
} else {
break;
}
}
for(int i=0; i<array.size(); i++) {
if(sid.equals(array.get(i).getSid())) {
array.remove(i);
}
}
System.out.println("学生信息删除成功");
}
由于是简易版的学生管理系统,所以就完成基本的CRUD就差不多了,后面可能还会有进阶版的学生管理系统,着急的同学也可以私信我了解一下
下面给一下完整的StudentManager的代码
package cn.wolfcode;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class StudentManager {
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
List<Student> array = new ArrayList<>();
//这里是我用来做测试的,不想要的童鞋可以把这段删了
Student s1 = new Student("001", "xhm", 12, "blw");
Student s2 = new Student("002", "pdx", 12, "dst");
Student s3 = new Student("003", "zyg", 21, "rlx");
array.add(s1);
array.add(s2);
array.add(s3);
a:
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("请输入你的选择:");
int i = sc.nextInt();
switch (i) {
case 1:
add(array);
break;
case 2:
delete(array);
break;
case 3:
update(array);
break;
case 4:
selectAll(array);
break;
case 5:
System.out.println("谢谢使用");
break a;
}
}
}
//添加学生
private static void add(List<Student> array) {
String sid = null;
while (true) {
System.out.println("请输入学生的学号:");
sid = sc.next();
if (hasSid(array, sid)) {
System.err.println("你输入的学号已被占用,请重新输入学号");
} else {
break;
}
}
System.out.println("请输入学生的姓名:");
String name = sc.next();
System.out.println("请输入学生的年龄:");
int age = sc.nextInt();
System.out.println("请输入学生的地址:");
String address = sc.next();
Student student = new Student(sid, name, age, address);
array.add(student);
System.out.println("学生信息添加成功");
}
//查看学生
private static void selectAll(List<Student> array) {
if (array.isEmpty()) {
System.err.println("无信息,请添加消息再查询!");
return;
}
//显示表头
System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");
//for循环遍历array集合
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getSid() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "岁\t" + s.getAddress());
}
}
//删除学生
private static void delete(List<Student> array) {
String sid;
while(true) {
System.out.println("请输入要删除的学生学号");
sid = sc.next();
if (!hasSid(array, sid)) {
System.err.println("该信息不存在,请重新输入");
} else {
break;
}
}
for(int i=0; i<array.size(); i++) {
if(sid.equals(array.get(i).getSid())) {
array.remove(i);
}
}
System.out.println("学生信息删除成功");
}
//修改学生信息
private static void update(List<Student> array) {
String sid;
while(true) {
System.out.println("请输入要修改信息的学生学号");
sid = sc.next();
if (!hasSid(array, sid)) {
System.err.println("该信息不存在,请重新输入");
} else {
break;
}
}
System.out.println("请输入学生的新姓名:");
String name = sc.next();
System.out.println("请输入学生的新年龄:");
int age = sc.nextInt();
System.out.println("请输入学生的新地址:");
String address = sc.next();
Student student = new Student(sid, name, age, address);
for(int i=0; i<array.size(); i++) {
if(sid.equals(array.get(i).getSid())) {
array.set(i,student);
}
}
System.out.println("学生信息修改成功");
}
//判断学号是否重复
private static boolean hasSid(List<Student> array, String sid) {
for(int i=0; i<array.size(); i++) {
if(sid.equals(array.get(i).getSid())) {
return true;
}
}
return false;
}
}