组合:类和类之间有关联,假设定义一个人的类,人的头,手,脚,嘴等数据属性,这几个属性又可以是各自的类或类实例化的对象,这就是组合
#选课系统
class School:
def __init__(self,name,addr):
self.name = name
self.addr = addr
class Teacher:
def __init__(self,name,course,school):
self.name = name
self.course = course
self.school =school
class Course:
def __init__(self,name,price,period,school):
self.name = name
self.price = price
self.period = period
self.school = school
school_1 = School("清华大学","北京朝阳街")
school_2 = School("华南理工大学","广州天河区")
school_3 = School("中山大学","广州海珠区")
school_msg = """
1 %s %s
2 %s %s
3 %s %s
""" %(school_1.name,school_1.addr,school_2.name,school_2.addr,school_3.name,school_3.addr)
course_msg ="""
1 计算机
2 自然与科学
3 商务英语
4 经济与营销
"""
import re
stat = True
while stat:
print(school_msg)
school_menu = {
'1':school_1,
'2':school_2,
'3':school_3
}
school_choice = input("请选择学校:")
#用正则验证客户是否按要求输入
a = r"\d"
res = re.match(a,school_choice)
if not res:
print("......请输入正确的数字选项.......")
continue
if 0 < int(school_choice) < 4:
print(school_menu[school_choice].name, school_menu[school_choice].name)
else:
print("--------------------请输入正确的数字选项--------------------")
continue
print(course_msg)
course_menu = {
'1': "计算机",
'2': "自然与科学",
'3': "商务英语",
'4': "经济与营销"
}
course_price = {
'1': 800,
'2': 899,
'3': 900,
'4': 996
}
course_perdiod = {
'1': 60,
'2': 90,
'3': 120,
'4': 365
}
while stat:
course_choice = input("请选择课程名:")
# 用正则验证客户是否按要求输入
a = r"\d"
res = re.match(a, course_choice)
if not res:
print("......请输入正确的数字选项.......")
continue
if 0 < int(school_choice) < 4:
my_choice = Course(course_menu[course_choice],course_price[course_choice],
course_perdiod[course_choice],school_menu[school_choice])
else:
print("--------------------请输入正确的数字选项--------------------")
continue
print()
print("恭喜您! 您已经报读了 %s学校的 %s课程,学费是%s元,学习周期是%s天"
%(my_choice.school.name,my_choice.name,my_choice.price,my_choice.period))
stat = False
break