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

嘿,各位技术小伙伴们,在学习Python的过程中,图书管理系统是一个非常经典的Python练手项目,在这个系统中,我们将利用Python的内置库json来存储和读取图书数据。json库就像是数据的“翻译官”,它能把Python中的数据结构(比如字典)转换成一种易于存储和传输的格式,然后再把它们“翻译”回来。这样一来,我们就能轻松地把图书信息保存到文件里,随时读取、修改和查询了。

不仅如此,我们还会用到字典这种强大的数据结构来存储图书信息。字典就像是现实生活中的书架,每个格子(键值对)都能放一本“书”(图书信息)。通过给每本书分配一个唯一的“书号”(图书ID),我们就能快速找到并管理它们了。

好了,废话不多说,接下来就让我们一起动手,用代码来实现这个图书管理系统吧!

系统功能

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

准备工作

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

实现步骤

第一步:导入必要的库

import json

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

第二步:初始化图书数据

library = {}

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

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

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 = {} 

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

第五步:保存图书数据

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

将图书数据保存到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()  # 保存数据  

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

第七步:借阅图书

# 借阅图书  
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} 不存在。")  

查询图书信息,包括图书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}")

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

第十一步:主函数

# 主函数  
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
退出系统。

最终代码

# 导入必要的库
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库来存储和读取数据,还掌握了字典这种高效的数据管理方式。更重要的是,我们体会到了编程带来的乐趣和成就感。当看到自己亲手打造的图书管理系统能够正常运行,那种满足感真的是难以言表!

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

猜你喜欢

转载自blog.csdn.net/qq_51431069/article/details/143157170