feat: 初始化学生管理系统代码

This commit is contained in:
mister-ye
2026-09-21 18:03:04 +08:00
commit 70783dd350
42 changed files with 1547 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
from sqlalchemy.orm import declarative_base
Base = declarative_base()
+17
View File
@@ -0,0 +1,17 @@
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import declarative_base, relationship
from database import Base
class Advisor(Base):
__tablename__ = 'advisor'
id = Column(Integer, primary_key=True, autoincrement=True)
advisor_no = Column(String(32), unique=True, nullable=False)
name = Column(String(50), nullable=False)
gender = Column(String(2), nullable=False)
phone = Column(String(20), nullable=False)
remark=Column(String(500), nullable=True)
statu = Column(Integer, default=1, nullable=False)
students=relationship("Student", back_populates="advisor")
+17
View File
@@ -0,0 +1,17 @@
from sqlalchemy import Column, Integer, String, Date
from sqlalchemy.orm import relationship
from database import Base
from model.teacher_class import teacher_class
from model.teacher import Teacher
from model.student import Student
# 导入中间关联表
# 班级信息表
class ClassInfo(Base):
__tablename__="classinfo"
id=Column(Integer,primary_key=True,autoincrement=True)
class_name=Column(String(50),nullable=False,unique=True)
start_time=Column(Date)
statu=Column(Integer,default=1) # 逻辑删除表字段 1代表存在
teachers=relationship(Teacher,secondary=teacher_class,back_populates="classinfo")
students= relationship(Student,back_populates="classinfo")
+20
View File
@@ -0,0 +1,20 @@
from sqlalchemy import Column, Integer, String, Float, ForeignKey, DateTime, Date
from sqlalchemy.orm import relationship
from database import Base
class Employment(Base):
__tablename__="employment"
id=Column(Integer,primary_key=True, autoincrement=True)
name=Column(String(50))
stu_id=Column(Integer,ForeignKey("student.id"),unique=True,nullable=False,index=True)
employment_open_time=Column(DateTime,nullable=True)
offer_time=Column(DateTime,nullable=True)
company_name=Column(String(50),nullable=True)
salary=Column(Float,nullable=True)
is_deleted = Column(Integer, default=0, nullable=False, comment="0未删除 1已删除")
student=relationship("Student",back_populates="employment")
+17
View File
@@ -0,0 +1,17 @@
# model/score.py
from sqlalchemy import Column, Integer, Float, ForeignKey, DateTime
from sqlalchemy.orm import relationship
from datetime import datetime
from database import Base
class Score(Base):
__tablename__ = "score"
id = Column(Integer, primary_key=True, autoincrement=True) # 主键
student_id = Column(Integer, ForeignKey("student.id"), nullable=False) #外键
exam_seq = Column(Integer, nullable=False)
score = Column(Float, nullable=False)
is_warning = Column(Integer, default=0) #低分预警 0正常 1不及格
is_deleted = Column(Integer, default=0) #是否被逻辑删除
create_time = Column(DateTime, default=datetime.now)
student = relationship("Student", back_populates="scores")
+29
View File
@@ -0,0 +1,29 @@
from sqlalchemy import create_engine, Column, Integer, String, Float, ForeignKey, Table, Date
from sqlalchemy.orm import relationship
from model import Base
class Student(Base):
__tablename__="student"
id = Column(Integer, primary_key=True, autoincrement=True)
stu_id=Column(String(50),unique=True)
name = Column(String(50), nullable=False)
hometown=Column(String(100))
school = Column(String(100))
major= Column(String(100))
enroll_time=Column(String(100))
graduate_time=Column(String(100))
education=Column(String(100))
age=Column(Integer)
gender=Column(String(10))
statu=Column(Integer,nullable=False)
advisor_id = Column(Integer, ForeignKey("advisor.id"), nullable=True)
class_id = Column(Integer, ForeignKey("classinfo.id"))
advisor = relationship("Advisor", back_populates="students")#关联顾问
scores = relationship("Score", back_populates="student")#关联成绩
employment=relationship("Employment", back_populates="student")#关联就业
classinfo = relationship("ClassInfo", back_populates="students")#关联班级
+17
View File
@@ -0,0 +1,17 @@
from sqlalchemy import Column, Integer, String, ForeignKey,Date,DateTime
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from model import Base
from model.teacher_class import teacher_class
class Teacher(Base):
__tablename__="teacher"
id=Column(Integer,primary_key=True,autoincrement=True)
teacher_no=Column(String(50),unique=True,nullable=False)
name=Column(String(50),nullable=False)
phone=Column(String(50),nullable=False)
is_deleted=Column(Integer,default=0)
created_at=Column(DateTime,server_default=func.now())
updated_at=Column(DateTime,onupdate=func.now())
classinfo = relationship("ClassInfo",secondary=teacher_class, back_populates="teachers")
+12
View File
@@ -0,0 +1,12 @@
from sqlalchemy import create_engine, Column, Integer, String, Float, ForeignKey, Table, Date
from sqlalchemy.orm import relationship
from model import Base
teacher_class = Table(
"teacher_class", # 中间表的名字
Base.metadata, # 绑定到 Base 的元数据
Column("class_id", Integer, ForeignKey("classinfo.id"), primary_key=True),
Column("teacher_id", Integer, ForeignKey("teacher.id"), primary_key=True) ,
Column("role",String(50))
)