学生信息管理系统

This commit is contained in:
倾音节
2026-09-21 19:14:15 +08:00
commit e1491ead63
110 changed files with 1922 additions and 0 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,56 @@
from sqlalchemy.orm import Session
from model.advisors import Advisor
from model.students import Student
def create_advisor(db:Session,advisor_id:int,advisor_name:str):
advisor = Advisor(advisor_id=advisor_id,advisor_name=advisor_name)
db.add(advisor)
db.commit()
db.refresh(advisor)
return advisor
def search_advisor(db:Session,advisor_id:int|None=None,advisor_name:str|None=None):
if advisor_id is None and advisor_name is None:
return None
query=db.query(Advisor)
if advisor_id is not None:
query = query.filter(Advisor.advisor_id == advisor_id)
if advisor_name is not None:
query = query.filter(Advisor.advisor_name==advisor_name)
advisor = query.first()
return advisor
def list_advisors(db: Session,advisor_name: str|None =None):
query = db.query(Advisor)
if advisor_name is not None:
query = query.filter(Advisor.advisor_name.like(f"%{advisor_name}%"))
return query.all()
def list_students_of_advisor(db: Session, advisor_id: int):
"""查这个顾问名下还没被逻辑删除的学生"""
return db.query(Student).filter(
Student.is_deleted == 0,
Student.advisor_id == advisor_id,
).all()
def update_advisor(db:Session,advisor_id:int,advisor_name:str|None=None):
r_advisor = search_advisor(db=db,advisor_id=advisor_id)
if r_advisor is None:
return None
if advisor_name is not None:
r_advisor.advisor_name = advisor_name
db.commit()
return r_advisor
def delete_advisor(db:Session,advisor_id:int):
d_advisor = search_advisor(db=db,advisor_id=advisor_id)
if d_advisor is None:
return None
db.delete(d_advisor)
db.commit()
return advisor_id
@@ -0,0 +1,41 @@
from sqlalchemy.orm import Session
from sqlalchemy.exc import IntegrityError
from dao.advisor import crud
from scheme.advisors import AdvisorIn
# 成功 (数据, None);失败 (None, "错误码")。
def create_advisor(db:Session,advisor_id:int,advisor_name:str):
exist=crud.search_advisor(db,advisor_id=advisor_id)
if exist is not None:
return None,"DUPLICATE" #ID主键已被占用
try:
advisor = crud.create_advisor(db,advisor_id,advisor_name)
except IntegrityError:
db.rollback()
return None, "DUPLICATE"
return advisor, None
def update_advisor(db:Session,advisor_id:int,advisor_in:AdvisorIn):
exist = crud.search_advisor(db,advisor_id=advisor_id)
if exist is None:
return None, "NOT_FOUND"
u_advisor=crud.update_advisor(db,advisor_id=advisor_id,advisor_name=advisor_in.advisor_name)
if u_advisor is None:
return None, "NOT_FOUND" # 查过之后被并发删掉了
return u_advisor,None
#删除成功返回Advisor ID,删除失败返回None。顾问如连接学生,则拒绝删除。
def delete_advisor(db: Session, advisor_id: int):
exist = crud.search_advisor(db=db, advisor_id=advisor_id)
if exist is None:
return None, "NOT_FOUND"
# 查一下这个顾问名下有没有学生
if crud.list_students_of_advisor(db, advisor_id):
return None, "HAS_STUDENTS"
result = crud.delete_advisor(db=db, advisor_id=advisor_id)
if result is None:
return None, "NOT_FOUND" # 查过之后被并发删掉了
return result, None