8-7 选课初级作业

选课系统项目中涉及到诸多数据与功能,要求引入面向对象的思想对其进行高度整合
# 1、学校数据与功能整合
# 2、课程数据与功能进行整合
# 3、学生数据与功能进行整合
# 4、讲师数据与功能进行整合
# 5、班级数据与功能进行整合
ps:不会写的同学,可以先用普通的方式,先把数据与功能都给写好,再考虑基于面向对象的思想进行整合

数据部分:
     校区的名字:如"老男孩上海校区"
     校区的地址:如"上海虹桥"

     班级名字
     班级所在校区

     学生的学校
     学生的姓名
     学生的年龄
     学号
     学生的性别

     课程名字
     课程周期
     课程价格

     老师的名字
     老师的年龄
     老师的薪资
     老师的等级


功能部分:
     校区创建完毕后,可以为每个校区创建班级

     班级创建完毕后,可以为每个班级创建课程

     学生创建完毕后,学生可以选择班级

     老师创建完毕后,可以为学生打分
class School:
    school_name = 'Oldboy'

    def __init__(self, nickname, addr):
        self.nickname = nickname
        self.address = addr
        self.classes = []

    def related_classes(self, classes_obj):
        self.classes.append(classes_obj)

    def tell_class(self):
        print(self.nickname.center(50, '='))
        for class_obj in self.classes:
            class_obj.tell_course()


class Class:

    def __init__(self, name):
        self.name = name
        self.course = []

    def related_courses(self, course_obj):
        self.course.append(course_obj)

    def tell_course(self):
        print(f'班级名称:{self.name}')
        for course_obj in self.course:
            course_obj.tell_course()


class Student:

    def __init__(self, name, age, gender, id_num, school):
        self.name = name
        self.age = age
        self.gender = gender
        self.id_num = id_num
        self.school = school
        self.mark = None
        self.classes = None

    def related_class(self, class_obj):
        self.classes = class_obj

    def tell_class(self):
        print('学生姓名:%s' % self.name)
        self.classes.tell_course()

    def tell_school(self):
        print(self.school.nickname)

    def tell_mark(self):
        print('学生姓名:%s 分数: %s' % (self.name, self.mark))


class Course:

    def __init__(self, name, peirod, price):
        self.name = name
        self.peirod = peirod
        self.price = price
        self.students = []

    def ralated_student(self, student_obj):
        self.students.append(student_obj)

    def tell_course(self):
        print('课程名:%s 周期:%s 价格:%s' % (self.name, self.peirod, self.price))


class Teacher:

    def __init__(self, name, age, salary, rank):
        self.name = name
        self.age = age
        self.salary = salary
        self.rank = rank

    def scoring(self, student_obj, mark):
        student_obj.mark = mark

    def tell_teacher_info(self):
        print('姓名:%s 年龄:%s 薪资:%s' % (self.name, self.age, self.salary))


school1 = School('老男孩上海', '上海')  # 定义学校
school2 = School('老男孩北京', '北京')

class1 = Class('脱产15期')  # 定义班级
class2 = Class('脱产31期')

course1 = Course('python', '6mons', 20000)  # 定义课程
course2 = Course('linux运维', '5mons', 18000)

student1 = Student('Alex', 23, 'male', 123456, school1)
student2 = Student('egon', 18, 'male', 887766, school2)

teacher1 = Teacher('tank', 18, 30, 10)
teacher2 = Teacher('wusir', 18, 30, 10)

school1.related_classes(class1)  # 为学校开设班级
school2.related_classes(class2)
# school1.tell_class()
# school2.tell_class()
'''
======================老男孩上海=======================
班级名称:脱产15期
======================老男孩北京=======================
班级名称:脱产31期'''

class1.related_courses(course1)  # 为班级开设课程
class2.related_courses(course2)
# school1.tell_class()
# school2.tell_class()
'''
======================老男孩上海=======================
班级名称:脱产15期
课程名:python 周期:6mons 价格:20000
======================老男孩北京=======================
班级名称:脱产31期
课程名:linux运维 周期:5mons 价格:18000'''
student1.related_class(class1)  # 学生选择班级
student2.related_class(class2)
# student1.tell_class()
# student2.tell_class()
'''
学生姓名:Alex
班级名称:脱产15期
课程名:python 周期:6mons 价格:20000
学生姓名:egon
班级名称:脱产31期
课程名:linux运维 周期:5mons 价格:18000
'''
teacher1.scoring(student1, 98) #老师给学生打分
teacher2.scoring(student2, 50)
student1.tell_mark()
student2.tell_mark()
'''
学生姓名:Alex 分数: 98
学生姓名:egon 分数: 50
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值