zoukankan      html  css  js  c++  java
  • 作业 4/9

    import uuid
    import pickle
    import os
    # 功能部分:
    #      校区创建完毕后,可以为每个校区创建班级
    
    def save(obj,path1):
        path1 = os.path.join(path1,'{}_{}.pkl'.format(obj.uid,obj.name))
        with open(path1, 'wb') as f:
            pickle.dump(obj, f)
    class School():
        def __init__(self,name,adr):
            self.uid = uuid.uuid3(uuid.NAMESPACE_DNS,name)
            self.name = name
            self.adr = adr
            self.classes_uid = []
        def add_class(self,class_obj):
            self.classes_uid.append(class_obj.uid)
        def look_school(self):
            print(self.name.center(50,'='))
            for classw in self.classes_uid:
                if os.path.exists('{}.pkl'.format(classw)):
                    while os.path.getsize('{}.pkl'.format(classw)):
                        with open('{}.pkl'.format(classw),'rb') as f:
                            class1 = pickle.load(f)
                        class1.look_class()
                        break
    
    
    
    class Class():
        def __init__(self,name):
            self.uid = uuid.uuid3(uuid.NAMESPACE_DNS,name)
            self.name = name
            self.courses_uid = []
            self.students = []
        def add_course(self,course_obj):
            self.courses_uid.append(course_obj.uid)
        def look_class(self):
            print(self.name)
            for cou1 in self.courses_uid:
                if os.path.exists('{}.pkl'.format(cou1)):
                    while os.path.getsize('{}.pkl'.format(cou1)):
                        with open('{}.pkl'.format(cou1), 'rb') as f:
                            cou = pickle.load(f)
                        cou.look_course()
                        break
    
    
    #      班级创建完毕后,可以为每个班级创建课程
    #
    #      学生创建完毕后,学生可以选择班级
    class Course():
        def __init__(self,name,price,time):
            self.uid = uuid.uuid3(uuid.NAMESPACE_DNS,name)
            self.name = name
            self.price = price
            self.time = time
        def look_course(self):
            print('课程名称:{} 课程价格:{} 课程周期:{}'.format(self.name,self.price,self.time))
    
    
    
    class Person():
        def __init__(self,name,age,sex):
            self.__name = name
            self.__age = age
            self.__sex = sex
    
        @property
        def data(self):
            return self.__name,self.__age,self.__sex
    
        @property
        def name(self):  # obj1.name
            return self.__name
    
    
        @name.setter
        def name(self,name_new):
            if type(name_new) != str:
                return
            self.__name = name_new
    
        @property
        def age(self):  # obj1.name
            return self.__age
    
        @age.setter
        def age(self, age_new):
            if type(age_new) != int:
                return
            self.__age = age_new
    
    
        @property
        def sex(self):  # obj1.name
            return self.__sex
    
    
        @sex.setter
        def sex(self,sex_new):
            if type(sex_new) != str:
                return
            if sex_new.lower() not in ['male','female']:
                return
            self.__sex = sex_new
    
    
    
    class Student(Person):
        def __init__(self,name,age,sex):
            Person.__init__(self,name,age,sex)
            self.uid = uuid.uuid3(uuid.NAMESPACE_DNS,name)
            self.__classes = []
            self.__cores = None
    
        def choose_class(self,class_obj):
            self.__classes.append(class_obj.uid)
        def look_class(self):
            print(self.__classes)
    
    
    #      老师创建完毕后,可以为学生打分
    # student = Student('wl',24,'male')
    class Teacher(Person):
        def __init__(self,name,age,sex):
            Person.__init__(self,name,age,sex)
            self.uid = uuid.uuid3(uuid.NAMESPACE_DNS,name)
    
        def set_core(self,stu_obj,core):
            str_obj.__Student__cores = core
    
    
    
    
    
    
    
    
    
    
    
    
    
    class G():
        pass
    class F(G):
        pass
    class E(F):
        pass
    class D(G):
        pass
    class C(G):
        pass
    class B(C):
        pass
    class A(B,D,E):
        pass
    print(A.mro())
    
    # 学员视图层
    
    def register():
        user = input('name:').strip()
        pwd = input('password:').strip()
        re_pwd = input('re_password:').strip()
        if pwd == re_pwd:
            #  接口层
            age = input('age:').strip()
            sex = input('sex:').strip()
            if age.isdigit():
                student = Student(user,int(age),'male')
                stu_data = {'user':user,'pwd':pwd}
                save(student,os.path.dirname(__file__))
                with open('students.txt','a',encoding='utf-8') as f:
                    f.write(str(stu_data) + '
    ')
                with open('{}.pkl'.format(user),'wb') as f:
                    pickle.dump(student.uid,f)
    def log_in():
        user = input('user:').strip()
        pwd = input('password:').strip()
        # 接口层
        with open('student.pkl','rb') as f:
            data = pickle.load(f)
            print(data)
    def choose_class():
        pass
    
    def pay():
        pass
    
    func_dic = {
        '0':['注册学员',register],
        '1':['登录学员',log_in],
        '2':['选择班级',choose_class],
        '3':['交钱',pay],
    }
    def student_mode():
        while True:
            for i in range(len(func_dic)):
                print('{} {}'.format(i,func_dic[str(i)][0]))
            choice = input('cmd:').strip()
            if choice not in func_dic:
                print('no cmd')
                continue
            func_dic[choice][1]()
    
    # student_mode()
    
    with open('students.txt','r',encoding='utf-8') as f:
        data = f.readline()
        print(data)
    with open('wltxt','rb') as f:
        data = pickle.load(f)
        print(type(data))
    
  • 相关阅读:
    20100320 ~ 20100420 小结与本月计划
    datamining的思考
    谈谈网络蜘蛛 爬开心网001的一些体会
    将 ASP.NET MVC3 Razor 项目部署到虚拟主机中
    Eclipse代码中中文字显示很小的解决办法
    U8800一键ROOT删除定制软件 安装新版Docment to go
    Android(安卓) U8800 长按 搜索键、返回键 锁屏或解锁的设置方法
    JDK5.0新特性系列3.枚举类型
    JDK5.0新特性系列1.自动装箱和拆箱
    网游运营基本概念及专业术语
  • 原文地址:https://www.cnblogs.com/pythonwl/p/12668457.html
Copyright © 2011-2022 走看看