一. 需求文档
学生管理系统
需求:
采取控制台的方式去书写学生管理系统。
分析:
初始菜单:
"-------------欢迎来到黑马学生管理系统----------------"
"1:添加学生"
"2:删除学生"
"3:修改学生"
"4:查询学生"
"5:退出"
"请输入您的选择:"
学生类:
属性:id、姓名、年龄、家庭住址
添加功能:
键盘录入每一个学生信息并添加,需要满足以下要求:
id唯一
删除功能:
键盘录入要删除的学生id,需要满足以下要求:
id存在删除
id不存在,需要提示不存在,并回到初始菜单
修改功能:
键盘录入要修改的学生id,需要满足以下要求
id存在,继续录入其他信息
id不存在,需要提示不存在,并回到初始菜单
查询功能:
打印所有的学生信息,需要满足以下要求
如果没有学生信息,提示:当前无学生信息,请添加后再查询
如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
id 姓名 年龄 家庭住址
heima001 张三 23 南京
heima002 李四 24 北京
heima003 王五 25 广州
heima004 赵六 26 深圳
二. Student的构建
package wzm.com;
public class Student {
private String id;
private String name;
private String age;
private String area;
public Student() {
}
public Student(String id, String name, String age, String area) {
this.id = id;
this.name = name;
this.age = age;
this.area = area;
}
/**
* 获取
* @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 String getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(String age) {
this.age = age;
}
/**
* 获取
* @return area
*/
public String getArea() {
return area;
}
/**
* 设置
* @param area
*/
public void setArea(String area) {
this.area = area;
}
}
三. 主体框架的的构建
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
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:退出");
//定义为String类型,可以在录入值为字符时不报错,兼容性更好
System.out.print("请选择要进行的操作:");
String choose = sc.next();
switch (choose){
case"1" -> addStudent(list);
case"2" -> removeStudent(list);
case"3" -> turnStudent(list);
case"4" -> findStudent(list);
case"5" -> System.exit(0);
default -> System.out.println("输入命令错误,请重新输入:");
}
}
}
四. 通用方法的编写
因为编程过程中需要大量遍历list进行查询操作,所以我们可以把这一部分进行模块化。
//查询索引
public static int findIndex(ArrayList<Student> list , String id){
for (int i = 0; i < list.size(); i++) {
if(id.equals(list.get(i).getId())){
return i;
}
}
return -1;
}
五. 各选择的方法实现
1:添加学生
//"1:添加学生"
public static void addStudent(ArrayList<Student> list){
System.out.println("1:添加学生");
Scanner sc = new Scanner(System.in);
while(true){
//输入id
System.out.println("请输入学生id");
String id = sc.next();
//id唯一形判断
if(findIndex(list,id) >= 0){
System.out.println("学生信息已经存在,请重新输入");
continue;
}else{
//输入名字
System.out.println("请输入学生名字");
String name = sc.next();
//输入年龄
System.out.println("请输入学生年龄");
String age = sc.next();
//输入家庭地址
System.out.println("请输入学生家庭住址");
String area = sc.next();
Student st = new Student(id,name,age,area);
list.add(st);
System.out.println("学生信息添加成功");
break;
}
}
}
2:删除学生
//"2:删除学生"
public static void removeStudent(ArrayList<Student> list){
System.out.println("2:删除学生");
Scanner sc = new Scanner(System.in);
//输入要删除的id
System.out.println("请输入要删除学生的id");
String id = sc.next();
int index = findIndex(list, id);
if(index < 0){
System.out.println("学生id不存在");
}else{
list.remove(index);
}
}
3:修改学生
//"3:修改学生"
public static void turnStudent(ArrayList<Student> list){
System.out.println("3:修改学生");
Scanner sc = new Scanner(System.in);
System.out.println("请输入要修改学生的id");
String id = sc.next();
int index = findIndex(list, id);
Student s = list.get(index);
if(index < 0){
System.out.println("学生id不存在");
}else{
s.setId(id);
//输入id
System.out.println("请输入学生id");
String id1 = sc.next();
s.setId(id1);
//输入名字
System.out.println("请输入学生名字");
String name = sc.next();
s.setName(name);
//输入年龄
System.out.println("请输入学生年龄");
String age = sc.next();
s.setAge(age);
//输入家庭地址
System.out.println("请输入学生家庭住址");
String area = sc.next();
s.setArea(area);
System.out.println("修改成功");
}
}
4:查询学生
public static void findStudent(ArrayList<Student> list){
System.out.println("4:查询学生");
if(list.size() == 0){
System.out.println("当前无学生信息,请添加后在查询");
return;
}else{
//打印表头
System.out.println("id\t姓名\t\t年龄\t\t家庭住址");
for (int i = 0; i < list.size(); i++) {
Student s = list.get(i);
System.out.println(s.getId() + "\t" + s.getName() + "\t\t" + s.getAge() + "\t" + s.getArea());
}
}
}