题目要求:
![](https://img-blog.csdnimg.cn/direct/53d80f8b5a574438a4790700876d484d.png)
注:以下代码皆为自己所想所写,尽我所能完善输入判断之类的,所以部分代码大概率会重复,恳请各位多多指教。
Main方法
public class StudentsManageTest {
public static void main(String[] args) {
// 新建集合存放学生信息
ArrayList<StudentsManage> list = new ArrayList<>();
// 创建学生信息
StudentsManage student1 = new StudentsManage("001", "Test1", "18", "Test1");
StudentsManage student2 = new StudentsManage("002", "Test2", "17", "Test2");
StudentsManage student3 = new StudentsManage("003", "Test3", "19", "Test3");
StudentsManage student4 = new StudentsManage("004", "Test4", "16", "Test4");
StudentsManage student5 = new StudentsManage("005", "Test5", "17", "Test2");
// 添加学生信息
list.add(student1);
list.add(student2);
list.add(student3);
list.add(student4);
list.add(student5);
Scanner scanner = 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:退出学生管理系统");
System.out.println("请输入您的选择:");
int choice = getChoice();
switch (choice) {
// 添加功能
// 键盘录入每一个学生信息并添加,需要满足以下要求:
// id唯一
case 1 -> {
addStu(list);
continue;
}
// 删除功能
// 键盘录入要删除的学生id,需要满足以下要求:
// id存在删除
// id不存在,需要提示不存在,并回到初始菜单
case 2 -> {
removeStu(list);
continue;
}
// 修改功能:
// 键盘录入要修改的学生id,需要满足以下要求
// id存在,继续录入其他信息
// id不存在,需要提示不存在,并回到初始菜单
case 3 -> {
changeStu(list);
continue;
}
// 查询功能
// 打印所有的学生信息,需要满足以下要求
// 如果没有学生信息,提示:当前无学生信息,请添加后再查询
// 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
case 4 -> {
getStu(list);
continue;
}
case 5 -> {
System.out.println("您已成功退出学生管理系统");
}
}
break;
}
}
}
方法编写
public static int getChoice() {
int choice;
Scanner scanner = new Scanner(System.in);
// 输入的数字合法性检查
while (true) {
choice = scanner.nextInt();
if (choice >= 1 && choice <= 5) {
break;
} else {
System.out.println("输入有误,请重新输入:");
}
}
return choice;
}
// id查询
// 查询到相同id返回true
// 查询不到id则返回false
public static boolean containsId(ArrayList<StudentsManage> list, String id) {
for (StudentsManage studentsManage : list) {
if (id.equals(studentsManage.getId())) {
return true;
}
}
return false;
}
public static boolean containsName(ArrayList<StudentsManage> list, String name) {
for (int i = 0; i < list.size(); i++) {
if (name.equals(list.get(i).getName())) {
return true;
}
}
return false;
}
public static boolean containsAge(ArrayList<StudentsManage> list, String age) {
for (int i = 0; i < list.size(); i++) {
if (age.equals(list.get(i).getAge())) {
return true;
}
}
return false;
}
public static boolean containsAddress(ArrayList<StudentsManage> list, String address) {
for (StudentsManage studentsManage : list) {
if (address.equals(studentsManage.getAddress())) {
return true;
}
}
return false;
}
// 检查id输入是否带有其他字符
public static boolean checkId(String id) {
int len = id.length();
boolean flag = checkIdLength(id);
if (!flag) {
return false;
}
int count = 0;// 统计字母个数
for (int i = 0; i < len; i++) {
char str = id.charAt(i);
if (str > '9' || str < '0') {
count++;
}
}
// 字符串中有非法字符则返回false
if (count != 0) {
return false;
}
return true;
}
// 如果id长度不等于 3 则返回长度(可按需修改)
public static boolean checkIdLength(String id) {
if (id.length() != 3) {
return false;
}
return true;
}
public static boolean checkAge(String age) {
int count = 0;
int len = age.length();
for (int i = 0; i < len; i++) {
char c = age.charAt(i);
if (c > '9' || c < '0') {
count++;
}
}
// 字符串中有非法字符则返回false
if (count != 0) {
return false;
}
return true;
}
public static void addStu(ArrayList<StudentsManage> list) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入你要添加的学生id:");
String id = scanner.next();
boolean flagId = containsId(list, id);
if (!flagId) {// 如果false则继续判断
if (!checkId(id)) {
System.out.println("id输入不合法,请重新输入:");
} else {
System.out.println("请输入学生姓名:");
String name = scanner.next();
String age;
while (true) {
System.out.println("请输入学生年龄:");
age = scanner.next();
boolean flagAge = checkAge(age);
if (!flagAge) {
System.out.println("年龄输入不合法,请重新输入:");
} else {
break;
}
}
System.out.println("请输入学生家庭住址:");
String address = scanner.next();
StudentsManage stu = new StudentsManage(id, name, age, address);
list.add(stu);
System.out.println("添加成功");
break;
}
} else {
System.out.println("学号重复,请重新输入:");
}
}
}
public static void removeStu(ArrayList<StudentsManage> list) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入你要删除的学生id:");
String id = scanner.next();
boolean flagId = containsId(list, id);
if (!flagId) {// 如果false则继续判断
System.out.println("id不存在");
break;
} else {
for (int i = 0; i < list.size(); i++) {
StudentsManage stu = list.get(i);
if (id.equals(stu.getId())) {
list.remove(i);
System.out.println("删除成功");
break;
}
}
}
break;
}
}
public static void changeStu(ArrayList<StudentsManage> list) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入你要修改的学生id:");
String id = scanner.next();
boolean flagId = containsId(list, id);
if (!flagId) {// 如果false则继续判断
System.out.println("id不存在");
break;
}
if (!checkId(id)) {
System.out.println("id输入不合法,请重新输入:");
} else {
System.out.println("请输入学生姓名:");
String name = scanner.next();
String age;
while (true) {
System.out.println("请输入学生年龄:");
age = scanner.next();
boolean flagAge = checkAge(age);
if (!flagAge) {
System.out.println("年龄输入不合法,请重新输入:");
} else {
break;
}
}
System.out.println("请输入学生家庭住址:");
String address = scanner.next();
for (StudentsManage stu : list) {
if (id.equals(stu.getId())) {
stu.setId(id);
stu.setName(name);
stu.setAge(age);
stu.setAddress(address);
System.out.println("修改成功");
break;
}
}
break;
}
}
}
public static void getStu(ArrayList<StudentsManage> list) {
Scanner scanner = new Scanner(System.in);
int choice;
int count = 0;
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);
// 输入的数字合法性检查
while (true) {
choice = sc.nextInt();
if (choice >= 1 && choice <= 5) {
break;
} else {
System.out.println("输入有误,请重新输入:");
}
}
switch (choice) {
case 1 -> {
System.out.println("请输入你要查询的学生id:");
String id = scanner.next();
boolean flagId = containsId(list, id);
if (!flagId) {// 如果false则继续判断
System.out.println("当前无该学生信息,请添加后再查询");
} else {
for (StudentsManage stu : list) {
if (id.equals(stu.getId())) {
if (count == 0) {
System.out.println("id 姓名 年龄 地址 ");
}
System.out.println(stu.getId() + " " + stu.getName() + " " + stu.getAge() + " " + stu.getAddress());
break;
}
}
}
}
case 2 -> {
System.out.println("请输入你要查询的学生姓名:");
String name = scanner.next();
boolean flagName = containsName(list, name);
if (!flagName) {// 如果false则继续判断
System.out.println("当前无该学生信息,请添加后再查询");
} else {
for (StudentsManage stu : list) {
if (name.equals(stu.getName())) {
if (count == 0) {
System.out.println("id 姓名 年龄 地址 ");
}
System.out.println(stu.getId() + " " + stu.getName() + " " + stu.getAge() + " " + stu.getAddress());
count++;
}
}
count = 0;
}
}
case 3 -> {
System.out.println("请输入你要查询的学生年龄:");
String age = scanner.next();
boolean flagAge = containsAge(list, age);
if (!flagAge) {// 如果false则继续判断
System.out.println("当前无该学生信息,请添加后再查询");
} else {
for (StudentsManage stu : list) {
if (age.equals(stu.getAge())) {
if (count == 0) {
System.out.println("id 姓名 年龄 地址 ");
}
System.out.println(stu.getId() + " " + stu.getName() + " " + stu.getAge() + " " + stu.getAddress());
count++;
}
}
count = 0;
}
continue;
}
case 4 -> {
System.out.println("请输入你要查询的学生地址:");
String address = scanner.next();
boolean flagAddress = containsAddress(list, address);
if (!flagAddress) {// 如果false则继续判断
System.out.println("当前无该学生信息,请添加后再查询");
break;
} else {
for (StudentsManage stu : list) {
if (address.equals(stu.getAddress())) {
if (count == 0) {
System.out.println("id 姓名 年龄 地址 ");
}
System.out.println(stu.getId() + " " + stu.getName() + " " + stu.getAge() + " " + stu.getAddress());
count++;
}
}
count = 0;
}
}
case 5 -> {
System.out.println("您已成功退出学生查询系统");
}
}
break;
}
}
JavaBean
public class StudentsManage {
private String id;
private String name;
private String age;
private String address;
public StudentsManage() {
}
public StudentsManage(String id, String name, String age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
}
运行效果
-------------欢迎使用学生管理系统----------------
1:添加学生
2:删除学生
3:修改学生
4:查询学生
5:退出学生管理系统
请输入您的选择:
-------------欢迎使用学生查询系统----------------
1:按学号查询
2:按姓名查询
3:按年龄查询
4:按地址查询
5:退出查询系统
请输入您的选择:
欢迎各位大佬指点问题