验内容及要求:
针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下:
添加学生:通过键盘录入学生信息,添加到集合中
删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:将集合中的学生对象信息进行展示
退出系统:结束程序。
实现步骤:
1. 定义学生类,包含以下成员变量
private String sid // 学生id
private String name // 学生姓名
private String age // 学生年龄
private String address // 学生所在地
2. 学生管理系统主界面的搭建步骤
2.1 用输出语句完成主界面的编写
2.2 用Scanner实现键盘输入
2.3 用switch语句完成选择的功能
2.4 用循环完成功能结束后再次回到主界面
3. 学生管理系统的添加学生功能实现步骤
3.1 定义一个方法,接收ArrayList<Student>集合
3.2 方法内完成添加学生的功能
①键盘录入学生信息
②根据录入的信息创建学生对象
③将学生对象添加到集合中
④提示添加成功信息
3.3 在添加学生的选项里调用添加学生的方法
4. 学生管理系统的查看学生功能实现步骤
4.1 定义一个方法,接收ArrayList<Student>集合
4.2 方法内遍历集合,将学生信息进行输出
4.3 在查看所有学生选项里调用查看学生方法
5. 学生管理系统的删除学生功能实现步骤
5.1 定义一个方法,接收ArrayList<Student>集合
5.2 方法中接收要删除学生的学号
5.3 遍历集合,获取每个学生对象
5.4 使用学生对象的学号和录入的要删除的学号进行比较,如果相同,则将当前学生对象从集合中删除
5.5 在删除学生选项里调用删除学生的方法
6. 学生管理系统的修改学生功能实现步骤
6.1 定义一个方法,接收ArrayList<Student>集合
6.2 方法中接收要修改学生的学号
6.3 通过键盘录入学生对象所需的信息,并创建对象
6.4 遍历集合,获取每一个学生对象。并和录入的修改学生学号进行比较.如果相同,则使用新学生对象替换当前学生对象:
6.5 在修改学生选项里调用修改学生的方法
7. 退出系统
使用外层循环添加标记,终止系统
实体类代码:Student
package SY13;
public class Student {
private String sid; // 学生id
private String name ; // 学生姓名
private String age ; // 学生年龄
private String address ; // 学生所在地
public Student() {
}
public Student(String sid, String name, String 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 String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
测试类和方法体:Test
package SY13;
import java.util.ArrayList;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
ArrayList<Student> list=new ArrayList<>();
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("请输入您的选择(例如,输入1代表添加学生!):");
String choice = sc.next();
back:
switch (choice){
case "1":
addStudent(list);
break;
case "2":
deleteStudent(list);
break;
case "3":
updateStudent(list);
break;
case "4":
queryStudents(list);
break;
case "5":
System.out.println("退出成功");
break back;
default:
System.out.println("您的输入有误");
break;
}
}
}
public static void addStudent(ArrayList<Student> list){
Scanner sc=new Scanner(System.in);
String sid;
while (true){
System.out.println("请输入学号:");
sid=sc.next();
int index=getIndex(list,sid);
if(index==-1){
break;
}
}
System.out.println("请输入姓名:");
String name = sc.next();
System.out.println("请输入年龄:");
String age = sc.next();
System.out.println("请输入地址:");
String address = sc.next();
Student stu=new Student(sid,name,age,address);
list.add(stu);
System.out.println("恭喜添加成功!");
}
public static void deleteStudent(ArrayList<Student> list){
System.out.println("请输入你要删除的学生学号:");
Scanner sc = new Scanner(System.in);
String delSid=sc.next();
int index =getIndex(list,delSid);
if(index==-1){
System.out.println("输入的学号不存在,请重新输入:");
}else {
list.remove(index);
System.out.println("该学生已删除!");
}
} public static void updateStudent(ArrayList<Student> list){
System.out.println("请输入需要需改学生的学号:");
Scanner sc =new Scanner(System.in);
String updatesid=sc.next();
int index =getIndex(list,updatesid);
if(index==-1) {
System.out.println("没有需要修改的该学生的信息,请重新输入:");
}else {
System.out.println("请输入新的学生姓名:");
String name = sc.next();
System.out.println("请输入新的学生年龄:");
String age = sc.next();
System.out.println("请输入新的学生地址:");
String address=sc.next();
Student stu =new Student(updatesid,name ,age,address);
list.set(index,stu);
System.out.println("信息修改完成!");
}
}
public static void queryStudents(ArrayList<Student> list){
if(list.size() == 0){
System.out.println("无信息, 请添加后重新查询");
return;
}
System.out.println("学号\t\t姓名\t\t年龄\t\t地址");
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println(stu.getSid() + "\t\t" + stu.getName() + "\t\t" + stu.getAge() + "\t\t" + stu.getAddress());
}
}
public static int getIndex(ArrayList<Student> list, String sid){
// 1. 假设传入的学号, 在集合中不存在
int index = -1;
// 2. 遍历集合, 获取每一个学生对象, 准备进行查找
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
// 3. 获取每一个学生对象的学号
String id = stu.getSid();
// 4. 使用获取出的学生学号, 和传入的学号(查找的学号)进行比对
if(id.equals(sid)){
// 存在: 让index变量记录正确的索引位置
index = i;
}
}
return index;
}
}