首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >经典Python实战项目全代码,使用Python手搓一个图书管理系统,对自己Python实战没有信心的一定要来试试,增加借阅图书、归还图书、查询图书、查看所有图书

经典Python实战项目全代码,使用Python手搓一个图书管理系统,对自己Python实战没有信心的一定要来试试,增加借阅图书、归还图书、查询图书、查看所有图书

作者头像
小白的大数据之旅
发布2024-11-20 18:57:21
发布2024-11-20 18:57:21
74800
代码可运行
举报
运行总次数:0
代码可运行

嘿,各位技术小伙伴们,在学习Python的过程中,图书管理系统是一个非常经典的Python练手项目,在这个系统中,我们将利用Python的内置库json来存储和读取图书数据。json库就像是数据的“翻译官”,它能把Python中的数据结构(比如字典)转换成一种易于存储和传输的格式,然后再把它们“翻译”回来。这样一来,我们就能轻松地把图书信息保存到文件里,随时读取、修改和查询了。 不仅如此,我们还会用到字典这种强大的数据结构来存储图书信息。字典就像是现实生活中的书架,每个格子(键值对)都能放一本“书”(图书信息)。通过给每本书分配一个唯一的“书号”(图书ID),我们就能快速找到并管理它们了。 好了,废话不多说,接下来就让我们一起动手,用代码来实现这个图书管理系统吧!

系统功能

  1. 添加图书
  2. 借阅图书
  3. 归还图书
  4. 查询图书信息
  5. 显示所有图书

准备工作

在开始编码之前,请确保你的Python环境已经安装并配置好。如果还没有安装Python,可以从Python官方网站下载并安装最新版本的Python。

实现步骤

第一步:导入必要的库

代码语言:javascript
代码运行次数:0
运行
复制
import json

我们使用json库来存储和读取图书数据。

第二步:初始化图书数据

代码语言:javascript
代码运行次数:0
运行
复制
library = {}

使用一个字典来存储图书信息,其中键是图书ID,值是包含图书标题、作者和借阅状态的字典。

第三步:定义存储图书数据的文件路径

代码语言:javascript
代码运行次数:0
运行
复制
data_file = 'library_data.json'

第四步:加载图书数据

代码语言:javascript
代码运行次数:0
运行
复制
# 加载图书数据  
def load_library_data():  
    """从JSON文件中加载图书数据"""  
    try:  
        with open(data_file, 'r') as file:  
            global library  # 使用全局变量library  
            library = json.load(file)  # 读取JSON数据到library字典  
    except FileNotFoundError:  
        # 如果文件不存在,则初始化一个空字典  
        library = {} 

从JSON文件中加载图书数据,如果文件不存在则初始化一个空字典。

第五步:保存图书数据

代码语言:javascript
代码运行次数:0
运行
复制
# 保存图书数据  
def save_library_data():  
    """将图书数据保存到JSON文件中"""  
    with open(data_file, 'w') as file:  
        json.dump(library, file, indent=4)  # 以缩进格式保存JSON数据  

将图书数据保存到JSON文件中。

第六步:添加图书

代码语言:javascript
代码运行次数:0
运行
复制
# 添加图书  
def add_book(book_id, title, author):  
    """添加一本新书到图书馆"""  
    if book_id in library:  
        print(f"图书ID {book_id} 已存在。")  
    else:  
        library[book_id] = {"title": title, "author": author, "borrowed": False}  
        print(f"图书 {title} 已添加。")  
        save_library_data()  # 保存数据  

添加一本新书到图书馆,如果图书ID已存在则提示用户。

第七步:借阅图书

代码语言:javascript
代码运行次数:0
运行
复制
# 借阅图书  
def borrow_book(book_id):  
    """借阅一本图书"""  
    if book_id in library and not library[book_id]["borrowed"]:  
        library[book_id]["borrowed"] = True  
        print(f"图书 {library[book_id]['title']} 已借出。")  
        save_library_data()  # 保存数据  
    else:  
        print(f"图书ID {book_id} 不存在或已被借出。")  

借阅一本图书,如果图书不存在或已被借出则提示用户。

第八步:归还图书

代码语言:javascript
代码运行次数:0
运行
复制
# 归还图书  
def return_book(book_id):  
    """归还一本图书"""  
    if book_id in library and library[book_id]["borrowed"]:  
        library[book_id]["borrowed"] = False  
        print(f"图书 {library[book_id]['title']} 已归还。")  
        save_library_data()  # 保存数据  
    else:  
        print(f"图书ID {book_id} 不存在或未被借出。")  

归还一本图书,如果图书不存在或未被借出则提示用户。

第九步:查询图书信息

代码语言:javascript
代码运行次数:0
运行
复制
# 查询图书信息  
def query_book(book_id):  
    """查询图书信息"""  
    if book_id in library:  
        book = library[book_id]  
        borrowed_status = "已借出" if book["borrowed"] else "在馆"  
        print(f"图书ID: {book_id}, 标题: {book['title']}, 作者: {book['author']}, 状态: {borrowed_status}")  
    else:  
        print(f"图书ID {book_id} 不存在。")  

查询图书信息,包括图书ID、标题、作者和借阅状态。

第十步:显示所有图书

代码语言:javascript
代码运行次数:0
运行
复制
# 显示所有图书  
def display_all_books():  
    """显示所有图书信息"""  
    if not library:  
        print("图书馆中没有图书。")  
    else:  
        for book_id, book in library.items():  
            borrowed_status = "已借出" if book["borrowed"] else "在馆"  
            print(f"图书ID: {book_id}, 标题: {book['title']}, 作者: {book['author']}, 状态: {borrowed_status}")

显示所有图书的信息,包括图书ID、标题、作者和借阅状态。

第十一步:主函数

代码语言:javascript
代码运行次数:0
运行
复制
# 主函数  
def main():  
    load_library_data()  # 加载图书数据  
      
    while True:  
        print("\n图书管理系统")  
        print("1. 添加图书")  
        print("2. 借阅图书")  
        print("3. 归还图书")  
        print("4. 查询图书信息")  
        print("5. 显示所有图书")  
        print("6. 退出")  
          
        choice = input("请选择操作: ")  
          
        if choice == '1':  
            book_id = input("请输入图书ID: ")  
            title = input("请输入图书标题: ")  
            author = input("请输入图书作者: ")  
            add_book(book_id, title, author)  
        elif choice == '2':  
            book_id = input("请输入图书ID: ")  
            borrow_book(book_id)  
        elif choice == '3':  
            book_id = input("请输入图书ID: ")  
            return_book(book_id)  
        elif choice == '4':  
            book_id = input("请输入图书ID: ")  
            query_book(book_id)  
        elif choice == '5':  
            display_all_books()  
        elif choice == '6':  
            print("退出系统。")  
            break  
        else:  
            print("无效选择,请重新输入。")  
  
if __name__ == "__main__":  
    main()

主函数用于管理用户输入和调用相应的功能。

运行结果

图书管理系统 1. 添加图书 2. 借阅图书 3. 归还图书 4. 查询图书信息 5. 显示所有图书 6. 退出 请选择操作: 1 请输入图书ID: 1 请输入图书标题: 西游记 请输入图书作者: 吴承恩 图书 西游记 已添加。

图书管理系统 1. 添加图书 2. 借阅图书 3. 归还图书 4. 查询图书信息 5. 显示所有图书 6. 退出 请选择操作: 1 请输入图书ID: 2 请输入图书标题: 红楼梦 请输入图书作者: 曹雪芹 图书 红楼梦 已添加。

图书管理系统 1. 添加图书 2. 借阅图书 3. 归还图书 4. 查询图书信息 5. 显示所有图书 6. 退出 请选择操作: 1 请输入图书ID: 3 请输入图书标题: 三国演义 请输入图书作者: 罗贯中 图书 三国演义 已添加。

图书管理系统 1. 添加图书 2. 借阅图书 3. 归还图书 4. 查询图书信息 5. 显示所有图书 6. 退出 请选择操作: 1 请输入图书ID: 4 请输入图书标题: 水浒传 请输入图书作者: 施耐庵 图书 水浒传 已添加。

图书管理系统 1. 添加图书 2. 借阅图书 3. 归还图书 4. 查询图书信息 5. 显示所有图书 6. 退出 请选择操作: 4 请输入图书ID: 1 图书ID: 1, 标题: 西游记, 作者: 吴承恩, 状态: 在馆

图书管理系统 1. 添加图书 2. 借阅图书 3. 归还图书 4. 查询图书信息 5. 显示所有图书 6. 退出 请选择操作: 5 图书ID: 1, 标题: 西游记, 作者: 吴承恩, 状态: 在馆 图书ID: 2, 标题: 红楼梦, 作者: 曹雪芹, 状态: 在馆 图书ID: 3, 标题: 三国演义, 作者: 罗贯中, 状态: 在馆 图书ID: 4, 标题: 水浒传, 作者: 施耐庵, 状态: 在馆

图书管理系统 1. 添加图书 2. 借阅图书 3. 归还图书 4. 查询图书信息 5. 显示所有图书 6. 退出 请选择操作: 2 请输入图书ID: 3 图书 三国演义 已借出。

图书管理系统 1. 添加图书 2. 借阅图书 3. 归还图书 4. 查询图书信息 5. 显示所有图书 6. 退出 请选择操作: 5 图书ID: 1, 标题: 西游记, 作者: 吴承恩, 状态: 在馆 图书ID: 2, 标题: 红楼梦, 作者: 曹雪芹, 状态: 在馆 图书ID: 3, 标题: 三国演义, 作者: 罗贯中, 状态: 已借出 图书ID: 4, 标题: 水浒传, 作者: 施耐庵, 状态: 在馆

图书管理系统 1. 添加图书 2. 借阅图书 3. 归还图书 4. 查询图书信息 5. 显示所有图书 6. 退出 请选择操作: 2 请输入图书ID: 3 图书ID 3 不存在或已被借出。

图书管理系统 1. 添加图书 2. 借阅图书 3. 归还图书 4. 查询图书信息 5. 显示所有图书 6. 退出 请选择操作: 3 请输入图书ID: 3 图书 三国演义 已归还。

图书管理系统 1. 添加图书 2. 借阅图书 3. 归还图书 4. 查询图书信息 5. 显示所有图书 6. 退出 请选择操作: 4 请输入图书ID: 2 图书ID: 2, 标题: 红楼梦, 作者: 曹雪芹, 状态: 在馆

图书管理系统 1. 添加图书 2. 借阅图书 3. 归还图书 4. 查询图书信息 5. 显示所有图书 6. 退出 请选择操作: 5 图书ID: 1, 标题: 西游记, 作者: 吴承恩, 状态: 在馆 图书ID: 2, 标题: 红楼梦, 作者: 曹雪芹, 状态: 在馆 图书ID: 3, 标题: 三国演义, 作者: 罗贯中, 状态: 在馆 图书ID: 4, 标题: 水浒传, 作者: 施耐庵, 状态: 在馆

图书管理系统 1. 添加图书 2. 借阅图书 3. 归还图书 4. 查询图书信息 5. 显示所有图书 6. 退出 请选择操作: 6 退出系统。

最终代码

代码语言:javascript
代码运行次数:0
运行
复制
# 导入必要的库
import json  # 用于存储和读取数据

# 初始化图书数据,这里使用字典来存储图书信息
library = {}

# 定义存储图书数据的文件路径
data_file = 'library_data.json'


# 加载图书数据
def load_library_data():
  """从JSON文件中加载图书数据"""
  try:
    with open(data_file, 'r') as file:
      global library  # 使用全局变量library
      library = json.load(file)  # 读取JSON数据到library字典
  except FileNotFoundError:
    # 如果文件不存在,则初始化一个空字典
    library = {}

  # 保存图书数据


def save_library_data():
  """将图书数据保存到JSON文件中"""
  with open(data_file, 'w') as file:
    json.dump(library, file, indent=4)  # 以缩进格式保存JSON数据


# 添加图书
def add_book(book_id, title, author):
  """添加一本新书到图书馆"""
  if book_id in library:
    print(f"图书ID {book_id} 已存在。")
  else:
    library[book_id] = {"title": title, "author": author, "borrowed": False}
    print(f"图书 {title} 已添加。")
    save_library_data()  # 保存数据


# 借阅图书
def borrow_book(book_id):
  """借阅一本图书"""
  if book_id in library and not library[book_id]["borrowed"]:
    library[book_id]["borrowed"] = True
    print(f"图书 {library[book_id]['title']} 已借出。")
    save_library_data()  # 保存数据
  else:
    print(f"图书ID {book_id} 不存在或已被借出。")

  # 归还图书


def return_book(book_id):
  """归还一本图书"""
  if book_id in library and library[book_id]["borrowed"]:
    library[book_id]["borrowed"] = False
    print(f"图书 {library[book_id]['title']} 已归还。")
    save_library_data()  # 保存数据
  else:
    print(f"图书ID {book_id} 不存在或未被借出。")

  # 查询图书信息


def query_book(book_id):
  """查询图书信息"""
  if book_id in library:
    book = library[book_id]
    borrowed_status = "已借出" if book["borrowed"] else "在馆"
    print(f"图书ID: {book_id}, 标题: {book['title']}, 作者: {book['author']}, 状态: {borrowed_status}")
  else:
    print(f"图书ID {book_id} 不存在。")

  # 显示所有图书


def display_all_books():
  """显示所有图书信息"""
  if not library:
    print("图书馆中没有图书。")
  else:
    for book_id, book in library.items():
      borrowed_status = "已借出" if book["borrowed"] else "在馆"
      print(f"图书ID: {book_id}, 标题: {book['title']}, 作者: {book['author']}, 状态: {borrowed_status}")

    # 主函数


def main():
  load_library_data()  # 加载图书数据

  while True:
    print("\n图书管理系统")
    print("1. 添加图书")
    print("2. 借阅图书")
    print("3. 归还图书")
    print("4. 查询图书信息")
    print("5. 显示所有图书")
    print("6. 退出")

    choice = input("请选择操作: ")

    if choice == '1':
      book_id = input("请输入图书ID: ")
      title = input("请输入图书标题: ")
      author = input("请输入图书作者: ")
      add_book(book_id, title, author)
    elif choice == '2':
      book_id = input("请输入图书ID: ")
      borrow_book(book_id)
    elif choice == '3':
      book_id = input("请输入图书ID: ")
      return_book(book_id)
    elif choice == '4':
      book_id = input("请输入图书ID: ")
      query_book(book_id)
    elif choice == '5':
      display_all_books()
    elif choice == '6':
      print("退出系统。")
      break
    else:
      print("无效选择,请重新输入。")


if __name__ == "__main__":
  main()

总结

经过一番折腾,咱们的图书管理系统终于大功告成了!现在,无论是添加新书、借阅图书,还是归还图书、查询图书信息,都变得轻而易举。这一切都要归功于Python的json库和字典数据结构,它们就像是我们管理图书的得力助手。

通过这次实践,我们不仅学会了如何利用json库来存储和读取数据,还掌握了字典这种高效的数据管理方式。更重要的是,我们体会到了编程带来的乐趣和成就感。当看到自己亲手打造的图书管理系统能够正常运行,那种满足感真的是难以言表!

所以呀,小伙伴们,不要害怕编程,也不要觉得它很难。只要你肯动手去尝试,去实践,就一定能发现编程的魅力和乐趣所在。就像咱们今天打造的图书管理系统一样,虽然看起来很简单,但它却能在我们的日常生活中发挥巨大的作用。让我们一起继续探索编程的世界吧!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系统功能
  • 准备工作
  • 实现步骤
    • 第一步:导入必要的库
    • 第二步:初始化图书数据
    • 第三步:定义存储图书数据的文件路径
    • 第四步:加载图书数据
    • 第五步:保存图书数据
    • 第六步:添加图书
    • 第七步:借阅图书
    • 第八步:归还图书
    • 第九步:查询图书信息
    • 第十步:显示所有图书
    • 第十一步:主函数
  • 运行结果
  • 最终代码
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档