python项目总结--学生选课
题目要求:
根据业务需求,现要对慕课学院(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项目总结--学生选课的更多相关文章
- python开发项目:学生选课系统
程序要求:1.创建北京.上海两所学校(分析:通过学校类实例化两个学校实例) 2.创建Linux.python.go三个课程,Linux\go在北京开,Linux在上海开(创建Linux.python. ...
- Django 小实例S1 简易学生选课管理系统 2 新建项目(project)并进行设置
Django 小实例S1 简易学生选课管理系统 第2节--新建项目(project)并进行设置 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 0 ...
- python实现学生选课系统 面向对象的应用:
一.要求: 选课系统 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 使用pickle保存在文件 学生: 学生:用户名.密码.性别.年龄.选课列表[].上课 ...
- C#项目 学生选课系统 C#窗口 Winform项目 项目源码及使用说明
这是一个学生选课信息管理系统,使用VS2010+SQL2008编写,VS2017正常使用. 项目源码下载地址 https://gitee.com/whuanle/xkgl 笔者录了两个视频,打开项目源 ...
- python基础-10 程序目录结构 学生选课系统面向对象练习
一 程序目录结构 1 bin文件夹 二进制文件.代码程序 2 conf 配置文件 3 帮助文档 4 头文件库文件等 二 学生选课系统部分代码 未完待续 1 包内的__init__.py文件 在包 ...
- Django 小实例S1 简易学生选课管理系统 1 项目流程梳理与数据库设计
Django 小实例S1 简易学生选课管理系统 第1章--项目流程梳理与数据库设计 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 1 项目流程梳理 ...
- Django 小实例S1 简易学生选课管理系统 3 创建用户模型(model)
Django 小实例S1 简易学生选课管理系统 第3节--创建用户模型(model) 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新 ...
- Django 小实例S1 简易学生选课管理系统 0 初步介绍与演示
Django 小实例S1 简易学生选课管理系统 第0章--初步介绍与演示 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 1 初步介绍 先介绍下这个 ...
- 学生选课系统 c语言
/********************************* *主题:学生选修课程系统设计 * *设计要求: *1.添加功能:程序能够任意添加课程和学生记录,可提供选择界面供用户选择所需要添加 ...
随机推荐
- Android数据库GreenDao配置版本问题
感谢该贴解决我多天的困惑:https://blog.csdn.net/u013472738/article/details/72895747 主要是降低了GreenDao版本 网上很多教程说的版本都是 ...
- Linux负载模拟
转载:https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79063392 CPU 下面命令会创建 CPU 负荷,方法是通过压缩随机数据并将结果发送 ...
- vue中引入mui报Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them的错误
在vue中引入mui的js文件的时候,报如下的错误: 那是因为我们在用webpack打包项目时默认的是严格模式,我们把严格模式去掉就ok了 第一步:npm install babel-plugin-t ...
- C++类中创建线程
经常会遇到需要在类中创建线程,可以使用静态成员函数,并且将类实例的指针传入线程函数的方式来实现. 实现代码代码如下: /* 类头文件 CTestThread.h */ #include<io ...
- Keystore Problem: Cannot convert COMBINED of type class java.lang.String to class org.jivesoftware.openfire.spi.ConnectionType
go to: Server Manager -> System Properties Search for "xmpp.socket.ssl.client.keypass" ...
- 02-CSS常用样式
本篇主要介绍css的常用样式,以及网页布局相关知识.绝对定位和相对定位,盒子模型.css权重.以及css选择器: 绪论:CSS基本介绍 为了让网页元素的样式更加丰富,也为了让网页的内容和样式能拆分开, ...
- 自动化运维-ansible入门篇
1.ansible配置 什么是Ansible IT自动化工具 依赖于现有的操作系统凭证来访问控制远程机器 简单易用.安全可靠 Ansible可以完成哪些任务 配置系统 开发软件 编排高级的IT任务 A ...
- mysqdump+binlog恢复数据
备份全库 [root@db01 b]# mysqldump -uroot -poldboy123 -A > /b/full.sql Warning: Using a password on th ...
- MySQL/MariaDB数据库的查询缓存优化
MySQL/MariaDB数据库的查询缓存优化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL架构 Connectors(MySQL对外提供的交互接口,API): ...
- Zabbix 完整的监控流程
目录 1.Zabbix的监控历程概念 1.1 基本概念 1.2 流程图 2.创建主机并加入主机组 3.添加新加主机的应用集(aplication) 4.添加监控项(item) 5.告警触发器配置(Tr ...