第一次提交

This commit is contained in:
AQUAFIN
2026-09-21 17:39:16 +08:00
parent ea9a6644b1
commit 34783833e5
80 changed files with 3151 additions and 0 deletions
+123
View File
@@ -0,0 +1,123 @@
from sqlalchemy.orm import Session
from model.scores import Scores
def add_score(db: Session, id: str, exam_round: int, score: int): #1.按考核序次录入考核成绩(包含字段:学生ID、考核序次、成绩)
try:
judgement_id = (db.query(Scores).
filter(Scores.id == id,Scores.is_deleted == False).
first()) # 通过外键class Student校验学生ID是否存在
if not judgement_id:
return {"code": 404, "msg": f"学生ID:{id}不存在,请去录入学生信息!"}
judgement_id_er = (db.query(Scores).
filter(Scores.id == id,
Scores.exam_round == exam_round,
Scores.is_deleted == False).
first()) # 本表校验同一学生、同一考核序次是否已录入
if judgement_id_er:
return {"code": 400, "msg": f"学生ID:{id}第{exam_round}次考核成绩已存在,请勿重复录入!"}
if score < 60: # 创建分数小于等于60分的记录并警告
record = Scores(id=id,
exam_round=exam_round,
score=score,
is_warning=True) #写入学生ID,考核序次,成绩,标记警告
db.add(record)
db.commit()
db.refresh(record)
return {"code": 200, "msg": f"学生ID:{id}第{exam_round}次考核成绩{score}分录入成功!成绩小于60分,需要多关注!"}
else: # 创建分数大于等于60分的记录
record = Scores(id=id,
exam_round=exam_round,
score=score) #写入学生ID,考核序次,成绩
db.add(record)
db.commit()
db.refresh(record)
return {"code": 200, "msg": f"学生ID:{id}第{exam_round}次考核成绩{score}分录入成功!"}
except Exception as e:
db.rollback()
return {"code": 500, "msg": f"考核成绩录入失败: {e}"}
def query_id(db: Session, id: str): #2.按学生ID过滤,成绩降序,考核序次升序,返回全部信息
try:
query_id = (db.query(Scores).
filter(Scores.id == id,Scores.is_deleted == False).
order_by(Scores.score.desc(),Scores.exam_round.asc()).
all())
if not query_id:
return {"code": 404, "msg": "未查询到相关结果"}
data = [{"id": o.id, "exam_round": o.exam_round, "score": o.score}for o in query_id]
return {"code": 200, "msg": data}
except Exception as e:
db.rollback()
return {"code": 500, "msg": f"未查询到相关结果:{e}"}
def query_er(db: Session, exam_round: int): #3.按考核序次过滤,成绩降序,学生ID升序,返回全部信息
try:
query_er = (db.query(Scores).
filter(Scores.exam_round == exam_round,Scores.is_deleted == False).
order_by(Scores.score.desc(),Scores.id.asc()).
all())
if not query_er:
return {"code": 404, "msg": "未查询到相关结果"}
data = [{"id": p.id, "exam_round": p.exam_round, "score": p.score}for p in query_er]
return {"code": 200, "msg": data}
except Exception as e:
db.rollback()
return {"code": 500, "msg": f"未查询到相关结果: {e}"}
def query_sc(db: Session, score: int): #4.按成绩过滤,学生ID升序,考核序次升序,返回全部信息
try:
query_sc = (db.query(Scores).
filter(Scores.score == score,Scores.is_deleted == False).
order_by(Scores.id.asc(),Scores.exam_round.asc()).
all())
if not query_sc:
return {"code": 404, "msg": "未查询到相关结果"}
data = [{"id": q.id, "exam_round": q.exam_round, "score": q.score}for q in query_sc]
return {"code": 200, "msg": data}
except Exception as e:
db.rollback()
return {"code": 500, "msg": f"未查询到相关结果: {e}"}
def update_sc(db: Session, id: str, exam_round: int, score: int): #5.根据学生ID、考核序次修改成绩
try:
update_sc = (db.query(Scores).
filter(Scores.id == id,
Scores.exam_round == exam_round,
Scores.is_deleted == False).
first())
if not update_sc:
return {"code": 404, "msg": "该成绩记录不存在"}
update_sc.score = score
update_sc.is_warning = score < 60
db.commit()
db.refresh(update_sc)
return {"code": 200, "msg": f"学生ID:{id} 第{exam_round}次成绩已修改为{score}分!"}
except Exception as e:
db.rollback()
return {"code": 500, "msg": f"考核成绩修改失败: {e}"}
def delete_sc(db: Session, id: str, exam_round: int): #6.根据学生ID、考核序次删除成绩
try:
delete_sc = (db.query(Scores).
filter(Scores.id == id,
Scores.exam_round == exam_round,
Scores.is_deleted == False).
first())
if not delete_sc:
return {"code": 404, "msg": "成绩记录不存在"}
delete_sc.is_deleted = True # 逻辑删除
db.commit()
db.refresh(delete_sc)
return {"code": 200, "msg": f"学生ID:{id}第{exam_round}次成绩已删除!"}
except Exception as e:
db.rollback()
return {"code": 500, "msg": f"考核成绩删除失败: {e}"}