7. 上面的操作产生的数据都通过pickle序列化保存到文件里
README
学校选课系统 学生视图:可以自助注册,注册时可以选择班级,通过注册名登陆,,交学费,上课 讲师视图:通过讲师编号登陆,可以管理自己的班级,上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩 管理视图: 1、创建学校. 2、查看学校. 3、创建班级. 4、查看班级. 5、创建讲师. 6、查看讲师. 7、创建课程. 8、查看课程. 9、课师关联. 10、查看课师关联. 11、创建学员. 12、查看学员. 程序结构: school/#程序目录 |- - -__init__.py |- - -bin/#启动目录 | |- - -__init__.py | |- - -admin.py#管理视图启动 | |- - -initalize.py#系统初始化 | |- - -stud.py#学生视图启动 | |- - -teacher.py#讲师视图启动 | |- - -cfg/#配置目录 | |- - -__init__.py | |- - -config.py#配置文件 | |- - -core/#主要程序目录 | |- - -__init__.py | |- - -admin_main.py#管理视图主逻辑 | |- - -class_main.py#主逻辑,类 | |- - -func_main.py#主逻辑,函数 | |- - -id_classes.py#id文件主逻辑,函数 | |- - -log_file.py#日志函数 | |- - -students_main.py#学生视图主逻辑 | |- - -teacher_main.py#讲师视图主逻辑 | |- - -db/#数据目录 | |- - -__init__.py | |- - -admin_file/#管理员相关文件 | | |- - - | | | |- - -admin_user_list#是否初始化的检测文件 | | | |- - -classes/#班级文件目录 | |- - -course/#课程文件目录 | |- - -school/#学校文件目录 | |- - -students_file/#学生文件目录 | |- - -teac_to_cour/#讲师与课程关联文件目录 | |- - -teacher_file/#讲师文件目录 | | |- - -log/#日志目录 | |- - -__init__.py
详细代码:
admin.py
1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 5 6 #管理视图:创建讲师, 创建班级,创建课程 7 8 import os ,sys 9 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#获取相对路径转为绝对路径赋于变量10 sys.path.append(BASE_DIR)#增加环境变量11 #print(BASE_DIR)12 from core import admin_main #包含目录下的文件脚本13 if __name__ == '__main__':14 admin_main.loging()View Code
initalize.py
1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 #初始化系统 5 import os ,sys 6 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#获取相对路径转为绝对路径赋于变量 7 sys.path.append(BASE_DIR)#增加环境变量 8 from core import func_main 9 if __name__ == '__main__':10 func_main.initialize_admin()#初始化管理员View Code
stud.py
1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 import os ,sys 5 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#获取相对路径转为绝对路径赋于变量 6 sys.path.append(BASE_DIR)#增加环境变量 7 8 from core import students_main 9 from core.func_main import stud_alize10 11 if __name__ == '__main__':12 while True:13 print('''14 温馨提示:如果未注册可以自助注册15 1、自助注册16 2、进入登陆17 3、退出18 ''')19 s=input('请选择:')20 if s=='1':21 stud_alize()22 continue23 elif s=='2':24 students_main.stud_log()25 continue26 elif s=='3':27 exit()28 else:29 print('输入有误,请重输!')View Code
teacher.py
1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 import os ,sys 5 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#获取相对路径转为绝对路径赋于变量 6 sys.path.append(BASE_DIR)#增加环境变量 7 8 from core.teacher_main import teach_log 9 10 if __name__ == '__main__':11 teach_log()View Code
config.py
1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 import os ,sys 5 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#获取相对路径转为绝对路径赋于变量 6 sys.path.append(BASE_DIR)#增加环境变量 7 8 ADMIN_USER_FILE=BASE_DIR+'db\admin_user_list'#定义管理员列表文件变量 9 10 ADMIN_DIR=BASE_DIR+'db\admin_file\'#定义管理员路径变量11 CLASS_DIR=BASE_DIR+'db\classes\'#定义班级文件路径变量12 COURSE_DIR=BASE_DIR+'db\course\'#定义学校课程文件路径变量13 STUD_DIR=BASE_DIR+'db\students_file\'#定义学员文件路径变量14 TEACH_DIR=BASE_DIR+'db\teacher_file\'#定义讲师文件路径变量15 SCHOOL_DIR=BASE_DIR+'db\schools\'#定义学校路径变量16 TEAC_COUR_DIR=BASE_DIR+'db\teac_to_cour\'#定义学校课程文件路径变量17 18 AMOUNT=300#每堂课收入基数19 20 21 USER_LOG=BASE_DIR+'log\user_log.log'#用户登陆日志文件22 USER_ERRO=BASE_DIR+'log\user_erro.log'#用户错误日志文件23 USER_OPERT=BASE_DIR+'log\user_operation.log'#用户操作日志文件24 25 ADMIN_LOG=BASE_DIR+'log\admin_log.log'#管理员登陆日志文件26 ADMIN_ERRO=BASE_DIR+'log\admin_erro.log'#管理员错误日志文件27 ADMIN_OPERT=BASE_DIR+'log\admin_operation.log'#管理员操作日志文件View Code
admin_main.py
1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 import pickle 5 import os ,sys 6 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#获取相对路径转为绝对路径赋于变量 7 sys.path.append(BASE_DIR)#增加环境变量 8 #from core import user_pass 9 from core import class_main 10 from core import func_main 11 from core import log_file 12 from cfg import config 13 14 15 def loging():#运行函数 16 if func_main.file_char(config.ADMIN_USER_FILE):#检测相关文件是否不存在,进行初始化 17 print('系统还未进行初始化!') 18 func_main.initialize_admin()#进行初始化 19 while True: 20 print('管理员界面'.center(60,'=')) 21 print('按q/Q退出<<<< ') 22 user=input('用户名:').strip() 23 if user=='q' or user=='Q': 24 exit() 25 pwd=input('密码:').strip() 26 data=class_main.Admin.login(user,pwd)#检测密码 27 info_str='管理员[%s] 登录成功 '%user 28 log_file.admin_log(info_str) 29 if data['tag']==True: 30 print(data['data'].center(60,'=')) 31 while True: 32 print('''=========================== 33 温馨提示:创建班级前请先进行课师关联1 34 请按提示操作: 35 1、创建学校. 2、查看学校. 36 3、创建班级. 4、查看班级. 37 5、创建讲师. 6、查看讲师. 38 7、创建课程. 8、查看课程. 39 9、课师关联. 10、查看课师关联. 40 11、创建学员. 12、查看学员. 41 0、退出. 42 ================================ 43 ''') 44 foo=input('请选择:') 45 if foo=='1': 46 func_main.car_school() 47 info_str='管理员:[%s]进行了创建学校!'%user 48 log_file.admin_opert(info_str) 49 continue 50 elif foo=='2': 51 func_main.show_school() 52 info_str='管理员:[%s]进行了查看学校!'%user 53 log_file.admin_opert(info_str) 54 continue 55 elif foo=='3': 56 func_main.car_classes() 57 info_str='管理员:[%s]进行了创建班级!'%user 58 log_file.admin_opert(info_str) 59 continue 60 elif foo=='4': 61 func_main.show_classes() 62 info_str='管理员:[%s]进行了查看班级!'%user 63 log_file.admin_opert(info_str) 64 continue 65 elif foo=='5': 66 func_main.car_teacher() 67 info_str='管理员:[%s]进行了创建讲师.'%user 68 log_file.admin_opert(info_str) 69 continue 70 elif foo=='6': 71 func_main.show_teacher() 72 info_str='管理员:[%s]进行了查看讲师!'%user 73 log_file.admin_opert(info_str) 74 continue 75 elif foo=='7': 76 func_main.car_course() 77 info_str='管理员:[%s]进行了创建课程!'%user 78 log_file.admin_opert(info_str) 79 continue 80 elif foo=='8': 81 func_main.show_course() 82 info_str='管理员:[%s]进行了查看课程!'%user 83 log_file.admin_opert(info_str) 84 continue 85 elif foo=='9': 86 func_main.associated_course() 87 info_str='管理员:[%s]进行了课师关联.!'%user 88 log_file.admin_opert(info_str) 89 continue 90 elif foo=='10': 91 func_main.show_teac_to_cour() 92 info_str='管理员:[%s]进行了查看课师关联!'%user 93 log_file.admin_opert(info_str) 94 continue 95 elif foo=='11': 96 func_main.car_students() 97 info_str='管理员:[%s]进行了创建学员!'%user 98 log_file.admin_opert(info_str) 99 continue100 elif foo=='12':101 func_main.show_students()102 info_str='管理员:[%s]进行了查看学员!'%user103 log_file.admin_opert(info_str)104 continue105 elif foo=='0':106 print("您已经成功退出!")107 info_str='管理员[%s] 成功退出 '%user108 log_file.admin_log(info_str)109 exit()110 else:111 print("选择有误,请重新选择!")112 continue113 114 else:115 print('用户名或密码错误请重输入')116 info_str='管理员[%s] 登录错误 '%user117 log_file.admin_err(info_str)118 continueView Code
class_main.py
1 #!usr/bin/env python 2 #-*-coding:utf-8-*- 3 # Author calmyan 4 import os ,sys,pickle,uuid,time 5 BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#获取相对路径转为绝对路径赋于变量 6 sys.path.append(BASE_DIR)#增加环境变量 7 8 9 from cfg import config 10 11 from core import id_classes 12 13 #基础类 14 class BasisClass(object):#基础类 15 def save(self): 16 file_dir=os.path.join(self.file_path,str(self.ID))#拼接文件路径 17 pickle.dump(self,open(file_dir,'wb'))#序列化到文件 18 19 @classmethod 20 def open_file_list(cls):#传入当前类 21 list_l=[]#定义一个列表 22 for file in os.listdir(cls.file_path):#循环输出对应目录下的文件 23 file_dir=os.path.join(cls.file_path,file)##拼接文件路径 24 list_l.append(pickle.load(open(file_dir,'rb')))#反序列化,追加到列表 25 return list_l#返回列表 26 27 #管理员类 28 class Admin(BasisClass): 29 file_path=config.ADMIN_DIR#管理员路经变量 30 def __init__(self,user,pwd): 31 self.ID=id_classes.Admin_id(self.file_path)#自动生成唯一ID 32 self.USER=user 33 self.PWD=pwd 34 self.create_time=time.strftime('%Y-%m-%d %H:%M:%S')#创建的时间 35 @staticmethod 36 def login(name,pas): 37 try: 38 for obj in Admin.open_file_list(): 39 if obj.USER == name and obj.PWD == pas: 40 tag=True 41 error='' 42 data='