Python 程序:学员管理系统
1、需求
2、表结构
3、readme
4、目录结构
5、代码
6、测试样图
一、需求
需求:
角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下
讲师视图:
管理班级,可创建班级,根据学员qq号把学员加入班级
可创建指定班级的上课纪录,注意一节上课纪录对应多条学员的上课纪录, 即每节课都有整班学员上, 为了纪录每位学员的学习成绩,需在创建每节上课纪录是,同时为这个班的每位学员创建一条上课纪录
为学员批改成绩, 一条一条的手动修改成绩
学员视图:
提交作业
查看作业成绩
一个学员可以同时属于多个班级,就像报了Linux的同时也可以报名Python一样, 所以提交作业时需先选择班级,再选择具体上课的节数
附加:学员可以查看自己的班级成绩排名
二、表结构
三、readme
作者:zz 版本: 学员管理系统 版本 v0.1 开发环境: python3.6 程序介绍: 管理界面: 讲师视图 学员视图 创建讲师 创建学员 讲师视图: 显示可管理的班级 创建班级 为学员分配班级 添加课程计划 创建上课记录 修改学员成绩 学员视图: 上传作业 查看作业成绩 查看班级排名:当前班级日排名和总排名
四、目录结构
五、代码
1 from conf import settings 2 from modules import home_page 3 from db import table_structure 4 5 if __name__ == '__main__': 6 obj = home_page.page() 7 obj.func()
1 import os,sys 2 3 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #程序主目录: 4 sys.path.append(BASE_DIR) #添加环境变量 5 6 from sqlalchemy import create_engine 7 engine = create_engine("mysql+pymysql://root:123456@192.168.1.112/managedb?charset=utf8",encoding = 'utf-8')
1 from sqlalchemy import Table, Column, Integer,String,DATE,ForeignKey 2 from sqlalchemy.orm import relationship 3 from sqlalchemy.ext.declarative import declarative_base 4 from conf.settings import engine 5 6 Base = declarative_base() 7 student_m2m_classes = Table("student_m2m_classes",Base.metadata, #多对多 8 Column("student_id",Integer,ForeignKey("student.stu_id")), 9 Column("classes_id",Integer,ForeignKey("classes.cls_id")) 10 ) 11 teacher_m2m_classes = Table("teacher_m2m_classes",Base.metadata, #多对多 12 Column("teacher_id", Integer, ForeignKey("teacher.teach_id")), 13 Column("classes_id", Integer, ForeignKey("classes.cls_id")), 14 ) 15 class Student(Base): 16 __tablename__ = "student" 17 stu_id = Column(Integer,primary_key=True) 18 stu_QQ = Column(Integer) 19 stu_name = Column(String(64), nullable=False) 20 stu_pswd = Column(String(64), nullable=False) 21 classes = relationship('Classes',secondary=student_m2m_classes,backref='student') 22 def __repr__(self): 23 return "学生姓名:【%s】"%self.stu_name 24 class Classes(Base): 25 __tablename__ = "classes" 26 cls_id = Column(Integer,primary_key=True) 27 cls_name = Column(String(64), nullable=False,unique=True) 28 cls_course = Column(String(64), nullable=False,unique=True) 29 def __repr__(self): 30 return "班级名:【%s】"%self.cls_name 31 class Teacher(Base): 32 __tablename__ = "teacher" 33 teach_id = Column(Integer, primary_key=True) 34 teach_name = Column(String(32), nullable=False, unique=True) #唯一 35 teach_pswd = Column(String(32), nullable=False) 36 classes = relationship("Classes", secondary=teacher_m2m_classes, backref="teacher") 37 def __repr__(self): 38 return "讲师:【%s】"%self.teach_name 39 class Day(Base): 40 __tablename__ = "day" 41 day_id = Column(Integer, primary_key=True) 42 day_name = Column(String(32), nullable=False, unique=True) 43 def __repr__(self): 44 return "DAY:【%s】"%self.day_name 45 class Classes_m2m_Day(Base): 46 __tablename__ = "classes_m2m_day" 47 id = Column(Integer, primary_key=True) 48 class_id = Column(Integer,ForeignKey("classes.cls_id")) 49 day_id = Column(Integer, ForeignKey("day.day_id")) 50 classes = relationship("Classes",backref="classes_m2m_day") 51 day = relationship("Day", backref="classes_m2m_day") 52 def __repr__(self): 53 return "%s %s" % (self.classes,self.day) 54 class Study_record(Base): 55 __tablename__ = "study_record" 56 id = Column(Integer,primary_key=True) 57 class_m2m_day_id = Column(Integer,ForeignKey("classes_m2m_day.id")) 58 class_id = Column(Integer,ForeignKey("classes.cls_id")) 59 stu_id = Column(Integer, ForeignKey("student.stu_id")) 60 status = Column(String(64),nullable=False) 61 score = Column(Integer,nullable=True) 62 home_work = Column(String(64),nullable=False) 63 class_m2m_lessons = relationship("Classes_m2m_Day",backref="study_record") 64 students = relationship("Student", backref="study_record") 65 classes = relationship("Classes", backref="study_record") 66 67 def __repr__(self): 68 return "