需求如下:创建管理员、教师、学员这三个视图,实现一个简单的课程操作交互
具体实现如下:
Homework:
│
├─bin
│──────start.py #程序的入口
│
├─conf
│──────config.py #程序用到的文件的路径以及其他关系映射信息
│
├─core #
│──────logger.py#记录日志的逻辑
│──────main.py#实现三类用户的登陆逻辑,并利用反射调用不同类的具体方法
│──────manager.py#实现了管理员类的各个功能
│──────my_pickle.py#实现了将不同对象dump、load进文件的方法以及修改已经被dump的文件的方法
│──────other_logics.py#其他额外功能的逻辑
│──────school.py#里面的classes类用来创建与班级名相同名字的文件
│──────student.py#实现学生类的功能逻辑
│──────teacher.py#实现讲师类的功能逻辑
│
└─db
│──classes_obj#存放各个班级对象的信息
│──logs.log#存放日志信息
│──teacher_obj#存放讲师对象信息
│──userinfo#存放登陆用户信息
│
└─studentinfo#里面的文件是与班级同名的文件,各个文件里面存的是相应班级里的学员信息
│────────python_s9
代码如下:

from os import getcwd,path from sys import path as sys_path sys_path.insert(0,path.dirname(getcwd())) from core import main if __name__ == '__main__': main.main()

import os PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #userinfo文件的路径 USERINFO = os.path.join(PATH,'db','userinfo') #schoolinfo的路径 SCHOOLINFO = os.path.join(PATH,'db','school_obj') #teacher_obj的路径 TEACHER_OBJ = os.path.join(PATH,'db','teacher_obj') #classes_obj的路径 CLASSES_OBJ = os.path.join(PATH,'db','classes_obj') #course_obj的路径 COURSE_OBJ = os.path.join(PATH,'db','course_obj') #studentinfo的路径 STUDENTINFO = os.path.join(PATH,'db','studentinfo') #日志文件的路径 LOGGER = os.path.join(PATH,'db','logs.log') #用户选择视图输入项与身份信息的键值对 USER_DICT = {'1':'Manager','2':'Teacher','3':'Student'} #学校与课程对应关系字典 school_class = {'Beijing':['python','linux'],'Shanghai':['go']}

import logging from conf import config def logger_file(): #生成logger对象 whw_logger = logging.getLogger('logs.log') whw_logger.setLevel(logging.INFO) #生成handler对象 whw_fh = logging.FileHandler(config.LOGGER) whw_fh.setLevel(logging.INFO) #生成Formatter对象 file_formatter = logging.Formatter(' %(asctime)s - %(name)s - %(levelname)s - %(message)s ') #把formatter对象绑定到handler对象中 whw_fh.setFormatter(file_formatter) # 把handler对象绑定到logger对象中 whw_logger.addHandler(whw_fh) return whw_logger def write_log(msg): log_obj = logger_file() log_obj.info(msg) log_obj.handlers.pop()

import sys import os from core.manager import Manager from core.teacher import Teacher from core.student import Student from conf import config from core import my_pickle from .other_logics import file_name,show_classes,show_student_score def login(): ''' 登录函数,应该先到conf.config中先读取userinfo的文件路径。 再读取userinfo文件中的信息,对用户名与密码进行查验 登陆成功后查看这个人的身份来确定进入哪一个视图 :return: ''' while 1: print( '