采用链表数据结构实现一“图书管理系统〞,为用户提供管理和查询服务。 图书信息包括8个数据项:书名,ISBN、作者、出版社、出版时间,入库时间, 库存量(图书馆购买此书的数量),借阅数(被借阅的数量)等信息。完成以下 操作: (1)录入:图书信息(至少10条记录): (2)删除:删除某一本图书的信息; (3)修改:修改某一本图书的信息: (4)查询:根据书名或图书ISBV等查询图书信息(查询方法不限)。 (5)借书:借出一本书,该书的借阅数增加一本。 (6)还书:还回一本书,该书的借阅数减少一本。 (7)统计:统计所有借出的图书数目,即所有图书借阅数之和。 (8)输出:输出所查询图书的信息,要求格式清晰,方便查看。
时间: 2023-12-23 12:03:27 浏览: 184
好的,以下是一个简单的图书管理系统的示例代码:
```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("输入有误,请重新输入!")
```
以上代码仅供参考,实际使用时需要根据需求进行调整和完善。
阅读全文