简单的图书管理系统

发布时间:2026/6/25 14:29:07
简单的图书管理系统 import json import os # 文件路径 USER_FILE users.json BOOK_FILE books.json # 数据初始化与读写 def load_data(file_path): 加载json文件文件不存在则返回空列表 if not os.path.exists(file_path): return [] with open(file_path, r, encodingutf-8) as f: return json.load(f) def save_data(file_path, data): 保存数据到json文件 with open(file_path, w, encodingutf-8) as f: json.dump(data, f, ensure_asciiFalse, indent2) # 初始化默认账号首次运行自动创建 def init_default_user(): users load_data(USER_FILE) if len(users) 0: # 管理员账号 users.append({username: admin, password: 123456, role: admin}) # 普通读者账号 users.append({username: reader, password: 123, role: reader}) save_data(USER_FILE, users) # 用户登录模块 def login(): print( * 30) print( 图书管理系统 登录) print( * 30) username input(请输入账号) password input(请输入密码) user_list load_data(USER_FILE) for user in user_list: if user[username] username and user[password] password: print(f\n登录成功欢迎你{username}) return user print(账号或密码错误) return None # 管理员功能 def admin_menu(): while True: print(\n 管理员菜单 ) print(1. 添加图书) print(2. 修改图书信息) print(3. 删除图书) print(4. 查询所有图书) print(5. 返回登录界面) choice input(请输入操作序号) if choice 1: add_book() elif choice 2: edit_book() elif choice 3: del_book() elif choice 4: show_all_books() elif choice 5: break else: print(输入无效请重新选择) def add_book(): books load_data(BOOK_FILE) book_id input(输入图书编号) # 检查编号是否重复 for b in books: if b[id] book_id: print(该图书编号已存在添加失败) return book_name input(输入图书名称) author input(输入作者) category input(输入图书分类) num int(input(输入库存数量)) new_book { id: book_id, name: book_name, author: author, category: category, stock: num, borrow_user: None # 当前借阅人无人借阅为None } books.append(new_book) save_data(BOOK_FILE, books) print(✅ 图书添加成功) def show_all_books(): books load_data(BOOK_FILE) if not books: print(暂无图书数据) return print(\n编号\t书名\t作者\t分类\t库存\t借阅人) print(- * 60) for b in books: user b[borrow_user] if b[borrow_user] else 无 print(f{b[id]}\t{b[name]}\t{b[author]}\t{b[category]}\t{b[stock]}\t{user}) def edit_book(): books load_data(BOOK_FILE) bid input(输入要修改的图书编号) for book in books: if book[id] bid: book[name] input(输入新书名) book[author] input(输入新作者) book[category] input(输入新分类) book[stock] int(input(输入新库存)) save_data(BOOK_FILE, books) print(✅ 修改完成) return print(未找到该编号的图书) def del_book(): books load_data(BOOK_FILE) bid input(输入要删除的图书编号) for i, book in enumerate(books): if book[id] bid: books.pop(i) save_data(BOOK_FILE, books) print(✅ 删除成功) return print(图书不存在) # 读者功能借阅/归还 def reader_menu(current_user): while True: print(\n 读者菜单 ) print(1. 查看全部图书) print(2. 借阅图书) print(3. 归还图书) print(4. 返回登录界面) choice input(请选择操作) if choice 1: show_all_books() elif choice 2: borrow_book(current_user[username]) elif choice 3: return_book(current_user[username]) elif choice 4: break else: print(输入错误) def borrow_book(username): books load_data(BOOK_FILE) bid input(输入要借阅的图书编号) for book in books: if book[id] bid: if book[stock] 0: print(库存不足无法借阅) return if book[borrow_user] is not None: print(这本书已被别人借走) return book[stock] - 1 book[borrow_user] username save_data(BOOK_FILE, books) print(f✅ {username} 借阅成功) return print(找不到这本图书) def return_book(username): books load_data(BOOK_FILE) bid input(输入归还图书编号) for book in books: if book[id] bid: if book[borrow_user] ! username: print(你没有借阅这本书无法归还) return book[stock] 1 book[borrow_user] None save_data(BOOK_FILE, books) print(✅ 归还成功) return print(图书不存在) # 程序主入口 def main(): # 初始化管理员与读者账号 init_default_user() while True: current_user login() if not current_user: continue # 根据角色进入不同菜单 if current_user[role] admin: admin_menu() else: reader_menu(current_user) if __name__ __main__: main()