主题:学员管理系统
需求:
- 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下
- 讲师视图
- 管理班级,可创建班级,根据学员qq号把学员加入班级
- 可创建指定班级的上课纪录,注意一节上课纪录对应多条学员的上课纪录, 即每节课都有整班学员上, 为了纪录每位学员的学习成绩,需在创建每节上课纪录是,同时 为这个班的每位学员创建一条上课纪录
- 为学员批改成绩, 一条一条的手动修改成绩
- 学员视图
- 提交作业
- 查看作业成绩
- 一个学员可以同时属于多个班级,就像报了Linux的同时也可以报名Python一样, 所以提交作业时需先选择班级,再选择具体上课的节数
- 附加:学员可以查看自己的班级成绩排名
思路:要想解决这个问题,我们就要理清有多少个对象,对象之间的关系 ,其实我觉得我们用的操作就是用到了Mysql的sqlalchemy的多对多的思想模块
对象:1.班级 : 名字 学员 2.学员: 姓名 qq号 (qq号就相当于某学员的身份证,我们通过筛选qq好来操作学员信息) 成绩(提交作业才会有成绩)
3.讲师 : 名字 班级(每个老师对应着多个班级)
4.课节表: 名字 5.上课记录表: 用来记录信息产生的关联
from sqlalchemy import Table, Column, Integer,String,DATE, ForeignKey from sqlalchemy.orm import relationship from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker import random engine = create_engine("mysql+pymysql://root:123456@localhost/test", encoding='utf-8') Base = declarative_base() #以这种方式创建的我们不必再赋值其他参数 #班级与学生的多对多关系 teacher_m2m_class = Table("teacher_m2m_class",Base.metadata, Column("teacher_id", Integer, ForeignKey("teacher.teacher_id")), Column("class_id", Integer, ForeignKey("class.class_id")), ) # 班级与学生的对应关系表 class_m2m_student = Table("class_m2m_student",Base.metadata, Column("class_id",Integer,ForeignKey("class.class_id")), Column("stu_id", Integer, ForeignKey("student.stu_id")), ) class Class_m2m_Lesson(Base): '''班级和课节对应表''' __tablename__ = "class_m2m_lesson" id = Column(Integer, primary_key=True) class_id = Column(Integer,ForeignKey("class.class_id")) lesson_id = Column(Integer, ForeignKey("lesson.lesson_id")) classes = relationship("Class",backref="class_m2m_lessons") lessons = relationship("Lesson", backref="class_m2m_lessons") def __repr__(self): return "%s %s" % (self.classes,self.lessons) class Study_record(Base): "上课记录" __tablename__ = "study_record" id = Column(Integer,primary_key=True) class_m2m_lesson_id = Column(Integer,ForeignKey("class_m2m_lesson.id")) stu_id = Column(Integer, ForeignKey("student.stu_id")) status = Column(String(32),nullable=False) score = Column(Integer,nullable=True) class_m2m_lessons = relationship("Class_m2m_Lesson",backref="my_study_record") students = relationship("Student", backref="my_study_record") def __repr__(self): return "