选课系统

本章内容

  • 设计模式之单例模式
  • pickle模块
  • 选课系统项目分析
  • 选课系统项目搭建
  • 编写功能

在IT行业中设计模式总共有23种,可以分为三大类

1.创建型

2.结构型

3.行为型

设计模式其实就是一个固定的套路,用来解决固定的问题

设计模式之单例模式

​ 单例模式的意思是一个类只能产生一个对象,用于节省资源

应用场景:

​ 有一个类中有很多非常牛逼的绑定给对象的方法

​ 我们需要在很多地方使用它,那么不同的程序员来用不知道有没有产生对象

​ 所以自己会创建一个新的对象,如此往复则会造成资源的浪费

如何实现:

​ 我们需要在实例化对象的时候进行干涉 >>>>>>>: 元类

单例模式:(可以有很多种编写的方式)

class Single(type):
    new_obj = None
    def __call__(self, *args, **kwargs):
        if not self.new_obj:
            obj = super().__call__(*args,**kwargs)
            self.new_obj = obj
            return self.new_obj
        return self.new_obj
class MyClass(metaclass=Single):
    def __init__(self,name):
        self.name = name
obj1 = MyClass('jason')
obj2 = MyClass('tony')
print(id(obj1),id(obj2))
print(obj1.__dict__,obj2.__dict__)
image-20220412173708214

pickle模块

该模块只支持python 兼容性很差!!!

class MyClass(object):
    school = 'school'
    def __init__(self,name):
        self.name = name
    def choose_course(self):
        print('%s正在选课'%self.name)
obj = MyClass('jason')
print(obj.school)
obj.choose_course()
image-20220412174702836
with open(r'%s.txt'%obj.name,'wb')as f:
    pickle.dump(obj,f)
with open(r'%s.txt'%obj.name,'rb')as f:
    data = pickle.load(f)
print(data)
print(data.name)
print(data.school)
image-20220412180213603

注意:使用pickle时必须要有obj存在于名称空间,也就是说要配合class一起使用

选课系统项目分析

1.项目分析

# 角色: 学校、学员、课程、讲师要求:
# 1.创建北京、上海 2所学校
# 2.创建linux, python, go3个课程 , linux\py在北京开, go在上海开
# 3.课程包含,周期,价格,通过学校创建课程
# 4.通过学校创建班级, 班级关联课程、讲师
# 5.创建学员时,选择学校,关联班级
# 5.创建讲师角色时要关联学校,
# 6.提供三个角色接口
#   6.1学员视图, 可以注册, 交学费, 选择班级,
#   6.2讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
#   6.3管理视图,创建讲师, 创建班级,创建课程
# 7.上面的操作产生的数据都通过pickle序列化保存到文件里

通过解析可以知道可以把这个项目写成三层架构

2.项目功能分析

管理员视图
	注册
  登录
  创建学校
  创建课程
  创建讲师

讲师视图
	登录
  查看教授课程
  选择教授课程
  查看课程学生
 	评判学生分数

学员视图
	注册
  登录
  选择学校
  选择课程
  查看分数

数据保存剖析

类产生的对象在保存的时候	
	自动创建一个与类名一样的文件夹名 将数据保存到该文件夹内

# 如何通过对象获取类对应的字符串名称
obj = Admin('jason',123)
# 固定方法
print(obj.__class__)  # <class '__main__.Admin'>    类名
print(obj.__class__.__name__)  # Admin              字符串
posted @ 2022-04-12 23:38  DDYT  阅读(160)  评论(0)    收藏  举报