#1343. 多媒体图书馆系统

多媒体图书馆系统

Python类的高级练习:多媒体图书馆系统

描述

设计并实现一个多媒体图书馆管理系统,该系统能够管理不同类型的媒体资源(图书、DVD、电子书),并支持以下操作:

  1. 添加资源​:能够添加新资源到系统,不同类型的资源有不同的属性
  2. 删除资源​:能够通过唯一标识符删除系统中的资源
  3. 查找资源​:能够根据多种条件查找资源
  4. 借阅资源​:能够借出资源,减少库存数量
  5. 归还资源​:能够增加库存数量,处理资源归还
  6. 显示所有资源​:能够显示系统中所有资源的详细信息

类设计

  1. 基类MediaItem - 包含所有媒体资源的共同属性
  2. 子类Book - 继承自MediaItem,添加图书特有属性
  3. 子类DVD - 继承自MediaItem,添加DVD特有属性
  4. 子类EBook - 继承自MediaItem,添加电子书特有属性
  5. Library - 管理所有媒体资源

输入输出格式

  1. 添加资源​:
    • 图书:添加 图书 <书名> <作者> <ISBN> <数量> <页数>
    • DVD:添加 DVD <标题> <导演> <编号> <数量> <时长(分钟)>
    • 电子书:添加 电子书 <书名> <作者> <ISBN> <数量> <文件格式>
    • 输出:资源添加成功。 或** **具有相同标识符的资源已存在。
  2. 删除资源​:
    • 输入:删除 <标识符>
    • 输出:资源删除成功。 或** **未找到资源。
  3. 查找资源​:
    • 输入:查找 <标识符|标题|作者/导演>
    • 输出:找到的资源信息或** **未找到资源。
  4. 借阅资源​:
    • 输入:借阅 <标识符>
    • 输出:资源借阅成功。 或** **资源不可用。
  5. 归还资源​:
    • 输入:归还 <标识符>
    • 输出:资源归还成功。 或** **系统中未找到资源。
  6. 显示所有资源​:
    • 输入:显示
    • 输出:所有资源的详细信息或** **没有资源。

样例

添加 图书 Python编程基础 张三 1234567890 5 300
资源添加成功。
添加 DVD 星际穿越 诺兰 DVD001 3 169
资源添加成功。
查找 诺兰
标题:星际穿越, 导演:诺兰, 编号:DVD001, 数量:3, 时长:169分钟
借阅 DVD001
资源借阅成功。
显示
[图书] Python编程基础, 作者:张三, ISBN:1234567890, 数量:5, 页数:300
[DVD] 星际穿越, 导演:诺兰, 编号:DVD001, 数量:2, 时长:169分钟
归还 DVD001
资源归还成功。

提示

  1. 使用继承和多态来实现不同类型的媒体资源
  2. 考虑使用字典来存储资源,键为唯一标识符(ISBN或DVD编号)
  3. 实现__str__方法来格式化输出每种资源的信息
  4. 可以使用isinstance()来检查对象类型
  5. 注意处理各种边界情况(如库存为0时借阅等)

进阶要求

  1. 添加资源类型验证(确保ISBN只包含数字等)
  2. 实现资源评分功能(用户可以给资源评分)
  3. 添加资源分类功能(如科技、文学、电影等)
  4. 实现资源推荐功能(基于用户借阅历史)

这个练习涵盖了类的继承、多态、封装等高级概念,同时保持了足够的实用性。学生需要设计合理的类层次结构,并处理不同类型资源的共同点和差异点。