python类的实践项目

题目要求:

根据业务需求,现要对慕课学院(1)班的所有学员进行选修课程分配,使得每一名学生都可以选修到一门课程。具体要求如下:

    1、自定义学生信息、课程信息、教师信息三者的具体描述

    2、自定义example.py和file_exe.py模块,分别用以定义(1)中的描述信息和作为启动文件

    3、启动文件中主要包含5个方法,包括星号(“*”)分割线设置、初始化课程信息并装载入列表返回、初始化教师信息并装载入列表返回、遍历课程对象并绑定教师至课程对象的对应属性并装载入列表返回、初始化学生信息并装载入列表返回

    4、启动文件中利用‘__main__’魔法属性实现(3)中定义方法的调用,并遍历所返回的学生对象列表以添加课程至学生对象的属性。

运行效果图:

//img.mukewang.com/climg/5c7752810001456705000290.jpg

example.py 

class Student(object):
    """学生类"""
    def __init__(self,s_num,s_name):
        """

        :param s_num: 学号
        :param s_name: 学生姓名
        :param s_course: 已选课程,默认列表为空
        """
        self.s_num = s_num
        self.s_name = s_name
        self.s_course = []

    @property
    def course_detail(self):
        """以属性的方法返回学生的已选课程信息"""
        return self.s_course

    def add_course(self,cour_info):
        """实现添加课程信息至学生对象的已选课程属性"""
        self.s_course.append(cour_info)

    def __str__(self):
        """设置学生类信息的字符串显示方法"""
        return "name:{0},s_number:{1}".format(self.s_name,self.s_num)


class Teacher(object):
    """教师类"""

    def __init__(self, t_num, t_name, t_phone):
        """

        :param t_num: 教师编号
        :param t_name: 教师姓名
        :param t_phone: 手机号
        """
        self.t_num = t_num
        self.t_name = t_name
        self.t_phone = t_phone

    def __str__(self):
        """设置教师类信息的字符串显示方法"""
        return 't_number:{0},t_name:{1}'.format(self.t_num, self.t_name)


class Course(object):
    def __init__(self,c_num,c_name,c_teacher = None):
        """

        :param c_num: 课程编号
        :param c_name: 课程名城
        :param c_teacher: 授课教师,默认为None
        """
        self.c_num = c_num
        self.c_name = c_name
        self.c_techer = c_teacher

    def binding(self,teacher):
        """绑定授课教师"""
        #如果实例不存在,返回0,反之,将该实例赋值给课程类的授课教师属性,并将课程名和教师名包装成字典进行返回
        if teacher == "":
            return 0
        else:
            self.c_techer = teacher
            return {"课程名称":self.c_name,"教师名称":self.c_techer.t_name}

 

 file_exe.py

from example import  Student,Teacher,Course

def introduction(str):
    """标题 函数"""
    a = '*' * 22
    print('{0}{1}{2}'.format(a,str,a))

def prepare_course():
    """创建课程信息初始化"""
    # 1.创建字典接受课程信息
    dict1 = {
        "01": "网络爬虫", "02": "数据分析",
        "03": "人工智能", "04": "机器学习",
        "05": "云计算", "06": "大数据",
        "07": "图像识别", "08": "Web开发"
    }
    #2.船舰空列表
    list1 = []
    #3.循环遍历字典,将字典的键值对传入到课程的实例,列表则每次追加每次的课程类实例
    for k,v in dict1.items():
        rest = Course(k,v)
        list1.append(rest)
    #4.返回追加后的列表
    return list1

def create_teacher():
    """创建教师信息初始化"""
    #1.列表保存教师信息
    list_t =  ["T1", "张亮", "13301122001"],["T2", "王朋", "13301122002"],\
              ["T3", "李旭", "13301122003"],["T4", "黄国发", "13301122004"],\
              ["T5", "周勤", "13301122005"],["T6", "谢富顺", "13301122006"], \
              ["T7", "贾教师", "13301122007"],["T8", "杨教师", "13301122008"]
    #2。创建列表进行存储
    list2 = []
    #3.将8个教师信息一一传入教师类
    for i in list_t:
        rest = Teacher(i[0],i[1],i[2])
        list2.append(rest)
    #4.返回实例对象
    return list2

def course_to_teacher():
    """课程与教师逐一绑定,每一课程信息绑定倒序的每一个老师信息"""
    list3 = []
    ls_course = prepare_course()
    ls_teacher = create_teacher()
    for i in range(0,len(ls_course)):
        rest = ls_course[i].binding(ls_teacher[-(i+1)])
        list3.append(rest)
    return list3

def create_student():
    """创建学生信息初始化"""
    #1.列表保存学生信息,并以变量保存
    ls_student = ["小亮","小明","李红","小丽","Jone","小彤","小K","慕慕"]
    #2.学号列表
    ls_s_num = list(range(1000,1008))
    #3.创建空列表
    list4 = []
    #4.循环遍历学生信息长度,将学号与倒序的学生姓名传入到学生类的实例,列表则追加每次学生类的实例
    for i in range(0,len(ls_student)):
        rest  = Student(ls_s_num[i],ls_student[-(i+1)])
        list4.append(rest)
    return list4

if __name__ == "__main__":
    rest1 = course_to_teacher()
    rest2 = create_student()
    introduction("慕课学院(1)班学生信息")
    for i in rest2:
        print(i)
    introduction("慕课学院(1)班选课结果")
    #调用学生类中的函数添加课程
    for  i in range(0,len(rest1)):
        rest2[i].add_course(rest1[i])
    for j in rest2:
        print("Name:{0},Selected:{1}".format(j.s_name,j.course_detail))









 

运行结果:


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值