- 作者简介:大家好,我是Zeeland,全栈领域优质创作者。
- CSDN主页:Zeeland
- 我的博客:Zeeland
- Github主页: Undertone0809 (Zeeland) (github.com)
- 支持我:点赞+收藏⭐️+留言
- 系列专栏:Python系列专栏
- 介绍:The mixture of software dev+Iot+ml+anything
最近给小朋友教学python,让他们自己做一个图书管理系统,然后做完之后大家坐在一起做一下代码评审,想着他们都做了,自己也写一份给他们看一下吧。网上现有的图书管理系统可以说是一找一大堆,但是都是按照新手的水平写的,代码没有什么架构(因为有经验的人也不愿写这种系统),自己也是因为出于教学目的才重新写了一遍,正好把一些面向对象、MVC架构、高内聚低耦合、设计模式等思想传授给他们。
本项目采用传统的Python实现,不同的是,这是一个powerful的图书管理系统,具有一个基本的图书管理系统都有的功能,但是与普通管理系统相比,该系统基于MVC架构分层构建,扩展性强,高内聚低耦合, 数据持久化上采用cushy-storage
进行文件存储,大大减少文件操作的开发成本,减少自定义存储协议所需要的工作量。项目的架构和设计思想适合新手学习借鉴。
项目地址:Undertone0809/library-management-system
cushy-storage
进行图书数据持久化保存rich
进行更好看的终端显示先不说太多了,直接把代码拉下来跑一遍看看效果吧。
git clone https://github.com/Undertone0809/library-management-system
cushy-storage
和rich
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_service
进一步封装了cache_service
的功能,让Book操作更加便捷app.py
中运行utils.enable_log()
即可开启日志打印,将数据流转的关键信息打印出来。utils.py
封装了一些简单的工具类,如日志的打印、id自动生成等功能,具有通用性,因此放在一起方便调用。rich
可以有更好看终端效果,如在批量显示Book上,可以将Books以表格的形式展现出来,效果如下所示: