From 6454f5291fab284a01c05dc39e7df183ce5925cc Mon Sep 17 00:00:00 2001
From: root <2816025006@qq.com>
Date: Thu, 4 Dec 2025 16:15:16 +0800
Subject: [PATCH] =?UTF-8?q?#1.0.1=20=E7=99=BB=E5=BD=95=E6=B3=A8=E5=86=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 102 +++++++++++-------
readme.md | 65 ++++++++++-
.../com/campus/controller/PageController.java | 45 ++++++++
.../campus/controller/StudentController.java | 68 +++++++++++-
src/main/java/com/campus/entity/User.java | 41 +++----
.../java/com/campus/mapper/StudentMapper.java | 5 +
.../com/campus/service/StudentService.java | 17 ++-
src/main/resources/mapper/StudentMapper.xml | 29 ++++-
src/main/resources/spring-mvc.xml | 23 +++-
9 files changed, 317 insertions(+), 78 deletions(-)
diff --git a/pom.xml b/pom.xml
index 361eac3..3275414 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,22 +6,28 @@
4.0.0
com.campus
- campus-attendance
+ student-attendance
1.0-SNAPSHOT
war
UTF-8
- 17
- 17
+ 1.8
+ 1.8
5.3.23
3.5.11
- 2.0.7
+ 2.1.1
+ 8.0.33
+ 1.2.15
+ 4.0.1
+ 1.2
+ 2.14.2
+ 2.0.7
+ 1.4.7
-
-
+
org.springframework
spring-context
@@ -37,6 +43,11 @@
spring-jdbc
${spring.version}
+
+ org.springframework
+ spring-tx
+ ${spring.version}
+
@@ -50,73 +61,86 @@
${mybatis.spring.version}
-
+
mysql
mysql-connector-java
- 8.0.33
+ ${mysql.version}
com.alibaba
druid
- 1.2.15
+ ${druid.version}
-
+
javax.servlet
javax.servlet-api
- 4.0.1
+ ${servlet.version}
provided
+
+ javax.servlet
+ jstl
+ ${jstl.version}
+
javax.servlet.jsp
javax.servlet.jsp-api
2.3.3
provided
-
- jstl
- jstl
- 1.2
-
-
+
com.fasterxml.jackson.core
jackson-databind
- 2.14.1
+ ${jackson.version}
+
+
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
+
+
+ ch.qos.logback
+ logback-classic
+ ${logback.version}
+
+
+
+
+ junit
+ junit
+ 4.13.2
+ test
- campus-attendance
+ student-attendance
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.11.0
+
+ ${maven.compiler.source}
+ ${maven.compiler.target}
+ ${project.build.sourceEncoding}
+
+
+
+
org.apache.maven.plugins
maven-war-plugin
3.3.2
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.10.1
- 1.8
- 1.8
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.10.1
-
- 17
- 17
-
-
- --enable-preview
-
+ false
diff --git a/readme.md b/readme.md
index f4c38af..2338ae8 100644
--- a/readme.md
+++ b/readme.md
@@ -32,4 +32,67 @@ INSERT INTO user (username, password, role) VALUES
('teacher1', 'teacher123', 'TEACHER');
-
\ No newline at end of file
+
+
+
+
+-- 在已有的数据库基础上,添加考勤相关表
+
+-- 考勤记录表
+CREATE TABLE attendance_record (
+id INT PRIMARY KEY AUTO_INCREMENT,
+student_id VARCHAR(20) NOT NULL,
+course_name VARCHAR(100) NOT NULL,
+attendance_date DATE NOT NULL,
+attendance_time TIME,
+status VARCHAR(20) NOT NULL DEFAULT 'PRESENT', -- PRESENT/ABSENT/LATE
+remarks VARCHAR(500),
+created_by VARCHAR(50), -- 记录创建人(教师用户名)
+create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
+FOREIGN KEY (student_id) REFERENCES student(student_id) ON DELETE CASCADE
+);
+
+-- 创建索引提高查询效率
+CREATE INDEX idx_student_date ON attendance_record(student_id, attendance_date);
+CREATE INDEX idx_date_status ON attendance_record(attendance_date, status);
+
+-- 课程表(可选)
+CREATE TABLE course (
+id INT PRIMARY KEY AUTO_INCREMENT,
+course_name VARCHAR(100) NOT NULL,
+teacher_id INT, -- 关联user表的id
+class_name VARCHAR(50),
+schedule_time VARCHAR(100), -- 上课时间描述
+status INT DEFAULT 1 -- 1启用,0停用
+);
+
+
+
+
+-- 添加更多测试数据到数据库
+
+-- 添加更多学生
+INSERT INTO student (name, student_id, class, major) VALUES
+('王五', '2023003', '计算机1班', '计算机科学与技术'),
+('赵六', '2023004', '软件1班', '软件工程'),
+('钱七', '2023005', '网络1班', '网络工程'),
+('孙八', '2023006', '计算机1班', '计算机科学与技术');
+
+-- 添加更多用户(密码都是123456经过MD5加盐加密后的值)
+-- 实际密码需要加密存储,这里先用明文,系统会自动加密
+INSERT INTO user (username, password, role) VALUES
+('2023001', '123456', 'STUDENT'),
+('2023002', '123456', 'STUDENT'),
+('2023003', '123456', 'STUDENT'),
+('teacher2', '123456', 'TEACHER'),
+('admin','123456','ADMIN'),
+('student1', '123456', 'STUDENT');
+
+-- 添加考勤测试数据
+INSERT INTO attendance_record (student_id, course_name, attendance_date, attendance_time, status, remarks, created_by) VALUES
+('2023001', '高等数学', DATE_SUB(CURDATE(), INTERVAL 3 DAY), '08:30:00', 'PRESENT', '', 'teacher1'),
+('2023002', '高等数学', DATE_SUB(CURDATE(), INTERVAL 3 DAY), '08:35:00', 'LATE', '迟到5分钟', 'teacher1'),
+('2023001', '大学英语', DATE_SUB(CURDATE(), INTERVAL 2 DAY), '10:00:00', 'PRESENT', '', 'teacher1'),
+('2023003', '高等数学', DATE_SUB(CURDATE(), INTERVAL 3 DAY), '08:30:00', 'ABSENT', '请假', 'teacher1'),
+('2023001', '数据结构', DATE_SUB(CURDATE(), INTERVAL 1 DAY), '14:00:00', 'PRESENT', '', 'teacher1'),
+('2023002', '数据结构', DATE_SUB(CURDATE(), INTERVAL 1 DAY), '14:00:00', 'PRESENT', '', 'teacher1');
\ No newline at end of file
diff --git a/src/main/java/com/campus/controller/PageController.java b/src/main/java/com/campus/controller/PageController.java
index 0ac41cd..f38da69 100644
--- a/src/main/java/com/campus/controller/PageController.java
+++ b/src/main/java/com/campus/controller/PageController.java
@@ -1,8 +1,13 @@
+// com/campus/controller/PageController.java
package com.campus.controller;
+import com.campus.entity.User;
import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
+import javax.servlet.http.HttpSession;
+
@Controller
public class PageController {
@@ -15,4 +20,44 @@ public class PageController {
public String studentList() {
return "student_list";
}
+
+ @GetMapping("/login")
+ public String login() {
+ return "login";
+ }
+
+ @GetMapping("/register")
+ public String register() {
+ return "register";
+ }
+
+ @GetMapping("/admin")
+ public String adminPage(HttpSession session, Model model) {
+ User user = (User) session.getAttribute("currentUser");
+ if (user == null || !"ADMIN".equals(user.getRole())) {
+ return "redirect:/login";
+ }
+ model.addAttribute("user", user);
+ return "admin";
+ }
+
+ @GetMapping("/teacher")
+ public String teacherPage(HttpSession session, Model model) {
+ User user = (User) session.getAttribute("currentUser");
+ if (user == null || !"TEACHER".equals(user.getRole())) {
+ return "redirect:/login";
+ }
+ model.addAttribute("user", user);
+ return "teacher";
+ }
+
+ @GetMapping("/student")
+ public String studentPage(HttpSession session, Model model) {
+ User user = (User) session.getAttribute("currentUser");
+ if (user == null || !"STUDENT".equals(user.getRole())) {
+ return "redirect:/login";
+ }
+ model.addAttribute("user", user);
+ return "student";
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/campus/controller/StudentController.java b/src/main/java/com/campus/controller/StudentController.java
index 87373ce..72daf88 100644
--- a/src/main/java/com/campus/controller/StudentController.java
+++ b/src/main/java/com/campus/controller/StudentController.java
@@ -1,3 +1,4 @@
+// com/campus/controller/StudentController.java
package com.campus.controller;
import com.campus.entity.Student;
@@ -5,9 +6,10 @@ import com.campus.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
-// StudentController.java
@RestController
@RequestMapping("/student")
public class StudentController {
@@ -19,9 +21,67 @@ public class StudentController {
return studentService.listAll();
}
+ @GetMapping("/{studentId}")
+ public Map getByStudentId(@PathVariable String studentId) {
+ Map result = new HashMap<>();
+ Student student = studentService.getByStudentId(studentId);
+
+ if (student != null) {
+ result.put("success", true);
+ result.put("student", student);
+ } else {
+ result.put("success", false);
+ result.put("message", "学生不存在");
+ }
+
+ return result;
+ }
+
@PostMapping("/add")
- public String add(@RequestBody Student student) {
- studentService.add(student);
- return "success";
+ public Map add(@RequestBody Student student) {
+ Map result = new HashMap<>();
+
+ try {
+ studentService.add(student);
+ result.put("success", true);
+ result.put("message", "添加成功");
+ } catch (Exception e) {
+ result.put("success", false);
+ result.put("message", "添加失败:" + e.getMessage());
+ }
+
+ return result;
+ }
+
+ @PutMapping("/update")
+ public Map update(@RequestBody Student student) {
+ Map result = new HashMap<>();
+
+ try {
+ studentService.update(student);
+ result.put("success", true);
+ result.put("message", "更新成功");
+ } catch (Exception e) {
+ result.put("success", false);
+ result.put("message", "更新失败:" + e.getMessage());
+ }
+
+ return result;
+ }
+
+ @DeleteMapping("/delete/{id}")
+ public Map delete(@PathVariable Integer id) {
+ Map result = new HashMap<>();
+
+ try {
+ studentService.delete(id);
+ result.put("success", true);
+ result.put("message", "删除成功");
+ } catch (Exception e) {
+ result.put("success", false);
+ result.put("message", "删除失败:" + e.getMessage());
+ }
+
+ return result;
}
}
\ No newline at end of file
diff --git a/src/main/java/com/campus/entity/User.java b/src/main/java/com/campus/entity/User.java
index 3c4f8ae..3d8d9e7 100644
--- a/src/main/java/com/campus/entity/User.java
+++ b/src/main/java/com/campus/entity/User.java
@@ -1,41 +1,28 @@
+// com/campus/entity/User.java
package com.campus.entity;
-// User.java
public class User {
private Integer id;
private String username;
private String password;
private String role; // ADMIN/TEACHER/STUDENT
- public Integer getId() {
- return id;
- }
+ // 新增构造方法
+ public User() {}
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
+ public User(String username, String password, String role) {
this.username = username;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
this.password = password;
- }
-
- public String getRole() {
- return role;
- }
-
- public void setRole(String role) {
this.role = role;
}
+
+ // 已有的getter和setter方法...
+ public Integer getId() { return id; }
+ public void setId(Integer id) { this.id = id; }
+ public String getUsername() { return username; }
+ public void setUsername(String username) { this.username = username; }
+ public String getPassword() { return password; }
+ public void setPassword(String password) { this.password = password; }
+ public String getRole() { return role; }
+ public void setRole(String role) { this.role = role; }
}
\ No newline at end of file
diff --git a/src/main/java/com/campus/mapper/StudentMapper.java b/src/main/java/com/campus/mapper/StudentMapper.java
index 538191b..afcd3be 100644
--- a/src/main/java/com/campus/mapper/StudentMapper.java
+++ b/src/main/java/com/campus/mapper/StudentMapper.java
@@ -1,7 +1,9 @@
+// com/campus/mapper/StudentMapper.java
package com.campus.mapper;
import com.campus.entity.Student;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -11,4 +13,7 @@ public interface StudentMapper {
void insert(Student student);
void update(Student student);
void delete(Integer id);
+
+ // 新增:根据学号查询学生
+ Student selectByStudentId(@Param("studentId") String studentId);
}
\ No newline at end of file
diff --git a/src/main/java/com/campus/service/StudentService.java b/src/main/java/com/campus/service/StudentService.java
index 8452b00..ae8e9c8 100644
--- a/src/main/java/com/campus/service/StudentService.java
+++ b/src/main/java/com/campus/service/StudentService.java
@@ -1,3 +1,4 @@
+// com/campus/service/StudentService.java
package com.campus.service;
import com.campus.entity.Student;
@@ -7,7 +8,6 @@ import org.springframework.stereotype.Service;
import java.util.List;
-// StudentService.java
@Service
public class StudentService {
@Autowired
@@ -20,4 +20,19 @@ public class StudentService {
public void add(Student student) {
studentMapper.insert(student);
}
+
+ // 添加新方法:根据学号查询学生
+ public Student getByStudentId(String studentId) {
+ return studentMapper.selectByStudentId(studentId);
+ }
+
+ // 添加更新方法
+ public void update(Student student) {
+ studentMapper.update(student);
+ }
+
+ // 添加删除方法
+ public void delete(Integer id) {
+ studentMapper.delete(id);
+ }
}
\ No newline at end of file
diff --git a/src/main/resources/mapper/StudentMapper.xml b/src/main/resources/mapper/StudentMapper.xml
index 72759e6..74a8a15 100644
--- a/src/main/resources/mapper/StudentMapper.xml
+++ b/src/main/resources/mapper/StudentMapper.xml
@@ -3,20 +3,39 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
\ No newline at end of file
diff --git a/src/main/resources/spring-mvc.xml b/src/main/resources/spring-mvc.xml
index 3a3a6e3..ff3516c 100644
--- a/src/main/resources/spring-mvc.xml
+++ b/src/main/resources/spring-mvc.xml
@@ -13,7 +13,6 @@
-
@@ -27,4 +26,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/html;charset=UTF-8
+ application/json;charset=UTF-8
+
+
+
+
+
+
\ No newline at end of file