本课题要求编写Python程序实现对图书信息录入、图书信息查询、图书借阅等方面的管理。一个综合的图书借阅管理系统,要求能够管理图书的基本信息(包含新图书入库、读者图书查询借阅等),需要实现以下功能:读取以数据文件形式存储的图书信息;管理员可以增加、修改、删除图书的信息;读者可以按照图书名、作者名、索书号等查询图书,并可通过该系统实现对图书的借阅、续借和归还;读者还可查询自己所借图书的信息(是否归还、归还日期等)。
系统内的所有信息必须以文件的方式存储在硬盘中,图书信息文件,存放了图书的索书号、书名、作者、出版社、类别、库存总量、可借本数。格式如下:
O141.4/3-6 数学模型 《数学模型》编写组编 华南理工大学出版社 数学 10 8
T311.5/3-1 Python程序设计 丁亚涛 中国水利水电出版社 计算机 5 3
I247.5/2-3 天龙八部壹(2版) 金庸 广州出版社 文学 3 2
……
2 要求及提示
2.1 基本要求
要能提供以下几个基本功能:
(1)系统内的相关信息文件由程序设计人员预先从键盘上录入,文件中的数据记录不得少于20条;
(2)设计并实现系统的相关界面,提供良好的交互界面;
(3)登录时输入帐号以区分读者和管理员;
(4)读者信息查询:
- 图书查询借阅功能:输入一个书名(或索书号、作者等其他信息),查出相关图书的基本信息并显示输出,同时提示是否需要借阅该图书;
- “我的”功能:显示个人图书借阅历史,显示所借图书的状态(是否归还、归还日期)、并选择是否归还或续借。
(5)管理端信息查询:
- 管理员可以增加、修改、删除图书的信息。
在完成管理员模块后,我们需要完成用户模块,
import time import random import datetime book_id = [] book_type = [] book_name = [] book_author = [] book_publisher = [] book_remind = [] book_lend = [] with open('book_data.txt', 'r', encoding='utf-8') as f: for lines in f: parts = lines.strip().split(',') book_id.append(parts[0]) book_type.append(parts[4]) book_name.append(parts[1]) book_author.append(parts[2]) book_publisher.append(parts[3]) book_remind.append(parts[5]) book_lend.append(parts[6]) # 图书类型查询 def user_search_by_type(): while True: print("*l图书类型查询") print("1. 文学 2. 数学 3. 计算机4. 医学") type_name = input("请输入图书类型:") for i in range(len(book_type)): if type_name == book_type[i]: print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i], "图书出版社:", book_publisher[i], "图书剩余数量:", book_remind[i], "图书已借数量:", book_lend[i]) print("-" * 150) print("是否继续查询图书类型?y/n") choice = input() if choice == 'n': break def user_search_by_name(): while True: print("图书名称查询") name = input("请输入图书名称:") for i in range(len(book_name)): if name in book_name[i]: print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i], "图书出版社:", book_publisher[i], "图书剩余数量:", book_remind[i], "图书已借数量:", book_lend[i]) print("-" * 150) print("是否继续查询图书名称?y/n") choice = input() if choice == 'n': break def user_search_by_author(): while True: print("图书作者查询") author = input("请输入图书作者:") for i in range(len(book_author)): if author in book_author[i]: print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i], "图书出版社:", book_publisher[i], "图书剩余数量:", book_remind[i], "图书已借数量:", book_lend[i]) print("-" * 150) print("是否继续查询图书作者?y/n") choice = input() if choice == 'n': break def user_search_by_id(): while True: print("图书编号查询") id = input("请输入图书编号:") for i in range(len(book_id)): if id == book_id[i]: print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i], "图书出版社:", book_publisher[i], "图书剩余数量:", book_remind[i], "图书已借数量:", book_lend[i]) print("-" * 150) # 用户是否借阅图书 def user_borrow_book(): while True: print("借阅图书") id = input("请输入图书编号:") for i in range(len(book_id)): if id == book_id[i]: # 将库存从字符串转换为整数 remind_int = int(book_remind[i]) if book_remind[i].isdigit() else 0 if remind_int > 0: # 检查转换后的库存是否足够 book_remind[i] = str(remind_int - 1) # 更新库存为新的字符串值 book_lend[i] = str(int(book_lend[i]) - 1) # 增加借出数量,确保借出数量也是字符串类型 print("图书借阅成功!") print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i], "图书出版社:", book_publisher[i], "图书剩余数量:", book_remind[i], "图书可借数量:", book_lend[i]) print("-" * 150) break else: print("图书借阅失败!图书库存不足!") break print("是否继续借阅图书?y/n") choice = input() if choice == 'n': break else: remind_int = int(book_remind[i]) if book_remind[i].isdigit() else 0 if remind_int > 0: # 检查转换后的库存是否足够 book_remind[i] = str(remind_int) # 更新库存为新的字符串值 book_lend[i] = str(int(book_lend[i])) # 增加借出数量,确保借出数量也是字符串类型 print("图书续借阅成功!") print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i], "图书出版社:", book_publisher[i], "图书剩余数量:", book_remind[i], "图书可借数量:", book_lend[i]) print("-" * 150) break # 用户是否归还图书 def user_return_book(): while True: print("归还图书") id = input("请输入图书编号:") for i in range(len(book_id)): if id == book_id[i]: # 将库存从字符串转换为整数 lend_int = int(book_lend[i]) if book_lend[i].isdigit() else 0 if lend_int > 0: # 检查转换后的借出数量是否足够 book_remind[i] = str(int(book_remind[i]) + 1) book_lend[i] = str(int(book_lend[i]) + 1) print("图书归还 成功!") print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i], "图书出版社:", book_publisher[i], "图书剩余数量:", book_remind[i], "图书可借数量:", book_lend[i]) # 归还后,生成一个归还时间 return_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") print("归还时间:", return_time) print("-" * 150) break else: print("图书归还失败!图书未被借阅!") break print("是否继续归还图书?y/n") choice = input() if choice == 'n': break # 查看用户借阅状态 def user_borrow_status(): while True: print("查看借阅状态") id = input("请输入图书编号:") for i in range(len(book_id)): if id == book_id[i]: lend_int = int(book_lend[i]) if book_lend[i].isdigit() else 0 if lend_int > 0: # 检查图书是否已被借出 print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i], "图书出版社:", book_publisher[i], "图书剩余数量:", book_remind[i], "图书已借数量:", book_lend[i]) # 借出状态,生成一个借出时间 borrow_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") print("借出时间:", borrow_time) print("-" * 150) break else: print("图书未被借阅!") break print("是否继续查看借阅状态?y/n") choice = input() if choice == 'n': break def user_renew_book(): while True: print("续借图书") id = input("请输入图书编号:") for i in range(len(book_id)): if id == book_id[i]: # 将库存从字符串转换为整数 lend_int = int(book_lend[i]) if book_lend[i].isdigit() else 0 if lend_int > 0: # 检查转换后的借出数量是否足够 book_remind[i] = str(int(book_remind[i])) book_lend[i] = str(int(book_lend[i])) print("图书续借 成功!") print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i], "图书出版社:", book_publisher[i], "图书剩余数量:", book_remind[i], "图书可借数量:", book_lend[i]) # 续借后,生成一个续借时间 renew_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") print("续借时间:", renew_time) print("-" * 150) break else: print("图书续借失败!图书已经被借阅!") break print("是否继续续借图书?y/n") choice = input() if choice == 'n': break def main(): search_options = { "1": user_search_by_type, "2": user_search_by_name, "3": user_search_by_author, "4": user_search_by_id, } while True: print("请选择查询方式:") print("1. 图书类型") print("2. 图书名称") print("3. 图书作者") print("4. 图书编号") print("5. 退出") option = input("请输入选项:") if option in search_options: search_options[option]() elif option == "5": print("已退出查找程序") break else: print("无效的选项,请重新输入") def main_b(): user_borrow_lend_options = { "1": user_borrow_book, "2": user_return_book, "3": user_renew_book, "4": user_borrow_status } while True: print("请选择借阅/归还图书/续借图书方式:") print("1. 借阅图书") print("2. 归还图书") print("3. 续借图书") print("4. 查看借阅状态") print("5. 退出") option = input("请输入选项:") if option in user_borrow_lend_options: user_borrow_lend_options[option]() elif option == "5": print("已退出借阅/归还程序") break else: print("无效的选项,请重新输入") # 将主程序放在最后 if __name__ == "__main__": main() if __name__ == "__main__": main_b()
这里给出代码。