一、题目
1. 程序启动时,读取一个预设的学生数组,其中已经保存了学生信息(包括学生姓名、学号、出生日期、性别、联系方式等)。
2. 程序提供以下操作选项: - 显示所有学生的信息 - 通过学号查找学生的信息 - 添加新的学生信息 - 修改学生信息 - 删除学生信息 - 退出程序
3. 添加新的学生信息时,要求输入学生所有信息,并自动添加到学生数组中,学号自动生成,不能与已有学生的学号重复。
4. 修改学生信息时,提示用户输入要修改的学生的学号,然后允许用户修改该学生的信息(包括姓名、出生日期、性别、联系方式等)。
5. 删除学生信息时,提示用户输入要删除的学生的学号,并将该学生从学生数组中删除。
6. 修改、添加和删除学生信息后,重新显示所有学生的信息。
二、程序
2.1 Student.java
package Student;/*** 学生类* author:fcx* version:1.0* since:1.0*/
public class Student {/*** 姓名*/private String name;/*** 学号*/private int num;/*** 出生日期*/private String birth;/*** 性别*/private boolean gender;/*** 电话*/private String phone;public Student() {}public Student(String name, int num, String birth, boolean gender, String phone) {this.name = name;this.num = num;this.birth = birth;this.gender = gender;this.phone = phone;}public Student(String name, String birth, boolean gender, String phone) {this.name = name;this.birth = birth;this.gender = gender;this.phone = phone;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}public String getBirth() {return birth;}public void setBirth(String birth) {this.birth = birth;}public boolean isGender() {return gender;}public void setGender(boolean gender) {this.gender = gender;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}@Overridepublic String toString() {return "姓名:" + this.getName() + ",学号:" + this.getNum() + ",出生日期:"+ this.getBirth() + ",性别:" + (this.isGender() == true ? "女":"男") + ",联系方式:" + this.getPhone();}public boolean equals(Object obj){if(obj == null){return false;}if(this == obj){return true;}if(obj instanceof Student){Student d = (Student) obj;return d.getNum() == this.getNum();//如果学号相同,就表示是同一个学生}return false;}
}
2.2 Management.java
package Student;
/*** 学生业务类*/import java.util.Scanner;
public class Manager {/*** 默认初始化的时候,Student数组中10个学生。*/private Student[] student = new Student[10];Scanner scanner = new Scanner(System.in);public Manager() {student[0] = new Student("茉莉", 30101, "2001.2.16", false, "19913855801");student[1] = new Student("牡丹", 30102, "2001.3.16", true, "19913828802");student[2] = new Student("玫瑰", 30103, "2001.2.14", false, "19913828803");student[3] = new Student("月季", 30104, "2001.2.16", true, "19913828804");student[4] = new Student("菊花", 30105, "2001.5.16", false, "19913828805");student[5] = new Student("芍药", 30106, "2001.2.15", false, "19913828806");student[6] = new Student("兰花", 30107, "2001.7.16", true, "19913828807");student[7] = new Student("睡莲", 30108, "2001.2.18", false, "19913828808");student[8] = new Student("甘菊", 30109, "2001.2.26", true, "19913828809");student[9] = new Student("海棠", 30110, "2001.1.16", true, "19913828810");}/*** 显示所有学生信息*/public void display(){for(int i = 0; i <= student.length-1;i ++){if(student[i] != null){ // 筛出没有学生的,不显示,只显示有学生信息的。System.out.println(student[i].toString());}}}/*** 显示一个学生信息* @param findnum*/public void find(int findnum){int flag = 0;for(Student student : student) {//这个循环会遍历 student 集合中的每一个 Student 对象,将当前的 Student 对象赋值给变量 student 。if (student.getNum() == findnum) {flag = 1;System.out.println("您要查找的学生信息如下:");System.out.println(student);}}if(flag == 0){System.out.println("学号输入错误,查无此人!");}}/*** 增加一个学生* @param stu*/public void add(Student stu){for(int i = 0;i < student.length; i ++){if(student[i] == null){student[i] = stu;System.out.println("添加学生成功!");return;}}//程序如果执行到这里说明没有空位置//新建数组,扩容,将老数组拷贝到新数组中Student[] students = new Student[student.length + 1];System.arraycopy(student,0,students,0,student.length);// 学号+1int no = this.student[students.length - 2].getNum() + 1; //注意下标越界stu.setNum(no);//设置学号//这一步很重要,因为其他的方法中都用的是student数组this.student = students;this.student[this.student.length - 1] = stu; //注意下标越界System.out.println("添加学生成功!");}public void modify(Student stu){System.out.println("student.length:" + student.length);for(int i = 0;i < student.length;i++){if(student[i] != null && student[i].equals(stu)){student[i] = stu;System.out.println("修改学生信息成功!");return;}}System.out.println("学号输入错误!");}public void delete(int deletenum){int flag = 0;for(int i = 0;i < student.length;i++){if(student[i].getNum() == deletenum){student[i] = null;flag = 1;System.out.println("删除成功!");}}if(flag == 0){System.out.println("学号输入错误,请重新输入!");}System.out.println("删除成功!");}
}
2.3 Test.java
package Student;
import java.util.Scanner;
public class Test {public static void main(String[] args){System.out.println("欢迎来到学生管理系统~");Scanner scanner = new Scanner(System.in);Manager manager = new Manager();while(true){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.print("请选择需要实现的操作对应的序号:");int menu = scanner.nextInt();switch(menu) {case 1 -> {System.out.println("所有学生信息如下:");manager.display();}case 2 -> {System.out.print("请输入要查找的学生的学号:");int findnum = scanner.nextInt();manager.find(findnum);}case 3 ->{System.out.println("请输入要添加的学生信息!");System.out.print("请输入姓名:");String name = scanner.next();System.out.print("请输入生日:");String birth = scanner.next();System.out.print("请输入性别:");boolean gender = scanner.nextBoolean();System.out.print("请输入电话:");String phone = scanner.next();//封装学生对象Student students = new Student(name,birth,gender,phone);manager.add(students);System.out.println("添加学生后的学生信息如下:");manager.display();}case 4 ->{System.out.print("请输入您要修改的学生的学号:");int modifynum = scanner.nextInt();manager.find(modifynum);System.out.print("请输入所要修改学生的姓名:");String modifyname = scanner.next();System.out.print("请输入所要修改学生的出生日期:");String modifydate = scanner.next();System.out.print("请输入所要修改学生的性别:");boolean modifygender = scanner.nextBoolean();System.out.print("请输入所要修改学生的联系方式:");String modifyphone = scanner.next();Student student = new Student(modifyname,modifynum,modifydate,modifygender,modifyphone);manager.modify(student);System.out.println("修改后的学生信息如下:");manager.display();}case 5 ->{System.out.print("请输入需要删除学生的学号:");int deletenum = scanner.nextInt();manager.find(deletenum);manager.delete(deletenum);System.out.println("删除后的学生信息如下:");manager.display();}case 6 ->System.exit(0);}}}
}
三、小结
封装的重要性