import yaml

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'图书编号:{self.bid},书名：{self.name},图书价格：{self.price},图书简介：{self.summary}'

class BookManagemen:
    def __init__(self):
        self.__books = []

    def __menu(self):
        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):#获取图书编号
        bid = input("请输入图书编号：")
        return bid

    def __get_name(self):#获取图书名称
         name = input("请输入图书名称：")
         return name

    def __get_price(self):#获取图书价格
        while True:
            price = input("请输入图书价格：")
            if price.isdigit():
                return int(price)
            else:
                print("请输入正确格式数字：")

    def __get_summary(self):
        summary = input("请输入图书简介：")
        return summary

    def __add_book(self,bid,name,price,summary):#添加书本
        for s in self.__books:
            if s.bid == bid:
                print(f"{bid}已存在,添加失败")
                return "添加失败"
        book = Book(bid,name,price,summary)
        self.__books.append(book)

    def __modify_book_by_bid(self,bid,name,price,summary):#通过编号修改图书信息
        for s in self.__books:
            if s.bid == bid:
                s.name = name
                s.price = price
                s.summary = summary
                print("修改成功")
                return '修改成功'
        print(f"图书编号{bid}不存在")
        return "修改失败"

    def __delete_book_by_bid(self,bid):#通过编号删除图书
        for s in self.__books:
            if s.bid == bid:
                self.__books.remove(s)
                print(f"图书{s.name}删除成功")
                return"删除成功"
        print("无此图书编号")
        return "删除失败"

    def __delete_book_by_name(self,name):#通过书名删除图书
        del_book = []
        for s in self.__books:
            if s.name == name:
                del_book.append(s)
        if len(del_book) > 0:
            for i in del_book:
                self.__books.remove(i)
            print(f"成功删除{len(del_book)}本名为{name}的书")
            return "删除成功"
        else:
            print(f'书本{name}不存在')
            return "删除失败"
    def __select_book_by_bid(self,bid):#通过编号查询图书
        for s in self.__books:
            if s.bid == bid:
                print("图书信息为：")
                print(f"图书编号：{s.bid},图书名称：{s.name},图书价格：{s.price},图书简介：{s.summary}")
                return '查询成功'
        print(f"图书编号{bid}不存在")
        return '查询失败'

    def __select_book_by_name(self,name):#通过名称查询图书
        select_book = []
        for s in self.__books:
            if s.name == name:
                select_book.append(s)
        if len(select_book) > 0:
            print("图书信息为：")
            for i in select_book:
                print(f"图书编号：{i.bid},图书名称：{i.name},图书价格：{i.price},图书简介：{i.summary}")
            return '查询成功'
        else:
            print(f"图书名称{name}不存在")
            return '查询失败'
    def __show(self):
        print("所有图书信息如下：")
        for s in self.__books:
            print(f"图书编号：{s.bid},图书名称：{s.name},图书价格：{s.price},图书简介：{s.summary}")

    def manager(self):
        while True:
            select_op = self.__menu()
            if len(select_op) == 1 and int(select_op) in range(1,9):
                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_bid(bid, name, price, summary)
                elif select_op == '3':
                    bid = self.__get_bid()
                    self.__delete_book_by_bid(bid)
                elif select_op == '4':
                    name = self.__get_name()
                    self.__delete_book_by_name(name)
                elif select_op == '5':
                    bid = self.__get_bid()
                    self.__select_book_by_bid(bid)
                elif select_op == '6':
                    name = self.__get_name()
                    self.__select_book_by_name(name)
                elif select_op == '7':
                    self.__show()
                else:
                    break
            else:
                print('输入的字符不合法,请重新输入')



if __name__ == '__main__':
    bm = BookManagemen()
    bm.manager()





