引言:(假装也不是一个大学生课设)在数字化和信息化快速发展的今天,图书管理系统成为了图书馆、学校及个人图书收藏管理中不可或缺的工具。这类系统不仅能有效地管理大量的图书资料,还能提高图书检索、借阅和归还的效率,极大地方便了读者和管理员。随着编程技术的进步,特别是Python语言的普及,开发一个功能全面且用户友好的图书管理系统已变得更加容易和高效。
目录
系统需求分析
技术选型
系统设计
数据模型设计
架构设计
核心代码实现
Book类
BookManager类
主函数 main()
完整项目
使用效果
系统需求分析
一个完备的图书管理系统应该具备以下几个核心功能:
- 图书管理:包括图书的添加、修改、删除和信息查询,能够记录图书的ISBN、标题、作者、出版社和库存等信息。
- 借阅管理:实现图书借出和归还的管理,自动更新库存状态,记录借阅者信息和借阅时间。
- 用户管理:区分管理员和普通用户,管理员具有全部管理权限,普通用户仅能查询图书和查看借阅状态。
- 搜索功能:支持按书名、作者、ISBN等字段进行高效搜索。
- 报表功能:自动生成图书借阅统计、库存报表等,帮助管理员快速获取图书流通和存储情况。
技术选型
本系统选择Python作为主要开发语言,因其简洁性、易学性及其丰富的库支持。本系统可以用于存储书籍信息,并提供方法来管理图书的增加、删除、显示和查询。该管理系统通过命令行与用户交互,用户可以通过简单的文本菜单进行操作。
系统设计
数据模型设计
- Book:存储图书信息,字段包括book_id, title, author, publisher, isbn, stock。
- User:存储用户信息,字段包括user_id, username, password, role。
- Borrow:存储借阅信息,字段包括borrow_id, book_id, user_id, borrow_date, return_date。
架构设计
系统采用三层架构:
- 表示层:负责与用户交互,提供图形界面。
- 业务逻辑层:处理图书、用户和借阅的业务逻辑。
- 数据访问层:与数据库进行交互,实现数据的增删改查。
核心代码实现
Book类
Book
类代表图书管理系统中的一个书籍条目。它包含四个属性:book_id
, title
, author
, year_published
,分别用于存储书籍ID、标题、作者和出版年份。此外,它还包括一个__str__
方法,用于返回书籍的详细描述,方便打印和显示。
class Book:
def __init__(self, book_id, title, author, year_published):
self.book_id = book_id
self.title = title
self.author = author
self.year_published = year_published
def __str__(self):
return f"书籍ID: {self.book_id}, 标题: '{self.title}', 作者: {self.author}, 出版年份: {self.year_published}"
BookManager类
BookManager
类是管理书籍的核心类。它包含一个字典books
来存储所有的书籍对象,其中键是book_id
,值是Book
对象。类中定义的方法包括:
add_book
: 添加一本书到字典中。如果书籍ID已存在,则输出错误消息。remove_book
: 根据书籍ID删除一本书。如果书籍ID不存在,则输出错误消息。show_all_books
: 打印所有存储的书籍信息。find_book
: 根据书籍ID查找并显示一本书的信息。如果书籍ID不存在,则输出错误消息。
class BookManager:
def __init__(self):
self.books = {}
def add_book(self, book):
if book.book_id in self.books:
print("错误: 此书籍ID已存在。")
else:
self.books[book.book_id] = book
print(f"已添加: {book}")
def remove_book(self, book_id):
if book_id in self.books:
del self.books[book_id]
print(f"已删除书籍ID {book_id}")
else:
print("错误: 书籍ID未找到")
def show_all_books(self):
for book in self.books.values():
print(book)
def find_book(self, book_id):
if book_id in self.books:
print(f"找到书籍: {self.books[book_id]}")
else:
print("未找到书籍。")
主函数 main()
主函数负责创建BookManager
实例并提供一个命令行界面,让用户可以通过输入选择执行不同的操作,如添加书籍、删除书籍、显示所有书籍、查询书籍和退出程序。这通过一个循环实现,循环内部处理用户的输入和相应的功能调用。
def main():
book_manager = BookManager()
while True:
print("\n图书管理菜单:")
print("1. 添加书籍")
print("2. 删除书籍")
print("3. 显示所有书籍")
print("4. 查询书籍")
print("5. 退出")
choice = input("请输入选项: ")
if choice == '1':
book_id = input("请输入书籍ID: ")
title = input("请输入书名: ")
author = input("请输入作者名: ")
year_published = input("请输入出版年份: ")
book_manager.add_book(Book(book_id, title, author, year_published))
elif choice == '2':
book_id = input("请输入要删除的书籍ID: ")
book_manager.remove_book(book_id)
elif choice == '3':
book_manager.show_all_books()
elif choice == '4':
book_id = input("请输入要查询的书籍ID: ")
book_manager.find_book(book_id)
elif choice == '5':
print("正在退出...")
break
else:
print("无效选项,请输入1至5之间的数字。")
完整项目
class Book:
def __init__(self, book_id, title, author, year_published):
self.book_id = book_id
self.title = title
self.author = author
self.year_published = year_published
def __str__(self):
return f"书籍ID: {self.book_id}, 标题: '{self.title}', 作者: {self.author}, 出版年份: {self.year_published}"
class BookManager:
def __init__(self):
self.books = {}
def add_book(self, book):
if book.book_id in self.books:
print("错误: 此书籍ID已存在。")
else:
self.books[book.book_id] = book
print(f"已添加: {book}")
def remove_book(self, book_id):
if book_id in self.books:
del self.books[book_id]
print(f"已删除书籍ID {book_id}")
else:
print("错误: 书籍ID未找到")
def show_all_books(self):
for book in self.books.values():
print(book)
def find_book(self, book_id):
if book_id in self.books:
print(f"找到书籍: {self.books[book_id]}")
else:
print("未找到书籍。")
def main():
book_manager = BookManager()
while True:
print("\n图书管理菜单:")
print("1. 添加书籍")
print("2. 删除书籍")
print("3. 显示所有书籍")
print("4. 查询书籍")
print("5. 退出")
choice = input("请输入选项: ")
if choice == '1':
book_id = input("请输入书籍ID: ")
title = input("请输入书名: ")
author = input("请输入作者名: ")
year_published = input("请输入出版年份: ")
book_manager.add_book(Book(book_id, title, author, year_published))
elif choice == '2':
book_id = input("请输入要删除的书籍ID: ")
book_manager.remove_book(book_id)
elif choice == '3':
book_manager.show_all_books()
elif choice == '4':
book_id = input("请输入要查询的书籍ID: ")
book_manager.find_book(book_id)
elif choice == '5':
print("正在退出...")
break
else:
print("无效选项,请输入1至5之间的数字。")
if __name__ == "__main__":
main()
使用效果
跑过了,很好用
能救一个算一个吧,还缺啥跟我说!