|
#定义一个图书类
|
|
class Book:
|
|
# 使用构造函数,接收实例化类时需要传入的参数
|
|
def __init__(self , bid , name , price , summary):
|
|
# 使用实例属性接收传入的值
|
|
self.bid = bid
|
|
self.name = name
|
|
self.price = price
|
|
self.summary = summary
|
|
# 重写对象的显示格式方法
|
|
def __str__(self):
|
|
return f"Bid: {self.bid} --- Name: {self.name} --- Price: {self.price} --- Summary: {self.summary}"
|
|
|
|
# 封装管理类
|
|
|
|
|
|
class BookManagement:
|
|
def __init__(self):
|
|
self.books = []
|
|
def __menu(self):
|
|
'''
|
|
菜单函数:展示图书生管理系统菜单信息,并获取用户输入
|
|
:return: 用户输入的编号字符串
|
|
'''
|
|
print("*****************************")
|
|
print("* 图书管理系统 *")
|
|
print("* 1. 添加新图书信息 *")
|
|
print("* 2. 通过编号修改图书信息 *")
|
|
print("* 3. 通过编号删除图书信息 *")
|
|
print("* 4. 通过书名删除图书信息 *")
|
|
print("* 5. 通过编号查询图书信息 *")
|
|
print("* 6. 通过书名查询图书信息 *")
|
|
print("* 7. 显示所有图书信息 *")
|
|
print("* 8. 退出系统 *")
|
|
print("*****************************")
|
|
select_op = input("输入编号选择操作:")
|
|
return select_op
|
|
|
|
def __get_bid(self):
|
|
'''
|
|
获取用户输入的编号
|
|
:return: 返回编号字符串
|
|
'''
|
|
bid = input("请输入图书编号:")
|
|
return bid
|
|
|
|
def __get_name(self):
|
|
'''
|
|
获取用户输入的图书名称
|
|
:return: 返回图书名称字符串
|
|
'''
|
|
name = input("请输入图书的名称:")
|
|
return name
|
|
|
|
def __get_price(self):
|
|
'''
|
|
获取用户输入的图书的价格
|
|
:return: 返回图书价格字符串
|
|
'''
|
|
while True:
|
|
price = input("请输入图书的价格:")
|
|
if price.isdigit():
|
|
return int(price)
|
|
else:
|
|
print("输入图书的价格不合法,请输入价格")
|
|
|
|
def __get_summary(self):
|
|
'''
|
|
获取用户输入的图书简介
|
|
:return: 返回图书简介字符串
|
|
'''
|
|
summary = input("请输入图书简介:")
|
|
return summary
|
|
|
|
def add_book(self, bid, name, price , summary):
|
|
'''
|
|
添加图书
|
|
:param bid: 图书 bid
|
|
:param name: 图书名称
|
|
:param price: 图书价格
|
|
:param summary: 图书简介
|
|
:return: 操作提示信息
|
|
'''
|
|
for s in self.books:
|
|
if s.bid == bid:
|
|
print("图书编号已存在,添加失败")
|
|
return "添加失败"
|
|
else:
|
|
book = Book(bid , name , price , summary)
|
|
self.books.append(book)
|
|
print("添加图书信息成功")
|
|
return '添加成功'
|
|
|
|
def modify_book_by_id(self, bid, name, price, summary):
|
|
'''
|
|
通过学号修改图书信息
|
|
:param bid: 图书编号
|
|
:return: 操作提示信息
|
|
'''
|
|
for s in self.books:
|
|
if s.bid == bid:
|
|
s.name = name
|
|
s.price = price
|
|
s.summary = summary
|
|
print("修改成功")
|
|
return "修改成功"
|
|
else:
|
|
print(f'没有 {bid} 对应的图书信息')
|
|
return "修改失败"
|
|
|
|
def delete_book_by_id(self , bid):
|
|
'''
|
|
通过BID删除图书信息
|
|
:param bid: 图书编号BID
|
|
:return: 操作提示信
|
|
'''
|
|
for s in self.books:
|
|
if s.bid == bid:
|
|
self.books.remove(s)
|
|
print("删除成功")
|
|
return "删除成功"
|
|
else:
|
|
print(f'没有 {bid} 对应的图书信息')
|
|
return "删除失败"
|
|
|
|
def delete_book_by_name(self, name):
|
|
'''
|
|
通过图书名称 删除所有符合的图书
|
|
:param name: 图书名称
|
|
:return: 操作提示信息
|
|
'''
|
|
exist_s = []
|
|
# 找出所有要删除的图书
|
|
for s in self.books:
|
|
if s.name == name:
|
|
exist_s.append(s)
|
|
|
|
# 开始删除
|
|
if len(exist_s) > 0:
|
|
for s in exist_s:
|
|
self.books.remove(s)
|
|
print(f"名称为 { name } 的图书删除成功")
|
|
else:
|
|
print(f"成功删除 {len(exist_s)} 个图书")
|
|
return "删除成功"
|
|
else:
|
|
print(f"图书【{name}】不存在,无法删除")
|
|
return "删除失败"
|
|
|
|
def query_book_by_id(self, bid):
|
|
'''
|
|
通过编号查询图书信息
|
|
:param bid: 图书编号
|
|
:return: 操作提示信息
|
|
'''
|
|
for s in self.books:
|
|
if s.bid == bid:
|
|
print(f"图书编号 {bid} 的图书信息如下:")
|
|
print(f"编号:{s.bid},名称:{s.name},价格:{s.price},简介:{s.summary}")
|
|
return "查询成功"
|
|
else:
|
|
print(f"图书编号 {bid} 的图书不存在")
|
|
return "查询失败"
|
|
|
|
def query_book_by_name(self, name):
|
|
'''
|
|
通过名称查询图书信息
|
|
:param name:
|
|
:return: 操作提示信息
|
|
'''
|
|
exist_s = []
|
|
for s in self.books:
|
|
if s.name == name:
|
|
exist_s.append(s)
|
|
|
|
if len(exist_s) > 0:
|
|
print(f"名称为 {name} 的图书共 {len(exist_s)} 本,信息如下:")
|
|
for s in exist_s:
|
|
print(f"编号{s.bid},名称:{s.name},价格:{s.price},简介:{s.summary}")
|
|
return "查询成功"
|
|
else:
|
|
print(f"名称为 {name} 的图书不存在")
|
|
return "查询失败"
|
|
|
|
def show(self):
|
|
'''
|
|
显示所有图书信息
|
|
:return: 格式化的图书信息
|
|
'''
|
|
print("所有图书信息如下:")
|
|
for s in self.books:
|
|
print(f"编号{s.bid},名称:{s.name},价格:{s.price},简介:{s.summary}")
|
|
|
|
|
|
def manager(self):
|
|
'''
|
|
管理方法
|
|
:return:
|
|
'''
|
|
while True:
|
|
select_op = self.__menu()
|
|
if len(select_op) == 1 and select_op in "12345678":
|
|
if select_op == "1":
|
|
bid = self.__get_bid()
|
|
name = self.__get_name()
|
|
price = self.__get_price()
|
|
summary = self.__get_summary()
|
|
self.add_book(bid , name , price , summary)
|
|
elif select_op == "2":
|
|
bid = self.__get_bid()
|
|
name = self.__get_name()
|
|
price = self.__get_price()
|
|
summary = self.__get_summary()
|
|
self.modify_book_by_id(bid, name, price, summary)
|
|
elif select_op == "3":
|
|
bid = self.__get_bid()
|
|
self.delete_book_by_id(bid)
|
|
elif select_op == "4":
|
|
name = self.__get_name()
|
|
self.delete_book_by_name(name)
|
|
elif select_op == "5":
|
|
bid = self.__get_bid()
|
|
self.query_book_by_id(bid)
|
|
elif select_op == "6":
|
|
name = self.__get_name()
|
|
self.query_book_by_name(name)
|
|
elif select_op == "7":
|
|
self.show()
|
|
else:
|
|
break
|
|
else:
|
|
print("输入的数据不合法,请输入在合法范围内的操作编号!!!")
|
|
|
|
if __name__ == '__main__':
|
|
m = BookManagement()
|
|
m.manager()
|
|
|
|
|