统计分析模块更新,待测试,模块更新80分以上成绩学生信息查询。

This commit is contained in:
Orangeeee
2026-09-22 19:04:39 +08:00
parent c88c6bc27e
commit 7839178625
3 changed files with 45 additions and 17 deletions
+6 -8
View File
@@ -22,9 +22,10 @@ def get_students(db=Depends(get_db)):
,summary='人数统计'
,description=f'统计每个班级的人数以及男生女生的人数。'
)
def get_students(db=Depends(get_db)):
s_dict = stu.model_dump(exclude_unset=True) # 没值的不要
result = get_student_dao( s=s_dict , db=db )
def get_students(g:get_student_dao = Depends()
,db=Depends(get_db)
):
result = get_class_count( g=g , db=db )
if result:
return result
raise HTTPException(status_code=404, detail="没有找到符合条件的学生")
@@ -33,11 +34,8 @@ def get_students(db=Depends(get_db)):
,summary='80分以上成绩学生信息查询'
,description=f'查询每次考试成绩都在80分以上的学生的编号,姓名和成绩。'
)
def get_students( stu:StudentsQuery = Depends()
, db=Depends(get_db)
):
s_dict = stu.model_dump(exclude_unset=True) # 没值的不要
result = get_student_dao( s=s_dict , db=db )
def get_students(db=Depends(get_db)):
result = get_student_dao( db=db )
if result:
return result
raise HTTPException(status_code=404, detail="没有找到符合条件的学生")
+35 -8
View File
@@ -1,5 +1,10 @@
from pygments.lexers import sql
from sentry_sdk.integrations import sqlalchemy
from StatCalc.schema.statcalc_request import *
from fastapi import HTTPException
from sqlalchemy import *
from students.model.students_model import Students
@@ -7,13 +12,35 @@ def get_age_30(db):
q = db.query(Students).filter(Students.age>=30).all()
return q
from class_management.model.class_management_model import ClassInfo
def get_class_count(db):
q = (db.query(ClassInfo.id)
.join(Students,Students.class_id==ClassInfo.id)
.group_by(ClassInfo.id,Students.sex,)
.all())
m
f
return q
def get_class_count(g , db):
if g == "班级人数":
q = (db.query(ClassInfo.id,ClassInfo.name,func.count(ClassInfo.id) )
.join(Students,Students.class_id==ClassInfo.id)
.group_by(ClassInfo.id,ClassInfo.name,Students.sex)
.all())
elif g == "男女人数":
q = (db.query(Students.sex,func.count(ClassInfo.id) )
.join(Students,Students.class_id==ClassInfo.id)
.group_by(Students.sex)
.all())
elif g == "班级中男女人数":
q = (db.query(ClassInfo.id,ClassInfo.name,Students.sex,func.count(ClassInfo.id) )
.join(Students,Students.class_id==ClassInfo.id)
.group_by(ClassInfo.id,ClassInfo.name,Students.sex)
.all())
else:
return False
return q
from scores.model.score_model import Score
def get_score_80(db):
q = db.query(Score).filter(Score.score>=80).all()
return q
+4 -1
View File
@@ -4,6 +4,9 @@ from pydantic import BaseModel , Field , field_validator
from datetime import datetime
import enum
class get_student_dao(enum.Enum):
get_class = "班级人数"
get_sex = "男女人数"
get_class_sex = "班级中男女人数"