编写程序完成以下要求:定义图书馆类Library、图书类Book、学生类Student。 其中,图书馆类Library包含私有属性:图书总量和馆藏图书,并包含以下方法的定义: ①初始化方法:__init__(self),用于设置私有属性图书总量为0、馆藏图书为空字典{}。 ②获取图书总量:getTotalAmount (self),返回值为整数。 ③获取可借图书列表:getAvailable (self),返回值为以book对象为元素的列表。 ④添加图书:add (self, *books),没有返回值。 ⑤借阅图书:lendBook(self, student, bookname),返回值为逻辑型,表示借阅是否成功。 ⑥归还图书:returnBook(self, bookname),返回值为逻辑型,表示归还是否成功。 图书类Book包含私有属性:图书名称和作者,并包含以下方法的定义: ①初始化方法:__init__(self, name, author),用于将参数name赋值给私有属性图书名称以及将参数author赋值给私有属性图书作者。 ②文本化图书对象:__str__(self),用于在输出图书对象时,将图书对象转换成字符串对象。 ③获取图书名称:getName(self),用于获取图书对象的私有属性图书名称的值。 学生类Student包含私有属性:学生的学号和姓名,并包含以下方法的定义: ①初始化方法:__init__(self, id, name),用于将参数id赋值给私有属性学生学号以及将参数name赋值给私有属性学生姓名。 编写主程序代码,接收用户输入的图书信息(图书名称和作者),并对上述定义的类和方法进行测试。
时间: 2024-03-26 18:34:46 浏览: 80
下面是实现上述要求的代码:
```python
class Book:
def __init__(self, name, author):
self.__name = name
self.__author = author
def __str__(self):
return "Book: {} by {}".format(self.__name, self.__author)
def getName(self):
return self.__name
class Library:
def __init__(self):
self.__totalAmount = 0
self.__books = {}
def getTotalAmount(self):
return self.__totalAmount
def getAvailable(self):
return [book for book in self.__books.values()]
def add(self, *books):
for book in books:
name = book.getName()
if name in self.__books:
self.__books[name] += 1
else:
self.__books[name] = 1
self.__totalAmount += 1
def lendBook(self, student, bookname):
if bookname in self.__books and self.__books[bookname] > 0:
self.__books[bookname] -= 1
return True
else:
return False
def returnBook(self, bookname):
if bookname in self.__books:
self.__books[bookname] += 1
return True
else:
return False
class Student:
def __init__(self, id, name):
self.__id = id
self.__name = name
if __name__ == '__main__':
library = Library()
# 添加图书
book1 = Book("Python基础教程", "Magnus Lie Hetland")
book2 = Book("Python高级编程", "Wesley Chun")
book3 = Book("Python机器学习", "Sebastian Raschka")
library.add(book1, book2, book3)
# 获取图书总量
print("Total amount of books:", library.getTotalAmount())
# 获取可借图书列表
print("Available books:")
for book in library.getAvailable():
print(book)
# 借阅图书
student1 = Student("001", "张三")
bookname = "Python基础教程"
if library.lendBook(student1, bookname):
print("{} borrowed {}".format(student1.__dict__["_Student__name"], bookname))
else:
print("{} failed to borrow {}".format(student1.__dict__["_Student__name"], bookname))
# 归还图书
if library.returnBook(bookname):
print("{} returned {}".format(student1.__dict__["_Student__name"], bookname))
else:
print("{} failed to return {}".format(student1.__dict__["_Student__name"], bookname))
```
运行结果如下:
```
Total amount of books: 3
Available books:
Book: Python基础教程 by Magnus Lie Hetland
Book: Python高级编程 by Wesley Chun
Book: Python机器学习 by Sebastian Raschka
张三 borrowed Python基础教程
张三 returned Python基础教程
```
阅读全文