图书借阅系统

张开发
2026/4/8 18:25:02 15 分钟阅读

分享文章

图书借阅系统
设计一个简单的图书借阅管理系统。系统初始包含若干本图书每本图书的信息包括 书号字符串 书名字符串 作者字符串 库存数量整数 另外系统需记录借阅记录列表存储每笔借阅的字典。程序通过菜单实现以下功能 查看所有图书以表格形式显示所有图书的书号、书名、作者、库存。 借书输入书号和借阅数量如果库存足够则减少库存并添加一条借阅记录 包含书号、书名、借阅数量、借阅日期可简化为当天日期字符串。如果库存不足提示失败。 还书输入书号和归还数量增加对应图书的库存并从借阅记录中删除相应的借阅 按先进先出原则或简单按书号匹配。若归还数量大于该书的借出总量则提示错误。 查询某本书的借阅情况输入书号显示该书当前被借出的总数量和所有借阅记录的详情借阅数量、借阅日期。 退出系统结束程序。 要求 数据初始化至少预置 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} ]//元组 str1 --- 图书借阅管理系统 --- 1. 查看所有图书 2. 借书输入书号和借阅数量 3. 还书输入书号和归还数量 4. 按书号查看书籍借阅情况 5. 退出系统 请选择(1-5): 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(str1) choose input(请输入选择的功能 :) if choose1: print(查看所有图书功能已开启) for key,value in books.items(): print(f书号{key},姓名:{value[name]},作者:{value[author]},数量:{value[stock]}) elif choose2: # 借书输入书号和借阅数量如果库存足够则减少库存并添加一条借阅记录 # 包含书号、书名、借阅数量、借阅日期可简化为当天日期字符串。如果库存不足提示失败。 print(借阅书籍功能开启) book_id input(请输入书号:) if book_id in books: book_stock int(input(请输入借阅数量:)) if book_stockbooks[book_id][stock]: books[book_id][stock]-book_stock print(f书号为{book_id}的书籍借阅成功借阅记录) list1{ book_id:book_id, book_name:books[book_id][name], quantity:book_stock, date:2026-03-26, } borrow_records.append(list1) print(borrow_records) else: print(f书号为{book_id}的书籍库存不够借阅失败) else: print(f书号为{book_id}的书籍不存在借阅失败) elif choose3: # 还书输入书号和归还数量增加对应图书的库存并从借阅记录中删除相应的借阅 # 按先进先出原则或简单按书号匹配。若归还数量大于该书的借出总量则提示错误。 print(归还书籍功能开启) book_id input(请输入书号:) if book_id in books: book_stock int(input(请输入归还数量)) # 判断是否在记录里面 where_cunzaiNone for i in borrow_records[:]: if i[book_id]book_id: where_cunzai i break if where_cunzai and book_stockwhere_cunzai[quantity]: books[book_id][stock]book_stock print(f书号为{book_id}的书籍归还成功,借阅记录) where_cunzai[quantity]-book_stock if where_cunzai[quantity]0: borrow_records.remove(where_cunzai); print(borrow_records) else: print(f书号为{book_id}的书籍数量不对归还失败) else: print(f书号为{book_id}的书籍不存在归还失败) elif choose4: # 输入书号显示该书当前被借出的总数量和所有借阅记录的详情借阅数量、借阅日期。 print(按书号查看书籍借阅情况功能已开启) book_idinput(请输入要查找书籍的书号) is_cunzaiFalse total_q0 for i in borrow_records: if i[book_id]book_id: print(f借阅数量{i[quantity]},借阅日期{i[date]}) total_qi[quantity] is_cunzaiTrue if is_cunzaiFalse: print(f{book_id}书籍不存在) elif choose5: print(退出系统功能已开启) print(程序结束) break

更多文章