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

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

Python开源项目

  • 【cushy-storage】一个基于磁盘缓存的Python框架
  • 【cushy-socket】 一款轻量级的Python Socket框架
  • 【cushy-serial】 一个轻量级Python serial库
  • 【broadcast-service】一个轻量级Python发布订阅者框架

前言

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

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

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

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

特性

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

快速上手

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

  • 使用git clone
git clone https://github.com/Undertone0809/library-management-system
  • 你也可以直接在github中下载代码:Undertone0809/library-management-system

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

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

运行效果

【Python实战】从架构设计到实现:一个Powerful的图书管理系统_第3张图片 【Python实战】从架构设计到实现:一个Powerful的图书管理系统_第4张图片

代码剖析

  • 本项目开发严格遵循高内聚、低耦合、支持扩展、架构分层的设计思想进行设计,专门的层做专门的事情,本项目基本的架构如下所示:
【Python实战】从架构设计到实现:一个Powerful的图书管理系统_第5张图片
  • 进入项目的主入口,你会发现唯一暴露的就是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以表格的形式展现出来,效果如下所示:
【Python实战】从架构设计到实现:一个Powerful的图书管理系统_第6张图片

TODO

  • 增加用户登陆的功能
  • 提供普通用户和管理员的功能
  • 按照图书价格排序

你可能感兴趣的:(Python开发手册,Python项目实战,python,cushy-storage)