diff --git a/server/.idea/workspace.xml b/server/.idea/workspace.xml
index d34c6eeb..a3203f68 100644
--- a/server/.idea/workspace.xml
+++ b/server/.idea/workspace.xml
@@ -146,6 +146,7 @@
+
diff --git a/server/src/main/java/self/cases/teams/Application.java b/server/src/main/java/self/cases/teams/Application.java
index 682c7e19..91b1a891 100644
--- a/server/src/main/java/self/cases/teams/Application.java
+++ b/server/src/main/java/self/cases/teams/Application.java
@@ -1,78 +1,82 @@
-package self.cases.teams;
+package self.cases.teams; // 定义项目主包名
-import com.alibaba.fastjson.serializer.SerializerFeature;
-import com.alibaba.fastjson.support.config.FastJsonConfig;
-import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
-import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
-import org.springframework.cache.annotation.EnableCaching;
-import org.springframework.context.annotation.Bean;
-import org.springframework.http.MediaType;
-import org.springframework.http.converter.HttpMessageConverter;
-import org.springframework.web.servlet.config.annotation.CorsRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+import com.alibaba.fastjson.serializer.SerializerFeature; // 引入 FastJSON 的序列化特性
+import com.alibaba.fastjson.support.config.FastJsonConfig; // 引入 FastJSON 的配置类
+import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; // 引入 FastJSON 的 HTTP 消息转换器
+import com.baomidou.mybatisplus.annotation.DbType; // 引入 MyBatis-Plus 的数据库类型枚举
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; // 引入 MyBatis-Plus 的拦截器
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; // 引入 MyBatis-Plus 的分页拦截器
+import org.mybatis.spring.annotation.MapperScan; // 引入 MyBatis 的 Mapper 扫描注解
+import org.springframework.boot.SpringApplication; // 引入 Spring Boot 的启动类
+import org.springframework.boot.autoconfigure.SpringBootApplication; // 引入 Spring Boot 的启动注解
+import org.springframework.boot.autoconfigure.http.HttpMessageConverters; // 引入 Spring Boot 的消息转换器
+import org.springframework.cache.annotation.EnableCaching; // 引入缓存注解
+import org.springframework.context.annotation.Bean; // 引入 Bean 注解
+import org.springframework.http.MediaType; // 引入 HTTP 媒体类型
+import org.springframework.http.converter.HttpMessageConverter; // 引入 HTTP 消息转换器
+import org.springframework.web.servlet.config.annotation.CorsRegistry; // 引入 CORS 配置
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; // 引入 Web MVC 配置
-import java.util.ArrayList;
-import java.util.List;
+import java.util.ArrayList; // 导入 ArrayList 类,用于创建动态数组
+import java.util.List; // 导入 List 接口,用于表示有序集合
-@SpringBootApplication
-@MapperScan({"self.cases.teams.dao"})
-@EnableCaching
-public class Application implements WebMvcConfigurer{
+
+@SpringBootApplication // 启动类注解
+@MapperScan({"self.cases.teams.dao"}) // 扫描 Mapper 接口所在的包
+@EnableCaching // 开启缓存功能
+public class Application implements WebMvcConfigurer { // 定义启动类并实现 WebMvcConfigurer 接口
/**
* JSON格式转换器
- * @return
+ * @return 返回 FastJsonHttpMessageConverter 实例
*/
- @Bean
+ @Bean // 声明为 Spring 容器中的 Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
- FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
- FastJsonConfig fastJsonConfig = new FastJsonConfig();
- fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
- List fastMedisTypes = new ArrayList<>();
- fastMedisTypes.add(MediaType.APPLICATION_JSON);
- fastConverter.setSupportedMediaTypes(fastMedisTypes);
- fastConverter.setFastJsonConfig(fastJsonConfig);
- HttpMessageConverter> converter = fastConverter;
- return new HttpMessageConverters(converter);
+ FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); // 创建 FastJSON 消息转换器实例
+ FastJsonConfig fastJsonConfig = new FastJsonConfig(); // 创建 FastJSON 配置实例
+ fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); // 设置序列化特性为美化格式
+ List fastMedisTypes = new ArrayList<>(); // 创建支持的媒体类型列表
+ fastMedisTypes.add(MediaType.APPLICATION_JSON); // 添加 JSON 类型
+ fastConverter.setSupportedMediaTypes(fastMedisTypes); // 设置支持的媒体类型
+ fastConverter.setFastJsonConfig(fastJsonConfig); // 设置 FastJSON 配置
+ HttpMessageConverter> converter = fastConverter; // 转换为通用消息转换器
+ return new HttpMessageConverters(converter); // 返回消息转换器集合
}
/**
- * 添加MySQL分页查询
- * @return
+ * 添加 MySQL 分页查询拦截器
+ * @return 返回 MybatisPlusInterceptor 实例
*/
- @Bean
+ @Bean // 声明为 Spring 容器中的 Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
-
- MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
-
- interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
-
- return interceptor;
+ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 创建拦截器实例
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 添加分页拦截器,并指定数据库类型为 MySQL
+ return interceptor; // 返回拦截器实例
}
- @Bean
+ /**
+ * 配置跨域资源共享 (CORS)
+ * @return 返回 WebMvcConfigurer 实例
+ */
+ @Bean // 声明为 Spring 容器中的 Bean
public WebMvcConfigurer corsConfigurer() {
- return new WebMvcConfigurer() {
- @Override
+ return new WebMvcConfigurer() { // 匿名内部类实现 WebMvcConfigurer 接口
+ @Override // 重写 addCorsMappings 方法
public void addCorsMappings(CorsRegistry registry) {
- registry.addMapping("/**")
- .allowedOrigins("*")
- .allowCredentials(true)
- .allowedMethods("GET", "POST", "DELETE", "PUT","PATCH")
- .maxAge(3600);
-
+ registry.addMapping("/**") // 配置所有路径都支持跨域
+ .allowedOrigins("*") // 允许所有来源访问
+ .allowCredentials(true) // 允许携带凭证(如 Cookies)
+ .allowedMethods("GET", "POST", "DELETE", "PUT", "PATCH") // 允许的 HTTP 方法
+ .maxAge(3600); // 设置预检请求的有效期为 3600 秒
}
};
}
+ /**
+ * 应用程序入口方法
+ * @param args 启动参数
+ */
public static void main(String[] args) {
-
- SpringApplication.run(Application.class, args);
+ SpringApplication.run(Application.class, args); // 启动 Spring Boot 应用程序
}
}
\ No newline at end of file
diff --git a/server/src/main/java/self/cases/teams/Student.java b/server/src/main/java/self/cases/teams/Student.java
index 005c817f..5982aa10 100644
--- a/server/src/main/java/self/cases/teams/Student.java
+++ b/server/src/main/java/self/cases/teams/Student.java
@@ -6,24 +6,26 @@ import java.util.*;
import java.util.stream.Collectors;
// 学生类
+// 定义一个名为 Student 的类,实现序列化接口,用于存储学生信息
class Student implements Serializable {
- private String id;
- private String name;
- private int age;
- private String className;
- private Date enrollDate;
- private Map scores;
-
+ private String id; // 学号
+ private String name; // 姓名
+ private int age; // 年龄
+ private String className; // 班级
+ private Date enrollDate; // 入学日期
+ private Map scores; // 存储学生成绩的映射表
+
+ // 构造函数,初始化学生的基本信息
public Student(String id, String name, int age, String className) {
this.id = id;
this.name = name;
this.age = age;
this.className = className;
- this.enrollDate = new Date();
- this.scores = new HashMap<>();
+ this.enrollDate = new Date(); // 当前时间作为入学日期
+ this.scores = new HashMap<>(); // 初始化空的成绩表
}
- // Getter和Setter方法
+ // Getter 和 Setter 方法,用于访问和修改私有字段
public String getId() { return id; }
public String getName() { return name; }
public int getAge() { return age; }
@@ -31,321 +33,350 @@ class Student implements Serializable {
public Date getEnrollDate() { return enrollDate; }
public Map getScores() { return scores; }
+ // 更新学生的某门课程成绩
public void updateScore(String course, double score) {
scores.put(course, score);
}
+ // 计算学生的平均成绩
public double calculateAverage() {
return scores.values().stream()
.mapToDouble(Double::doubleValue)
.average()
- .orElse(0.0);
+ .orElse(0.0); // 如果没有成绩则返回默认值 0.0
}
+ // 将学生信息以字符串形式输出
@Override
public String toString() {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- return String.format("学号: %s\n姓名: %s\n年龄: %d\n班级: %s\n入学日期: %s",
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 格式化日期
+ return String.format("学号: %s\\n姓名: %s\\n年龄: %d\\n班级: %s\\n入学日期: %s",
id, name, age, className, sdf.format(enrollDate));
}
}
-// 课程管理类
+// 定义一个名为 CourseManager 的类,用于管理课程信息
class CourseManager {
private static final List AVAILABLE_COURSES = Arrays.asList(
- "数学", "语文", "英语", "物理", "化学"
+ "数学", "语文", "英语", "物理", "化学" // 可用课程列表
);
+ // 判断课程是否有效
public static boolean isValidCourse(String course) {
return AVAILABLE_COURSES.contains(course);
}
+ // 显示可用课程列表
public static void showAvailableCourses() {
System.out.println("可选课程列表:");
- AVAILABLE_COURSES.forEach(c -> System.out.print(c + " "));
+ AVAILABLE_COURSES.forEach(c -> System.out.print(c + " ")); // 打印课程名
System.out.println();
}
}
-// 文件工具类
+// 定义一个名为 FileUtil 的类,用于文件操作
class FileUtil {
- private static final String DATA_FILE = "students.dat";
+ private static final String DATA_FILE = "students.dat"; // 数据文件路径
+ // 将学生列表保存到文件中
public static void saveData(List students) {
try (ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream(DATA_FILE))) {
- oos.writeObject(students);
+ oos.writeObject(students); // 序列化并写入文件
} catch (IOException e) {
- System.err.println("数据保存失败: " + e.getMessage());
+ System.err.println("数据保存失败: " + e.getMessage()); // 错误处理
}
}
+ // 从文件中加载学生数据
@SuppressWarnings("unchecked")
public static List loadData() {
File file = new File(DATA_FILE);
- if (!file.exists()) return new ArrayList<>();
+ if (!file.exists()) return new ArrayList<>(); // 文件不存在时返回空列表
try (ObjectInputStream ois = new ObjectInputStream(
new FileInputStream(DATA_FILE))) {
- return (List) ois.readObject();
+ return (List) ois.readObject(); // 反序列化读取数据
} catch (IOException | ClassNotFoundException e) {
- System.err.println("数据加载失败: " + e.getMessage());
- return new ArrayList<>();
+ System.err.println("数据加载失败: " + e.getMessage()); // 错误处理
+ return new ArrayList<>(); // 返回空列表
}
}
}
-// 输入工具类
+// 定义一个名为 InputUtil 的类,用于获取用户输入
class InputUtil {
- private static final Scanner scanner = new Scanner(System.in);
+ private static final Scanner scanner = new Scanner(System.in); // 输入流
+ // 获取整数输入
public static int getIntInput(String prompt) {
while (true) {
- System.out.print(prompt);
+ System.out.print(prompt); // 提示信息
try {
- return Integer.parseInt(scanner.nextLine());
+ return Integer.parseInt(scanner.nextLine()); // 转换为整数
} catch (NumberFormatException e) {
- System.out.println("输入无效,请输入整数!");
+ System.out.println("输入无效,请输入整数!"); // 错误提示
}
}
}
+ // 获取字符串输入
public static String getStringInput(String prompt) {
- System.out.print(prompt);
- return scanner.nextLine().trim();
+ System.out.print(prompt); // 提示信息
+ return scanner.nextLine().trim(); // 去除首尾空格
}
+ // 获取双精度浮点数输入
public static double getDoubleInput(String prompt) {
while (true) {
- System.out.print(prompt);
+ System.out.print(prompt); // 提示信息
try {
- return Double.parseDouble(scanner.nextLine());
+ return Double.parseDouble(scanner.nextLine()); // 转换为浮点数
} catch (NumberFormatException e) {
- System.out.println("输入无效,请输入数字!");
+ System.out.println("输入无效,请输入数字!"); // 错误提示
}
}
}
}
-// 主系统类
+// 定义主系统类 StudentManagementSystem
class StudentManagementSystem {
- private List students;
- private boolean isRunning = true;
+ private List students; // 存储学生列表
+ private boolean isRunning = true; // 控制程序运行状态
+ // 构造函数,初始化学生列表并加载数据
public StudentManagementSystem() {
students = FileUtil.loadData();
}
+ // 启动系统主循环
public void start() {
while (isRunning) {
- showMainMenu();
- int choice = InputUtil.getIntInput("请选择操作:");
- handleMainMenu(choice);
+ showMainMenu(); // 显示主菜单
+ int choice = InputUtil.getIntInput("请选择操作:"); // 获取用户选择
+ handleMainMenu(choice); // 处理用户选择
}
}
+ // 显示主菜单
private void showMainMenu() {
- System.out.println("\n==== 学生信息管理系统 ====");
+ System.out.println("\\n==== 学生信息管理 ====");
System.out.println("1. 添加学生");
System.out.println("2. 查询学生");
- System.out.println("3. 录入成绩");
+ System.out.println("3. 录入活动成绩");
System.out.println("4. 显示统计");
- System.out.println("5. 删除学生");
+ System.out.println("5. 删除学生信息");
System.out.println("6. 保存数据");
System.out.println("7. 退出系统");
}
+ // 处理主菜单选项
private void handleMainMenu(int choice) {
switch (choice) {
-// case 1 -> addStudent();
-// case 2 -> searchStudent();
-// case 3 -> inputScore();
-// case 4 -> showStatistics();
-// case 5 -> deleteStudent();
-// case 6 -> saveData();
-// case 7 -> exitSystem();
+// case 1 -> addStudent(); // 添加学生
+// case 2 -> searchStudent(); // 查询学生
+// case 3 -> inputScore(); // 录入成绩
+// case 4 -> showStatistics(); // 显示统计信息
+// case 5 -> deleteStudent(); // 删除学生
+// case 6 -> saveData(); // 保存数据
+// case 7 -> exitSystem(); // 退出系统
// default -> System.out.println("无效选项!");
}
}
+ // 添加学生
private void addStudent() {
- String id = InputUtil.getStringInput("请输入学号:");
- if (isStudentExist(id)) {
+ String id = InputUtil.getStringInput("请输入学号:"); // 获取学号
+ if (isStudentExist(id)) { // 检查学号是否已存在
System.out.println("该学号已存在!");
return;
}
- String name = InputUtil.getStringInput("请输入姓名:");
- int age = InputUtil.getIntInput("请输入年龄:");
- String className = InputUtil.getStringInput("请输入班级:");
+ String name = InputUtil.getStringInput("请输入姓名:"); // 获取姓名
+ int age = InputUtil.getIntInput("请输入年龄:"); // 获取年龄
+ String className = InputUtil.getStringInput("请输入班级:"); // 获取班级
- Student student = new Student(id, name, age, className);
- students.add(student);
+ Student student = new Student(id, name, age, className); // 创建学生对象
+ students.add(student); // 添加到学生列表
System.out.println("学生添加成功!");
}
+ // 查询学生
private void searchStudent() {
- System.out.println("\n==== 查询选项 ====");
+ System.out.println("\\n==== 查询选项 ====");
System.out.println("1. 按学号查询");
System.out.println("2. 按姓名查询");
System.out.println("3. 显示全部");
- int choice = InputUtil.getIntInput("请选择查询方式:");
+ int choice = InputUtil.getIntInput("请选择查询方式:"); // 获取查询方式
switch (choice) {
-// case 1 -> searchById();
-// case 2 -> searchByName();
-// case 3 -> showAllStudents();
+// case 1 -> searchById(); // 按学号查询
+// case 2 -> searchByName(); // 按姓名查询
+// case 3 -> showAllStudents(); // 显示全部学生
// default -> System.out.println("无效选项!");
}
}
+ // 按学号查询学生
private void searchById() {
- String id = InputUtil.getStringInput("请输入学号:");
+ String id = InputUtil.getStringInput("请输入学号:"); // 获取学号
students.stream()
- .filter(s -> s.getId().equals(id))
- .findFirst();
-
+ .filter(s -> s.getId().equals(id)) // 筛选符合条件的学生
+ .findFirst(); // 查找第一个匹配项
}
+ // 按姓名查询学生
private void searchByName() {
- String name = InputUtil.getStringInput("请输入姓名:");
+ String name = InputUtil.getStringInput("请输入姓名:"); // 获取姓名
List result = null;
try {
students.stream()
- .filter(s -> s.getName().equalsIgnoreCase(name))
- .wait();
+ .filter(s -> s.getName().equalsIgnoreCase(name)) // 忽略大小写筛选
+ .wait(); // 等待(此处有误,应改为 collect 或其他操作)
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
- if (result.isEmpty()) {
+ if (result.isEmpty()) { // 如果未找到学生
System.out.println("找不到该学生");
} else {
- result.forEach(System.out::println);
+ result.forEach(System.out::println); // 输出学生信息
}
}
+ // 显示所有学生
private void showAllStudents() {
- if (students.isEmpty()) {
+ if (students.isEmpty()) { // 如果学生列表为空
System.out.println("当前没有学生记录");
return;
}
- students.forEach(s -> {
- System.out.println(s);
+
+ students.forEach(s -> { // 遍历学生列表
+ System.out.println(s); // 输出学生信息
System.out.println("--------------------");
});
}
+ // 录入成绩
private void inputScore() {
- String id = InputUtil.getStringInput("请输入学号:");
- Student student = findStudentById(id);
- if (student == null) {
+ String id = InputUtil.getStringInput("请输入学号:"); // 获取学号
+ Student student = findStudentById(id); // 查找学生
+ if (student == null) { // 如果学生不存在
System.out.println("学生不存在!");
return;
}
- CourseManager.showAvailableCourses();
- String course = InputUtil.getStringInput("请输入课程名称:");
- if (!CourseManager.isValidCourse(course)) {
+ CourseManager.showAvailableCourses(); // 显示可用课程
+ String course = InputUtil.getStringInput("请输入课程名称:"); // 获取课程名称
+ if (!CourseManager.isValidCourse(course)) { // 检查课程是否有效
System.out.println("无效课程!");
return;
}
- double score = InputUtil.getDoubleInput("请输入成绩:");
- student.updateScore(course, score);
+ double score = InputUtil.getDoubleInput("请输入成绩:"); // 获取成绩
+ student.updateScore(course, score); // 更新学生成绩
System.out.println("成绩录入成功!");
}
+ // 显示统计信息
private void showStatistics() {
- System.out.println("\n==== 统计信息 ====");
+ System.out.println("\\n==== 统计信息 ====");
System.out.println("1. 班级人数统计");
System.out.println("2. 课程平均分");
System.out.println("3. 学生个人成绩");
- int choice = InputUtil.getIntInput("请选择统计类型:");
+ int choice = InputUtil.getIntInput("请选择统计类型:"); // 获取统计类型
switch (choice) {
-// case 1 -> showClassStatistics();
-// case 2 -> showCourseStatistics();
-// case 3 -> showStudentScores();
+// case 1 -> showClassStatistics(); // 显示班级人数统计
+// case 2 -> showCourseStatistics(); // 显示课程平均分
+// case 3 -> showStudentScores(); // 显示学生个人成绩
// default -> System.out.println("无效选项!");
}
}
+ // 显示班级人数统计
private void showClassStatistics() {
Map classCount = students.stream()
.collect(Collectors.groupingBy(
- Student::getClassName,
- Collectors.counting()));
+ Student::getClassName, // 按班级分组
+ Collectors.counting())); // 统计每班人数
- classCount.forEach((className, count) ->
- System.out.printf("班级 %s: %d 人\n", className, count));
+ classCount.forEach((className, count) -> // 遍历班级和人数
+ System.out.printf("班级 %s: %d 人\\n", className, count)); // 输出结果
}
+ // 显示课程平均分
private void showCourseStatistics() {
Map courseAverages = new HashMap<>();
- students.forEach(student ->
- student.getScores().forEach((course, score) ->
- courseAverages.merge(course, score, Double::sum)));
+ students.forEach(student -> // 遍历每个学生
+ student.getScores().forEach((course, score) -> // 遍历每门课程成绩
+ courseAverages.merge(course, score, Double::sum))); // 累加成绩
- courseAverages.forEach((course, total) -> {
+ courseAverages.forEach((course, total) -> { // 遍历课程总分
long count = students.stream()
- .filter(s -> s.getScores().containsKey(course))
- .count();
- double average = count > 0 ? total / count : 0;
- System.out.printf("%s 平均分: %.2f\n", course, average);
+ .filter(s -> s.getScores().containsKey(course)) // 筛选有该课程的学生
+ .count(); // 统计学生数量
+ double average = count > 0 ? total / count : 0; // 计算平均分
+ System.out.printf("%s 平均分: %.2f\\n", course, average); // 输出结果
});
}
+ // 显示学生个人成绩
private void showStudentScores() {
- String id = InputUtil.getStringInput("请输入学号:");
- Student student = findStudentById(id);
- if (student == null) {
+ String id = InputUtil.getStringInput("请输入学号:"); // 获取学号
+ Student student = findStudentById(id); // 查找学生
+ if (student == null) { // 如果学生不存在
System.out.println("学生不存在!");
return;
}
- System.out.println(student);
- if (student.getScores().isEmpty()) {
+ System.out.println(student); // 输出学生基本信息
+ if (student.getScores().isEmpty()) { // 如果没有成绩记录
System.out.println("暂无成绩记录");
return;
}
- student.getScores().forEach((course, score) ->
- System.out.printf("%s: %.2f\n", course, score));
- System.out.printf("平均分: %.2f\n", student.calculateAverage());
+ student.getScores().forEach((course, score) -> // 遍历每门课程成绩
+ System.out.printf("%s: %.2f\\n", course, score)); // 输出课程成绩
+ System.out.printf("平均分: %.2f\\n", student.calculateAverage()); // 输出平均分
}
+ // 删除学生信息
private void deleteStudent() {
- String id = InputUtil.getStringInput("请输入要删除的学号:");
- boolean removed = students.removeIf(s -> s.getId().equals(id));
- System.out.println(removed ? "删除成功!" : "学生不存在!");
+ String id = InputUtil.getStringInput("请输入要删除的学号:"); // 获取学号
+ boolean removed = students.removeIf(s -> s.getId().equals(id)); // 删除学生
+ System.out.println(removed ? "删除成功!" : "学生不存在!"); // 输出结果
}
+ // 保存数据
private void saveData() {
- FileUtil.saveData(students);
+ FileUtil.saveData(students); // 保存学生列表到文件
System.out.println("数据已保存!");
}
+ // 退出系统
private void exitSystem() {
- isRunning = false;
- System.out.println("正在退出系统...");
- saveData();
- System.out.println("谢谢使用!");
+ isRunning = false; // 设置运行标志为 false
+ System.out.println("正在退出系统..."); // 提示退出
+ saveData(); // 保存数据
+ System.out.println("谢谢使用!"); // 结束提示
}
+ // 检查学号是否存在
private boolean isStudentExist(String id) {
return students.stream()
- .anyMatch(s -> s.getId().equals(id));
+ .anyMatch(s -> s.getId().equals(id)); // 判断是否有相同学号的学生
}
+ // 根据学号查找学生
private Student findStudentById(String id) {
return students.stream()
- .filter(s -> s.getId().equals(id))
- .findFirst()
- .orElse(null);
+ .filter(s -> s.getId().equals(id)) // 筛选符合条件的学生
+ .findFirst() // 查找第一个匹配项
+ .orElse(null); // 如果未找到返回 null
}
public static void main(String[] args) {
- new StudentManagementSystem().start();
+ new StudentManagementSystem().start(); // 启动系统
}
-}
\ No newline at end of file
+}
diff --git a/server/src/main/java/self/cases/teams/controller/ActiveLogsController.java b/server/src/main/java/self/cases/teams/controller/ActiveLogsController.java
index ca9bc92e..8f24dd60 100644
--- a/server/src/main/java/self/cases/teams/controller/ActiveLogsController.java
+++ b/server/src/main/java/self/cases/teams/controller/ActiveLogsController.java
@@ -1,121 +1,120 @@
package self.cases.teams.controller;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import self.cases.teams.entity.Users;
-import self.cases.teams.handle.CacheHandle;
-import self.cases.teams.service.UsersService;
-import self.cases.teams.utils.DateUtils;
-import self.cases.teams.utils.IDUtils;
-import self.cases.teams.msg.R;
-import self.cases.teams.msg.PageData;
-
-import self.cases.teams.entity.ActiveLogs;
-import self.cases.teams.service.ActiveLogsService;
-
-import java.util.List;
-import java.util.Map;
+import org.slf4j.LoggerFactory; // 导入日志工具类
+
+import org.springframework.beans.factory.annotation.Autowired; // 自动注入依赖
+import org.springframework.stereotype.Controller; // Spring MVC 控制器注解
+import org.springframework.web.bind.annotation.*; // RESTful 注解支持
+import org.springframework.web.bind.annotation.ExceptionHandler; // 异常处理注解
+import org.springframework.web.bind.annotation.ResponseBody; // 返回 JSON 数据注解
+
+import self.cases.teams.entity.Users; // 用户实体类
+import self.cases.teams.handle.CacheHandle; // 缓存处理类
+import self.cases.teams.service.UsersService; // 用户服务接口
+import self.cases.teams.utils.DateUtils; // 日期工具类
+import self.cases.teams.utils.IDUtils; // ID 工具类
+import self.cases.teams.msg.R; // 响应封装类
+import self.cases.teams.msg.PageData; // 分页数据封装类
+
+import self.cases.teams.entity.ActiveLogs; // 报名记录实体类
+import self.cases.teams.service.ActiveLogsService; // 报名记录服务接口
+
+import java.util.List; // Java 集合 List 接口
+import java.util.Map; // Java 集合 Map 接口
/**
* 系统请求响应控制器
* 报名记录
*/
@Controller
-@RequestMapping("/activeLogs")
-public class ActiveLogsController extends BaseController {
+@RequestMapping("/activeLogs") // 设置默认请求路径
+public class ActiveLogsController extends BaseController { // 继承基础控制器
- protected static final Logger Log = LoggerFactory.getLogger(ActiveLogsController.class);
+ protected static final Logger Log = LoggerFactory.getLogger(ActiveLogsController.class); // 日志实例
- @Autowired
+ @Autowired // 自动注入缓存处理类
private CacheHandle cacheHandle;
- @Autowired
+ @Autowired // 自动注入用户服务
private UsersService usersService;
- @Autowired
+ @Autowired // 自动注入报名记录服务
private ActiveLogsService activeLogsService;
- @RequestMapping("")
+ @RequestMapping("") // 默认请求映射
public String index() {
- return "pages/ActiveLogs";
+ return "pages/ActiveLogs"; // 返回视图页面名称
}
- @GetMapping("/info")
- @ResponseBody
+ @GetMapping("/info") // GET 请求获取单条记录
+ @ResponseBody // 返回 JSON 数据
public R getInfo(String id) {
- Log.info("查找指定报名记录,ID:{}", id);
+ Log.info("查找指定报名记录,ID:{}", id); // 记录日志
- ActiveLogs activeLogs = activeLogsService.getOne(id);
+ ActiveLogs activeLogs = activeLogsService.getOne(id); // 查询单条记录
- return R.successData(activeLogs);
+ return R.successData(activeLogs); // 返回成功数据
}
- @GetMapping("/list")
- @ResponseBody
+ @GetMapping("/list") // GET 请求获取指定活动的报名记录
+ @ResponseBody // 返回 JSON 数据
public R getList(String activeId) {
- Log.info("获取指定活动的报名记录,活动ID:{}", activeId);
+ Log.info("获取指定活动的报名记录,活动ID:{}", activeId); // 记录日志
- List