feat: 实现成绩管理系统核心功能
添加响应工具、错误处理中间件和数据库模型 创建用户、学生、课程和成绩相关服务 实现管理员、教师和学生控制器的基本功能 重构路由处理并优化数据库查询
This commit is contained in:
50
backend/services/teacherService.js
Normal file
50
backend/services/teacherService.js
Normal file
@@ -0,0 +1,50 @@
|
||||
const Course = require('../models/Course');
|
||||
const Score = require('../models/Score');
|
||||
const Student = require('../models/Student');
|
||||
|
||||
class TeacherService {
|
||||
static async getCourses(teacherId) {
|
||||
return await Course.findByTeacherId(teacherId);
|
||||
}
|
||||
|
||||
static async addScore(teacherId, scoreData) {
|
||||
const { studentId, courseId, score } = scoreData;
|
||||
|
||||
// 验证学生
|
||||
const student = await Student.findById(studentId);
|
||||
if (!student) {
|
||||
throw new Error('学生不存在');
|
||||
}
|
||||
|
||||
// 验证课程(可选:验证是否是该教师的课程)
|
||||
// const course = await Course.findById(courseId);
|
||||
|
||||
// 检查重复
|
||||
const existingScore = await Score.findByStudentAndCourse(studentId, courseId);
|
||||
if (existingScore) {
|
||||
throw new Error('该学生此课程成绩已存在');
|
||||
}
|
||||
|
||||
// 计算绩点和等级
|
||||
const numericScore = parseFloat(score);
|
||||
let gradePoint = 0;
|
||||
let gradeLevel = 'F';
|
||||
|
||||
if (numericScore >= 90) { gradePoint = 4.0; gradeLevel = 'A'; }
|
||||
else if (numericScore >= 80) { gradePoint = 3.0; gradeLevel = 'B'; }
|
||||
else if (numericScore >= 70) { gradePoint = 2.0; gradeLevel = 'C'; }
|
||||
else if (numericScore >= 60) { gradePoint = 1.0; gradeLevel = 'D'; }
|
||||
|
||||
const fullScoreData = {
|
||||
...scoreData,
|
||||
teacherId,
|
||||
gradePoint,
|
||||
gradeLevel
|
||||
};
|
||||
|
||||
const gradeId = await Score.create(fullScoreData);
|
||||
return gradeId;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = TeacherService;
|
||||
Reference in New Issue
Block a user