实战作业
图书管理系统
项目简介
随着图书馆的规模变大,管理的图书越来越多,相应的管理越来越难。
图书管理系统旨在提供一个简洁、高效的解决方案,用于管理图书馆中图书信息。该系统将支持图书数据的增删改查操作,并以科学化、系统化和规范化的方式维护信息。
实现方式
以面向对象思想及方式完成代码开发。
知识点
- 输入和输出
- 变量
- 列表
- 字符串
- 流程控制
- 面向对象概念
- 类和对象
- 实例属性
- 实例方法
- 访问控制权限
- 初始化方法
- 对象描述方法
- 文件处理
实战思路
项目要求
-
定义图书类
Book
,图书信息包含:- 编号:
bid
- 书名:
name
- 价格:
price
- 简介:
summary
- 编号:
-
实现构造方法及对象描述方法
__init__
: 初始化方法,接收对应参数初始化对象属性__str__
: 实现对象描述方法,输出图书信息
-
定义管理类
BookManagement
,用来实现整体业务逻辑。- 使用列表做为属性保存图书对象信息
-
定义
manager
方法管理业务逻辑- 对用户输入内容进行输入校验
- 根据用户输入内容选择不同功能执行
-
实现菜单方法
__menu
,输出下列菜单信息,并返回用户输入的编号print("*****************************") print("* 图书管理系统 *") print("* 1. 添加新图书信息 *") print("* 2. 通过编号修改图书信息 *") print("* 3. 通过编号删除图书信息 *") print("* 4. 通过书名删除图书信息 *") print("* 5. 通过编号查询图书信息 *") print("* 6. 通过书名查询图书信息 *") print("* 7. 显示所有图书信息 *") print("* 8. 退出系统 *") print("*****************************")
-
因程序中需要多次对编号及书名进行输入,故抽取方法获取对应的数据。
- 获取编号方法
__get_bid
, 输入编号并返回(字符串类型)eg. b01
- 获取书名方法
__get_name
, 输入书名并返回(字符串类型) - 获取书名方法
__get_price
, 输入价格并返回(整型) - 获取书名方法
__get_summary
, 输入简介并返回(字符串类型)
- 获取编号方法
-
实现添加图书方法
add_book
- 方法参数为
编号
,书名
,价格
,简介
四个参数 - 输出添加操作的结果提示信息
- 返回对应结果信息
- 要求编号不可重复。
- 方法参数为
-
实现通过编号修改图书信息方法
modify_book_by_id
- 参数为
编号
- 如果图书存在,则进行修改,不存在输出提示信息
- 返回是否修改成功
- 参数为
-
实现通过编号删除图书方法
delete_book_by_id
- 参数为
编号
- 如果图书存在,则进行删除并输出提示信息,不存在则仅输出提示
- 返回是否删除成功
- 参数为
-
实现通过书名删除图书方法
delete_book_by_name
- 参数为
书名
- 如果图书存在,则进行删除(同名图书全部删除)并输出提示信息,不存在则仅输出提示
- 返回是否删除成功
- 参数为
-
实现通过编号查询图书方法
query_book_by_id
- 参数为
编号
- 如果图书存在,则输出图书信息,不存在输出提示信息
- 返回是否查询成功
- 参数为
-
实现通过书名查询图书方法
query_book_by_name
- 参数为
书名
- 如果图书存在,则输出图书信息(同名图书全部输出),不存在输出提示信息
- 返回是否查询成功
- 参数为
-
实现显示所有图书信息方法
show
- 输出所有图书信息
-
实现数据存储方法
save_data
- 在退出系统时,将数据保存到
book_data.yaml
文件中 - 数据保存格式如下
- 在退出系统时,将数据保存到
- bid: b001
name: python入门
price: 99
summary: python入门精选案例
- bid: b002
name: java入门
price: 101
summary: java入门精选案例
- 实现数据加载方法
load_data
- 如果数据文件
book_data.yaml
存在,则从文件中加载数据 - 如果文件不存在则初始为空
- 如果数据文件
作业提交
- 作业提交入口
- 账号:班级前缀+手机号
- ck15800000000
- pyqz15800000000
- 密码:Hogwarts123