Python 程序:学员管理系统

Python 程序:学员管理系统



1、需求

2、表结构

3、readme

4、目录结构

5、代码

6、测试样图


一、需求

需求:

角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下

讲师视图:

管理班级,可创建班级,根据学员qq号把学员加入班级

可创建指定班级的上课纪录,注意一节上课纪录对应多条学员的上课纪录, 即每节课都有整班学员上, 为了纪录每位学员的学习成绩,需在创建每节上课纪录是,同时为这个班的每位学员创建一条上课纪录

为学员批改成绩, 一条一条的手动修改成绩

学员视图:

提交作业

查看作业成绩

一个学员可以同时属于多个班级,就像报了Linux的同时也可以报名Python一样, 所以提交作业时需先选择班级,再选择具体上课的节数

附加:学员可以查看自己的班级成绩排名

二、表结构

三、readme

作者:zz
版本: 学员管理系统  版本 v0.1
开发环境: python3.6
程序介绍:
管理界面:
    讲师视图
    学员视图
    创建讲师
    创建学员
讲师视图:
    显示可管理的班级
    创建班级
    为学员分配班级
    添加课程计划
    创建上课记录
    修改学员成绩
学员视图:
    上传作业
    查看作业成绩
    查看班级排名:当前班级日排名和总排名

readme

四、目录结构

五、代码

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()

start

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:[email protected]/managedb?charset=utf8",encoding = ‘utf-8‘)

setting

 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  "\033[35;0m%s,%s,状态:【%s】,成绩:【%s】\33[0m"%(self.class_m2m_lessons,self.students,self.status,self.score)
69
70 Base.metadata.create_all(engine) #创建表结构

table_structure

 1 from sqlalchemy.orm import sessionmaker
 2
 3 from db import table_structure
 4
 5 Session_class = sessionmaker(bind=table_structure.engine) #创建与数据库的会话session class ,注意,这里返回给session的是个class,不是实例
 6 session = Session_class() #生成session实例,类似cursor
 7 # s1 = table_structure.Student(stu_id = 1,stu_QQ = 111111,stu_name = "aa")
 8 # s2 = table_structure.Student(stu_id = 2,stu_QQ = 222222,stu_name = "bb")
 9 # s3 = table_structure.Student(stu_id = 3,stu_QQ = 333333,stu_name = "cc")
10 #
11 # c1 = table_structure.Classes(cls_id = 1,cls_name = "P01",cls_course = "python")
12 # c2 = table_structure.Classes(cls_id = 2,cls_name = "L01",cls_course = "linux")
13 #
14 # s1.classes = [c1,c2]
15 # s2.classes = [c1,]
16 # s3.classes = [c1,]
17 # d1 = table_structure.Day(day_id = 1,day_name = "day_1")
18 # d2 = table_structure.Day(day_id = 2,day_name = "day_2")
19 # d3 = table_structure.Day(day_id = 3,day_name = "day_3")
20 # d4 = table_structure.Day(day_id = 4,day_name = "day_4")
21
22 # teacher_obj = session.query(table_structure.Teacher).filter_by(teach_id = 3).first()
23 # print(teacher_obj)
24 #
25 # t1 = table_structure.Teacher(teach_id = 1,teach_name = "teacher_01")
26 # t2 = table_structure.Teacher(teach_id = 2,teach_name = "teacher_02")
27 #
28 # t1.classes = [c1,c2]
29 # t2.classes = [c2,]
30 # classes_obj = session.query(table_structure.Classes).filter(table_structure.Classes.cls_id == "1").first()
31 # print(classes_obj.cls_id)
32 # day_obj = session.query(table_structure.Day).filter_by(day_name="day_1").first()
33 # print(day_obj)
34 # class_m2m_day_obj = session.query(table_structure.Classes_m2m_Day).filter(table_structure.Classes_m2m_Day.class_id == classes_obj.cls_id). \
35 #                     filter(table_structure.Classes_m2m_Day.day_id == day_obj.day_id).first()
36 # print(class_m2m_day_obj)
37 # print(classes_obj.student)
38 # for student_obj in  classes_obj.student:
39 #     print(student_obj)
40 #     study_record_obj = table_structure.Study_record(class_m2m_day_id=class_m2m_day_obj.id,
41 #                                     stu_id=student_obj.stu_id,
42 #                                     status="yes")
43 #     session.add(study_record_obj)
44
45 #
46 # study_record_objs = session.query(table_structure.Study_record).filter(table_structure.Study_record.class_m2m_day_id==class_m2m_day_obj.id).all()
47 # for obj in  study_record_objs:
48 #     print(obj)
49 # student_obj = session.query(table_structure.Student).filter_by(stu_name="cc").first()
50 # study_record_obj = session.query(table_structure.Study_record).filter(
51 #     table_structure.Study_record.class_m2m_day_id==class_m2m_day_obj.id).filter(
52 #     table_structure.Study_record.stu_id == student_obj.stu_id).first()
53 # study_record_obj.score= 85
54
55
56 # day_obj = session.query(table_structure.Day).filter(table_structure.Day.day_id == "4").first()
57
58 # classes_obj.day.append(d1)
59 # print(classes_obj)
60 #
61 # session.add_all([s1,s2,s3,c1,c2,d1,d2,d3,d4,t1,t2])
62
63 # m1 = table_structure.Classes_m2m_Day(id = 4,class_id = classes_obj.cls_id,day_id = day_obj.day_id)
64
65 # session.add_all([d1,d2,d3,d4,])
66
67 # session.delete(teacher_obj)
68 # session.add_all([m1,])
69 # classes_obj = session.query(table_structure.Classes).filter(table_structure.Classes.cls_id == "1").first()
70 # print(classes_obj.student)
71
72 session.commit()

session_maker

 1 from sqlalchemy.orm import sessionmaker
 2 from conf import settings
 3 from conf.settings import engine
 4 from db import table_structure
 5 from db.table_structure import Teacher,Student,Classes
 6 from modules.teacher_view import TeacherView
 7 from modules.student_view import StudentView
 8
 9 class page(object):
10     def __init__(self):
11         Session = sessionmaker(bind=engine)
12         self.session = Session()
13     def func(self):
14         while True:
15             print("\033[34;1m***欢迎进入学员管理系统***\033[0m")
16             print("\033[32;1m1、讲师视图\033[0m")
17             print("\033[32;1m2、学员视图\033[0m")
18             print("\033[32;1m3、创建讲师\033[0m")
19             print("\033[32;1m4、创建学员\033[0m")
20             print("\033[31;1m按【q】键退出!\033[0m")
21             user_choise = input(">>:")
22             if user_choise == ‘1‘:
23                 print("\033[34;1m==========讲师视图==========\033[0m")
24                 TeacherView(self.session)
25             elif user_choise == ‘2‘:
26                 print("\033[34;1m==========学员视图==========\033[0m")
27                 StudentView(self.session)
28             elif user_choise == ‘3‘:
29                 print("\033[34;1m==========创建讲师==========\033[0m")
30                 self.creat_teacher()
31             elif user_choise == ‘4‘:
32                 print("\033[34;1m==========创建学员==========\033[0m")
33                 self.creat_student()
34             elif user_choise == ‘q‘:
35                 print("\033[34;1m谢谢使用!\033[0m")
36                 break
37             else:
38                 print("\033[31;1m请输入正确的编号!\033[0m")
39     def creat_teacher(self):
40         ‘‘‘创建讲师‘‘‘
41         rest = self.session.query(Teacher).filter(Teacher.teach_id>=0).all()
42         print(rest)
43         while True:
44             teacher_name = input("\033[34;0m请输入讲师名:\033[0m").strip()
45             if self.session.query(Teacher).filter_by(teach_name=teacher_name).first():
46                 print("\33[31;1m输入错误:讲师名已存在\33[0m")
47                 continue
48             else:
49                 break
50         teacher_pswd = input("\033[34;0m请输入密码:\033[0m").strip()
51         t = Teacher(teach_name = teacher_name,teach_pswd = teacher_pswd)
52         self.session.add_all([t,])
53         self.session.commit()
54     def creat_student(self):
55         ‘‘‘创建学生‘‘‘
56         rest = self.session.query(Student).filter(Student.stu_id>=0).all()
57         print(rest)
58         while True:
59             stu_name = input("\033[34;0m请输入学员姓名:\033[0m").strip()
60             if self.session.query(Student).filter_by(stu_name=stu_name).first():
61                 print("\33[31;1m输入错误:学员已存在\33[0m")
62                 continue
63             else:
64                 break
65         stu_pswd = input("\033[34;0m请输入密码:\033[0m").strip()
66         stu_QQ = input("\033[34;0m请输入QQ号码:\033[0m").strip()
67         s = Student(stu_name = stu_name,stu_QQ = stu_QQ,stu_pswd = stu_pswd)
68         self.session.add_all([s,])
69         self.session.commit()

home_page

  1 from db import table_structure
  2 from  db.table_structure import Teacher,Classes,Student,Day,Classes_m2m_Day,Study_record
  3 from sqlalchemy.sql import func
  4
  5 class StudentView(object):
  6     def __init__(self,session):
  7         self.session = session
  8         self.auth()
  9     def auth(self):
 10         ‘‘‘登录认证‘‘‘
 11         while True:
 12             student_name = input("\033[34;0m请输入学员名:\033[0m").strip()
 13             self.student_obj = self.session.query(Student).filter_by(stu_name=student_name).first()
 14             if not self.student_obj:
 15                 print("\33[31;1m输入错误:学员不存在\33[0m")
 16                 continue
 17             else:
 18                 student_pswd = input("\033[34;0m请输入密码:\033[0m").strip()
 19                 if student_pswd ==self.student_obj.stu_pswd:
 20                     print("\033[36;1m登录成功!\033[0m")
 21                     self.handler()
 22                 else:
 23                     print("\33[31;1m密码错误!\33[0m")
 24                     break
 25     def handler(self):
 26          print("\33[34;1m***欢迎【%s】进入学员管理系统***\33[0m"%self.student_obj.stu_name)
 27          while True:
 28             print("\33[32;1m***************************\n\33[0m"
 29                   "[up_homework] \33[32;1m上传作业\n\33[0m"
 30                   "[show_results] \33[32;1m查看作业成绩\n\33[0m"
 31                   "[show_rank] \33[32;1m查看班级排名\n\33[0m"
 32                   "[exit] \33[32;1m退出管理系统\n\033[0m"
 33                   "\33[32;1m***************************\n\33[0m")
 34             cmd = input("\033[34;0m请输入进行操作的命令:\033[0m")
 35             if hasattr(self, cmd):
 36                 getattr(self, cmd)()
 37             else:
 38                  print("\33[31;1m【%s】命令不存在!\33[0m"%cmd)
 39     def up_homework(self):
 40         "上传作业"
 41         class_name = input("\033[34;0m请输入班级名:\033[0m")
 42         class_obj = self.session.query(Classes).filter_by(cls_name=class_name).first()
 43         if class_obj and self.student_obj in class_obj.student:   #输入的班级名存在且学生属于此班级
 44             day_name = input("\033[34;0m请输入的课节名(例:day_1):\033[0m")
 45             day_obj = self.session.query(Day).filter_by(day_name=day_name).first()
 46             if day_obj:  # 输入的day存在
 47                 class_m2m_day_obj = self.session.query(Classes_m2m_Day).filter(Classes_m2m_Day.class_id==class_obj.cls_id). 48                 filter(Classes_m2m_Day.day_id==day_obj.day_id).first()
 49                 if class_m2m_day_obj:  # 班级对应的课day表数据存在
 50                     study_record_obj = self.session.query(Study_record).filter(
 51                         Study_record.class_m2m_day_id == class_m2m_day_obj.id).filter(
 52                         Study_record.stu_id == self.student_obj.stu_id).first()
 53                     if study_record_obj:  # 上课记录存在
 54                         home_work = input("上传作业:")
 55                         study_record_obj.home_work = home_work
 56                         self.session.commit()
 57                         print("上传成功!")
 58                     else:
 59                         print("\33[31;1m系统错误:当前上课记录未创建\33[0m")
 60                 else:
 61                     print("\33[31;1m系统错误:当前班级对应课程计划未创建\33[0m")
 62             else:
 63                 print("\33[31;1m系统错误:课程计划未创建\33[0m")
 64         else:
 65             print("\33[31;1m系统错误:班级不存在或不属于此班级\33[0m")
 66     def show_results(self):
 67         "查看成绩"
 68         class_name = input("\033[34;0m请输入班级名:\033[0m")
 69         class_obj = self.session.query(Classes).filter_by(cls_name=class_name).first()
 70         if class_obj and self.student_obj in class_obj.student:   #输入的班级名存在且学生属于此班级
 71             class_m2m_day_obj = self.session.query(Classes_m2m_Day).filter(Classes_m2m_Day.class_id==class_obj.cls_id).all()
 72             if class_m2m_day_obj:
 73                 for class_m2m_day in class_m2m_day_obj:
 74                     study_record_obj = self.session.query(Study_record).filter(Study_record.class_m2m_day_id==class_m2m_day.id). 75                         filter(Study_record.stu_id==self.student_obj.stu_id).first()
 76                     if study_record_obj:
 77                         print("%s 学生:【%s】 成绩:【%s】"%(class_m2m_day,self.student_obj.stu_name,study_record_obj.score))
 78                     else:
 79                         print("\33[31;1m%s上课记录未创建\33[0m"%class_m2m_day)
 80             else:
 81                 print("\33[31;1m系统错误:当前班级对应课程计划未创建\33[0m")
 82         else:
 83             print("\33[31;1m系统错误:班级不存在或不属于此班级\33[0m")
 84     def show_rank(self):
 85         class_name = input("\033[34;0m请输入班级名:\033[0m")
 86         class_obj = self.session.query(Classes).filter_by(cls_name=class_name).first()
 87         if class_obj and self.student_obj in class_obj.student:   #输入的班级名存在且学生属于此班级
 88             while True:
 89                 choice = input("\033[34;0m1、查看每日成绩排名;2、查看总成绩排名;【Q】退出:\033[0m")
 90                 if choice == "1":
 91                     class_m2m_day_obj = self.session.query(Classes_m2m_Day).filter(Classes_m2m_Day.class_id==class_obj.cls_id).all()
 92                     if class_m2m_day_obj:
 93                         for class_m2m_day in class_m2m_day_obj:
 94                             ret = self.session.query(Study_record).filter(Study_record.class_m2m_day_id==class_m2m_day.id).order_by(Study_record.score.desc()).all()
 95                             for i in ret:
 96                                 print(i)
 97                     else:
 98                         print("\33[31;1m系统错误:当前班级对应课程计划未创建\33[0m")
 99                 elif choice == "2":
100                     ret_1 = self.session.query(Study_record.stu_id,func.sum(Study_record.score).label("record")).101                         filter(Study_record.class_id == class_obj.cls_id).group_by(Study_record.stu_id).order_by("record").all()
102                     for i in ret_1:
103                         s = self.session.query(Student).filter_by(stu_id = i.stu_id).all()
104                         print(s,i.record)
105                 elif choice == "q"or"Q":
106                     break
107                 else:
108                     continue
109         else:
110             print("\33[31;1m系统错误:班级不存在或不属于此班级\33[0m")
111     def exit(self):
112         exit()

student_view

  1 from db import table_structure
  2 from  db.table_structure import Teacher,Classes,Student,Day,Classes_m2m_Day,Study_record
  3
  4 class TeacherView(object):
  5     def __init__(self,session):
  6         self.session = session
  7         self.auth()
  8     def auth(self):
  9         ‘‘‘登录认证‘‘‘
 10         while True:
 11             teacher_name = input("\033[34;0m请输入讲师名:\033[0m").strip()
 12             self.teacher_obj = self.session.query(Teacher).filter_by(teach_name=teacher_name).first()
 13             if not self.teacher_obj:
 14                 print("\33[31;1m输入错误:讲师名不存在\33[0m")
 15                 continue
 16             else:
 17                 teacher_pswd = input("\033[34;0m请输入密码:\033[0m").strip()
 18                 if teacher_pswd ==self.teacher_obj.teach_pswd:
 19                     print("\033[36;1m登录成功!\033[0m")
 20                     self.handler()
 21                 else:
 22                     print("\33[31;1m密码错误!\33[0m")
 23                     break
 24     def handler(self):
 25          print("\33[34;1m***欢迎【%s】进入讲师管理系统***\33[0m"%self.teacher_obj.teach_name)
 26          while True:
 27             print("\33[32;1m*******************************\n\33[0m"
 28                   "[show_classes] \33[32;1m显示可管理的班级\n\33[0m"
 29                   "[add_class] \33[32;1m创建班级\n\33[0m"
 30                   "[add_student_to_class] \33[32;1m为学员分配班级\n\33[0m"
 31                   "[add_day] \33[32;1m添加课程计划\n\33[0m"
 32                   "[add_studyrecord] \33[32;1m创建上课记录\n\33[0m"
 33                   "[modify_scores] \33[32;1m修改学员成绩\n\33[0m"
 34                   "[exit] \33[32;1m退出管理系统\n\33[0m"
 35                   "\33[32;1m*******************************\n\33[0m")
 36             cmd = input("\033[34;0m请输入进行操作的命令:\033[0m")
 37             if hasattr(self, cmd):
 38                 getattr(self, cmd)()
 39             else:
 40                  print("\33[31;1m【%s】命令不存在!\33[0m"%cmd)
 41     def show_classes(self):
 42         ‘‘‘查看所有的班级‘‘‘
 43         for class_obj in self.teacher_obj.classes:
 44             print("讲师:【%s】\t班级:【%s】\t类型:【%s】" % (self.teacher_obj.teach_name,
 45                                                  class_obj.cls_name,class_obj.cls_course))
 46     def add_class(self):
 47         ‘‘‘创建班级‘‘‘
 48         class_name = input("\033[34;0m请输入创建班级的名称:\033[0m")
 49         course = input("\033[34;0m请输入创建班级的类型:\033[0m")
 50         class_obj = self.session.query(Classes).filter_by(cls_name=class_name).first()
 51         class_new = Classes(cls_name=class_name,cls_course=course)
 52         if not class_obj:
 53             self.teacher_obj.classes.append(class_new)
 54             self.session.add(class_new)
 55             self.session.commit()
 56             print("\033[34;1m班级创建成功\033[0m")
 57         else:
 58             print(class_obj.teacher)
 59             if self.teacher_obj in class_obj.teacher:
 60                 print("\033[34;1m讲师【%s】对应的班级【%s:%s】已存在\033[0m"%(self.teacher_obj.teach_name,class_name,course))
 61             else:
 62                 self.teacher_obj.classes.append(class_obj)
 63                 self.session.commit()
 64                 print("\033[34;1m班级已存在,添加讲师成功\033[0m")
 65
 66     def add_student_to_class(self):
 67         ‘‘‘为学员分配班级‘‘‘
 68         class_name = input("\033[34;0m请输入要添加学员的班级名:\033[0m")
 69         class_obj = self.session.query(Classes).filter_by(cls_name=class_name).first()
 70         if class_obj and self.teacher_obj in class_obj.teacher:
 71             stu_name = input("\033[34;0m请输入学员的姓名:\033[0m")
 72             student_obj = self.session.query(Student).filter_by(stu_name=stu_name).first()
 73             if student_obj:
 74                 if student_obj in class_obj.student:
 75                     print("\33[31;1m系统错误:学员已经存在\33[0m")
 76                 else:
 77                     class_obj.student.append(student_obj)
 78                     self.session.commit()
 79                     print("\033[34;1m学员添加成功\033[0m")
 80             else:
 81                 print("\33[31;1m学员未创建\33[0m")
 82         else:
 83             print("\33[31;1m输入错误:班级不存在或没有权限管理此班级\33[0m")
 84
 85     def add_day(self):
 86         ‘‘‘添加课程计划‘‘‘
 87         class_name = input("\033[34;0m请输入要添加课程计划的班级名:\033[0m")
 88         class_obj = self.session.query(Classes).filter_by(cls_name=class_name).first()
 89         if class_obj and self.teacher_obj in class_obj.teacher:   #输入的班级名存在且在属于当前老师管理
 90             day_name = input("\033[34;0m请输入添加的课程计划:\033[0m")
 91             day_obj = self.session.query(Day).filter_by(day_name=day_name).first()
 92             if not day_obj:                                          #输入的lesson名字不存在
 93                 print("\033[34;0m课程计划不存在:创建成功!\033[0m")
 94                 day_obj = Day(lesson_name=day_name)                #增加lesson表数据
 95                 self.session.add(day_obj)
 96                 self.session.commit()
 97             else:
 98                 print("\33[31;1m课程计划已存在\33[0m")
 99             rest = self.session.query(Classes_m2m_Day).filter(Classes_m2m_Day.class_id==class_obj.cls_id).100                 filter(Classes_m2m_Day.day_id==day_obj.day_id).first()
101             if not rest:                                                #如果class_m2m_day没有存储班级和课程计划的对应关系
102                 class_m2m_day_new = Classes_m2m_Day(class_id=class_obj.cls_id,day_id=day_obj.day_id)
103                 self.session.add(class_m2m_day_new)                  #创建class_m2m_day对应关系
104                 self.session.commit()
105                 print("\33[31;1m班级对应课程计划添加成功\33[0m")
106             else:
107                 print("\33[31;1m班级对应课程计划已存在\33[0m")
108         else:
109             print("\33[31;1m输入错误:班级不存在或没有权限管理此班级\33[0m")
110
111     def add_studyrecord(self):
112         ‘‘‘添加学习记录‘‘‘
113         class_name = input("\033[34;0m请输入要添加学习记录的班级名:\033[0m")
114         class_obj = self.session.query(Classes).filter_by(cls_name=class_name).first()
115         if class_obj and self.teacher_obj in class_obj.teacher:   #输入的班级名存在且在属于当前老师管理
116             day_name = input("\033[34;0m请输入添加学习记录的课节名(例:day_1):\033[0m")
117             day_obj = self.session.query(Day).filter_by(day_name=day_name).first()
118             if day_obj:                                       # 输入的day名字存在
119                 rest = self.session.query(Classes_m2m_Day).filter(Classes_m2m_Day.class_id==class_obj.cls_id).120                     filter(Classes_m2m_Day.day_id==day_obj.day_id).first()
121                 if rest:                                            # 班级对应的课day表数据存在
122                     study_record_obj = self.session.query(Study_record).filter_by(class_m2m_day_id=rest.id).first()
123                     if not study_record_obj:                                                    # 上课记录未创建
124                         for student_obj in class_obj.student:
125                             status = input("输入学生 %s 的上课状态(yes/no):"%student_obj.stu_name)
126                             study_record_new = Study_record(class_m2m_day_id=rest.id,
127                                                             class_id=class_obj.cls_id,
128                                                             stu_id=student_obj.stu_id,
129                                                             status=status)
130                             self.session.add(study_record_new)
131                             self.session.commit()
132                     else:
133                         print("\33[31;1m系统错误:当前上课记录已经创建\33[0m")
134                 else:
135                      print("\33[31;1m系统错误:当前班级的对应的课程计划未创建\33[0m")
136             else:
137                 print("\33[31;1m系统错误:课程计划未创建\33[0m")
138         else:
139             print("\33[31;1m输入错误:班级不存在或没有权限管理此班级\33[0m")
140
141     def modify_scores(self):
142         ‘‘‘修改成绩‘‘‘
143         class_name = input("\033[34;0m请输入要添加学习记录的班级名:\033[0m")
144         class_obj = self.session.query(Classes).filter_by(cls_name=class_name).first()
145         if class_obj and self.teacher_obj in class_obj.teacher:   #输入的班级名存在且在属于当前老师管理
146             day_name = input("\033[34;0m请输入添加学习记录的课节名(例:day_1):\033[0m")
147             day_obj = self.session.query(Day).filter_by(day_name=day_name).first()
148             if day_obj:                                       # 输入的day名字存在
149                 rest = self.session.query(Classes_m2m_Day).filter(Classes_m2m_Day.class_id==class_obj.cls_id).150                     filter(Classes_m2m_Day.day_id==day_obj.day_id).first()
151                 if rest:                                            # 班级对应的课day表数据存在
152                     while True:
153                         study_record_obj = self.session.query(Study_record).filter_by(class_m2m_day_id=rest.id).all()
154                         for obj in  study_record_obj:
155                             print(obj)
156                         student_name = input("\033[34;0m输入要修改成绩的学生名:[Q 退出]\33[0m")
157                         if student_name == "q" or student_name == "Q":break
158                         student_obj = self.session.query(Student).filter_by(stu_name=student_name).first()
159                         if student_obj:
160                             study_record_obj = self.session.query(Study_record).filter(
161                                     Study_record.class_m2m_day_id==rest.id).filter(
162                                     Study_record.stu_id == student_obj.stu_id).first()
163                             if study_record_obj:                            # 上课记录存在
164                                 score = input("\033[34;0m输入修改后的成绩:\33[0m")
165                                 study_record_obj.score= score
166                                 self.session.commit()
167                             else:
168                                 print("\33[31;1m系统错误:上课记录不存在\33[0m")
169                         else:
170                             print("\33[31;1m系统错误:学生不存在\33[0m")
171                     else:
172                         print("\33[31;1m系统错误:当前上课记录已经创建\33[0m")
173                 else:
174                      print("\33[31;1m系统错误:当前班级的对应的课程计划未创建\33[0m")
175             else:
176                 print("\33[31;1m系统错误:课程计划未创建\33[0m")
177         else:
178             print("\33[31;1m输入错误:班级不存在或没有权限管理此班级\33[0m")
179
180     def exit(self):
181         exit()

teacher_view

六、测试样图

原文地址:https://www.cnblogs.com/hy0822/p/9348220.html

时间: 2024-11-04 14:52:27

Python 程序:学员管理系统的相关文章

python程序—名片管理系统

创建一个名片管理系统,实现增.删.改.查.四项功能 listcard = [] while True: print('**********欢迎来到名片管理系统**********') print(' 1.查看名片') print(' 2.创建名片') print(' 3.修改名片') print(' 4.删除名片') print(' 5.退出名片') print('*' * 30) choose = input('请选择:').strip() # 查看 if choose == '1': if

mysql开发简单的学员管理系统

主题:学员管理系统 需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图 管理班级,可创建班级,根据学员qq号把学员加入班级 可创建指定班级的上课纪录,注意一节上课纪录对应多条学员的上课纪录, 即每节课都有整班学员上, 为了纪录每位学员的学习成绩,需在创建每节上课纪录是,同时 为这个班的每位学员创建一条上课纪录 为学员批改成绩, 一条一条的手动修改成绩 学员视图 提交作业 查看作业成绩 一个学员可以同时属于多个班级,就像报了Linux的同时也可以报名Pyth

Django和pymysql搭建学员管理系统

学员管理系统 项目规划阶段 项目背景 近年来老男孩教育的入学学员数量稳步快速增长,传统的excel统计管理学员信息的方式已经无法满足日渐增长的业务需求.因此公司急需一套方便易用的"学员管理系统",来提高公司在校学员信息的收集和处理能力.鉴于Python学院全栈x期的学员都聪明伶俐可爱至极,因此公司领导经过慎重考虑特决定将此项目交给大家来开发. 项目需求 本次学员管理系统设计开发,时间紧任务重,希望各位开发人员戒骄戒躁戒烟戒酒,尽快完成项目的开发. 具体需求为: 学员管理系统有三个角色:

python3.6+django2.0 一小时学会开发一套学员管理系统demo

1.在pycharm中新建project demo1 添加app01 点击create按钮完成新建 2.在demo项目目录下新建目录static,并在settings.py中追加代码: STATICFILES_DIRS=(os.path.join(BASE_DIR, 'static'),) 3.在setting.py中添加模板路径: TEMPLATES = [ { 'BACKEND': '...', 'DIRS': [os.path.join(BASE_DIR, 'templates'),],

推荐Python程序员进阶阅读的书籍(2015版)

列一下自己过去一年阅读的Python相关书籍,评论是在本人阅读完书籍并完成书中所有测试用例的基础上编写的: <Python Cookbook 3rd>5星 ,绝对值得阅读!直接看英文版吧,中文翻译的如何不太清楚.对于高手就当是复习功课了,总有一些地方记得不是很清楚. <Cython - A Guide for Python Programmers> 5星 by Kurt W. Smith, O'Reilly 2015 如果你想封装一个C的库,或者别人封装的C库在你的平台下不能够使用

python程序打包成.exe

1. 安装py2exe 2. 将打包文件与被打包文件放在同一个文件夹下. 例如,你需要将test.py打包成exe,那么test.py就是被打包文件,那么打包文件呢,写一个setup.py文件,内容如下: # setup.pyfrom distutils.core import setupimport py2exesetup(console=["test.py"]) 放在同一个目录的目的是因为在console = ["test.py"]时,不用考虑路径问题,注意,你

python程序之profile分析

操作系统 : CentOS7.3.1611_x64 python版本:2.7.5 问题描述 1.Python开发的程序在使用过程中很慢,想确定下是哪段代码比较慢: 2.Python开发的程序在使用过程中占用内存很大,想确定下是哪段代码引起的: 解决方案 使用profile分析分析cpu使用情况 profile介绍: https://docs.python.org/2/library/profile.html 可以使用profile和cProfile对python程序进行分析,这里主要记录下cPr

Python程序员糟糕的一天

Python程序员糟糕的一天!! 第一张图是上午上班前,第二张图是下午下班前,一天下来就加了一个return! 为了方便你们看懂具体(主要)的改动,我加了第三张图(上班前)和第四张图(下班前). 第一张图(因图片显示不完整而看不清楚的,请在"在新标签页中打开图片"): 第二张图: 第三张图: 第四张图: 上班前代码: #!/usr/bin/python # encoding: utf-8 # -*- coding: utf8 -*- """ Created

3. 第一个python程序

学习任何一门语言的第一步,首先要写个'hello world',这算是程序员的一个传统.但在写之前,还有注意几个问题. 首先,python是一门脚本语言,而脚本语言的特点就是:我们写的代码会先由解释器进行编译以后,再去执行.但是当我们的程序运行在操作系统之上时,系统并没有那么智能,能够自动识别出我们要用哪个解释器去解释我们的代码(windows则通过后缀名关联执行程序,所以不用声明也可以,但是我们的代码更多在linux上运行,所以解释器的声明算是必须的),所以,我们必须要声明我们的解释器是什么.