一、作业需求:
用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下
讲师视图:
管理班级,可创建班级,根据学员qq号把学员加入班级
可创建指定班级的上课纪录,注意一节上课纪录对应多条学员的上课纪录, 即每节课都有整班学员上, 为了纪录每位学员的学习成绩,需在创建每节上课纪录是,同时为这个班的每位学员创建一条上课纪录
为学员批改成绩, 一条一条的手动修改成绩
学员视图:
提交作业
查看作业成绩
一个学员可以同时属于多个班级,就像报了Linux的同时也可以报名Python一样, 所以提交作业时需先选择班级,再选择具体上课的节数
附加:学员可以查看自己的班级成绩排名
二、
一、作业需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图: 管理班级,可创建班级,根据学员qq号把学员加入班级 可创建指定班级的上课纪录,注意一节上课纪录对应多条学员的上课纪录, 即每节课都有整班学员上, 为了纪录每位学员的学习成绩,需在创建每节上课纪录是,同时为这个班的每位学员创建一条上课纪录 为学员批改成绩, 一条一条的手动修改成绩 学员视图: 提交作业 查看作业成绩 一个学员可以同时属于多个班级,就像报了Linux的同时也可以报名Python一样, 所以提交作业时需先选择班级,再选择具体上课的节数 附加:学员可以查看自己的班级成绩排名 二、博客地址:https://www.cnblogs.com/catepython/p/9105669.html 三、运行环境 操作系统:Win10 Python:3.6.4rcl Pycharm:2017.3.4 四 、具体实现 1、借鉴了大神们的表设计结构(本人借鉴的是Assassinの 博客地址是:https://www.cnblogs.com/lianzhilei/archive/2016/10/30/6013847.html) 2、根据表结构设计在create_table.py中创建相应的表 3、根据需求搭好界面性的程序框架 4、根据程序流程图和表结构逐步完成各模块函数 5、边写函数发放边调试、测试等 五、测试流程 1、在测试调试过程中也发现了一些bug 例如: 学生QQ是唯一,但先输入用户名在输入已存在的QQ号这时程序报了错(现已修复) 2、也经常发现了跨表数据的现象 例如: 查询学员成绩排名是把不在同一个班级或课节的学员也查出来(多做了一些判断已修复类似现象) 3、对程序中也完善了一些唯一、不能为空、成绩必须是整数0-100范围判断... 六、备注 1、Assassinの的表设计很完美,几乎没有冗余数据,但查询关联起来对于我等菜鸟还真是有点伤脑。
三、程序流程图
四、数据结构图
五、程序架构图
六、核心代码
bin目录
#-*-coding:utf-8 -*- # Author: D.Gray from core import main if __name__ == '__main__': start = main.Action() start.func()
conf目录 配置文件
#-*-coding:utf-8 -*- # Author: D.Gray import sqlalchemy from sqlalchemy import create_engine engine = create_engine('mysql+pymysql://root:admin1988@localhost/Manager?charset=utf8')
core目录 主程序文件
#-*-coding:utf-8 -*- # Author: D.Gray import sqlalchemy from conf.setting import engine from sqlalchemy.orm import sessionmaker from database.create_table import Teacher,Class from src.Student_view import Student_manager from src.Teacher_view import Teacher_manager class Action(object): def __init__(self): Session_class = sessionmaker(bind=engine) self.session = Session_class() self.initialize_database() def func(self): while True: mesg = '''