博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python【项目】:选课系统【简易版】
阅读量:5086 次
发布时间:2019-06-13

本文共 26244 字,大约阅读时间需要 87 分钟。

  • 功能要求
角色:学校、学员、课程、讲师 要求: 1. 创建学校 2. 创建课程 3. 课程包含,周期,价格,通过学校创建课程 4. 通过学校创建班级, 班级关联课程、讲师 5. 创建学员时,选择学校,关联班级 5. 创建讲师角色时要关联学校, 6. 提供两个角色接口     6.1 学员视图, 可以注册, 交学费, 选择班级,     6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 创建学员的成绩     6.3 管理视图,创建讲师, 创建班级,创建课程 7. 上面的操作产生的数据都通过pickle序列化保存到文件里 8. 增加日志文件,能同时输出到控制台 9. 用户认证采用装饰 10.增加try捕捉错误信息
  • 开发环境
  1. python 3.6.1
  2. PyCharm 2016.2.3
  • 数据流图与业务功能图
  1. 主程序数据流图  

 

   2.业务功能图

  • 目录结构

 
  • 程序设计
 
1 #!/usr/bin/env python 2 #coding=utf-8 3 __author__ = 'yinjia' 4  5  6 import os 7  8 BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 9 10 BASE_ADMIN_DIR = os.path.join(BASE_DIR, "db", "admin")11 12 BASE_STUDENTS_DIR = os.path.join(BASE_DIR, "db", "students")13 14 BASE_TEACHER_DIR = os.path.join(BASE_DIR,"db","teacher")15 16 TEACHER_DB_DIR = os.path.join(BASE_DIR, "db", "teacher_list")17 18 COURSE_DB_DIR = os.path.join(BASE_DIR, "db", "course_list")19 20 SHOOL_DB_DIR = os.path.join(BASE_DIR,"db", "shool_list")21 22 STUDENTS_DB_DIR = os.path.join(BASE_DIR,"db", "students_list")23 24 SCHOOLCLASS_DB_DIR = os.path.join(BASE_DIR,'db','schoolclass_list')25 26 SCORE_DB_DIR = os.path.join(BASE_DIR,'db','score_list')27 28 BASE_LOG_DIR = os.path.join(BASE_DIR,'log','AAP_')
settings.py
 
1 #!/usr/bin/env python  2 #coding=utf-8  3 __author__ = 'yinjia'  4   5 import os,sys,time,logging,pickle  6 sys.path.append(os.path.dirname(os.path.dirname(__file__)))  7 from lib import models  8 from config import settings  9 from lib.models import * 10 from bin import students 11 from bin import admin 12 from bin import teacher 13  14  15 def Auth(type): 16     """ 17     统一入口用户注册、认证 18     :param type: 判断属于哪认证类型:students、admin、teacher 19     :return: 返回认证结果 20     """ 21     def inner(func): 22         def wrapper(): 23             logger = Logger('auth').getlog() 24             auth_msg = ["注册", "登录"] 25             if type == "students_auth": 26                 func() 27                 for x, y in enumerate(auth_msg, 1): 28                     print("%s%s%s" % (x, ".", y)) 29                 while True: 30                     inp = str(input("\33[35;0m请按序号选择[输入q|Q退出]:\33[0m")).strip().lower() 31                     if inp == "1": 32                         use = str(input("\33[36;0m请输入用户名:\33[0m")).strip() 33                         pwd = str(input("\33[36;0m请输入密码:\33[0m")).strip() 34                         obj = models.Students() 35                         if obj.register(use,pwd): 36                             logger.error("[用户名]" + use + ":不能注册,当前已存在账户!") 37                         else: 38                             logger.info("[用户名]" + use + ":注册成功") 39                     elif inp == "2": 40                         use = str(input("\33[36;0m请输入用户名:\33[0m")).strip() 41                         pwd = str(input("\33[36;0m请输入密码:\33[0m")).strip() 42                         if os.path.exists(os.path.join(settings.BASE_STUDENTS_DIR, use)): 43                             try: 44                                 students_obj = pickle.load(open(os.path.join(settings.BASE_STUDENTS_DIR,use),'rb')) 45                             except IOError as e: 46                                 logger.error(e) 47                             if students_obj.login(use,pwd): 48                                 logger.info("[用户名]" + use + ":登录成功!") 49                                 students.main(students_obj) 50                             else: 51                                 logger.error("[用户]" + use + ":密码错误!") 52                         else: 53                             logger.error("[用户名]" + use + "不存在!") 54                     elif inp == "q": 55                         print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*")) 56                         sys.exit() 57                     else: 58                         logger.error("无效选择!") 59  60             elif type == "admin_auth": 61                 func() 62                 for x, y in enumerate(auth_msg, 1): 63                     print("%s%s%s" % (x, ".", y)) 64                 while True: 65                     inp = str(input("\33[35;0m请按序号选择[输入q|Q退出]:\33[0m")).strip().lower() 66                     if inp == "1": 67                         use = str(input("\33[36;0m请输入用户名:\33[0m")).strip() 68                         pwd = str(input("\33[36;0m请输入密码:\33[0m")).strip() 69                         obj = models.Admin() 70                         if obj.register(use,pwd): 71                             logger.error("[用户名]" + use + ":不能注册,当前已存在账户!") 72                         else: 73                             logger.info("[用户名]" + use + ":注册成功") 74                     elif inp == "2": 75                         use = str(input("\33[36;0m请输入用户名:\33[0m")).strip() 76                         pwd = str(input("\33[36;0m请输入密码:\33[0m")).strip() 77                         if os.path.exists(os.path.join(settings.BASE_ADMIN_DIR, use)): 78                             try: 79                                 admin_obj = pickle.load(open(os.path.join(settings.BASE_ADMIN_DIR,use),'rb')) 80                             except IOError as e: 81                                 logger.error(e) 82                             if admin_obj.login(use,pwd): 83                                 logger.info("[用户名]" + use + ":登录成功") 84                                 admin.main(admin_obj) 85                             else: 86                                 logger.error("[用户名]" + use + ":密码错误!") 87                         else: 88                             logger.error("[用户]" + use + "不存在!") 89  90                     elif inp == "q": 91                         print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*")) 92                         sys.exit() 93                     else: 94                         logger.error("无效选择!") 95  96             elif type == "teacher_auth": 97                 func() 98                 for x, y in enumerate(auth_msg, 1): 99                     print("%s%s%s" % (x, ".", y))100                 while True:101                     inp = str(input("\33[35;0m请按序号选择[输入q|Q退出]:\33[0m")).strip().lower()102                     if inp == "1":103                         use = str(input("\33[36;0m请输入用户名:\33[0m")).strip()104                         pwd = str(input("\33[36;0m请输入密码:\33[0m")).strip()105                         obj = models.TeacherAuth()106                         if obj.register(use,pwd):107                             logger.error("[用户名]" + use + ":不能注册,当前已存在账户!")108                         else:109                             logger.info("[用户名]" + use + ":注册成功")110                     elif inp == "2":111                         use = str(input("\33[36;0m请输入用户名:\33[0m")).strip()112                         pwd = str(input("\33[36;0m请输入密码:\33[0m")).strip()113                         if os.path.exists(os.path.join(settings.BASE_TEACHER_DIR, use)):114                             try:115                                 teacher_obj = pickle.load(open(os.path.join(settings.BASE_TEACHER_DIR,use),'rb'))116                             except IOError as e:117                                 logger.error(e)118                             if teacher_obj.login(use,pwd):119                                 logger.info("[用户名]" + use + ":登录成功")120                                 teacher.main(teacher_obj)121                             else:122                                 logger.error("[用户名]" + use + ":密码错误!")123                         else:124                             logger.error("[用户名]" + use + "不存在!")125 126                     elif inp == "q":127                         print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*"))128                         sys.exit()129                     else:130                         logger.error("无效选择!")131             else:132                 pass133         return wrapper134     return inner135 136 137 @Auth(type="students_auth")138 def students_auth():139     print("\33[32;0m学生登录认证\33[0m".center(40,"*"))140     return True141 142 @Auth(type="admin_auth")143 def admin_auth():144     print("\33[32;0m管理员登录认证\33[0m".center(40,"*"))145     return True146 147 @Auth(type="teacher_auth")148 def teacher_auth():149     print("\33[32;0m讲师登录认证\33[0m".center(40,"*"))150     return True151 152 def main():153     main_msg = ["学生视图", "讲师视图", "管理视图","退出"]154     print("\33[32;0m学员选课系统\33[0m".center(40, "*"))155     for i, j in enumerate(main_msg, 1):156         print("%s%s%s" % (i, ".", j))157     while True:158         inp = str(input("\33[35;0m请按序号选择:\33[0m")).strip()159         if inp == "1":160             students_auth()161         elif inp == "2":162             teacher_auth()163         elif inp == "3":164             admin_auth()165         elif inp == "4":166             print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*"))167             sys.exit()168         else:169             print("无效选择!")
auth.py
1 #!/usr/bin/env python  2 #coding=utf-8  3 __author__ = 'yinjia'  4   5 import os,sys,time,logging,pickle  6 sys.path.append(os.path.dirname(os.path.dirname(__file__)))  7 from lib import models  8 from config import settings  9 from lib.models import * 10 from bin import auth 11  12 logger = Logger('admin').getlog() 13  14 def create_shools(admin_obj): 15     """ 16     创建学校 17     :param admin_obj: 18     :return: 19     """ 20     school_list = [] 21     while True: 22         school_name = str(input("\33[36;0m请输入校区名[输入q退出]:\33[0m")).strip().lower() 23         if school_name == "q": 24             break 25         school_addr = str(input("\33[36;0m请输入校区地址:\33[0m")).strip() 26         obj = models.School(school_name,school_addr,admin_obj) 27         school_list.append(obj) 28     if os.path.exists(settings.SHOOL_DB_DIR): 29         try: 30             exists_list = pickle.load(open(settings.SHOOL_DB_DIR,'rb')) 31             school_list.extend(exists_list) 32         except IOError as e: 33             logger.error(e) 34     try: 35         pickle.dump(school_list,open(settings.SHOOL_DB_DIR,'wb')) 36     except IOError as e: 37         logger.error(e) 38  39 def create_schoolclass(admin_obj): 40     """ 41     创建班级 42     :param admin_obj: 43     :return: 44     """ 45     schoolclass_list = [] 46     print(' 序号  校区  校址             创建时间            管理员') 47     print('------------------------------------------------------') 48     school_list = pickle.load(open(settings.SHOOL_DB_DIR, 'rb')) 49     for num, item in enumerate(school_list, 1): 50         print("%3s%5s%5s%25s%10s" % (num, item.school_name, item.school_addr, 51                              item.create_time, item.create_admin.username)) 52     while True: 53         schoolclass_name = str(input("\33[36;0m请输入班级名[输入q退出]:\33[0m")).strip().lower() 54         if schoolclass_name == "q": 55             break 56         school_num = str(input("\33[36;0m请序号选择校区:\33[0m")).strip() 57         obj = models.SchoolClass(school_list[int(school_num) - 1],schoolclass_name,admin_obj) 58         schoolclass_list.append(obj) 59     if os.path.exists(settings.SCHOOLCLASS_DB_DIR): 60         try: 61             exists_list = pickle.load(open(settings.SCHOOLCLASS_DB_DIR,'rb')) 62             schoolclass_list.extend(exists_list) 63         except IOError as e: 64             logger.error(e) 65     try: 66         pickle.dump(schoolclass_list,open(settings.SCHOOLCLASS_DB_DIR,'wb')) 67     except IOError as e: 68         logger.error(e) 69  70 def create_teacher(admin_obj): 71     """ 72     创建讲师 73     :param admin_obj: 74     :return: 75     """ 76     teacher_list = [] 77     print(' 序号  校区  班级             创建时间            管理员') 78     print('------------------------------------------------------') 79     school_list = pickle.load(open(settings.SCHOOLCLASS_DB_DIR, 'rb')) 80     for num, item in enumerate(school_list, 1): 81         print("%3s%5s%8s%25s%10s" % (num, item.schoolBJ.school_name, item.schoolclass_name, 82                                      item.create_time, item.create_admin.username)) 83     while True: 84         teacher_name = str(input("\33[36;0m请输入讲师姓名[输入q退出]:\33[0m")).strip().lower() 85         if teacher_name == "q": 86             break 87         age = str(input("\33[36;0m请输入讲师年龄:\33[0m")).strip() 88         salary = str(input("\33[36;0m请输入讲师工资:\33[0m")).strip() 89         num = str(input("\33[36;0m请序号选择班级:\33[0m")).strip() 90         obj = models.Teacher(school_list[int(num) - 1],school_list[int(num) - 1],teacher_name,age,salary,admin_obj) 91         teacher_list.append(obj) 92     if os.path.exists(settings.TEACHER_DB_DIR): 93         try: 94             exists_list = pickle.load(open(settings.TEACHER_DB_DIR,'rb')) 95             teacher_list.extend(exists_list) 96         except IOError as e: 97             logger.error(e) 98     try: 99         pickle.dump(teacher_list,open(settings.TEACHER_DB_DIR,'wb'))100     except IOError as e:101         logger.error(e)102 def create_course(admin_obj):103     """104     创建课程105     :param admin_obj:106     :return:107     """108     course_list = []109     print(' 序号  校区  班级     讲师  年龄     工资         创建时间            管理员')110     print('---------------------------------------------------------------------------')111     teacher_list = pickle.load(open(settings.TEACHER_DB_DIR, 'rb'))112     for num, item in enumerate(teacher_list, 1):113         print("%3s%5s%8s%5s%4s%11s%23s%10s" % (114         num, item.schoolname.schoolBJ.school_name, item.schoolclass.schoolclass_name,115         item.teacher_name, item.age, item.salary,116         item.create_time, item.create_admin.username))117     while True:118         course_name = str(input("\33[36;0m请输入课程名[输入q退出]:\33[0m")).strip().lower()119         if course_name == "q":120             break121         course_cost = str(input("\33[36;0m请输入课时费:\33[0m")).strip()122         course_cycle = str(input("\33[36;0m请输入课程周期:\33[0m")).strip()123         num = str(input("\33[36;0m请序号选择校区:\33[0m")).strip()124         obj = models.Course(teacher_list[int(num) - 1], teacher_list[int(num) - 1],125                             teacher_list[int(num) - 1],course_name,course_cost,course_cycle, admin_obj)126         course_list.append(obj)127     if os.path.exists(settings.COURSE_DB_DIR):128         try:129             exists_list = pickle.load(open(settings.COURSE_DB_DIR, 'rb'))130             course_list.extend(exists_list)131         except IOError as e:132             logger.error(e)133     try:134         pickle.dump(course_list, open(settings.COURSE_DB_DIR, 'wb'))135     except IOError as e:136         logger.error(e)137 138 def main(admin_obj):139     logger = Logger('auth').getlog()140     while True:141         print("\33[32;0m综合管理中心\33[0m".center(40, "*"))142         msg = ["创建校区", "查看校区详情","创建班级", "查看班级详情","创建讲师", '查看讲师详情',"创建课程","查看课程详情"]143         for x, y in enumerate(msg, 1):144             print("%s%s%s" % (x, ".", y))145         inp = str(input("\33[35;0m请按序号选择[输入q|Q退出]:\33[0m")).strip().lower()146         if inp == '1':147             create_shools(admin_obj)148         elif inp == '2':149             print(' 序号  校区  校址             创建时间            管理员')150             print('------------------------------------------------------')151             info_list = pickle.load(open(settings.SHOOL_DB_DIR, 'rb'))152             for num, item in enumerate(info_list, 1):153                 print("%3s%5s%5s%25s%10s" % (num, item.school_name, item.school_addr,154                                           item.create_time, item.create_admin.username))155             input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m")156         elif inp == '3':157             create_schoolclass(admin_obj)158         elif inp == '4':159             print(' 序号  校区  班级             创建时间            管理员')160             print('------------------------------------------------------')161             school_list = pickle.load(open(settings.SCHOOLCLASS_DB_DIR, 'rb'))162             for num, item in enumerate(school_list, 1):163                 print("%3s%5s%8s%25s%10s" % (num, item.schoolBJ.school_name, item.schoolclass_name,164                                              item.create_time, item.create_admin.username))165             input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m")166         elif inp == '5':167             create_teacher(admin_obj)168         elif inp == '6':169             print(' 序号  校区  班级     讲师  年龄     工资         创建时间            管理员')170             print('---------------------------------------------------------------------------')171             teacher_list = pickle.load(open(settings.TEACHER_DB_DIR, 'rb'))172             for num, item in enumerate(teacher_list, 1):173                 print("%3s%5s%8s%5s%4s%11s%23s%10s" % (num, item.schoolname.schoolBJ.school_name, item.schoolclass.schoolclass_name,174                                                           item.teacher_name, item.age, item.salary,175                                              item.create_time, item.create_admin.username))176             input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m")177         elif inp == '7':178             create_course(admin_obj)179         elif inp == '8':180             print(' 序号  校区  班级     讲师  课程名     课时费     周期         创建时间             管理员')181             print('--------------------------------------------------------------------------------------')182             teacher_list = pickle.load(open(settings.COURSE_DB_DIR, 'rb'))183             for num, item in enumerate(teacher_list, 1):184                 print("%3s%5s%8s%5s%8s%8s%9s%23s%10s" % (185                 num, item.course_schoolname.schoolname.schoolBJ.school_name, item.course_schoolclass.schoolclass.schoolclass_name,186                         item.course_teacher_name.teacher_name,187                         item.course_name,item.cost,item.cycle,item.create_time, item.create_admin.username))188             input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m")189         elif inp == 'q':190             print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*"))191             sys.exit()192         else:193             logger.error("无效选择!")194 195 def register():196     auth.main()
admin.py
1 #!/usr/bin/env python  2 #coding=utf-8  3 __author__ = 'yinjia'  4   5 import os,sys,time,logging,pickle  6 sys.path.append(os.path.dirname(os.path.dirname(__file__)))  7 from lib import models  8 from config import settings  9 from lib.models import * 10 from bin import auth,teacher 11 logger = Logger('admin').getlog() 12  13 def select_course(students_obj): 14     """ 15     选择课程 16     :param students_obj: 17     :return: 18     """ 19     print(' 序号  校区  班级     讲师  课程名     课时费     周期    ') 20     print('-------------------------------------------------------') 21     try: 22         course_list = pickle.load(open(settings.COURSE_DB_DIR, 'rb')) 23     except IOError as e: 24         logger.error(e) 25     else: 26         for num, item in enumerate(course_list, 1): 27             print("%3s%5s%8s%5s%8s%8s%9s" % ( 28                 num, item.course_schoolname.schoolname.schoolBJ.school_name, 29                 item.course_schoolclass.schoolclass.schoolclass_name, 30                 item.course_teacher_name.teacher_name, 31                 item.course_name, item.cost, item.cycle)) 32         while True: 33             num = str(input("\33[36;0m请序号选择课程名[输入q退出]:\33[0m")).strip().lower() 34             if num == "q": 35                 break 36             select_course_obj = course_list[int(num) - 1] 37             students_obj.course_list.append(select_course_obj) 38         try: 39             pickle.dump(students_obj, open(os.path.join(settings.BASE_STUDENTS_DIR,students_obj.username),'wb')) 40         except IOError as e: 41             logger.error(e) 42  43 def course_info(students_obj): 44     """ 45     查看选课信息 46     :param students_obj: 47     :return: 48     """ 49     print(' 序号  校区  班级     讲师  课程名     课时费     周期    ') 50     print('-------------------------------------------------------') 51     for num, item in enumerate(students_obj.course_list, 1): 52         print("%3s%5s%8s%5s%8s%8s%9s" % ( 53             num, item.course_schoolname.schoolname.schoolBJ.school_name, 54             item.course_schoolclass.schoolclass.schoolclass_name, 55             item.course_teacher_name.teacher_name, 56             item.course_name, item.cost, item.cycle)) 57     input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m") 58  59 def result_info(students_obj): 60     """ 61     查看学习详情 62     :param students_obj: 63     :return: 64     """ 65     print(' 学员   校区   班级    课程   成绩') 66     print('---------------------------------') 67     try: 68         students_dic = pickle.load(open(settings.SCORE_DB_DIR, 'rb')) 69     except IOError as e: 70         logger.error(e) 71     else: 72         for i, item in students_dic.items(): 73             for x, y in item.score_schoolname.items(): 74                 print("%3s%6s%9s%5s%5s" % (x.username, y.course_schoolname.schoolname.schoolBJ.school_name, 75                                            y.course_schoolclass.schoolclass.schoolclass_name, y.course_name, item.score)) 76         input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m") 77  78 def study(students_obj): 79     """ 80     学员上课 81     :param students_obj: 82     :return: 83     """ 84     print(' 序号  校区  班级     讲师  课程名     课时费     周期    ') 85     print('-------------------------------------------------------') 86     for num, item in enumerate(students_obj.course_list, 1): 87         print("%3s%5s%8s%5s%8s%8s%9s" % ( 88             num, item.course_schoolname.schoolname.schoolBJ.school_name, 89             item.course_schoolclass.schoolclass.schoolclass_name, 90             item.course_teacher_name.teacher_name, 91             item.course_name, item.cost, item.cycle)) 92     while True: 93         num = str(input("\33[36;0m请按序号选择课程上课[输入q退出]:\33[0m")).strip().lower() 94         if num == "q": 95             break 96         obj = students_obj.course_list[int(num) - 1] 97         if students_obj in students_obj.study_dict.keys(): 98             students_obj.study_dict[students_obj].append(obj) 99         else:100             students_obj.study_dict[students_obj] = obj101     try:102         pickle.dump(students_obj.study_dict, open(settings.STUDENTS_DB_DIR, 'wb'))103     except IOError as e:104         logger.error(e)105 106 def main(students_obj):107     while True:108         print("\33[32;0m学员学习中心\33[0m".center(40, "*"))109         msg = ['选课','上课','查看选课信息','查看学习成绩']110         for x, y in enumerate(msg, 1):111             print("%s%s%s" % (x, ".", y))112         inp = str(input("\33[35;0m请按序号选择[输入q|Q退出]:\33[0m")).strip().lower()113         if inp == '1':114             select_course(students_obj)115         elif inp == '2':116             study(students_obj)117         elif inp == '3':118             course_info(students_obj)119         elif inp == '4':120             result_info(students_obj)121         elif inp == 'q':122             print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*"))123             sys.exit()124         else:125             logger.error("无效选择!")126 127 def register():128     auth.main()
students.py
1 #!/usr/bin/env python 2 #coding=utf-8 3 __author__ = 'yinjia' 4  5  6 import os,sys,time,logging,pickle 7 sys.path.append(os.path.dirname(os.path.dirname(__file__))) 8 from lib import models 9 from config import settings10 from lib.models import *11 from bin import auth12 logger = Logger('admin').getlog()13 14 def Create_Score(teacher_obj):15     score_dic = {}16     print(' 学员  校区  班级     课程      ')17     print('------------------------------')18     try:19         students_dic = pickle.load(open(settings.STUDENTS_DB_DIR, 'rb'))20     except IOError as e:21         logger.error(e)22     else:23         for i, item in students_dic.items():24             print(i.username,item.course_schoolname.schoolname.schoolBJ.school_name,25                   item.course_schoolclass.schoolclass.schoolclass_name,26                   item.course_name)27         while True:28             students_name = str(input("\33[36;0m请输入学员[输入q退出]:\33[0m")).strip()29             if students_name == "q":30                 break31             score = str(input("\33[36;0m请输入学员成绩:\33[0m")).strip()32             obj = models.Score(students_name,students_dic,students_dic,students_dic,score)33 34             if teacher_obj in score_dic.keys():35                 score_dic[teacher_obj].append(obj)36             else:37                 score_dic[teacher_obj] = obj38         if os.path.exists(settings.SCORE_DB_DIR):39             try:40                 exists_dic = pickle.load(open(settings.SCORE_DB_DIR, 'rb'))41             except IOError as e:42                 logger.error(e)43             else:44                 if teacher_obj in exists_dic.keys():45                     score_dic[teacher_obj].append(exists_dic)46             try:47                 pickle.dump(score_dic, open(settings.SCORE_DB_DIR, 'wb'))48             except IOError as e:49                 logger.error(e)50         51 52 def show_info(teacher_obj):53     print(' 学员   校区   班级    课程   成绩')54     print('---------------------------------')55     try:56         students_dic = pickle.load(open(settings.SCORE_DB_DIR, 'rb'))57     except IOError as e:58         logger.error(e)59     else:60         for i, item in students_dic.items():61              for x,y in item.score_schoolname.items():62                 print("%3s%6s%9s%5s%5s" % (x.username,y.course_schoolname.schoolname.schoolBJ.school_name,63                       y.course_schoolclass.schoolclass.schoolclass_name,y.course_name,item.score))64         input("\33[35;0m>>>>>>>>>按任意键退出...\33[0m")65 66 def main(teacher_obj):67     while True:68         print("\33[32;0m学员学习中心\33[0m".center(40, "*"))69         msg = ['创建学员成绩','查看学员信息']70         for x, y in enumerate(msg, 1):71             print("%s%s%s" % (x, ".", y))72         inp = str(input("\33[35;0m请按序号选择[输入q|Q退出]:\33[0m")).strip().lower()73         if inp == '1':74             Create_Score(teacher_obj)75         elif inp == '2':76             show_info(teacher_obj)77         elif inp == 'q':78             print("\33[32;0m谢谢您的光临,再见!\33[0m".center(40, "*"))79             sys.exit()80         else:81             logger.error("无效选择!")82 83 def register():84     auth.main()
teacher.py 
  • 类模板定义

 
  • 效果演示

 

转载于:https://www.cnblogs.com/yinjia/p/8683168.html

你可能感兴趣的文章