zoukankan      html  css  js  c++  java
  • 本周作业

    本周作业

    角色:学校、学员、课程、讲师
    要求:
    1. 创建北京、上海 2 所学校
    2. 创建linux , python , go 3个课程 , linuxpy 在北京开, go 在上海开
    3. 课程包含,周期,价格,通过学校创建课程 
    4. 通过学校创建班级, 班级关联课程、讲师
    5. 创建学员时,选择学校,关联班级
    5. 创建讲师角色时要关联学校, 
    6. 提供两个角色接口
    6.1 学员视图, 可以注册, 交学费, 选择班级,
    6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩 
    6.3 管理视图,创建讲师, 创建班级,创建课程

    7. 上面的操作产生的数据都通过pickle序列化保存到文件里

    import pickle
    
    class School(object):
        def __init__(self, addr):
            self.addr = addr
    
        def hire_teacher(self):
            '''
            保存老师信息
            :return:
            '''
            teacher_dict = pickle.load(open('teacher', 'rb'))
            T = 0
            while T>=0:
                name = input('请输入老师名')
                for key in teacher_dict:
                    if key == name:
                        print('此老师已存在,请重新输入')
                        T+=1
                T-=1
            age = input('请输入年龄')
            print('创建成功')
            teacher = Teacher(name, age, self.addr)
            teacher_dict[name] = teacher
            pickle.dump(teacher_dict, open('teacher', 'wb'))
    
        def create_course(self):
            '''
            保存课程信息
            :return:
            '''
            course_dict = pickle.load(open('course', 'rb'))
            name = input('请输入课程名')
            money = input('请输入课程价钱')
            cycle = input('请输入课程周期')
            course_dict[name] = Course(name, money, cycle)
            pickle.dump(course_dict, open('course', 'wb'))
    
        def create_class(self):
            '''
            创造班级,关联老师和课程
            :return:
            '''
            teacher_dict = pickle.load(open('teacher', 'rb'))
            course_dict = pickle.load(open('course', 'rb'))
            class_dict = pickle.load(open('class', 'rb'))
    
            name = input('请输入班级名:')
            for key in teacher_dict:
                print(key)
            teacher = input('请选择上课老师')
            for key in course_dict:
                print(key)
            course = input('请输入对应课程')
            if teacher in class_dict:
                class_dict [teacher].append(Classroom(name, course_dict[course], teacher_dict[teacher]))
            else:
                class_dict [teacher] = [Classroom(name, course_dict[course], teacher_dict[teacher])]
            print('创建成功')
            pickle.dump(class_dict, open('class', 'wb'))
    
    
    class Course (object):
        def __init__(self, course, money, cycle):
            self.course = course
            self.money = money
            self.cycle = cycle
    
        def show_course(self):
            print('课程名:%s; 价钱: %s; 上课周期:%s' % (self.course, self.money, self.cycle))
    
    class Classroom(object):
        def __init__(self, name, course, teacher):
            self.name = name
            self.course = course
            self.student = []
            self.teacher = teacher
    
        def show_classroom(self):
            self.teacher.show_teacher()
            print ('班级名: %s' %  self.name)
            self.course.show_course()
    
    
    class Student(object):
        def __init__(self, name):
            self.name = name
            self.account = 0
            self.sorce = 0
            self.course = []
    
    
    
    class Teacher(object):
        def __init__(self, name, age, addr):
            self.name = name
            self.age = age
            self.addr = addr
    
        def show_teacher(self):
            print('''老师姓名:%s 
    老师年龄: %s
    老师所在学校:%s''' % (self.name, self.age,self.addr))
    
    
    def set_student():
        '''
        学生登陆或注册,选课
        :return:
        '''
        class_dict = pickle.load(open('class', 'rb'))
        student_dict = pickle.load(open('student', 'rb'))
        name = input('请输入学生姓名').capitalize()
        obj = Student(name)
        if name in student_dict:
            print ('欢迎 %s' % name)
        else:
            print('注册成功')
        while True:
            for key in class_dict:
                a = class_dict[key]
                a[-1].show_classroom()
                print('*' *30)
            while True:
                b = input('请选择课程对应的老师').capitalize()
                if b in class_dict:
                    c = class_dict[b][-1]
                    break
                else:
                    print('没有该老师,请重新选择')
            k = input('请确认付费,y = yes, 其他键 = 返回, q = 退出').lower()
            if k == 'y':
                while True:
                    if obj.account >= int(c.course.money):
                        obj.account -= int(c.course.money)
                        print('扣费成功')
                        obj.course.append(c)
                        c.student.append(Student(name))
                        y = input('请选择:1 继续选课, 其他键 = 退出')
                        if y == '1':
                            break
                        else:
                            obj.course.append(c)
                            student_dict[name] = obj
                            pickle.dump(class_dict, open('class', 'wb'))
                            pickle.dump(student_dict, open('student', 'wb'))
                            exit()
                    else:
                        charge = input('余额不足,y = 充值,q = 退出, 其他键返回').lower()
                        if charge == 'y':
                            mk = input('请输入充值金额')
                            obj.account += int(mk)
                        elif charge == 'q':
                            exit()
                        else:
                            break
            elif k == 'q':
                exit()
            else:
                continue
    
    def check_student(name):
        '''
        老师上课,查看学生,或修改成绩
        :param name:
        :return:
        '''
    
        class_dict = pickle.load(open('class', 'rb'))
        a = class_dict[name]
    
        for k, i in enumerate(a,1):
            print(k)
            print('班级名:%s
    课程:%s'% (i.name, i.course.course))
            print ("*" * 60)
        c = input('请选择班级对应的数字')
        while True:
            if int(c)>0 and int(c)<=len(a):
                e = input('请选择:1 上课; 2 查看班级成员,3 修改学员成绩,其他键 = 退出')
                if e == '1':
                    print ('开始上课...')
                elif e == '2':
                    d = a[int(c)-1].student
                    for o in d:
                        print ('学生姓名 %s' % o.name)
                elif e == '3':
                    d = a[int(c)-1].student
                    for n, j in enumerate(d, 1):
                        print ('%s. 学生姓名 %s, 分数 %s' % (n, j.name, j.sorce))
                    f = input('请选择学生的对应数字')
                    if int(f)>0 and int(f)<=len(d):
                        sorce = input('修改的分数为')
                        d[int(f)-1].sorce = sorce
                        pickle.dump(class_dict,open('class', 'wb'))
            else:
                print ('输入有误')
    
    def manage():
        '''
        管理员菜单
        :return:
        '''
        while True:
            b = input('输入学校地址: 北京; 上海')
            if b == '北京' or b =='上海':
                obj = School(b)
                break
            else:
                print('没有这地址')
                continue
        while True:
            a = input('请选择: 1 创建老师, 2 创建课程, 3 创建班级, 4 返回')
            if a == '1':
                obj.hire_teacher()
            elif a == '2':
                obj.create_course()
            elif a == '3':
                obj.create_class()
            elif a=='4':
                break
            else:
                print ('输入有误')
    
    def main():
        '''
        主菜单
        :return:
        '''
        while True:
            a = input('请选择: 1 学生; 2 老师, 3 管理员, 其他键 退出')
            if a == '1':
                set_student()
            elif a == '2':
                name = input('请输入老师姓名').capitalize()
                teacher_dict = pickle.load(open('teacher', 'rb'))
                if name in teacher_dict:
                    check_student(name)
                else:
                    print ('不是我们学校的老师,请重新输入')
            elif a == '3':
                manage()
            else:
                exit()
    
    
    
    main()
    作业
  • 相关阅读:
    (转)Nginx配置和内核优化 实现突破十万并发
    (转)资源监控工具Spotlight监测LINUX
    (转) linux I/O优化 磁盘读写参数设置
    (转)MongoDB numa系列问题三:overcommit_memory和zone_reclaim_mode
    (转)mongdb性能优化收集
    (转)部署MongoDB时需要注意的调参
    (转)Loadrunner监控Linux的17个指标
    (转)linux 内存管理——内核的shmall 和shmmax 参数
    (转)Linux性能调优之虚拟内存篇
    (转)LR监控Linux系统性能计数器详解
  • 原文地址:https://www.cnblogs.com/datatool/p/13620738.html
Copyright © 2011-2022 走看看