当前位置:首页>python>Python 入门 09:毕业典礼!为你的图书管理系统画上完美句号

Python 入门 09:毕业典礼!为你的图书管理系统画上完美句号

  • 2026-09-02 19:33:46
Python 入门 09:毕业典礼!为你的图书管理系统画上完美句号

前言

各位勇敢的编程探险家,恭喜你们坚持到了最后!🎉

“我做到了”

还记得我们第一次见面时的情景吗?那时,你面对杂乱的电子书文件夹束手无策,对 Python 的认识可能还停留在“一条大蟒蛇”……

而现在,你亲手打造了一个功能齐全的图书管理系统!它能够:

  • 📖 记住 你的每一本藏书

  • 🔍 秒速找到 任何你想看的书

  • ✏️ 随时更新 书籍信息

  • 🗑️ 安全删除 不再需要的书籍

  • 💾 永久保存 所有数据

这就像看着自己的孩子从蹒跚学步到奔跑如飞——老父亲/老母亲的泪水都要流下来了!

但是,就像任何好故事一样,结局往往意味着新的开始。今天,让我们为这个项目画上一个完美的句号,同时打开通往更广阔世界的大门!


项目完善与扩展思考

1. 统计功能:给你的书库做一次“全面体检”

是时候了解一下我们的阅读“家底”了!让我们添加一些酷炫的统计功能:

defshow_statistics(library):"""显示书库统计信息"""ifnot library:        print("书库是空的,暂无统计信息。")return    total_books = len(library)# 作者统计    authors = {}for book in library:        author = book['author']        authors[author] = authors.get(author, 0) + 1# 分类统计    genres = {}for book in library:        genre = book['genre']        genres[genre] = genres.get(genre, 0) + 1# 评分统计    ratings = [book['rating'] for book in library]    avg_rating = sum(ratings) / len(ratings) if ratings else0    best_book = max(library, key=lambda x: x['rating']) if library elseNone    print("\n📊 书库统计报告")    print("=" * 40)    print(f"藏书总量:{total_books} 本")    print(f"平均评分:{avg_rating:.1f} 分")    print(f"\n👑 最爱作者TOP3:")    sorted_authors = sorted(authors.items(), key=lambda x: x[1], reverse=True)[:3]for author, count in sorted_authors:        print(f"  {author}:{count} 本")    print(f"\n📚 热门分类:")for genre, count in list(genres.items())[:5]:        print(f"  {genre}:{count} 本")if best_book:        print(f"\n⭐ 评分之王:")        print(f"  《{best_book['title']}》 - {best_book['rating']} 分")

运行这个功能,你会得到一份漂亮的阅读报告——原来我这么喜欢刘慈欣,原来科幻类藏书最多!

2. 排序功能:让书籍按你的心意排列

有时候,我们想看看评分最高的书,或者按书名排序:

defsort_books(library):"""排序显示书籍"""ifnot library:        print("书库是空的。")return    print("\n排序方式:")    print("1. 按评分从高到低")    print("2. 按书名A-Z")    print("3. 按作者A-Z")    choice = input("请选择排序方式 (1-3): ").strip()if choice == "1":        sorted_library = sorted(library, key=lambda x: x['rating'], reverse=True)        print("\n⭐ 评分排行榜:")elif choice == "2":        sorted_library = sorted(library, key=lambda x: x['title'])        print("\n📖 按书名排序:")elif choice == "3":        sorted_library = sorted(library, key=lambda x: x['author'])        print("\n✍️ 按作者排序:")else:        print("无效选择!")return    display_all_books(sorted_library)

3. 最终整合:你的第一个专业级软件

现在,让我们把所有这些功能整合到最终版主菜单中:

defmain():"""终极版主程序"""    book_library = load_library()    print(f"🎉 欢迎使用终极图书管理系统!")    print(f"   当前书库有 {len(book_library)} 本书,继续探索知识的海洋吧!")whileTrue:        print("\n" + "=" * 40)        print("           终极图书管理系统")        print("=" * 40)        print("1. 显示所有书籍")        print("2. 添加新书")        print("3. 搜索书籍")        print("4. 删除书籍")        print("5. 修改书籍")        print("6. 书库统计")        print("7. 排序显示")        print("8. 退出系统")        print("=" * 40)        choice = get_user_choice()if choice == 1:            display_all_books(book_library)elif choice == 2:            add_book(book_library)elif choice == 3:            search_books(book_library)elif choice == 4:            delete_book(book_library)elif choice == 5:            modify_book(book_library)elif choice == 6:            show_statistics(book_library)elif choice == 7:            sort_books(book_library)elif choice == 8:            save_library(book_library)            print("感谢使用,愿阅读永远陪伴你!📚✨")breakelse:            print("无效选择,请输入1-8之间的数字!")

看!8 大功能,完整的管理系统——这就是你从零开始创造的奇迹!


你走过的路,比代码更珍贵

回顾这 9 章的学习旅程,你收获的不仅仅是一个图书管理系统:

🎯 你掌握了 Python 核心概念:

  • 变量、数据类型(字符串、列表、字典)

  • 流程控制(条件判断、循环)

  • 函数定义与模块化

  • 文件操作与异常处理

  • 代码调试与优化

🚀 你培养了真正的编程思维:

  • 问题拆解能力(把大问题变成小功能)

  • 系统设计思维(数据流、功能架构)

  • 用户体验意识(安全确认、错误提示)

  • 代码整洁之道(函数化、注释、文档)

最重要的是,你证明了“我能行”! 在无数人还在犹豫时,你已经用行动给出了最好的回答。


下一站:星辰大海

你的编程之旅才刚刚开始!这里有一些建议:

🛠️ 立即可以做的:

  • 为系统添加“借阅记录”功能

  • 实现“愿望清单”模块

  • 添加“书籍推荐”算法(基于分类或评分)

🌍 扩展学习方向:

  • Web 开发:用 Django 或 Flask 把系统做成网站

  • 数据分析:用 pandas 分析你的阅读习惯

  • GUI 开发:用 Tkinter 或 PyQt 制作图形界面

  • 爬虫技术:自动从豆瓣获取书籍信息和评分


结语

Python 入门系列的所有内容就到此结束了,下一篇文章将是全系列导航文章,欢迎继续关注!

愿你我保持好奇,保持勇敢,在代码的世界里继续探索,继续创造。

我们,在更高的山峰再见!👋


以下是完整版代码:

import json# === 数据层函数 ===defload_library():"""加载书库数据"""try:with open("my_library.json", "r", encoding="utf-8") as file:return json.load(file)except FileNotFoundError:return []defsave_library(library):"""保存书库数据"""with open("my_library.json", "w", encoding="utf-8") as file:        json.dump(library, file, ensure_ascii=False, indent=4)# === 功能层函数 ===defdisplay_all_books(library):"""功能1:显示书库中的所有书籍"""ifnot library:        print("书库是空的,快去添加几本书吧!")return    print(f"\n当前共有 {len(library)} 本书:")    print("=" * 40)for i, book in enumerate(library, 1):        print(f"{i}. 《{book['title']}》")        print(f"   作者:{book['author']}")        print(f"   分类:{book['genre']}")        print(f"   评分:{book['rating']}")        print("-" * 20)defadd_book(library):"""功能2:添加新书"""    print("\n--- 添加新书 ---")    title = input("请输入书名: ").strip()    author = input("请输入作者: ").strip()    genre = input("请输入分类: ").strip()ifnot title ornot author:        print("书名和作者不能为空!")returntry:        rating = float(input("请输入评分 (0-5): "))ifnot0 <= rating <= 5:            print("评分必须在0-5之间!")returnexcept ValueError:        print("评分必须是数字!")return    new_book = {"title": title,"author": author,"genre": genre,"rating": rating    }    library.append(new_book)    save_library(library)    print(f"✅ 《{title}》添加成功!")defsearch_books(library):"""功能3:搜索书籍"""    keyword = input("请输入书名或作者关键词: ").strip()ifnot keyword:        print("关键词不能为空!")return    found_books = []for book in library:if (keyword in book['title'] or            keyword in book['author'] or                keyword in book['genre']):            found_books.append(book)if found_books:        print(f"\n找到 {len(found_books)} 本相关书籍:")        display_all_books(found_books)  # 复用显示函数!else:        print("🔍 没有找到相关书籍。")defdelete_book(library):"""功能4:删除书籍(带安全确认)"""ifnot library:        print("书库是空的,没什么可删除的。")return# 先显示所有书籍,让用户知道该删哪本    display_all_books(library)try:        book_num = int(input("\n请输入要删除的书籍编号: "))if book_num < 1or book_num > len(library):            print("无效的编号!")returnexcept ValueError:        print("请输入有效的数字!")return# 找到要删除的书    target_book = library[book_num - 1]# 重要:二次确认!    print(f"\n⚠️  即将删除:《{target_book['title']}》")    confirm = input("确定要删除吗?(输入 'yes' 确认): ").strip().lower()if confirm == 'yes':        removed_book = library.pop(book_num - 1)        save_library(library)  # 立即保存        print(f"✅ 已删除《{removed_book['title']}》")else:        print("❌ 取消删除操作")defmodify_book(library):"""功能5:修改书籍信息"""ifnot library:        print("书库是空的。")return    display_all_books(library)try:        book_num = int(input("\n请输入要修改的书籍编号: "))if book_num < 1or book_num > len(library):            print("无效的编号!")returnexcept ValueError:        print("请输入有效的数字!")return    target_book = library[book_num - 1]    print(f"\n当前修改的是:《{target_book['title']}》")# 逐项修改,如果用户直接回车就保留原值    new_title = input(f"新书名 (当前: {target_book['title']}) [直接回车保持不变]: ").strip()    new_author = input(f"新作者 (当前: {target_book['author']}) [直接回车保持不变]: ").strip()    new_genre = input(f"新分类 (当前: {target_book['genre']}) [直接回车保持不变]: ").strip()    new_rating = input(f"新评分 (当前: {target_book['rating']}) [直接回车保持不变]: ").strip()# 更新信息(只有用户输入了新内容才更新)if new_title:        target_book['title'] = new_titleif new_author:        target_book['author'] = new_authorif new_genre:        target_book['genre'] = new_genreif new_rating:try:            target_book['rating'] = float(new_rating)except ValueError:            print("评分必须是数字,该项修改失败!")    save_library(library)    print("✅ 书籍信息更新成功!")defshow_statistics(library):"""功能6:显示书库统计信息"""ifnot library:        print("书库是空的,暂无统计信息。")return    total_books = len(library)# 作者统计    authors = {}for book in library:        author = book['author']        authors[author] = authors.get(author, 0) + 1# 分类统计    genres = {}for book in library:        genre = book['genre']        genres[genre] = genres.get(genre, 0) + 1# 评分统计    ratings = [book['rating'] for book in library]    avg_rating = sum(ratings) / len(ratings) if ratings else0    best_book = max(library, key=lambda x: x['rating']) if library elseNone    print("\n📊 书库统计报告")    print("=" * 40)    print(f"藏书总量:{total_books} 本")    print(f"平均评分:{avg_rating:.1f} 分")    print(f"\n👑 最爱作者TOP3:")    sorted_authors = sorted(        authors.items(), key=lambda x: x[1], reverse=True)[:3]for author, count in sorted_authors:        print(f"  {author}:{count} 本")    print(f"\n📚 热门分类:")for genre, count in list(genres.items())[:5]:        print(f"  {genre}:{count} 本")if best_book:        print(f"\n⭐ 评分之王:")        print(f"  《{best_book['title']}》 - {best_book['rating']} 分")defsort_books(library):"""功能7:排序显示书籍"""ifnot library:        print("书库是空的。")return    print("\n排序方式:")    print("1. 按评分从高到低")    print("2. 按书名A-Z")    print("3. 按作者A-Z")    choice = input("请选择排序方式 (1-3): ").strip()if choice == "1":        sorted_library = sorted(            library, key=lambda x: x['rating'], reverse=True)        print("\n⭐ 评分排行榜:")elif choice == "2":        sorted_library = sorted(library, key=lambda x: x['title'])        print("\n📖 按书名排序:")elif choice == "3":        sorted_library = sorted(library, key=lambda x: x['author'])        print("\n✍️ 按作者排序:")else:        print("无效选择!")return    display_all_books(sorted_library)# === 主程序 ===defget_user_choice():"""安全获取用户选择"""whileTrue:try:            choice = int(input("请选择功能 (1-8): ").strip())return choiceexcept ValueError:            print("请输入1-8之间的数字!")defget_book_number(library, prompt):"""安全获取书籍编号"""whileTrue:try:            num = int(input(prompt).strip())if1 <= num <= len(library):return numelse:                print(f"请输入1-{len(library)}之间的有效编号!")except ValueError:            print("请输入有效的数字!")defmain():"""终极版主程序"""    book_library = load_library()    print(f"🎉 欢迎使用终极图书管理系统!")    print(f"   当前书库有 {len(book_library)} 本书,继续探索知识的海洋吧!")whileTrue:        print("\n" + "=" * 40)        print("           终极图书管理系统")        print("=" * 40)        print("1. 显示所有书籍")        print("2. 添加新书")        print("3. 搜索书籍")        print("4. 删除书籍")        print("5. 修改书籍")        print("6. 书库统计")        print("7. 排序显示")        print("8. 退出系统")        print("=" * 40)        choice = get_user_choice()if choice == 1:            display_all_books(book_library)elif choice == 2:            add_book(book_library)elif choice == 3:            search_books(book_library)elif choice == 4:            delete_book(book_library)elif choice == 5:            modify_book(book_library)elif choice == 6:            show_statistics(book_library)elif choice == 7:            sort_books(book_library)elif choice == 8:            save_library(book_library)            print("感谢使用,愿阅读永远陪伴你!📚✨")breakelse:            print("无效选择,请输入1-8之间的数字!")# 程序入口if __name__ == "__main__":    main()

免责声明:本教程所有内容均为编程学习目的,所提及书籍名称及作者均为示例。请尊重知识产权,支持正版电子书。

最新文章

随机文章