Python编写简易图书管理系统的完整代码与实现逻辑
本文详细介绍如何利用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()
执行测试与功能验证
导入上述模块并直接执行脚本后,终端将首先打印欢迎横幅及系统预设的三本初始书目。随后光标停滞等待用户指令,此时依次尝试各个数字选项可直观观察到反馈差异。








运行注意事项
- 内存机制限制:本示例依赖进程堆内存维护数据,一旦关闭终端窗口,所有修改(新增、借阅)均会被彻底清除。生产环境中应引入 SQLite、MySQL 或文件读写模块实现持久化。
- 匹配精度问题:当前的字符串比对逻辑属于绝对精确匹配(区分大小写且不留容错空间),建议在实际扩展中引入
.lower().strip()对输入预处理,以提升交互鲁棒性。
简要总结
本案例以极简的代码篇幅,演示了如何运用 Python 的核心语法组合出一套可运行的微型业务系统。通过对状态机的精准操控与面向对象架构的拆解,不仅解决了基础的馆藏流转痛点,也为进一步对接图形界面或云端数据库提供了清晰的底层蓝图。
以上就是Python编写简易图书管理系统的详细内容,更多关于Python基础算法与工程实战的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













