java后端开发day18--学生管理系统
(以下内容全部来自上述课程)
1.业务分析并搭建主菜单
1.需求
采取控制台的方式去书写学生管理系统
2.分析
1.初始菜单
2.学生类
属性:id,姓名,年龄,家庭住址
3.添加功能
键盘录入每一个学生信息并添加,需要满足以下要求:
- id唯一
4.删除功能
键盘录入要删除的学生id,需要满足以下要求:
- id存在删除
- id不存在,需要提示不存在,并返回的初始菜单
5.修改功能
键盘录入要修改的学生id,需要满足以下要求:
- id存在,继续录入其他信息
- id不存在,需要提示不存在,并返回的初始菜单
6.查询功能
打印所有的学生信息,需要满足以下要求:
- 如果没有学生信息,提示:当前无学生信息,请添加后再查询
- 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
3.流程图
4.代码
1.Javabean
package xueshengguanli;
public class Student {
private String id;
private String name;
private int age;
private String address;
public Student() {
}
public Student(String id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
/**
* 获取
* @return id
*/
public String getId() {
return id;
}
/**
* 设置
* @param id
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取
* @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 address
*/
public String getAddress() {
return address;
}
/**
* 设置
* @param address
*/
public void setAddress(String address) {
this.address = address;
}
public String toString() {
return "Student{id = " + id + ", name = " + name + ", age = " + age + ", address = " + address + "}";
}
}
2.测试类
package xueshengguanli;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentSystem {
public static void main(String[] args) {
// 将 ArrayList<Student> 移到循环外部,确保操作的是同一个列表
ArrayList<Student> list = new ArrayList<>();
loop: 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("请输入你的选择:");
Scanner sc = new Scanner(System.in);
String choice = sc.next(); // 容错率
switch (choice) {
case "1":
System.out.println("添加学生");
// 调用添加学生的方法
addStudent(list);
break;
case "2":
System.out.println("删除学生");
// 调用删除学生的方法
deleteStudent(list);
break;
case "3":
System.out.println("修改学生");
// 调用修改学生的方法
updateStudent(list);
break;
case "4":
System.out.println("查询学生");
// 调用查询学生的方法
queryStudent(list);
break;
case "5":
System.out.println("退出");
break loop;
// System.exit(0); 停止虚拟机运行
default:
System.out.println("输入有误");
}
}
}
// 添加学生
public static void addStudent(ArrayList <Student> list){
// 利用空参构造方法创建一个新的学生对象
Student newStudent = new Student();
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生学号:");
String id = sc.next();
boolean flag = isExist(list,id);
if (flag) {
System.out.println("当前学号已存在,请重新输入");
return;
}
newStudent.setId(id);
System.out.println("请输入学生姓名:");
String name = sc.next();
newStudent.setName(name);
System.out.println("请输入学生年龄:");
int age = sc.nextInt();
newStudent.setAge(age);
System.out.println("请输入学生住址:");
String address = sc.next();
newStudent.setAddress(address);
// 把新的学生对象添加到集合中
list.add(newStudent);
// 提示添加成功
System.out.println("添加成功");
}
// 删除学生
public static void deleteStudent(ArrayList<Student> list){
Scanner sc = new Scanner(System.in);
System.out.println("请输入要删除的学生学号:");
String id = sc.next();
// 查询 id 在集合中的索引位置
int index = getIndex(list,id);
if (index == -1) {
System.out.println("当前学号不存在,请重新输入");
return;
}
// 删除
list.remove(index);
// 提示删除成功
System.out.println("删除成功");
}
// 修改学生
public static void updateStudent(ArrayList<Student> list) {
// 请输入要修改的 id
Scanner sc = new Scanner(System.in);
System.out.println("请输入要修改的学生学号:");
String id = sc.next();
// 查询 id 在集合中的索引位置
int index = getIndex(list,id);
if (index == -1) {
System.out.println("当前学号不存在,请重新输入");
return;
}
// 获取要修改的学生对象
Student student = list.get(index);
// 请输入要修改的学生信息
System.out.println("请输入要修改的学生姓名:");
String name = sc.next();
student.setName(name);
System.out.println("请输入要修改的学生年龄:");
int age = sc.nextInt();
student.setAge(age);
System.out.println("请输入要修改的学生住址:");
String address = sc.next();
student.setAddress(address);
// 提示修改成功
System.out.println("修改成功");
}
// 查询学生
public static void queryStudent(ArrayList<Student> list){
if (list.size() == 0) {
System.out.println("当前无学生信息,请添加后重试");
return;
}
// 输出表头
System.out.println("学号\t姓名\t年龄\t住址");
// 遍历原数组
for (int i = 0; i < list.size(); i++) {
// 获取当前学生对象
Student student = list.get(i);
// 输出当前学生对象的信息
System.out.println(student.getId() + "\t" + student.getName() + "\t"
+ student.getAge() + "\t" + student.getAddress());
}
}
// 判断当前 id 是否存在
public static boolean isExist(ArrayList<Student> list,String id){
// 遍历原数组
for (int i = 0; i < list.size(); i++) {
// 判断当前学生对象的 id 是否等于要判断的 id
if(list.get(i).getId().equals(id)){
// 如果相等,就返回 true
return true;
}
}
// 如果遍历完都没有相等的,就返回 false
return false;
}
// 通过 id 获取索引
public static int getIndex(ArrayList<Student> list,String id){
// 遍历原数组
for (int i = 0; i < list.size(); i++) {
// 判断当前学生对象的 id 是否等于要判断的 id
if(list.get(i).getId().equals(id)){
// 如果相等,就返回索引
return i;
}
}
// 如果遍历完都没有相等的,就返回 -1
return -1;
}
}