4.7---选课系统(面向对象,整合数据与功能)
选课系统
选课系统项目中涉及到诸多数据与功能,要求引入面向对象的思想对其进行高度整合
1、学校数据与功能整合
2、课程数据与功能进行整合
3、学生数据与功能进行整合
4、讲师数据与功能进行整合
5、班级数据与功能进行整合
数据部分:
校区的名字:如"老男孩上海校区"
校区的地址:如"上海虹桥"
班级名字
班级所在校区
学生的学校
学生的姓名
学生的年龄
学号
学生的性别
课程名字
课程周期
课程价格
老师的名字
老师的年龄
老师的薪资
老师的等级
功能部分:
校区创建完毕后,可以为每个校区创建班级
班级创建完毕后,可以为每个班级创建课程
学生创建完毕后,学生可以选择班级
老师创建完毕后,可以为学生打分
1、定义类与实例化
class School(): def __init__(self,school_name,address): self.school_name = school_name self.school_address = address self.class_dict = {} self.stu_dict = {} def create_class(self,class_name): c1 = Class(class_name,self.school_name) self.class_dict[c1.class_name] = c1.curriculum_dict return c1 def recruit_student(self,stu_name,stu_age,stu_num,stu_gender): stu = Student(self.school_name,stu_name,stu_age,stu_num,stu_gender) self.stu_dict[stu_name] = [stu.stu_age,stu.stu_num,stu.stu_gender,stu.stu_class] return stu class Class(): def __init__(self, class_name, campus): self.campus = campus self.class_name = class_name self.curriculum_dict = {} self.stu_list = {} def create_curriculum(self,curriculum_name,curriculum_peroid,curriculum_price): cur = Curriculum(curriculum_name,curriculum_peroid,curriculum_price) self.curriculum_dict[curriculum_name] = [curriculum_peroid,curriculum_price] return cur # 学生的学校 # 学生的姓名 # 学生的年龄 # 学号 # 学生的性别 # 学生创建完毕后,学生可以选择班级 class Student(): def __init__(self,school,name,age,num,gender): self.stu_school = school self.stu_name = name self.stu_age = age self.stu_num = num self.stu_gender = gender self.stu_class = {} self.stu_grade = None def chose_class(self,c): self.stu_class["班级"]= c.class_name self.stu_class["课程"]= c.curriculum_dict c.stu_list[self.stu_name] = [self.stu_age,self.stu_num,self.stu_gender] # 老师的名字 # 老师的年龄 # 老师的薪资 # 老师的等级 # 老师创建完毕后,可以为学生打分 class Teacher(): def __init__(self,tea_name,tea_age,tea_salary,tea_class): self.tea_name = tea_name self.tea_age = tea_age self.tea_salary = tea_salary self.tea_class = tea_class self.stu_list = {} def grade(self,stu,grade): stu.stu_grade = grade self.stu_list[stu.stu_name] = grade class Curriculum(): def __init__(self,name,period,price): self.curriculum_name = name self.curriculum_period = period self.curriculum_price = price with open("db.txt",mode='wt',encoding="utf-8") as f: f.write(name) s1 = School("西南大学","天生街道") c1 = s1.create_class("Class 1") curriculum_Python = c1.create_curriculum("Python","6 months","20000") curriculum_Math = c1.create_curriculum("Math","12 months","100000") stu1 = s1.recruit_student("Jil",20,666666,"male") stu1.chose_class(c1) stu2 = s1.recruit_student("Fishball",18,188741,"female") stu2.chose_class(c1) t1 = Teacher("egon",18,50000,"A") t1.grade(stu1,99) t1.grade(stu2,59) print("学校属性:\n",s1.__dict__,end="\n\n") print("班级属性:\n",c1.__dict__,end="\n\n") print("学生1属性:\n",stu1.__dict__,end="\n\n") print("学生2属性:\n",stu2.__dict__,end="\n\n") print("老师属性:\n",t1.__dict__,end="\n\n")
2、运行结果
学校属性: {'school_name': '西南大学', 'school_address': '天生街道', 'class_dict': {'Class 1': {'Python': ['6 months', '20000'], 'Math': ['12 months', '100000']}}, 'stu_dict': {'Jil': [20, 666666, 'male', {'班级': 'Class 1', '课程': {'Python': ['6 months', '20000'], 'Math': ['12 months', '100000']}}], 'Fishball': [18, 188741, 'female', {'班级': 'Class 1', '课程': {'Python': ['6 months', '20000'], 'Math': ['12 months', '100000']}}]}} 班级属性: {'campus': '西南大学', 'class_name': 'Class 1', 'curriculum_dict': {'Python': ['6 months', '20000'], 'Math': ['12 months', '100000']}, 'stu_list': {'Jil': [20, 666666, 'male'], 'Fishball': [18, 188741, 'female']}} 学生1属性: {'stu_school': '西南大学', 'stu_name': 'Jil', 'stu_age': 20, 'stu_num': 666666, 'stu_gender': 'male', 'stu_class': {'班级': 'Class 1', '课程': {'Python': ['6 months', '20000'], 'Math': ['12 months', '100000']}}, 'stu_grade': 99} 学生2属性: {'stu_school': '西南大学', 'stu_name': 'Fishball', 'stu_age': 18, 'stu_num': 188741, 'stu_gender': 'female', 'stu_class': {'班级': 'Class 1', '课程': {'Python': ['6 months', '20000'], 'Math': ['12 months', '100000']}}, 'stu_grade': 59} 老师属性: {'tea_name': 'egon', 'tea_age': 18, 'tea_salary': 50000, 'tea_class': 'A', 'stu_list': {'Jil': 99, 'Fishball': 59}}