#1343. 多媒体图书馆系统
多媒体图书馆系统
Python类的高级练习:多媒体图书馆系统
描述
设计并实现一个多媒体图书馆管理系统,该系统能够管理不同类型的媒体资源(图书、DVD、电子书),并支持以下操作:
- 添加资源:能够添加新资源到系统,不同类型的资源有不同的属性
- 删除资源:能够通过唯一标识符删除系统中的资源
- 查找资源:能够根据多种条件查找资源
- 借阅资源:能够借出资源,减少库存数量
- 归还资源:能够增加库存数量,处理资源归还
- 显示所有资源:能够显示系统中所有资源的详细信息
类设计
- 基类
MediaItem
- 包含所有媒体资源的共同属性 - 子类
Book
- 继承自MediaItem
,添加图书特有属性 - 子类
DVD
- 继承自MediaItem
,添加DVD特有属性 - 子类
EBook
- 继承自MediaItem
,添加电子书特有属性 - 类
Library
- 管理所有媒体资源
输入输出格式
- 添加资源:
- 图书:
添加 图书 <书名> <作者> <ISBN> <数量> <页数>
- DVD:
添加 DVD <标题> <导演> <编号> <数量> <时长(分钟)>
- 电子书:
添加 电子书 <书名> <作者> <ISBN> <数量> <文件格式>
- 输出:
资源添加成功。
或** **具有相同标识符的资源已存在。
- 图书:
- 删除资源:
- 输入:
删除 <标识符>
- 输出:
资源删除成功。
或** **未找到资源。
- 输入:
- 查找资源:
- 输入:
查找 <标识符|标题|作者/导演>
- 输出:找到的资源信息或** **
未找到资源。
- 输入:
- 借阅资源:
- 输入:
借阅 <标识符>
- 输出:
资源借阅成功。
或** **资源不可用。
- 输入:
- 归还资源:
- 输入:
归还 <标识符>
- 输出:
资源归还成功。
或** **系统中未找到资源。
- 输入:
- 显示所有资源:
- 输入:
显示
- 输出:所有资源的详细信息或** **
没有资源。
- 输入:
样例
添加 图书 Python编程基础 张三 1234567890 5 300
资源添加成功。
添加 DVD 星际穿越 诺兰 DVD001 3 169
资源添加成功。
查找 诺兰
标题:星际穿越, 导演:诺兰, 编号:DVD001, 数量:3, 时长:169分钟
借阅 DVD001
资源借阅成功。
显示
[图书] Python编程基础, 作者:张三, ISBN:1234567890, 数量:5, 页数:300
[DVD] 星际穿越, 导演:诺兰, 编号:DVD001, 数量:2, 时长:169分钟
归还 DVD001
资源归还成功。
提示
- 使用继承和多态来实现不同类型的媒体资源
- 考虑使用字典来存储资源,键为唯一标识符(ISBN或DVD编号)
- 实现
__str__
方法来格式化输出每种资源的信息 - 可以使用
isinstance()
来检查对象类型 - 注意处理各种边界情况(如库存为0时借阅等)
进阶要求
- 添加资源类型验证(确保ISBN只包含数字等)
- 实现资源评分功能(用户可以给资源评分)
- 添加资源分类功能(如科技、文学、电影等)
- 实现资源推荐功能(基于用户借阅历史)
这个练习涵盖了类的继承、多态、封装等高级概念,同时保持了足够的实用性。学生需要设计合理的类层次结构,并处理不同类型资源的共同点和差异点。