Python编写简易图书管理系统的完整代码与实现逻辑

林见深
林见深
发布时间:2026-10-12| 2人浏览过
原创

本文详细介绍如何利用Python的面向对象思想编写一个简易图书管理系统。通过封装Book实体类与BookManage管理类,结合控制台循环菜单,实现图书的自动初始化、列表查询、新增入库、借阅扣减及归还恢复等核心功能。附完整可运行代码与关键执行界面解析。

系统设计与核心功能

构建图书管理系统的核心在于合理抽象现实世界的实体与行为。本方案采用面向对象编程范式,将每一本具体的书抽象为 Book 对象,并将所有的管理操作(增、查、借、还)统一交由 BookManage 控制器接管。系统通过维护一个全局图书列表 books,利用整数状态位(status)标记书籍是否在馆,从而支撑完整的借阅与归还闭环。

第一阶段:封装图书实体类

首先定义基础的数据载体。每个图书实例需具备名称、作者、当前位置索引及流通状态。通过重写魔术方法 __str__,可使系统在打印对象时直接返回格式化后的易读字符串,避免在展示层手动拼接零散属性。

class Book(object):

    def __init__(self, name, author, status, bookindex):
        self.name = name
        self.author = author
        self.status = status
        self.bookindex = bookindex

    def __str__(self):
        if self.status == 1:
            stats = '未借出'
        elif self.status == 0:
            stats = '已借出'
        else:
            stats = '状态异常'
        return '书名: 《%s》 作者: %s 状态: <%s> 位置: %s' \
           % (self.name, self.author, stats, self.bookindex)

此处 status 的设计是业务逻辑的基础:1 代表库存正常(未借出),0 代表已被读者借走。这种布尔型标志设计简洁且易于后续扩展权限体系。

第二阶段:构建管理系统主控框架

接下来创建管理类 BookManage。该类作为系统的入口点,负责统筹图书集合的生命周期。在初始化阶段调用 start() 方法预置几条默认记录,方便开发者无需从零录入即可验证核心链路。

class BookManage(object):
    books = []

    def start(self):
        self.books.append(Book('python', 'guido', 1, 'ISO9001'))
        self.books.append(Book('c', '谭浩强', 1, 'NFS8102'))
        self.books.append(Book('java', 'westos', 1, 'PKA7844'))

公共变量 books 被定义为类级别属性,这意味着整个管理生命周期内它始终保持引用一致,能够累积存储所有新加入的图书条目,而不会在多次调用间发生重置。

第三阶段:实现借阅与归还校验逻辑

业务流转依赖于严格的合法性校验。系统提供 checkBook(name) 方法遍历现有馆藏,精准定位目标对象。借还与归还操作以此为前提,双向锁定状态变更:

  • 借阅 (borrowBook):检索到书籍后,若其 status 仍为 1,则将其强制更改为 0,并提示借阅成功;若已为 0 则拦截并报错。
  • 归还 (returnBook):反向操作,检查该书是否确实在借状态,满足条件后重置为 1,恢复上架资格。
    def checkBook(self, name): 
        for book in self.books:
            if book.name == name:
                return book
        else:
            return None

    def borrowBook(self):
        name = input('借阅图书名称: ')
        ret = self.checkBook(name)
        print(ret)
        if ret != None:
            if ret.status == 0:
                print('书籍《%s》已经借出' % name)
            else:
                ret.status = 0
                print('书籍《%s》借阅成功' % name)
        else:
            print('书籍《%s》不存在' % name)

    def returnBook(self):
        name = input('归还图书名称:')
        ret = self.checkBook(name)
        if ret != None:
            if ret.status == 0:
                ret.status = 1
                print('书籍《%s》归还成功' % name)
                print(ret)
            else:
                print('书籍《%s》未借出' % name)
        else:
            print('书籍《%s》不存在' % name)

第四阶段:配置控制台环形菜单

最终环节将底层逻辑映射为用户友好的命令行界面。借助 while True 维持常驻进程,配合 input() 捕获数字按键,并在条件分支中无缝调度上述业务函数。遇到非法输入时抛出提示并保持循环,确保进程不被意外中断。

    def Menu(self):
        self.start()
        while True:
            print("""
                        图书管理系统
        1.查询图书
        2.增加图书
        3.借阅图书
        4.归还图书
        5.退出系统
        """)
            choice = input('请选择:')
            if choice == '1':
                self.showAllBook()
            elif choice == '2':
                self.addBook()
            elif choice == '3':
                self.borrowBook()
            elif choice == '4':
                self.returnBook()
            elif choice == '5':
                print('欢迎下次使用...')
                exit()
            else:
                print('请输入正确选择')
                continue

manager = BookManage()
manager.Menu()

执行测试与功能验证

导入上述模块并直接执行脚本后,终端将首先打印欢迎横幅及系统预设的三本初始书目。随后光标停滞等待用户指令,此时依次尝试各个数字选项可直观观察到反馈差异。

图书管理系统初始启动界面
启动程序后自动加载预设书籍并显示系统欢迎菜单。
借阅图书操作界面
在控制台中选择3并输入书名,演示成功的借阅流转过程。
尝试重复借阅同一本书的拦截提示
当书籍状态已被标记为已借出时,系统二次拦截并发出明确警告。
查询全部图书列表实时状态
调用查询接口获取动态库存快照,确认借阅前后状态位的翻转。
归还图书后的状态恢复验证
归还完成后控制台重新输出书籍详细信息,状态回滚至未借出。
尝试查询不存在书名时的异常反馈
针对数据库中缺失的目标执行检索,系统给出安全降级提示。
连续追加新书入库操作记录
向内存集合注入全新的自定义书籍条目并完成归档。
结束会话并退出程序的控制台画面
选择退出选项终止进程循环,释放底层占用资源。

运行注意事项

  • 内存机制限制:本示例依赖进程堆内存维护数据,一旦关闭终端窗口,所有修改(新增、借阅)均会被彻底清除。生产环境中应引入 SQLite、MySQL 或文件读写模块实现持久化。
  • 匹配精度问题:当前的字符串比对逻辑属于绝对精确匹配(区分大小写且不留容错空间),建议在实际扩展中引入 .lower().strip() 对输入预处理,以提升交互鲁棒性。

简要总结

本案例以极简的代码篇幅,演示了如何运用 Python 的核心语法组合出一套可运行的微型业务系统。通过对状态机的精准操控与面向对象架构的拆解,不仅解决了基础的馆藏流转痛点,也为进一步对接图形界面或云端数据库提供了清晰的底层蓝图。

以上就是Python编写简易图书管理系统的详细内容,更多关于Python基础算法与工程实战的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。