题目要求:

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

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

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

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

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

需求分析:

1.实现学生信息,教师信息,课程信息初始化 ( 用列表存储各个实例)

2.实现教师信息与课程信息绑定 (用字典存储信息,语义明确,结构化数据)

3.实现学生与教师信息课程信息的绑定(将课程名称存储到实例对象的课程属性中,并以属性的方式查看property)

思路:

1.模块化思想:分为两个模块:启动模块与类模块

2.面向对象思想:教师 , 课程 ,学生3个对象分别添加属性

        学生类需要绑定课程添加add方法赋值给course属性

         课程类需要绑定教师,创建binding方法赋值非teacher属性

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

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

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

     4、启动文件中利用‘__main__’魔法属性实现(3)中定义方法的调用,并遍历所返回的学生对象列表以添加课程至学生对象的属性。
 """
 #学生类
 class Student(object):
     def __init__(self , s_number , name , s_course = []):
         self.s_number = s_number
         self.name = name
         self.s_course = 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.name , self.s_number)

 #教师类
 class Teacher(object):
     def __init__(self , t_number , name , t_telnumber):
         self.t_number = t_number
         self.name = name
         self.t_telnumber = t_telnumber

     #返回教师编号及教师姓名
     def __str__(self):
         return  "{0},{1}".format(self.t_number , self.name)

 #课程类
 class Course(object):
     def __init__(self , c_number , name , teacher = None):
         self.c_number = c_number
         self.name = name
         self.teacher = teacher

     def binding(self , teacher):
         if isinstance(teacher , Teacher):
             self.teacher = teacher
             c_dict = {}
             c_dict.update(课程名称 = self.name , 教师名称 = self.teacher.name)
             return c_dict
         else:
             return {}

example.py

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

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

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

     4、启动文件中利用‘__main__’魔法属性实现(3)中定义方法的调用,并遍历所返回的学生对象列表以添加课程至学生对象的属性。
 """
 from mooc_chapter3_project.example import Course as example_Course
 from mooc_chapter3_project.example import Teacher as example_Teacher
 from mooc_chapter3_project.example import Student as example_Student
 #接收标题名字并格式化输出
 def introduction(str):
     # 字符串拼接
     print("*"*10 +"{0}".format(str) +"*"*10)

 #课程信息初始化
 def prepare_course():
     """
     :return:返回课程信息列表,元素为实例对象
     """
     course_dict = { " : "数据分析" ,
                     " : "机器学习" ,
                     " : "大数据",
                     " : "web开发"
                   }
     course_list = []
     for k,v in course_dict.items():
         course = example_Course(k, v)
         course_list.append(course)
     return course_list

 #教师信息初始化
 def create_teacher():
     """
     :return:返回教室信息列表 元素为实例对象
     """
     t1 = example_Teacher(")
     t2 = example_Teacher(")
     t3 = example_Teacher(")
     t4 = example_Teacher(")
     t5 = example_Teacher(")
     t6 = example_Teacher(")
     t7 = example_Teacher(")
     t8 = example_Teacher(")
     teacher_list = [t1, t2, t3, t4, t5, t6, t7, t8]
     return teacher_list

 #课程绑定教师
 def course_to_teacher():
     """
     :return: 返回课程信息列表, 元素为字典
     """
     # (1)创建空列表
     ct_list = []
     ls_course = prepare_course()
     ls_teacher = create_teacher()
     for i in range(len(ls_course)):
         j = -(i + 1)
         ct = ls_course[i].binding(ls_teacher[j])
         ct_list.append(ct)
     return ct_list

 #学生信息初始化
 def create_student():
     """
     :return: 学生信息列表
     """
     ls_student = ["小亮" , "小明" , "李红" , "小丽" , "Jone" , "小彤" , "小K" , "慕慕"]
     s_number_list = []
     for i in range(1000 , 1008):
         s_number_list.append(i)
     s_numAndname_list = []
     for i in range(len(ls_student)):
         j = -(i + 1)
         s = example_Student(s_number_list[i] , ls_student[j])
         s_numAndname_list.append(s)
     return s_numAndname_list

 if __name__ == "__main__":
     TeacAndCour_info = course_to_teacher()
     Stu_info = create_student()
     introduction("慕课学院(1)班学生信息")
     for i in range(len(Stu_info)):
         print(Stu_info[i])
     introduction("慕课学院(1)班选课结果")
     for j in range(len(TeacAndCour_info)):
         #绑定每位学生的课程信息
         Stu_info[j].add_course(TeacAndCour_info[j].get("课程名称"))
         #以属性方式查看
         # print(Stu_info[j].course_detail)
         print("Name:{0} , Selected:[{1}]".format(Stu_info[j].name , TeacAndCour_info[j]))
     #打印教师信息
     # t = create_teacher()
     # print(t[0].t_telnumber , t[0].name , t[0].t_number)

file_exe.py

相关知识点:

 p_dict = {"key" : "value"}
 p_dict2 = dict(key = "value")

字典的创建

 p_dict = {"}
 name = p_dict["name"]
 name2 = p_dict.get("name")

字典的取值

 course_dict = { " : "数据分析" ,
                     " : "机器学习" ,
                     " : "大数据",
                     " : "web开发"
                   }
 for k,v in course_dict.items():
     print(k)
     print(v)

字典的遍历

 from mooc_chapter3_project.example import Course as example_Course

模块的引入

 p_list = []
 p_list.append(1)

列表添加元素

 p_dict = {}
 p_dict.update(姓名 = " , 性别 = "男")

字典添加元素

 print(isinstance("a" , int))

isinstance方法辨别实例

类的魔法方法__init__中 未设置默认值的形参,在实例中必须添加实参

      __str__     一般返回字符串,打印实例直接显示

类的高级特性@property 方法作为实例的属性 可直接调用

模块的引用需注意:同一目录下应有__init__.py文件 引用包需在__init__.py文件中引用

python项目总结--学生选课的更多相关文章

  1. python开发项目:学生选课系统

    程序要求:1.创建北京.上海两所学校(分析:通过学校类实例化两个学校实例) 2.创建Linux.python.go三个课程,Linux\go在北京开,Linux在上海开(创建Linux.python. ...

  2. Django 小实例S1 简易学生选课管理系统 2 新建项目(project)并进行设置

    Django 小实例S1 简易学生选课管理系统 第2节--新建项目(project)并进行设置 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 0 ...

  3. python实现学生选课系统 面向对象的应用:

    一.要求: 选课系统 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 使用pickle保存在文件 学生: 学生:用户名.密码.性别.年龄.选课列表[].上课 ...

  4. C#项目 学生选课系统 C#窗口 Winform项目 项目源码及使用说明

    这是一个学生选课信息管理系统,使用VS2010+SQL2008编写,VS2017正常使用. 项目源码下载地址 https://gitee.com/whuanle/xkgl 笔者录了两个视频,打开项目源 ...

  5. python基础-10 程序目录结构 学生选课系统面向对象练习

    一 程序目录结构 1 bin文件夹 二进制文件.代码程序  2 conf 配置文件  3 帮助文档  4 头文件库文件等 二 学生选课系统部分代码 未完待续 1 包内的__init__.py文件 在包 ...

  6. Django 小实例S1 简易学生选课管理系统 1 项目流程梳理与数据库设计

    Django 小实例S1 简易学生选课管理系统 第1章--项目流程梳理与数据库设计 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 1 项目流程梳理 ...

  7. Django 小实例S1 简易学生选课管理系统 3 创建用户模型(model)

    Django 小实例S1 简易学生选课管理系统 第3节--创建用户模型(model) 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新 ...

  8. Django 小实例S1 简易学生选课管理系统 0 初步介绍与演示

    Django 小实例S1 简易学生选课管理系统 第0章--初步介绍与演示 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 1 初步介绍 先介绍下这个 ...

  9. 学生选课系统 c语言

    /********************************* *主题:学生选修课程系统设计 * *设计要求: *1.添加功能:程序能够任意添加课程和学生记录,可提供选择界面供用户选择所需要添加 ...

随机推荐

  1. 仿百度图片首页--HTML+CSS练手项目1【Table】

    [本文为原创,转载请注明出处] 技术[CSS+HTML]   布局[Table] 图片准备[百度图标.10张不同类型图] --------------------------------------- ...

  2. Java 之 Session

    Session 一.概述 Session技术:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象(HttpSession)中. 二.使用步骤 1.获取 HttpSession ...

  3. 房地产propretie财产

    property 1. 财产:所有物(不可数); 地产, 房地产 He has a large property in the county. 他在这个县有一大宗地产. 1.Propretie obs ...

  4. 使用IDEA运行项目时提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除

    如图 在使用IDEA运行项目时,在下方提示:Warning:java: 源值1.5已过时, 将在未来所有发行版中删除 这是因为JDK版本问题 解决方法如下:左上角 file ——> Projec ...

  5. MySQL Index--BNL/ICP/MRR/BKA

    MySQL关联查询算法: BNL(Block Nested-Loop) ICP(Index Condition Pushdown) MRR(Multi-Range Read) BKA(Batched ...

  6. K8S 部署 ingress-nginx 配置 https

    生成证书 mkdir cert && cd cert # 生成私钥 tls.key, 密钥位数是 2048 openssl genrsa -out tls.key 2048 # 使用 ...

  7. [I2C].I2C总线详解

    转自:https://www.cnblogs.com/BitArt/archive/2013/05/27/3101037.html 一. 基本信息 1. 概述 I²C 是Inter-Integrate ...

  8. 【MySQL】FIND_IN_SET、LIKE、IN的区别

    现在有张新闻表,里面有新闻名称name字段,有新闻类型type字段,1代表头条,2代表推荐,11代表热点,22代表最新,现在表中有两条记录,存储形式如下,现在的需求是查找头条新闻,及type中包含1的 ...

  9. MacOS查看NGINX文件路径(配置文件、日志文件)

    使用 MacOS 经常发现 NGINX 路径不好找,后来发现一个很好的命令来查找: nginx -V 即可输出 NGINX 各文件夹的路径.

  10. Zabbix导入MySQL数据库报错ERROR 1046 (3D000) at line 1: No database selected

    使用如下命令导入Zabbix数据库时报错 解决办法: 1.先把原始的数据库压缩包备份 cd /usr/share/doc/zabbix-server-mysql-4.0.7/ cp create.sq ...