1.需求:
学生管理系统功能: 按1添加学生对象,按2查询学生,按3删除学生,按4修改学生属性,按5查看所有学生,按6退出。
2.主要知识点:
(1)类的创建,私有成员对象,带参/不带参构造方法,set/get方法,其它行为方法。
(2)集合的构造方法,集合方法(增add、删remove、改set、查get、长度size)。
(3)字符串的常用方法,比较equals()等。
(4)其它内容,包括数据类型、键盘键入scanner,输出sout等。
3.Tips
(1)练习使用快捷方法,如alt+insert、ctrl+p、ctrl+D、.sout等。
(2)使用break结束循环或return间接结束。
(3)比较姓名字符串时使用equals方法,而不用==,因为==是用于比较地址符,虽然equals方法默认底层也是使用==比较地址符,但String默认重写了equals方法,是对值进行比较而不是地址。
4.详细代码
main:
public class StudentManageSystem {
public static void main(String[] args) {
// 需求:实现功能,按1添加学生,2查询学生,3,删除学生,4.修改学生,5.查看所有学生,6.退出
// 1.创建储存学生对象的集合
ArrayList<Student> studentsList = new ArrayList<>();
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("按6退出");
Scanner sc = new Scanner(System.in);
// 2. 接收数字
int input = sc.nextInt();
// 3. 实现功能
if (input == 1) {
addStudent(studentsList);
}
if (input == 2) {
searchStudent(studentsList);
}
if (input == 3) {
deleteStudent(studentsList);
}
if (input == 4) {
setStudent(studentsList);
}
if (input == 5) {
System.out.println("姓名——年龄——性别——id——地址");
findStudent(studentsList);
}
if (input == 6) {
break;
}
}
}
// (1)设置添加学生方法
public static void addStudent(ArrayList<Student> studentList) {
System.out.println("开始添加学生信息,请输入学生姓名");
Scanner sc = new Scanner(System.in);
String name = sc.next();
System.out.println("请输入年龄");
int age = sc.nextInt();
System.out.println("请输入性别");
String gender = sc.next();
System.out.println("请输入ID");
int id = sc.nextInt();
System.out.println("请输入地址");
String address = sc.next();
// 创建对象
Student s = new Student(name, age, gender, id, address);
// 添加至集合
studentList.add(s);
}
// (2)设置查找学生方法
public static void searchStudent(ArrayList<Student> studentsList) {
System.out.println("输入需查找学生的姓名");
Scanner sc = new Scanner(System.in);
// 录入需查找的学生姓名
String name = sc.next();
// 考虑空集
if (studentsList.size() == 0) {
System.out.println("目前为空集");
return;
}
// 遍历集合查找姓名
for (int i = 0; i < studentsList.size(); i++) {
// 获取student对象
Student s = studentsList.get(i);
// 判断是否有相等姓名
if (name.equals(s.getName())) {//注意比较内容需要用equals方法
System.out.println("已找到");
// 输出此人详细姓名
System.out.println(s.getName() + ",年龄" + s.getAge() + ",性别" + s.getGender() + ",ID号" + s.getId() + ",住在" + s.getAddress());
return;
} else {
System.out.println("查无此人");
}
}
}
// (3)删除学生对象
private static void deleteStudent(ArrayList<Student> studentsList) {
System.out.println("输入需要删除的学生的姓名");
Scanner sc = new Scanner(System.in);
// 录入需查找的学生姓名
String name = sc.next();
// 考虑空集
if (studentsList.size() == 0) {
System.out.println("目前为空集");
return;
}
// 遍历集合查找姓名
for (int i = 0; i < studentsList.size(); i++) {
// 获取student对象
Student s = studentsList.get(i);
// 判断是否有相等姓名
if (name.equals(s.getName())) {//注意比较内容需要用equals方法
studentsList.remove(s);
System.out.println("删除");
return;
} else {
System.out.println("查无此人");
return;
}
}
}
// (4) 修改学生信息
private static void setStudent(ArrayList<Student> studentsList) {
System.out.println("输入需要修改学生的姓名");
// 考虑空集
if (studentsList.size() == 0) {
System.out.println("目前为空集");
return;
}
Scanner sc = new Scanner(System.in);
// 录入需查找的学生姓名
String name = sc.next();
// 需修改的属性
System.out.println("输入需要修改属性");
String className = sc.next();
// 遍历集合查找姓名
for (int i = 0; i < studentsList.size(); i++) {
// 找到需要修改的对象,再找到需要修改的属性
Student s = studentsList.get(i);
if (name.equals(s.getName())) {
System.out.println("输入新内容");
if (className.equals("姓名")) {
s.setName(sc.next());
break;
}
else if (className.equals("性别")) {
s.setGender(sc.next());
break;
}
else if (className.equals("年龄")) {
s.setAge(sc.nextInt());
break;
}
else if (className.equals("id")) {
s.setId(sc.nextInt());
break;
}
else if (className.equals("地址")) {
s.setAddress(sc.next());
break;
}
else{
System.out.println("输入不合法");
return;
}
}
}
System.out.println("修改完成");
}
// (5)设置查看学生方法
public static void findStudent(ArrayList<Student> studentList) {
for (int i = 0; i < studentList.size(); i++) {
// 获取student对象
Student s = studentList.get(i);
// 读取对象中属性(成员变量)
System.out.println(s.getName() + "——" + s.getAge() + "——" + s.getGender() + "——" + s.getId() + "——" + s.getAddress());
}
}
}
Student 类:
public class Student {
private String name;
private int age;
private String gender;
private int id;
private String address;
public Student() {
}
public Student(String name, int age, String gender, int id, String address) {
this.name = name;
this.age = age;
this.gender = gender;
this.id = id;
this.address = address;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
/**
* 获取
* @return gender
*/
public String getGender() {
return gender;
}
/**
* 设置
* @param gender
*/
public void setGender(String gender) {
this.gender = gender;
}
/**
* 获取
* @return id
*/
public int getId() {
return id;
}
/**
* 设置
* @param id
*/
public void setId(int id) {
this.id = id;
}
/**
* 获取
* @return address
*/
public String getAddress() {
return address;
}
/**
* 设置
* @param address
*/
public void setAddress(String address) {
this.address = address;
}
}