diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
new file mode 100644
index 0000000..ba3e0d2
--- /dev/null
+++ b/.idea/dataSources.xml
@@ -0,0 +1,12 @@
+
+
+
+
+ mysql.8
+ true
+ com.mysql.cj.jdbc.Driver
+ jdbc:mysql://localhost:3306
+ $ProjectFileDir$
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..d81046c
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/learn_20260919_dome.iml b/.idea/learn_20260919_dome.iml
new file mode 100644
index 0000000..ea1b721
--- /dev/null
+++ b/.idea/learn_20260919_dome.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..930139e
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..ad5a223
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/student_manage_system.iml b/.idea/student_manage_system.iml
new file mode 100644
index 0000000..8437fe6
--- /dev/null
+++ b/.idea/student_manage_system.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Teachers/api/__init__.py b/Teachers/api/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/Teachers/api/tea_api.py b/Teachers/api/tea_api.py
new file mode 100644
index 0000000..da9519f
--- /dev/null
+++ b/Teachers/api/tea_api.py
@@ -0,0 +1,36 @@
+from fastapi import APIRouter,Depends,HTTPException
+from Teachers.schema import *
+from Teachers.database import *
+from Teachers.model.tea_model import *
+from Teachers.dao.tea_dao import *
+from Teachers.schema.tea_request import TeaRequest,NewTeaRequest
+from Teachers.schema.tea_response import TeaResponse
+
+tea_api = APIRouter(tags=['老师相关接口'])
+
+@tea_api.post('/tea',response_model=TeaResponse,summary='新增老师',description='输入新增的老师信息,除去姓名外可以为空')
+def add_tea(tea: NewTeaRequest,db=Depends(get_db)):
+ r = add_tea_dao(tea.model_dump(),db)
+ if not r:
+ raise HTTPException(status_code=500,detail='添加失败!')
+ return TeaResponse(totals=1,data=tea.model_dump())
+@tea_api.get('/tea',response_model=TeaResponse,summary='查询老师',description='任意选择输入的信息数量,不输入则查询全部老师')
+def get_tea(t:TeaRequest=Depends(),db=Depends(get_db)): #开启会话窗口
+ r = get_tea_dao(t.model_dump(),db=db)
+ if not r:
+ raise HTTPException(status_code=404,detail='老师不存在')
+ return TeaResponse(totals=len(r), data=r)
+@tea_api.delete('/tea/{id}',summary='删除老师',description='输入删除的老师id')
+def delete_tea(id:int|None,db=Depends(get_db)):
+ r = delete_tea_dao(id,db)
+ if not r:
+ raise HTTPException(status_code=500,detail='删除失败!')
+ return {'detail':'删除成功!'}
+
+@tea_api.put('/tea/{id}',summary='修改老师信息',description='输入更改的信息,老师的姓名和性别不能为空,其余可以为空')
+def update_tea(id:int,tea:NewTeaRequest,db=Depends(get_db)):
+ t = tea.model_dump(exclude_unset= True)
+ r = update_tea_dao(id=id,update_data=t,db=db)
+ if not r:
+ raise HTTPException(status_code=404,detail='老师不存在')
+ return {'detail':'修改成功'}
diff --git a/Teachers/dao/__init__.py b/Teachers/dao/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/Teachers/dao/tea_dao.py b/Teachers/dao/tea_dao.py
new file mode 100644
index 0000000..ce110c6
--- /dev/null
+++ b/Teachers/dao/tea_dao.py
@@ -0,0 +1,72 @@
+from Teachers.model.tea_model import Tea
+from datetime import datetime
+
+#增加
+def add_tea_dao(t,db):
+ try:
+ t1 = Tea(**t)
+ db.add(t1)
+ except:
+ db.rollback()
+ return False
+ else:
+ db.commit()
+ return True
+
+#更新
+def add_tea_dao(t, db):
+ try:
+ t1 = Tea(**t)
+ db.add(t1)
+ except Exception as e:
+ db.rollback()
+ print('新增失败原因:', e)
+ return False
+ else:
+ db.commit()
+ return True
+
+#查询
+def get_tea_dao(t,db):
+ query = db.query(Tea).filter(Tea.is_delete == False)
+ if t.get('id'):
+ query = query.filter(Tea.id == t.get('id') )
+ if t.get('name'):
+ query = query.filter(Tea.name == t.get('name') )
+ if t.get("sex"):
+ query = query.filter(Tea.sex == t.get('sex') )
+ if t.get('class_id'):
+ query = query.filter(Tea.class_id == t.get('claa_id') )
+ if t.get('sub'):
+ query = query.filter(Tea.sub == t.get('sub') )
+ if t.get('home_place'):
+ query = query.filter(Tea.home_place == t.get('home_place') )
+ if t.get('specialty'):
+ query = query.filter(Tea.specialty == t.get('specialty') )
+ if t.get('start_time'):
+ query = query.filter(Tea.start_time == t.get('start_time') )
+ if t. get('work_experience'):
+ query = query.filter(Tea.work_experience == t.get('work_experience') )
+ if t.get('education'):
+ query = query.filter(Tea.education == t.get('education') )
+ if t.get('college'):
+ query = query.filter(Tea.collage == t.get('college') )
+ r = query.all()
+ return [{'id':i.id,'name':i.name,'class_id':i.class_id,'sub':i.sub,'tea.sex':i.sex,'home_place':i.home_place
+ ,'specialty':i.specialty,'start_time':i.start_time,'work_experience':i.work_experience,'college':i.college} for i in r]
+
+#删除
+def delete_tea_dao(id,db):
+ try:
+ row = db.query(Tea).filter(Tea.id == id
+ ,Tea.is_delete == False
+ ).update({'is_delete':True,'delete_time':datetime.now()})
+ except:
+ db.rollback()
+ row = 0
+ return
+ else:
+ db.commit()
+ return row
+
+
diff --git a/Teachers/database.py b/Teachers/database.py
new file mode 100644
index 0000000..07ef505
--- /dev/null
+++ b/Teachers/database.py
@@ -0,0 +1,17 @@
+from sqlalchemy import *
+from sqlalchemy.orm import sessionmaker,declarative_base
+
+db_tea = 'mysql+pymysql://root:123456@127.0.0.1:3306/student_manage_system?charset=utf8mb4'
+engine1 = create_engine(db_tea)
+
+Base = declarative_base()
+Session = sessionmaker(bind=engine1
+ ,autoflush = False
+ ,autocommit = False)
+def get_db():
+ db = Session()
+ try:
+ yield db
+ finally:
+ db.close()
+Base.metadata.create_all(engine1)
\ No newline at end of file
diff --git a/Teachers/main.py b/Teachers/main.py
new file mode 100644
index 0000000..1ec14a3
--- /dev/null
+++ b/Teachers/main.py
@@ -0,0 +1,16 @@
+from fastapi import FastAPI
+from Teachers.model.tea_model import *
+from api.tea_api import tea_api
+app = FastAPI()
+app.include_router(tea_api)
+
+Base.metadata.create_all(engine1)
+
+if __name__ == "__main__":
+ import uvicorn
+ uvicorn.run('main:app', host='0.0.0.0', port=55000)
+ """
+ IPv4 地址 . . . . . . . . . . . . : 192.168.1.51
+ 子网掩码 . . . . . . . . . . . . : 255.255.255.0
+ 默认网关. . . . . . . . . . . . . : 192.168.1.1
+ """
\ No newline at end of file
diff --git a/Teachers/model/__init__.py b/Teachers/model/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/Teachers/model/tea_model.py b/Teachers/model/tea_model.py
new file mode 100644
index 0000000..68a09c4
--- /dev/null
+++ b/Teachers/model/tea_model.py
@@ -0,0 +1,48 @@
+from Teachers.database import *
+from datetime import datetime
+from sqlalchemy import *
+import enum
+
+class Gender(str,enum.Enum):
+ m = '男'
+ f = '女'
+
+class Tea(Base):
+ __tablename__ = 'teachers'
+ id = Column(Integer
+ , primary_key=True
+ ,nullable=False
+ ,autoincrement=True
+ ,comment='id')
+ name = Column(String(50)
+ ,nullable=False
+ ,comment='姓名')
+ sex = Column(Enum(Gender),default='未知'
+ ,comment='性别')
+ class_id = Column(Integer
+ ,nullable=False
+ ,comment='班级id')
+ sub = Column(String(50)
+ ,nullable=False
+ ,comment='教学科目')
+ home_place = Column(String(50)
+ ,comment='家乡')
+ specialty = Column(String(50)
+ ,comment='专业')
+ start_time = Column(DateTime,comment='入职时间')
+ work_experience = Column(String(50)
+ ,comment='工作经验')
+ education = Column(String(50)
+ ,comment='学历')
+ collage = Column(String(50)
+ ,comment='毕业院校')
+ create_date = Column(DateTime
+ ,default=datetime.now
+ ,comment='创建时间')
+ update_date = Column(DateTime
+ ,onupdate=datetime.now
+ ,comment='更新时间')
+ is_delete = Column(Boolean,default=False,comment='是否删除')
+ delete_time = Column(DateTime)
+
+
diff --git a/Teachers/schema/__init__.py b/Teachers/schema/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/Teachers/schema/tea_request.py b/Teachers/schema/tea_request.py
new file mode 100644
index 0000000..2bf3165
--- /dev/null
+++ b/Teachers/schema/tea_request.py
@@ -0,0 +1,31 @@
+from pydantic import BaseModel
+from Teachers.model.tea_model import *
+
+#查询使用请求体
+class TeaRequest(BaseModel):
+ id: int|None = None
+ name: str|None = None
+ sex: Gender|None = None
+ class_id: int | None = None
+ sub: str|None = None
+ home_place: str|None = None
+ collage: str|None = None
+ education: str|None = None
+ work_experience: str|None = None
+ start_time: str|None = None
+ specialty: str|None = None
+
+
+#更新、新增使用请求体(无法覆盖)
+class NewTeaRequest(BaseModel):
+ name: str | None = None
+ sex: Gender
+ class_id: int | None = None
+ sub: str | None = None
+ home_place: str | None = None
+ collage: str | None = None
+ education: str | None = None
+ work_experience: str | None = None
+ start_time: datetime | None = None
+ specialty: str | None = None
+
diff --git a/Teachers/schema/tea_response.py b/Teachers/schema/tea_response.py
new file mode 100644
index 0000000..ee7f554
--- /dev/null
+++ b/Teachers/schema/tea_response.py
@@ -0,0 +1,8 @@
+from pydantic import BaseModel
+
+class TeaResponse(BaseModel):
+ code: int = 200
+ detail: str = 'OK'
+ totals:int = 0
+ data: str |dict|tuple|list
+