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()
    作业
  • 相关阅读:
    OutputCache 缓存key的创建 CreateOutputCachedItemKey
    Asp.net Web Api源码调试
    asp.net mvc源码分析DefaultModelBinder 自定义的普通数据类型的绑定和验证
    Asp.net web Api源码分析HttpParameterBinding
    Asp.net web Api源码分析HttpRequestMessage的创建
    asp.net mvc源码分析ActionResult篇 RazorView.RenderView
    Asp.Net MVC 项目预编译 View
    Asp.net Web.config文件读取路径你真的清楚吗?
    asp.net 动态创建TextBox控件 如何加载状态信息
    asp.net mvc源码分析BeginForm方法 和ClientValidationEnabled 属性
  • 原文地址:https://www.cnblogs.com/datatool/p/13620738.html
Copyright © 2011-2022 走看看