Skip to content

实战作业

图书管理系统

项目简介

随着图书馆的规模变大,管理的图书越来越多,相应的管理越来越难。

图书管理系统旨在提供一个简洁、高效的解决方案,用于管理图书馆中图书信息。该系统将支持图书数据的增删改查操作,并以科学化、系统化和规范化的方式维护信息。

实现方式

以面向对象思想及方式完成代码开发。

知识点

  • 输入和输出
  • 变量
  • 列表
  • 字符串
  • 流程控制
  • 面向对象概念
  • 类和对象
  • 实例属性
  • 实例方法
  • 访问控制权限
  • 初始化方法
  • 对象描述方法
  • 文件处理

实战思路

uml diagram

项目要求

  1. 定义图书类 Book,图书信息包含:

    • 编号: bid
    • 书名: name
    • 价格: price
    • 简介: summary
  2. 实现构造方法及对象描述方法

    • __init__ : 初始化方法,接收对应参数初始化对象属性
    • __str__ : 实现对象描述方法,输出图书信息
  3. 定义管理类 BookManagement,用来实现整体业务逻辑。

    • 使用列表做为属性保存图书对象信息
  4. 定义 manager 方法管理业务逻辑

    • 对用户输入内容进行输入校验
    • 根据用户输入内容选择不同功能执行
  5. 实现菜单方法 __menu,输出下列菜单信息,并返回用户输入的编号

    print("*****************************")
    print("*      图书管理系统           *")
    print("* 1. 添加新图书信息           *")
    print("* 2. 通过编号修改图书信息      *")
    print("* 3. 通过编号删除图书信息      *")
    print("* 4. 通过书名删除图书信息      *")
    print("* 5. 通过编号查询图书信息      *")
    print("* 6. 通过书名查询图书信息      *")
    print("* 7. 显示所有图书信息         *")
    print("* 8. 退出系统                *")
    print("*****************************")
    
  6. 因程序中需要多次对编号及书名进行输入,故抽取方法获取对应的数据。

    • 获取编号方法 __get_bid, 输入编号并返回(字符串类型)eg. b01
    • 获取书名方法 __get_name, 输入书名并返回(字符串类型)
    • 获取书名方法 __get_price, 输入价格并返回(整型)
    • 获取书名方法 __get_summary, 输入简介并返回(字符串类型)
  7. 实现添加图书方法 add_book

    • 方法参数为 编号书名价格简介四个参数
    • 输出添加操作的结果提示信息
    • 返回对应结果信息
    • 要求编号不可重复。
  8. 实现通过编号修改图书信息方法 modify_book_by_id

    • 参数为 编号
    • 如果图书存在,则进行修改,不存在输出提示信息
    • 返回是否修改成功
  9. 实现通过编号删除图书方法 delete_book_by_id

    • 参数为 编号
    • 如果图书存在,则进行删除并输出提示信息,不存在则仅输出提示
    • 返回是否删除成功
  10. 实现通过书名删除图书方法 delete_book_by_name

    • 参数为 书名
    • 如果图书存在,则进行删除(同名图书全部删除)并输出提示信息,不存在则仅输出提示
    • 返回是否删除成功
  11. 实现通过编号查询图书方法 query_book_by_id

    • 参数为 编号
    • 如果图书存在,则输出图书信息,不存在输出提示信息
    • 返回是否查询成功
  12. 实现通过书名查询图书方法 query_book_by_name

    • 参数为 书名
    • 如果图书存在,则输出图书信息(同名图书全部输出),不存在输出提示信息
    • 返回是否查询成功
  13. 实现显示所有图书信息方法 show

    • 输出所有图书信息
  14. 实现数据存储方法save_data

    • 在退出系统时,将数据保存到 book_data.yaml 文件中
    • 数据保存格式如下
- bid: b001
  name: python入门
  price: 99
  summary: python入门精选案例
- bid: b002
  name: java入门
  price: 101
  summary: java入门精选案例
  1. 实现数据加载方法load_data
    • 如果数据文件 book_data.yaml 存在,则从文件中加载数据
    • 如果文件不存在则初始为空

作业提交

  • 作业提交入口
  • 账号:班级前缀+手机号
    • ck15800000000
    • pyqz15800000000
  • 密码:Hogwarts123