【Python实战】从架构设计到实现:一个Powerful的图书管理系统

  • 💖 作者简介:大家好,我是Zeeland,全栈领域优质创作者。
  • 📝 CSDN主页:Zeeland🔥
  • 📣 我的博客:Zeeland
  • 📚 Github主页: Undertone0809 (Zeeland) (github.com)
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:Python系列专栏 🍁
  • 💬介绍:The mixture of software dev+Iot+ml+anything🔥

Python开源项目

前言

最近给小朋友教学python,让他们自己做一个图书管理系统,然后做完之后大家坐在一起做一下代码评审,想着他们都做了,自己也写一份给他们看一下吧。网上现有的图书管理系统可以说是一找一大堆,但是都是按照新手的水平写的,代码没有什么架构(因为有经验的人也不愿写这种系统),自己也是因为出于教学目的才重新写了一遍,正好把一些面向对象、MVC架构、高内聚低耦合、设计模式等思想传授给他们。

本项目采用传统的Python实现,不同的是,这是一个powerful的图书管理系统,具有一个基本的图书管理系统都有的功能,但是与普通管理系统相比,该系统基于MVC架构分层构建,扩展性强,高内聚低耦合, 数据持久化上采用cushy-storage进行文件存储,大大减少文件操作的开发成本,减少自定义存储协议所需要的工作量。项目的架构和设计思想适合新手学习借鉴。

项目地址:Undertone0809/library-management-system

特性

  • 批量查询、查询所有图书信息
  • 添加图书信息
  • 修改图书信息
  • 删除图书信息
  • 采用cushy-storage进行图书数据持久化保存
  • 采用rich进行更好看的终端显示

快速上手

先不说太多了,直接把代码拉下来跑一遍看看效果吧。

  • 使用git clone
git clone https://github.com/Undertone0809/library-management-system

在这里插入图片描述

  • 导包:打开终端命令行,输入下面的命令,这一步是下载一些需要的第三方库,这里的主要用的是cushy-storagerich
pip install -r requirements.txt
  • 在第三方包下载完之后,运行init_data.py初始化数据
  • 直接运行app.py就好了

运行效果

代码剖析

  • 本项目开发严格遵循高内聚、低耦合、支持扩展、架构分层的设计思想进行设计,专门的层做专门的事情,本项目基本的架构如下所示:
  • 进入项目的主入口,你会发现唯一暴露的就是menu_service.base_menu()的函数,本项目通过menu_service来封装需要显示的模块。
  • 在数据存储上,最底层将cushy-storage进行二次封装,形成了cache_service,使用cache_service,可以轻松地对对象进行增删改查。 文档: 【cushy-storage】一个基于磁盘缓存的Python框架
  • 对Book的对象级别操作,我们叫做ORM,通过ORM架构,我们可以直接通过操作Book对象来进行增删改查的操作,让代码更加稳定。book_service进一步封装了
    cache_service的功能,让Book操作更加便捷
  • 对于日志打印,app.py中运行utils.enable_log()即可开启日志打印,将数据流转的关键信息打印出来。
  • utils.py封装了一些简单的工具类,如日志的打印、id自动生成等功能,具有通用性,因此放在一起方便调用。
  • 在终端显示上,使用rich 可以有更好看终端效果,如在批量显示Book上,可以将Books以表格的形式展现出来,效果如下所示:

TODO

  • 增加用户登陆的功能
  • 提供普通用户和管理员的功能
  • 按照图书价格排序
  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,我可以为您提供一些关于实现图书管理系统的思路和方法。首先,我们需要确定系统的功能和需求。一般来说,一个图书管理系统应该具备以下基本功能: 1. 图书的添加、删除、修改和查询 2. 图书的借阅和归还 3. 用户的注册和登录 4. 系统的数据存储和管理 接下来,我们可以使用 Python 编写一个图书管理系统。 1. 图书的添加、删除、修改和查询 我们可以使用 Python 的文件操作功能来实现图书的添加、删除、修改和查询。首先,我们需要创建一个 books.txt 文件,用于存储图书信息。然后,我们可以使用 Python 的 open() 函数打文件,并使用 write() 函数向文件中写入图书信息。例如: ```python def add_book(): book_name = input("请输入要添加的图书名称:") book_author = input("请输入图书作者:") book_publisher = input("请输入图书出版社:") book_price = input("请输入图书价格:") book_info = book_name + ',' + book_author + ',' + book_publisher + ',' + book_price + '\n' with open('books.txt', 'a', encoding='utf-8') as f: f.write(book_info) print("添加成功!") ``` 查询图书可以使用 Python 的文件读取功能,例如: ```python def search_book(): book_name = input("请输入要查询的图书名称:") with open('books.txt', 'r', encoding='utf-8') as f: lines = f.readlines() for line in lines: if book_name in line: print(line) ``` 删除和修改图书可以使用 Python 的文件操作和字符串处理功能,例如: ```python def delete_book(): book_name = input("请输入要删除的图书名称:") with open('books.txt', 'r', encoding='utf-8') as f: lines = f.readlines() with open('books.txt', 'w', encoding='utf-8') as f: for line in lines: if book_name not in line: f.write(line) print("删除成功!") ``` 2. 图书的借阅和归还 我们可以使用 Python 的文件操作和字符串处理功能来实现图书的借阅和归还。首先,我们需要创建一个 borrow.txt 文件,用于记录借阅信息。然后,我们可以使用 Python 的 open() 函数打文件,并使用 write() 函数向文件中写入借阅信息。例如: ```python def borrow_book(): book_name = input("请输入要借阅的图书名称:") user_name = input("请输入借阅人姓名:") borrow_info = book_name + ',' + user_name + ',' + 'borrow' + '\n' with open('borrow.txt', 'a', encoding='utf-8') as f: f.write(borrow_info) print("借阅成功!") ``` 归还图书可以使用 Python 的文件操作和字符串处理功能,例如: ```python def return_book(): book_name = input("请输入要归还的图书名称:") user_name = input("请输入归还人姓名:") borrow_info = book_name + ',' + user_name + ',' + 'return' + '\n' with open('borrow.txt', 'a', encoding='utf-8') as f: f.write(borrow_info) print("归还成功!") ``` 3. 用户的注册和登录 我们可以使用 Python 的文件操作和字符串处理功能来实现用户的注册和登录。首先,我们需要创建一个 users.txt 文件,用于存储用户信息。然后,我们可以使用 Python 的 open() 函数打文件,并使用 write() 函数向文件中写入用户信息。例如: ```python def register(): user_name = input("请输入用户名:") password = input("请输入密码:") user_info = user_name + ',' + password + '\n' with open('users.txt', 'a', encoding='utf-8') as f: f.write(user_info) print("注册成功!") ``` 登录功能可以使用 Python 的文件读取和字符串处理功能,例如: ```python def login(): user_name = input("请输入用户名:") password = input("请输入密码:") with open('users.txt', 'r', encoding='utf-8') as f: lines = f.readlines() for line in lines: if user_name in line and password in line: print("登录成功!") return print("用户名或密码错误!") ``` 4. 系统的数据存储和管理 我们可以使用 Python 的文件操作和字符串处理功能来存储和管理系统数据。例如,我们可以创建一个 data.txt 文件,用于存储系统的数据信息。然后,我们可以使用 Python 的 open() 函数打文件,并使用 write() 函数向文件中写入数据信息。例如: ```python def save_data(): # 将系统数据写入 data.txt 文件 pass def load_data(): # 从 data.txt 文件中读取系统数据 pass ``` 以上是关于用 Python 实现图书管理系统的一些思路和方法,您可以根据具体需求进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zeeland

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值