一、思路分析
1.既然是学生管理系统,所以要定义学生类,成员属性:学生学号、姓名、年龄、地址
2.容器(使用ArrayList)需要定义学生对象集合,存入学生对象
3.对学生对象集合实现增删改查
注意:学生学号存入在对象中不能重复
(注意看代码注释)
二、创建学生类
public class Student {
//学号(不能重复)
private String Id;
//学生名称
private String name;
//年龄,使用Integer的原因是int默认是0,而Intefer默认是null
private Integer age;
//地址
private String addres;
}
(1)并对学生类创建get和set方法,并创建出有参构造函数,可以使用IDEA快捷键aie+insert
注意:如果有报错请注意看包名是否更改
package Thirteen;
public class Student {
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public Student(String id, String name, Integer age, String addres) {
Id = id;
this.name = name;
this.age = age;
this.addres = addres;
}
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 getAddres() {
return addres;
}
public void setAddres(String addres) {
this.addres = addres;
}
//学号(不能重复)
private String Id;
//学生名称
private String name;
//年龄,使用Integer的原因是int默认是0,而Intefer默认是null
private Integer age;
//地址
private String addres;
}
三、创建一个学生主界面类
package Thirteen;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentManage {
//学生对象集合
private static ArrayList<Student> stus = new ArrayList<Student>();
//控制循环是否继续循环
private volatile static boolean isRun = true;
public static void main(String[] args) {
//使用while循环,让每次序号输入之后可以回到主界面
while (isRun) {
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("请选择1-5");
//获取键盘输入选择几号
Scanner S = new Scanner(System.in);
int number = S.nextInt();
//判断方式 switch()或if
switch (number) {
case 1:
System.out.println("新增学生");
addStudent();
break;
case 2:
System.out.println("修改学生");
updateStudent();
break;
case 3:
System.out.println("删除学生");
deleteStudent();
break;
case 4:
System.out.println("查询学生");
showStudent();
break;
case 5:
isRun=false;
System.out.println("退出系统");
break;
// 加return可以直接退出 return;
}
}
}
//新增学生
public static void addStudent() {
Scanner Sc = new Scanner(System.in);
System.out.println("请输入学号");
String stuId = Sc.nextLine();//获取键盘输入,并保存学号到stuId中
//根据学号去集合查询,不能重复学号
Student student = getByStuIdStudent(stuId);
if (student != null) {
//在集合中查询到学号已经重复,不能添加了
System.out.println("这个学号已经被" + student.getName() + "使用,请重新输入");
return;//程序不会继续向下执行
}
System.out.println("请输入姓名");
String name = Sc.nextLine();//获取键盘输入,并保存学号到name中
System.out.println("请输入年龄");
Integer age = Sc.nextInt();//获取键盘输入,并保存学号到age中
System.out.println("请输入地址");
String address = Sc.nextLine();//获取键盘输入,并保存学号到addres中
//将学生的信息存入到集合中
stus.add(new Student(stuId, name, age, address));
System.out.println("新增完毕");//提示新增完成
}
//学号防止重复方法
public static Student getByStuIdStudent(String stuId) {
return getByStuIdStudent(stuId, false);
}
//是否删除
public static Student getByStuIdStudent(String stuId, boolean isDelete) {
for (int i = 0; i < stus.size(); i++) {
Student student = stus.get(i);
if (student.getId().equals(stuId)) {
if (isDelete) {
//根据学生信息,如果为true就删除
return stus.remove(i);//删除之后,就返回对象
}
return student;
}
}
return null;
}
//查询学生
public static void showStudent() {
if (stus.size() == 0) {
System.out.println("-------此集合没有存入对象------");
return;//程序不会向下继续执行
}
System.out.println("学号\t姓名\t年龄\t地址");
for (int i = 0; i < stus.size(); i++) {
Student student = stus.get(i);
System.out.println(student.getId() + "\t" + student.getName() + "\t" + student.getAge() + "\t" + student.getAddres());
}
}
//删除方法
public static void deleteStudent() {
System.out.println("请输入想要删除的学号");
Scanner Sc = new Scanner(System.in);
String stuId = Sc.nextLine();
Student student = getByStuIdStudent(stuId, true);
if (student == null) {
System.out.println("没有找到这个学号");
return;
}
}
//修改学生信息
public static void updateStudent(){
//根据学号
System.out.println("请输入对应的学号");
Scanner Sc=new Scanner(System.in);
String stuId = Sc.nextLine();
//根据学号查找对象
Student student=getByStuIdStudent(stuId);
if (student==null){
System.out.println("集合中没找到学号的对象");
return;
}
System.out.println("请输入需要修改的名称:");
String newName =Sc.nextLine();
System.out.println("请输入需要修改的年龄:");
Integer newAge=Sc.nextInt();
System.out.println("请输入需要修改的地址");
String newAddress=Sc.nextLine();
student.setAge(newAge);
student.setAddres(newAddress);
student.setName(newName);
System.out.println("修改成功");
}
}