diff --git a/PythonProject/api/student_api.py b/PythonProject/api/student_api.py new file mode 100644 index 0000000..b71aafc --- /dev/null +++ b/PythonProject/api/student_api.py @@ -0,0 +1,11 @@ +from fastapi import APIRouter +from dao.student_dao import select_age +from schema.student_schema import StudentResponse + +studentapi = APIRouter() + +@studentapi.get("/age",response_model=StudentResponse,tags=['统计分析模块'],description='根据年龄查询学生信息') +def get_students(min_age:int|None=None,max_age:int|None=None): + l = select_age(min_age,max_age) + return [i for i in l] + diff --git a/PythonProject/dao/student_dao.py b/PythonProject/dao/student_dao.py new file mode 100644 index 0000000..edc92f2 --- /dev/null +++ b/PythonProject/dao/student_dao.py @@ -0,0 +1,24 @@ +from fastapi import HTTPException,Depends +from util.database import get_db +from model.student_model import Student_Model + +def select_age(min_age,max_age,session=Depends(get_db)): + try: + if min_age is None and max_age is None: + raise HTTPException(status_code=400, detail="请至少传入一个参数") + session = session.query(Student_Model) + if min_age is not None: + session = session.filter(Student_Model.age >= min_age) + if max_age is not None: + session = session.filter(Student_Model.age <= max_age) + return session.all() + except HTTPException: + raise + except Exception: + raise HTTPException(status_code=500,detail="查询异常") + +def abc(): + return None + + + diff --git a/PythonProject/main.py b/PythonProject/main.py index b21386e..ce32cfe 100644 --- a/PythonProject/main.py +++ b/PythonProject/main.py @@ -1,4 +1,5 @@ from fastapi import FastAPI - +from api.student_api import * app = FastAPI() +app.include_router(studentapi) diff --git a/PythonProject/model/class_model.py b/PythonProject/model/class_model.py new file mode 100644 index 0000000..e69de29 diff --git a/PythonProject/model/student_model.py b/PythonProject/model/student_model.py new file mode 100644 index 0000000..f631579 --- /dev/null +++ b/PythonProject/model/student_model.py @@ -0,0 +1,33 @@ +from sqlalchemy import DATETIME,Column, Integer, String, Date,ForeignKey +from datetime import datetime +from util.database import Base,engine + +class Student_Model(Base): + __tablename__ = 'wl_student' + stu_id = Column(Integer + , primary_key=True + , autoincrement=True + ,comment='学生编号') + # class_id=Column(Integer + # ,ForeignKey('wl_class.class_id') + # ,nullable=False + # ,comment='班级编号') + stu_name=Column(String(100),comment='学生姓名') + age=Column(Integer,comment='年龄') + gender=Column(String(50),comment='性别') + native_place=Column(String(200),comment='籍贯') + birthday=Column(Date,comment='生日') + school=Column(String(100),comment='毕业学校') + major=Column(String(50),comment='专业') + degree=Column(String(50),comment='学历') + admission_date=Column(Date,comment='入学日期') + graduation_date=Column(Date,comment='毕业日期') + progress=Column(Integer,default=0,comment='课程进度:学习中=0,求职中=1,已就业=2') + create_date=Column(DATETIME + ,default=datetime.now) + update_date=Column(DATETIME + ,default=datetime.now + ,onupdate=datetime.now) + +Base.metadata.create_all(engine) + diff --git a/PythonProject/model/teacher_model.py b/PythonProject/model/teacher_model.py new file mode 100644 index 0000000..49035bc --- /dev/null +++ b/PythonProject/model/teacher_model.py @@ -0,0 +1,3 @@ +# MaRuiZhi NB +# MaRuiZhi NB Plus +# hahaha \ No newline at end of file diff --git a/PythonProject/schema/student_schema.py b/PythonProject/schema/student_schema.py new file mode 100644 index 0000000..c950945 --- /dev/null +++ b/PythonProject/schema/student_schema.py @@ -0,0 +1,20 @@ +from pydantic import BaseModel,field_serializer + +class StudentResponse(BaseModel): + code:int = 200 + detail:str = 'ok' + stu_name:str + age:int + gender:str + progress:int + + @field_serializer('progress') + def int_to_string(cls,progress:int): + d1 ={ + 0:'学习中', + 1:'求职中', + 2:'已就业' + } + return d1.get(progress,'暂不明确') + + diff --git a/PythonProject/util/database.py b/PythonProject/util/database.py index bcdd5d7..7c72545 100644 --- a/PythonProject/util/database.py +++ b/PythonProject/util/database.py @@ -6,4 +6,11 @@ engine = create_engine(db_url,pool_size=50) Base = declarative_base() Session = sessionmaker(bind=engine,autoflush=False,autocommit=False) -db = Session() + +def get_db(): + db = Session() + try: + yield db + finally: + db.close() + diff --git a/README.md b/README.md index 3ffa01f..ac6ff31 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,13 @@ -# SST +""" +学⽣基本信息表 sid +学生考试信息表 cid +学⽣考核成绩表 cid,sid +学⽣就业管理模表 sid +班级管理表 bid,sid +⽼师管理表 bid +modle:5个文件,里面放数据库模型类 +dao:6个文件,里面放数据交互逻辑(增删改查) 多一个复杂查询 +api:6个文件,里面放调用dao的逻辑,多一个复杂查询的调用 +schema:5个文件,穿插着写请求体和响应体 +""" \ No newline at end of file diff --git a/tmpl/work/dao/order_dao.py b/tmpl/work/dao/order_dao.py index fb0bc1a..abe7fe7 100644 --- a/tmpl/work/dao/order_dao.py +++ b/tmpl/work/dao/order_dao.py @@ -1,10 +1,11 @@ from fastapi import Form,HTTPException from model.order_model import OrderModel from schema.order_schema import OrderRequest -from util.database import db +from util.database import Session def select_orders(): try: + db = Session() order_list = db.query(OrderModel).all() return order_list except: @@ -12,6 +13,7 @@ def select_orders(): def insert_users(req:OrderRequest=Form()): try: + db = Session() data = req.model_dump() db.add(OrderModel(**data)) db.commit() @@ -22,6 +24,7 @@ def insert_users(req:OrderRequest=Form()): def update_users(id:int,req:OrderRequest=Form()): try: + db = Session() db.query(OrderModel).filter(OrderModel.id == id) \ .update(req.model_dump(exclude_unset=True)) except Exception as e: @@ -32,6 +35,7 @@ def update_users(id:int,req:OrderRequest=Form()): def delete_users(id:int): try: + db = Session() db.query(OrderModel).filter(OrderModel.id == id).delete() except Exception as e: raise HTTPException(status_code=500,detail="删除异常") diff --git a/tmpl/work/util/database.py b/tmpl/work/util/database.py index bcdd5d7..dc0a500 100644 --- a/tmpl/work/util/database.py +++ b/tmpl/work/util/database.py @@ -6,4 +6,10 @@ engine = create_engine(db_url,pool_size=50) Base = declarative_base() Session = sessionmaker(bind=engine,autoflush=False,autocommit=False) -db = Session() + +def get_db(): + db = Session() + try: + yield db + finally: + db.close() diff --git a/需求文档.md b/需求文档.md new file mode 100644 index 0000000..42c7048 --- /dev/null +++ b/需求文档.md @@ -0,0 +1,63 @@ +注意事项 必读!!!! +开始作业前记得点左边conding上的更新项目 +在提交文件时,右键点击文件选显示差异选项,看看有没有冲突 + +model层 +学⽣基本信息表 **msj 作成中** +wl_student(学⽣编号、学⽣班级、学⽣姓名、年龄、性别、籍贯、生日、毕业院校、专业、学历、⼊学时间、毕业时间、当前进度(学习中=0,求职中=1,已就业=2)、顾问编号(人事老师)、删除状态(0:初始值,1:已删除)、班级编号(外键)、作成时间、更新时间) + +学⽣考核成绩表 **xxx 做成中** +wl_score(学⽣编号、考核序次、成绩、删除状态(0:已删除,1:初始值)、作成时间、更新时间) + +学⽣就业管理模表 **xxx 做成中** +wl_employment(学⽣编号、就业开放时间(只有进入就业课的才会输入数据)、offer下发时间()、就业公司名称、就业薪资、删除状态(0:已删除,1:初始值)、作成时间、更新时间) + +班级管理表 **xxx 做成中** +wl_class(班级编号,开课时间,删除状态(0:已删除,1:初始值),班主任(老师编号),授课⽼师(老师编号),作成时间,更新时间) + +⽼师管理表 **xxx 做成中** +wl_teacher(老师编号,姓名,性别,年龄,删除状态(0:已删除,1:初始值),职位,作成时间,更新时间) + +dao层(每一个功能就是一个函数,判断能否功能复用) + +通用模块 + +学生模块 +实现增加学生的功能 **xxx 做成中** +实现查询学生的功能:需要能进行多条件查询 **xxx 做成中** +实现更新学生信息的功能 **xxx 做成中** +实现删除学生信息的功能 (更新删除状态这个列,即软删除)**xxx 做成中** + +成绩模块 +实现增加学生成绩的功能 **xxx 做成中** +实现查询成绩的功能 **xxx 做成中** +实现更新成绩的功能 **xxx 做成中** +实现删除成绩的功能 **xxx 做成中** + +就业模块 +实现增加学生就业信息的功能 **xxx 做成中** +实现查询学生就业信息的功能 **xxx 做成中** +实现修改学生就业信息的功能 **xxx 做成中** +实现删除学生就业信息的功能 **xxx 做成中** + +班级模块 +实现增加班级的功能 **xxx 做成中** +实现查询班级的功能 **xxx 做成中** +实现更新班级的功能 **xxx 做成中** +实现删除班级的功能 **xxx 做成中** + +老师模块 +实现增加老师的功能 **xxx 做成中** +实现查询老师的功能 **xxx 做成中** +实现更新老师的功能 **xxx 做成中** +实现删除老师的功能 **xxx 做成中** + +统计分析模块 +实现根据年龄查询学生信息的功能 **mrz 已作成** +实现统计每个班级的学员总数以及男女生的总数的功能 **xxx 做成中** +实现根据成绩查询学员信息的功能 **xxx 做成中** +实现统计每次考试每个班级的平均分并排序的功能 **xxx 做成中** +实现统计薪资最高的前五名的学员信息 **xxx 做成中** +实现查询每个学生的就业时长 **xxx 做成中** +实现统计每个班级的平均就业时长 **xxx 做成中** +