采用链表数据结构实现一“图书管理系统〞,为用户提供管理和查询服务。 图书信息包括8个数据项:书名,ISBN、作者、出版社、出版时间,入库时间, 库存量(图书馆购买此书的数量),借阅数(被借阅的数量)等信息。完成以下 操作: (1)录入:图书信息(至少10条记录): (2)删除:删除某一本图书的信息; (3)修改:修改某一本图书的信息: (4)查询:根据书名或图书ISBV等查询图书信息(查询方法不限)。 (5)借书:借出一本书,该书的借阅数增加一本。 (6)还书:还回一本书,该书的借阅数减少一本。 (7)统计:统计所有借出的图书数目,即所有图书借阅数之和。 (8)输出:输出所查询图书的信息,要求格式清晰,方便查看。

时间: 2023-12-23 20:03:27 浏览: 36
好的,以下是一个简单的图书管理系统的示例代码: ```python # 定义一个图书节点类 class BookNode: def __init__(self, name, isbn, author, publisher, publish_time, storage_time, stock, borrow): self.name = name self.isbn = isbn self.author = author self.publisher = publisher self.publish_time = publish_time self.storage_time = storage_time self.stock = stock self.borrow = borrow self.next = None # 定义一个图书链表类 class BookList: def __init__(self): self.head = None # 添加图书节点 def add_book(self, name, isbn, author, publisher, publish_time, storage_time, stock, borrow): node = BookNode(name, isbn, author, publisher, publish_time, storage_time, stock, borrow) if self.head is None: self.head = node else: p = self.head while p.next is not None: p = p.next p.next = node # 删除图书节点 def delete_book(self, name): if self.head is None: print("图书馆中没有任何图书!") return if self.head.name == name: self.head = self.head.next return p = self.head while p.next is not None: if p.next.name == name: p.next = p.next.next return p = p.next print("图书馆中没有找到该书!") # 修改图书节点 def update_book(self, name): if self.head is None: print("图书馆中没有任何图书!") return p = self.head while p is not None: if p.name == name: p.isbn = input("请输入新的ISBN号:") p.author = input("请输入新的作者:") p.publisher = input("请输入新的出版社:") p.publish_time = input("请输入新的出版时间:") p.storage_time = input("请输入新的入库时间:") p.stock = int(input("请输入新的库存量:")) p.borrow = int(input("请输入新的借阅数:")) return p = p.next print("图书馆中没有找到该书!") # 查询图书节点 def search_book(self, name): if self.head is None: print("图书馆中没有任何图书!") return p = self.head while p is not None: if p.name == name or p.isbn == name: print("书名:", p.name) print("ISBN:", p.isbn) print("作者:", p.author) print("出版社:", p.publisher) print("出版时间:", p.publish_time) print("入库时间:", p.storage_time) print("库存量:", p.stock) print("借阅数:", p.borrow) return p = p.next print("图书馆中没有找到该书!") # 借书操作 def borrow_book(self, name): if self.head is None: print("图书馆中没有任何图书!") return p = self.head while p is not None: if p.name == name: if p.stock > 0: p.stock -= 1 p.borrow += 1 print("借书成功!") else: print("库存量不足,无法借阅!") return p = p.next print("图书馆中没有找到该书!") # 还书操作 def return_book(self, name): if self.head is None: print("图书馆中没有任何图书!") return p = self.head while p is not None: if p.name == name: p.stock += 1 p.borrow -= 1 print("还书成功!") return p = p.next print("图书馆中没有找到该书!") # 统计所有借出的图书数目 def count_borrow(self): count = 0 p = self.head while p is not None: count += p.borrow p = p.next print("所有借出的图书数目为:", count) # 输出图书信息 def print_book(self, name): if self.head is None: print("图书馆中没有任何图书!") return p = self.head while p is not None: if p.name == name or p.isbn == name: print("书名:", p.name) print("ISBN:", p.isbn) print("作者:", p.author) print("出版社:", p.publisher) print("出版时间:", p.publish_time) print("入库时间:", p.storage_time) print("库存量:", p.stock) print("借阅数:", p.borrow) return p = p.next print("图书馆中没有找到该书!") # 测试代码 if __name__ == "__main__": book_list = BookList() book_list.add_book("Python编程从入门到实践", "978-7-121-32070-8", "Eric Matthes", "人民邮电出版社", "2018-06", "2018-07", 5, 2) book_list.add_book("深入浅出MySQL", "978-7-121-32071-8", "李卫民", "人民邮电出版社", "2008-08", "2018-07", 3, 1) book_list.add_book("算法图解", "978-7-121-32072-8", "Aditya Bhargava", "人民邮电出版社", "2017-09", "2018-07", 2, 0) book_list.add_book("计算机网络", "978-7-121-32073-8", "谢希仁", "电子工业出版社", "2017-09", "2018-07", 4, 1) book_list.add_book("数据结构与算法分析", "978-7-121-32074-8", "Mark Allen Weiss", "机械工业出版社", "2014-08", "2018-07", 3, 0) book_list.add_book("C++ Primer", "978-7-121-32075-8", "Stanley B. Lippman", "机械工业出版社", "2013-09", "2018-07", 2, 1) book_list.add_book("C语言程序设计", "978-7-121-32076-8", "谭浩强", "清华大学出版社", "2010-08", "2018-07", 5, 2) book_list.add_book("Java核心技术", "978-7-121-32077-8", "Cay S. Horstmann", "机械工业出版社", "2016-07", "2018-07", 4, 1) book_list.add_book("高性能MySQL", "978-7-121-32078-8", "Baron Schwartz", "人民邮电出版社", "2014-10", "2018-07", 3, 0) book_list.add_book("C#高级编程", "978-7-121-32079-8", "Christian Nagel", "人民邮电出版社", "2014-05", "2018-07", 2, 1) while True: print("请选择操作:") print("1. 录入图书信息") print("2. 删除图书信息") print("3. 修改图书信息") print("4. 查询图书信息") print("5. 借书") print("6. 还书") print("7. 统计借出的图书数目") print("8. 输出图书信息") print("9. 退出系统") choice = input("请输入操作编号:") if choice == "1": name = input("请输入书名:") isbn = input("请输入ISBN号:") author = input("请输入作者:") publisher = input("请输入出版社:") publish_time = input("请输入出版时间:") storage_time = input("请输入入库时间:") stock = int(input("请输入库存量:")) borrow = int(input("请输入借阅数:")) book_list.add_book(name, isbn, author, publisher, publish_time, storage_time, stock, borrow) print("图书录入成功!") elif choice == "2": name = input("请输入要删除的书名:") book_list.delete_book(name) print("图书删除成功!") elif choice == "3": name = input("请输入要修改的书名:") book_list.update_book(name) print("图书修改成功!") elif choice == "4": name = input("请输入要查询的书名或ISBN号:") book_list.search_book(name) elif choice == "5": name = input("请输入要借阅的书名:") book_list.borrow_book(name) elif choice == "6": name = input("请输入要归还的书名:") book_list.return_book(name) elif choice == "7": book_list.count_borrow() elif choice == "8": name = input("请输入要输出的书名或ISBN号:") book_list.print_book(name) elif choice == "9": print("感谢您的使用!") break else: print("输入有误,请重新输入!") ``` 以上代码仅供参考,实际使用时需要根据需求进行调整和完善。

相关推荐

最新推荐

recommend-type

C语言数据结构实现链表逆序并输出

主要介绍了C语言数据结构实现链表逆序并输出的相关资料,需要的朋友可以参考下
recommend-type

数据结构实验报告之一元多项式求和(链表)报告2.doc

把任意给定的两个一元多项式P(x) ,Q(x) 输入计算机,计算它们的和并输出计算结果。 实验内容: 1.问题描述: 一元多项式求和——把任意给定的两个一元多项式P(x) ,Q(x) 输入计算机,计算它们的和并输出计算结果。
recommend-type

《图书管理系统》数据结构课设报告(1).doc

数据结构期末大作业,题目是图书管理系统,只完成了图书管理系统的基本功能,使用C语言结构体链表等知识。
recommend-type

C语言实现食堂就餐管理系统(带链表)

主要为大家详细介绍了C语言实现食堂就餐管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C语言:一元多项式加减法运算(链表 附答案).docx

C语言链表的入门题,里面提供了两种思路供参考,用链表来实现一元多项式的加减法,并按照一定规律输出。也是练习链表和排序算法的一道小实验,初学链表的小伙伴可以参考参考噢
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。