在发布这个学生管理系统的时候,关于学生管理系统已经写了好几个版本了,写过数组版,还有IO流版,当然,集合和数组迅速的数据不是永久的,只是暂时存储在JVM中,思路在我以前发布的一个文章中已经介绍过了,本次主要是标准化了在写代码的时候的一些不好的习惯,例如,封住的方法中所用到的数据要来自于参数,而不是自己用Scanner输入,话不多说,直接上代码;如若需要源码,可直接复制过去,自己创建类,粘贴进去可直接运行;
学生类
public class Student {
private int id;
private String name;
private int age;
public Student() {
}
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
接口
public interface StudentService {
/**
* 定义添加方法
*/
void add(ArrayList<Student> list, Student student);
/**
* 定义删除学生方法
*/
void delete(ArrayList<Student> list, int deleteID);
/**
* 定义修改学生的方法
*/
void update(ArrayList<Student> list, Student student);
/**
* 定义一个查询所有学生信息方法
*/
void select(ArrayList<Student> list);
/**
* 定义一个查询单个学生信息方法
*/
void selectOne(ArrayList<Student> list, int selectID);
}
接口实现类
public class StudentServiceImpl implements StudentService{
/**
* 定义添加方法
*/
public void add(ArrayList<Student> list, Student student) {
if (Utils.isSave(list, student.getId())) {
//存在,提示重新输入
System.out.println("学号已存在,请重新输入");
return;
}
//将学生对象添加到集合
list.add(student);
System.out.println("添加成功");
}
/**
* 定义删除学生方法
*/
public void delete(ArrayList<Student> list,int deleteID) {
//id不存在的情况
if (!(Utils.isSave(list, deleteID))) {
//查无此人
System.out.println("查无此人!!!");
} else {
//存在
try {//将所有学生都删除时,会有异常
for (Student student : list) {
if (deleteID == student.getId()) {
list.remove(student);
System.out.println("删除成功");
}
}
}catch (ConcurrentModificationException e){
// throw new ConcurrentModificationException("暂无数据!!!");
System.out.println("暂无数据,学生数据已清空");
}
}
}
/**
* 定义修改学生的方法
*/
public void update(ArrayList<Student> list,Student student) {
//判断学号是否存在
if (!(Utils.isSave(list, student.getId()))) {
//不存在
System.out.println("查无此人");
} else {
for (int i = 0; i < list.size(); i++) {
if (student.getId() == list.get(i).getId()) {
list.set(i, student);
System.out.println("修改成功!!!");
}
}
}
}
/**
* 定义一个查询所有学生信息方法
*/
public void select(ArrayList<Student> list) {
//遍历集合
System.out.println("学号\t\t" + "姓名\t\t" + "年龄");
for (Student student : list) {
System.out.println(student.getId() + "\t\t" + student.getName() + "\t\t" + student.getAge());
}
}
/**
* 定义一个查询单个学生信息方法
*/
public void selectOne(ArrayList<Student> list,int selectID) {
//判断学号是否存在
if (!(Utils.isSave(list, selectID))) {
//学号不存在的情况
System.out.println("查无此人");
} else {
//存在
for (Student student : list) {
//判断学号是否存在
if (selectID == student.getId()) {
//存在
System.out.println("学号\t\t" + "姓名\t\t" + "年龄");
System.out.println(student.getId() + "\t\t" + student.getName() + "\t\t" + student.getAge());
}
}
}
}
}
工具类
public class Utils {
/**
* 定义一个显示界面方法
*/
public static void display() {
//将学生对象添加到集合
ArrayList<Student> list = new ArrayList<>();
StudentServiceImpl service = new StudentServiceImpl();
while (true) {
//1.欢迎用户
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("6----退出学生");
System.out.println("请输入你的选择");
//用户输入选项
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
//switch进行判断
switch (num) {
case 1:
//添加学生
System.out.println("请输入学号");
int id = scanner.nextInt();
System.out.println("请输入姓名");
String name = scanner.next();
System.out.println("请输入年龄");
int age = scanner.nextInt();
Student student = new Student(id, name, age);
service.add(list,student);
break;
case 2:
//删除学生
System.out.println("请输入删除学生的学号");
int deleteID = scanner.nextInt();
service.delete(list,deleteID);
break;
case 3:
//修改学生
System.out.println("请输入学号");
int updateID = scanner.nextInt();
System.out.println("请输入姓名");
String updateName = scanner.next();
System.out.println("请输入年龄");
int updateAge = scanner.nextInt();
//创建学生对象
Student s = new Student();
s.setId(updateID);
s.setName(updateName);
s.setAge(updateAge);
service.update(list,s);
break;
case 4:
//查询所有学生
service.select(list);
break;
case 5:
//查询单个学生
System.out.println("请输入查询的学号");
int selectID = scanner.nextInt();
service.selectOne(list,selectID);
break;
case 6:
System.out.println("退出");
return;
default:
System.out.println("输入有误");
break;
}
}
}
/**
* 定义一个方法,判断学号是否存在
*/
public static boolean isSave(ArrayList<Student> list, int id) {
//遍历集合,判断是否存在
for (Student student : list) {
if ((id == student.getId())) {
return true;
}
}
return false;
}
/**
* 定义一个判断集合是否为空
*/
public static boolean isEmpty(ArrayList<Student> list) {
if (list.size() == 0) {
return true;
}
return false;
}
}
测试类
public class TestServer {
@Test
public void test01() {
Utils.display();
}
}