4.8 --- Object-Oriented Exercise 2

 

Rewrite requirements:

# 1, based on object-oriented code written expansion Student class 
# 2, was added and deserialize serialized operation
# 3, the association between the objects using the id
# 4, can be found in the corresponding id files, from the file and then trans serialize the execution of the schools, classes, courses, student objects

 

Class definition part:

import uuid
import pickle

class School:
    school_name = " Old Boy "

    def __init__(self,nickname,address):
        self.nickname = nickname
        self.address = address
        self.classes = []
        self.id = uuid.uuid4()

    def relate_class(self,class_obj):
        self.classes.append(class_obj.id)

    def save(self):
        with open(f"db\school\\{self.id}.pickle",mode="wb") as f:
            pickle.dump(self,f)


    def tell_class(self):
        print(self.nickname.center(50,"="))
        for class_id in self.classes:
            with open(f"db\class\\{class_id}.pickle", mode="rb") as f:
                class_obj = pickle.load(f)
            class_obj.tell_course()

class Class:
    def __init__(self,name):
        self.name = name
        self.course = None
        self.student = []
        self.id = uuid.uuid4()
        self.school = None

    def relate_course(self,course_obj):
        self.course = course_obj.id
        
    def relate_student(self,student_obj):
        self.student.append(student_obj.id)

    def save(self):
        with open(f"db\class\\{self.id}.pickle",mode="wb") as f:
            pickle.dump(self,f)

    def tell_course(self):
        print("%-10s " %self.name,end=" ")
        with open(f"db\course\\{self.course}.pickle",mode="rb") as f:
            course = pickle.load(f)
        course.tell_info()


class Course:
    def __init__(self,name,time,cost):
        self.name = name
        self.time = time
        self.cost = cost
        self.id = uuid.uuid4()

    DEF tell_info (Self):
         Print ( " Course name:% - 10s Duration:% s, fee:% S " % (self.name, self.time, self.cost))

    def save(self):
        with open(f"db\course\\{self.id}.pickle",mode="wb") as f:
            pickle.dump(self,f)


class Student:
    def __init__(self,name,age,gender,num):
        self.name = name
        self.age = age
        self.gender = gender
        self.num = whether
        self.class_obj = None
        self.id = uuid.uuid4()

    DEF tell_info (Self):
         Print ( " Name:% - 5s Age:% s Gender:% s, student number:% - 5s " % (self.name, self.age, self.gender, self.num))

    def chose_class(self,class_obj):
        self.class_obj = class_obj.id
        class_obj.student.append(self.id)

    def save(self):
        with open(f"db\student\\{self.id}.pickle", mode="wb") as f:
            pickle.dump(self, f)

    DEF tell_class (Self):
         Print (F " Student {self.name} {} class information " .center (50, " = " ))
        with open(f"db\class\\{self.class_obj}.pickle",mode="rb") as f:
            class_obj = pickle.load(f)
        class_obj.tell_course()

 

Examples of moieties:

# Instantiate an object        
STU1 = Student ( " Jil " , 18 is, " Mal " , 1118 )
s1 = School ( " Pig Campus " , " Shanghai Xuhui " )
c1 = Class ( " Pig foundation classes " )
c2 = Class ( " Pig Advanced Class " )
course1 = Course, ( " pig self-cultivation " , " . 6 months " , 20000 )
course2 = Course, ( " fish capture ten style " , " . 5 months " , 18000 )

# Association 
s1.relate_class (c1)
s1.relate_class(c2)
c1.relate_course(course1)
c2.relate_course(course2)

# Students choose classes 
stu1.chose_class (c1)

# Stored in the file 
s1.save ()
c1.save()
c2.save()
course1.save()
course2.save()
stu1.save()

# View 
s1.tell_class ()
c1.tell_course()
stu1.tell_class()

 

Guess you like

Origin www.cnblogs.com/zhubincheng/p/12663199.html