コード例 #1
0
 def show_students_Utility(self, path, name):
     flag = True
     mp = MyPickle(path)
     students_data = mp.loaditer()  # 没有得到数据 没有返回值
     print('班级<%s>学员列表'.center(30, '-') % name)
     for student_obj in students_data:
         flag = False
         print(student_obj.name)
     if flag:
         print('无相关信息')
     print('end'.center(40, '-'))
     students_data.close()
コード例 #2
0
def sign_up():
    username = input('请输入姓名>>').strip()
    password = input('请输入密码>>').strip()
    content = '\n%s|%s|Student' % (username, password)
    Manager.userinfo_handle(content)
    print('学员<%s>注册成功!\n请记录您的登陆账号%s' % (username, 'xxxxxx'))
    student = Student(username)
    student.course_not_paid = []
    student.homework_no_finished = []
    mp = MyPickle(config.students_obj_path)
    mp.dump(student)
    # 日志
    msg = '用户<%s>注册账号' % username
    log_file = os.path.join(config.log_path, config.LOG_TYPES['access'])
    logger.logger(log_file, msg)
    return
コード例 #3
0
ファイル: Admin.py プロジェクト: HuangAm/AllCode
 def __init__(self,name,*args):
     '''
     管理员独有的属性
     :param name:
     '''
     self.name = name
     self.teacher_pk_obj = MyPickle(teacher_obj)
     self.class_pk_obj = MyPickle(classes_obj)
     self.course_pk_obj = MyPickle(courses_obj)
     self.school_pk_obj = MyPickle(schoolinfo)
コード例 #4
0
def main(user,*args):
    """
    1、显示欢迎信息
    2、根据login返回值,提取登陆用户的类别,显示用户功能
    3、用户选择功能
    :return:
    """
    # ret = login()
    if user['user_data']:
        ret = user['user_data']
        print('欢迎%s'.center(40, '-') % ret[0])
        # 提取对象
        login_obj = []
        file_path = os.path.join(config.base_dir, r'db\%s_obj' % ret[2])
        mp = MyPickle(file_path)
        objs_data = mp.loaditer()
        for obj in objs_data:
            if obj.name == ret[0]:
                login_obj = obj
        objs_data.close()
        # # 根据登陆用户的类别,显示用户可用功能,账户类别在账户信息中,账户可用功能放在该种类中
        # 得到这些信息,然后实例化对象
        user_class = getattr(sys.modules[__name__], ret[2])  # 要用反射
        user_obj = user_class(ret[0])

        while True:
            # 显示可用功能
            for i, v in enumerate(user_obj.menu, 1):
                print(i, v[0])
            choice = input('输入功能序号>>')
            if choice.isdigit():
                choice = int(choice)
                if 0 < choice <= len(user_obj.menu):
                    user_func = getattr(user_obj, user_obj.menu[choice-1][1])
                    user_func(login_obj)
                else:
                    print('您输入的信息有误!请输入列表中的序号!')
            elif choice == 'q':
                print('返回上一级')
                break
            else:
                print('您输入的信息有误!')
コード例 #5
0
ファイル: Student.py プロジェクト: HuangAm/AllCode
 def recharge(self):
     '''
     充值
     :return:
     '''
     exit_flag = False
     while not exit_flag:
         amount = input('输入充值金额(b退出):').strip()
         if amount.isdigit() and int(amount) > 0:
             amount = int(amount)
             self.money += amount
             print('充值成功,你充值的金额为%s' % self.money)
             student_path = path.join(student_info, str(self.clas))
             student_p = MyPickle(student_path).load()
             for student_obj in student_p:
                 if student_obj.name == self.name:
                     student_obj.money = amount
                     self.clas.edit(student_obj)
                     print('修改成功')
         elif amount.lower() == 'b':
             exit_flag = True
         else:
             print('输入错误!')
コード例 #6
0
ファイル: Admin.py プロジェクト: HuangAm/AllCode
 def creat_student(self):
     '''
     输入学校,用户名,密码
     存到学生文件student_info
     创建一个学生对象(姓名 讲师空列表)
     :return:
     '''
     student_name = input('学员姓名:').strip()
     student_pwd = input('学员密码:').strip()
     self.show_school()
     school = input('学校:').strip()
     self.show_classes()
     student_class = input('学员班级:').strip()
     class_f = self.class_pk_obj.load()
     for clas in class_f:
         if clas.name == student_class:
             insert = '%s-%s-Student'%(student_name,student_pwd)
             Admin.userinfo_handle(insert)
             student_obj = Student(student_name,school,student_class)
             MyPickle(clas.path).dump(student_obj)
             print('学员%s创建成功'%student_name)
             break
     else:
         print('输入有误')
コード例 #7
0
        写入实例
    """
    import os
    import sys

    # base_dir = os.path.dirname(os.getcwd())  # 和下面是一样的 吗
    base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(base_dir)
    from conf.config import school_obj_path
    from conf.config import course_obj_path
    from core.my_pickle import MyPickle
    from core.Manager import Manager

    # 拿到school的pickle
    # 拿到course的pickle
    course_pickle = MyPickle(course_obj_path)
    school_pickle = MyPickle(school_obj_path)
    # 生成需要的对象
    python = Course('Python', '6个月', 19800, '北京校区')
    linux = Course('Linux', '4个月', 12800, '北京校区')
    go = Course('Go', '5个月', 9800, '上海校区')

    school_shanghai = School('上海校区')
    school_shanghai.course.append(go)

    school_beijing = School('北京校区')
    school_beijing.course.append(python)
    school_beijing.course.append(linux)
    # school_beijing.course_python = python
    # school_beijing.course_linux = linux
    # # pickle序列化
コード例 #8
0
ファイル: Manager.py プロジェクト: JayeChan/python
 def __init__(self, name):
     self.name = name
     self.teacher_picke_obj = MyPickle(teacher_obj)
コード例 #9
0
ファイル: Admin.py プロジェクト: HuangAm/AllCode
class Admin:
    '''
    管理员类:创建讲师,创建班级,创建课程
    '''
    menu = [
        ('查看学校', 'show_school'),('创建学校','creat_school'),
        ('创建讲师','creat_teacher'),('查看讲师','show_teacher'),
        ('创建班级', 'creat_class'),('查看班级','show_classes'),
        ('创建课程', 'creat_course'),('查看课程','show_courses'),
        ('创建学生','creat_student'),('绑定班级','bound_class'),
        ('退出','drop_out')
    ]  # 管理员的功能列表
    def __init__(self,name,*args):
        '''
        管理员独有的属性
        :param name:
        '''
        self.name = name
        self.teacher_pk_obj = MyPickle(teacher_obj)
        self.class_pk_obj = MyPickle(classes_obj)
        self.course_pk_obj = MyPickle(courses_obj)
        self.school_pk_obj = MyPickle(schoolinfo)

    @staticmethod
    def userinfo_handle(insert):
        '''
        处理管理员添加的讲师等信息
        :return:
        '''
        with open(userinfo,'a',encoding='utf-8') as f:
            f.write('\n %s'%insert)

    def show(self,pickle_file):
        pk_obj = getattr(self,pickle_file)
        load_obj = pk_obj.load()
        for obj in load_obj:
            for k in obj.__dict__:
                print(k,obj.__dict__[k])
            print('\n')


    def show_school(self):
        '''
        展示学校列表
        :return:
        '''
        self.show('school_pk_obj')

    def creat_school(self):
        '''
        创建学校
        :return:
        '''
        school_name = input('学校名称:').strip()
        school_site = input('学校地址:').strip()
        #school_path = path.join(schoolinfo)
        school_obj = self.school_pk_obj.load()
        school = School(school_name, school_site)
        self.school_pk_obj.dump(school)
        print('学校创建成功')

    def show_teacher(self):
        '''
        展示讲师列表
        :return:
        '''
        self.show('teacher_pk_obj')

    def creat_teacher(self):
        '''
        输入学校,用户名,密码
        实例化讲师对象,存到讲师文件
        :return:
        '''
        teacher_name = input('讲师姓名:').strip()
        teacher_pwd = input('讲师密码:').strip()
        school = input('学校:')
        teacher_obj = self.teacher_pk_obj.load()
        insert = '%s-%s-Teacher'%(teacher_name,teacher_pwd)
        Admin.userinfo_handle(insert)
        teacher = Teacher(teacher_name,school)
        self.teacher_pk_obj.dump(teacher)
        print('讲师创建成功!')

    def creat_course(self):
        '''
        输入课程名,价格,周期
        创建课程对象,存到文件
        :return:
        '''
        self.show_school()
        school = input('学校名称:').strip()
        course_name = input('课程名:').strip()
        course_price = int(input('价格:').strip())
        course_period = input('课程周期:').strip()
        courses_obj = self.class_pk_obj.load()
        course = Course(course_name,course_period,course_price,school)
        self.course_pk_obj.dump(course)
        print('课程创建成功')

    def show_courses(self):
        '''
        打开文件,读出来展示
        :return:
        '''
        self.show('course_pk_obj')

    def creat_class(self):
        '''
        输入班级名称,学校-->属性
        绑定学科对象,先调用获取学科对象,用户选择后,将对象绑定到班级
        创建一个班级文件存储学生信息,文件路径存到班级对象中
        创建一个班级对象(名称 学校 学科对象 讲师空列表 学生信息所在文件路径)dump进class文件
        :return:
        '''
        class_name = input('班级名称:').strip()
        self.show_school()
        school = input('学校:').strip()
        self.show_courses()
        course = input('输入学科名称:').strip()
        student_path = path.join(student_info,class_name)
        open(student_path,'w',encoding='utf-8').close()
        class_obj = Classes(school,class_name,course,student_path)
        self.class_pk_obj.dump(class_obj)

    def show_classes(self):
        '''
        打开文件,将文件对象读出来展示(班级名称,人数)
        :return:
        '''
        self.show('class_pk_obj')

    def creat_student(self):
        '''
        输入学校,用户名,密码
        存到学生文件student_info
        创建一个学生对象(姓名 讲师空列表)
        :return:
        '''
        student_name = input('学员姓名:').strip()
        student_pwd = input('学员密码:').strip()
        self.show_school()
        school = input('学校:').strip()
        self.show_classes()
        student_class = input('学员班级:').strip()
        class_f = self.class_pk_obj.load()
        for clas in class_f:
            if clas.name == student_class:
                insert = '%s-%s-Student'%(student_name,student_pwd)
                Admin.userinfo_handle(insert)
                student_obj = Student(student_name,school,student_class)
                MyPickle(clas.path).dump(student_obj)
                print('学员%s创建成功'%student_name)
                break
        else:
            print('输入有误')


    def bound_class(self):
        '''
        管理员选择为老师或学生指定班级
       
        :return:
        '''
        self.show_classes()
        class_name = input('输入班级:').strip()
        self.show_teacher()
        teacher_name = input('输入讲师:')
        teacher_p = self.teacher_pk_obj.load()
        for teacher_obj in teacher_p:
            if teacher_obj.name == teacher_name:
                teacher_obj.classes.append(class_name)
                self.teacher_pk_obj.edit(teacher_obj)
                print('创建成功')


    def drop_out(self):
        exit('Bye')
コード例 #10
0
    def select_classes(self, *args):
        """
        选择学校
        选择课程
        选择班级
        加入属性,和未付款标志
        :return:
        """
        # 学生对象
        student = args[0]
        # 选择学校
        print('学校列表'.center(40, '-'))
        self.show_school()
        # 规范学校名称
        input_msg = '请输入要选择的学校名称>>'
        choice_school = self.standard_input(input_msg, config.school_list)
        school_data = self.school_picke_obj.loaditer()
        ret1 = self.bound(school_data, choice_school)
        if ret1:
            student.school = ret1
            # 选择课程
            print('课程列表'.center(40, '-'))
            for i, course in enumerate(student.school.course, 1):
                print(course)

            # 规范课程名称
            input_msg = '请输入要选择的课程>>'
            names = map(lambda j: str(j), student.school.course)
            choice_course = self.standard_input(input_msg, names)
            course_data = self.course_picke_obj.loaditer()
            ret2 = self.bound(course_data, choice_course)
            if ret2:
                student.course_not_paid.append(ret2)
                print('添加课程<%s>成功!' % choice_course)
                # 选择班级
                class_names = []
                class_objs = []
                class_data = self.class_picke_obj.loaditer()
                print('可选班级列表'.center(40, '-'))
                for class_obj in class_data:
                    if class_obj.course.name == student.course_not_paid[
                            -1].name:
                        print(class_obj.name)
                        class_objs.append(class_obj)
                        class_names.append(class_obj.name)
                        print('end'.center(40, '-'))
                        input_msg = '请输入您想要进入的班级名称>>'
                        class_choice = self.standard_input(
                            input_msg, class_names)
                        # class_data.close()
                        for obj in class_objs:
                            if obj.name == class_choice:
                                student.classes = obj

                                # 对象放进指定班级文件中
                                file_path = os.path.join(
                                    config.base_dir, r'db\class_students(%s)' %
                                    student.classes.name)
                                mp_class = MyPickle(file_path)
                                mp_class.dump(student)
                                # 修改学生文件中对象
                                mp_st = MyPickle(config.students_obj_path)
                                mp_st.edit(student)
                                print('已成功选择课程<%s>并加入班级<%s>' %
                                      (choice_course, class_choice))
                                # 日志
                                msg = '学生<%s>成功选择课程<%s>并加入班级<%s>' % \
                                      (args[0].name, choice_course, class_choice)
                                log_file = os.path.join(
                                    config.log_path,
                                    config.LOG_TYPES['student'])
                                logger.logger(log_file, msg)
                                return
                        else:
                            print('添加班级失败!')
                else:
                    print('该课程暂时没有班级上线,请稍等,或者联系在线客服。')
        else:
            print('添加学校失败!')
コード例 #11
0
 def update(self, obj, filename):
     mp_st = MyPickle(filename)
     mp_st.edit(obj)