Python第二次作业--图书管理系统

张开发
2026/4/10 6:37:18 15 分钟阅读

分享文章

Python第二次作业--图书管理系统
题目描述 设计一个简单的图书借阅管理系统。系统初始包含若干本图书每本图书的信息包括 书号字符串 书名字符串 作者字符串 库存数量整数 另外系统需记录借阅记录列表存储每笔借阅的字典。程序通过菜单实现以下功能 查看所有图书以表格形式显示所有图书的书号、书名、作者、库存。 借书输入书号和借阅数量如果库存足够则减少库存并添加一条借阅记录包含书号、书名、借阅数量、借阅日期可简化为当天日期字符串。如果库存不足提示失败。 还书输入书号和归还数量增加对应图书的库存并从借阅记录中删除相应的借阅按先进先出原则或简单按书号匹配。若归还数量大于该书的借出总量则提示错误。 查询某本书的借阅情况输入书号显示该书当前被借出的总数量和所有借阅记录的详情借阅数量、借阅日期。 退出系统结束程序。 要求 数据初始化至少预置 3 本图书和若干条借阅记录可手动在代码中定义。 菜单循环用户输入 1~5 选择功能。 对用户输入做简单的有效性检查如书号不存在、数量非法等。 参考代码 python # 初始化图书库存 books { B001: {name: Python编程, author: 张三, stock: 5}, B002: {name: 数据结构, author: 李四, stock: 3}, B003: {name: 算法导论, author: 王五, stock: 0} } # 初始化借阅记录 borrow_records [ {book_id: B001, book_name: Python编程, quantity: 1, date: 2026-03-25}, {book_id: B002, book_name: 数据结构, quantity: 2, date: 2026-03-26} ] books { B001: {name: Python编程, author: 张三, stock: 5}, B002: {name: 数据结构, author: 李四, stock: 3}, B003: {name: 算法导论, author: 王五, stock: 0} } borrow_records [ {book_id: B001, book_name: Python编程, quantity: 1, date: 2026-03-25}, {book_id: B002, book_name: 数据结构, quantity: 2, date: 2026-03-26} ] while True: print( 欢迎来到图书管理系统 1.查看所有图书 2.借书 3.还书 4.查询某本书的借阅情况 5.退出系统 ) choice input(请输入您的选择(1-5)) if choice not in [1, 2, 3, 4, 5]: print(输入错误,请重新输入) continue # 查看所有图书以表格形式显示所有图书的书号、书名、作者、库存。 if choice1: print(书号\t书名\t作者\t库存) for k,v in books.items(): print(f书号{k}\t书名{v[name]}\t作者{v[author]}\t库存{v[stock]}) # 借书输入书号和借阅数量如果库存足够则减少库存并添加一条借阅记录包含书号、书名、借阅数量、借阅日期可简化为当天日期字符串。 if choice2: while True: book_idinput(请输入要借阅的图书编号(退出按q/Q)) if book_idq or book_idQ: break if book_id not in books: print(【错误】图书编号不存在) break else: numint(input(请输入要借阅的图书数量)) if num books[book_id][stock]: print(【错误】库存不足) else: books[book_id][stock]-num borrow_records.append({ book_id: book_id, book_name: books[book_id][name], quantity: num, date: 2026-03-28 }) # 还书输入书号和归还数量增加对应图书的库存并从借阅记录中删除相应的借阅按先进先出原则或简单按书号匹配。若归还数量大于该书的借出总量则提示错误。 if choice3: while True: book_idinput(请输入要还书的图书编号(退出按q/Q)) if book_idq or book_idQ: break if book_id not in books: print(【错误】图书编号不存在) break else: numint(input(请输入要还书的图书数量)) if num books[book_id][stock]: print(【错误】归还数量大于借出总量) else: books[book_id][stock]num for i in range(len(borrow_records)): if borrow_records[i][book_id]book_id: borrow_records.pop(i) break # 查询某本书的借阅情况输入书号显示该书当前被借出的总数量和所有借阅记录的详情借阅数量、借阅日期。 if choice4: book_idinput(请输入要查询的图书编号) if book_id not in books: print(【错误】图书编号不存在) else: sum0 for i in borrow_records: if i[book_id] book_id: sumi[quantity] print(f该书{books[book_id][name]}\t当前被借出的数量为{sum}\t借阅记录详情为{i[quantity]}\t{i[date]}) # 退出系统结束程序。 if choice5: print(感谢使用图书管理系统) break

更多文章