privatestaticvoiddeleteStudentCourse(){Scannerscanner=newScanner(System.in);System.out.println("请输入学生姓名:");Stringname=scanner.nextLine();if(studentCourseMap.containsKey(name)){System.out.println("请输入要删除的课名称:");Stringcourse=scanner.nextLine();List<String>courses=studentCourseMap.get(name);if(courses.contains(course)){courses.remove(course);System.out.println(name+"已经删除课程:"+course);}else{System.out.println(name+"没有选修课程:"+course);}}else{System.out.println(name+"没有选课");}代码结构
时间: 2024-03-29 07:42:13 浏览: 15
这段代码主要实现了删除学生选课信息的功能,其代码结构如下:
1. 方法名:deleteStudentCourse
2. 访问修饰符:private static
3. 返回值类型:void
4. 方法参数:无
5. 方法体:
a. 创建Scanner对象scanner,用于读取用户输入的信息。
b. 输出提示信息,要求用户输入学生姓名。
c. 读取用户输入的学生姓名,并将其存储在名为name的字符串变量中。
d. 检查studentCourseMap中是否包含该学生姓名,如果包含,执行以下操作:
i. 输出提示信息,要求用户输入要删除的课程名称。
ii. 读取用户输入的要删除的课程名称,并将其存储在名为course的字符串变量中。
iii. 获取该学生姓名对应的课程列表courses,并检查该列表中是否包含要删除的课程名称。
iv. 如果包含,将该课程名称从列表中删除,并输出删除成功的信息。
v. 如果不包含,输出该学生未选修该课程的信息。
e. 如果studentCourseMap中不包含该学生姓名,输出该学生没有选课的信息。
相关问题
private static void modifyStudent() throws IOException { Scanner scanner = new Scanner(System.in); System.out.println("请输入要修改的学生姓名:"); String name = scanner.nextLine(); List<Student> students = readStudentsFromFile(); for (Student student : students) { if (student.getName().equals(name)) { System.out.println("请输入新的学生姓名:"); String newName = scanner.nextLine(); System.out.println("请输入新的学生年龄:"); int newAge = scanner.nextInt(); scanner.nextLine(); System.out.println("请输入新的学生性别:"); String newGender = scanner.nextLine(); student = new Student(newName, newAge, newGender); } } writeStudentsToFile(students); }成功执行了但为什么没有实现
可能是因为在遍历 `students` 列表时,虽然修改了 `student` 对象的值,但是并没有将修改后的对象重新放回 `students` 列表中。可以考虑使用一个临时的列表来存储修改后的对象,再将临时列表中的元素复制回原列表中。可以尝试将代码修改如下:
```
private static void modifyStudent() throws IOException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要修改的学生姓名:");
String name = scanner.nextLine();
List<Student> students = readStudentsFromFile();
List<Student> updatedStudents = new ArrayList<>(); // 临时列表
for (Student student : students) {
if (student.getName().equals(name)) {
System.out.println("请输入新的学生姓名:");
String newName = scanner.nextLine();
System.out.println("请输入新的学生年龄:");
int newAge = scanner.nextInt();
scanner.nextLine();
System.out.println("请输入新的学生性别:");
String newGender = scanner.nextLine();
student = new Student(newName, newAge, newGender);
}
updatedStudents.add(student); // 将修改后的对象放入临时列表中
}
writeStudentsToFile(updatedStudents); // 将临时列表中的元素复制回原列表中
}
```
private static void addTeacher() { Scanner scanner = new Scanner(System.in); System.out.print("请输入教师编号:"); int id = scanner.nextInt(); System.out.print("请输入教师姓名:"); String name = scanner.next(); System.out.print("请输入教师性别:"); String gender = scanner.next(); System.out.print("请输入出生日期(格式:yyyy-mm-dd):"); String birthDate = scanner.next(); System.out.print("请输入所在部门:"); String department = scanner.next(); System.out.print("请输入职称:"); String title = scanner.next(); System.out.print("请输入工资:"); double salary = scanner.nextDouble(); teacherList.add(new Teacher(id, name, gender, birthDate, department, title, salary)); System.out.println("教师信息添加成功!"); }增加蛛丝
在这段代码中,我们可以添加一些输入校验逻辑,以保证输入的数据合法性。例如:
1. 检查输入的教师编号是否已经存在于系统中,如果是则提示用户重新输入一个不存在的编号。
2. 对于出生日期的输入,可以使用正则表达式进行格式校验,确保输入的日期符合 yyyy-mm-dd 的格式。
3. 对于工资的输入,可以检查输入的值是否大于等于 0,如果小于 0 则提示用户重新输入。
修改后的代码如下:
```
private static void addTeacher() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入教师编号:");
int id = scanner.nextInt();
// 检查编号是否已存在
while (findTeacherById(id) != null) {
System.out.println("该编号已存在,请重新输入!");
System.out.print("请输入教师编号:");
id = scanner.nextInt();
}
System.out.print("请输入教师姓名:");
String name = scanner.next();
System.out.print("请输入教师性别:");
String gender = scanner.next();
// 校验出生日期格式
String birthDate;
Pattern pattern = Pattern.compile("^\\d{4}-\\d{2}-\\d{2}$");
do {
System.out.print("请输入出生日期(格式:yyyy-mm-dd):");
birthDate = scanner.next();
} while (!pattern.matcher(birthDate).matches());
System.out.print("请输入所在部门:");
String department = scanner.next();
System.out.print("请输入职称:");
String title = scanner.next();
// 检查工资是否合法
double salary;
do {
System.out.print("请输入工资:");
salary = scanner.nextDouble();
} while (salary < 0);
teacherList.add(new Teacher(id, name, gender, birthDate, department, title, salary));
System.out.println("教师信息添加成功!");
}
```