赞
踩
""" 5.图书管理系统的编写 图书类Book: 属性:书名name 作者author 是否借出isborrow 书籍位置index 注意:书籍的位置不能重复 图书管理系统BookManager类 存放图书的工具使用列表 方法: 1.添加图书 2.借书 (根据图书名字借书) 要检验图书是否存在、图书是否已经借出 3.还书 4.查询书籍 (根据名字查询) """
- class Book():
- __slots__ = ("name","author","isborrow","index")
- def __init__(self,name,author,index):
- pass
- def __str__(self):
- pass
- class BookManage():
- booklist = [] #图书库
- def start_book(self): #图书库初始化
- pass
- def menu(self):
- self.start_book()
- while True:
- print("欢迎进入图书管理系统".center(100, "="))
- print("""
- 1. 添加图书
- 2. 借书
- 3. 还书
- 4. 查询书籍
- 5. 查看所有书籍
- 6. 退出""")
- select = int(input("请选着功能:"))
- if select == 1:
- self.add_book()
- elif select == 2:
- self.borrow_book()
- elif select == 3:
- self.return_book()
- ...
-
- def check_book(self,bookname):
- pass
- ...
设置两个类,分别为Book、与BookManage(遵循大驼峰规则)
BookManage:内嵌图书库初始化函数
menu函数:内嵌各类增、删、改、查函数
- class Book():
- __slots__ = ("name","author","isborrow","index")
- def __init__(self,name,author,index):
- self.name = name
- self.author = author
- self.index = index
- self.isborrow = False # 初始状态为未借出
- def __str__(self):
- return f"书名为{self.name},作者为{self.author},索引号为{self.index}"
- __repr__ = __str__ # 当打印一个对象的时候,默认会打印该对象的地址,如果在类中重写了__str__函数,则打印对象的时候会调用__str__,从而打印出和对象相关的属性信息
1. __slots__ = (" ",):属性限制,若属性为单一属性,必须加","消除歧义
2. __init__():初始化函数(初始化类对象)、__new__():创建类对象(系统自动调用,无需敲出)
3. __str__(self):重写系统自带函数(可通过dir()查看),重写后不再打印改对象的地址
- booklist = [] #图书库
- def start_book(self): #图书库初始化
- book1 = Book("西游记", "wjy", 1)
- book2 = Book("三国演绎", "qs", 2)
- book3 = Book("红楼梦", "cocair", 3)
- self.booklist = [book1,book2,book3]
- print(f"书籍有{self.booklist}")
创建三个Book对象,初始化图书库(self.booklist = []列表初始化的方法)
- def menu(self):
- self.start_book()
- while True:
- print("欢迎进入图书管理系统".center(100, "="))
- print("""
- 1. 添加图书
- 2. 借书
- 3. 还书
- 4. 查询书籍
- 5. 查看所有书籍
- 6. 退出""")
- select = int(input("请选着功能:"))
- if select == 1:
- self.add_book()
- elif select == 2:
- self.borrow_book()
- pass
- elif select == 3:
- self.return_book()
- elif select == 4:
- bookname = input("请输入书本名:")
- self.check_book(bookname)
- elif select == 5:
- self.show_all_book()
- elif select == 6:
- print("退出成功,欢迎再次登入~~")
- break
- else:
- print("暂无此功能")
用死循环while True控制
- def check_book(self,bookname):
- for bname in self.booklist:
- if bname.name == bookname:
- print(f"{bname.name}存在")
- return True
- return print(f"您输入的{bookname}不存在嗷~~")
- def add_book(self):
- book_name = input("请输入图书名:")
- book_author = input("请输入图书作者:")
- # book_index = input("请输入图书索引号:")
- book_indexs = [book.index for book in self.booklist]
- # for book_self in book_indexs:
- # if book_self != book_index:
- # book = Book(book_name,book_author,book_index)
- # self.booklist.append(book)
- # print("图书添加成功")
- # break
- # else:
- # print("该图书已经在图书库中")
- # break #没有考虑到索引存在,而再次输入新书名情况
- while True:
- bindex = input("请输入存放书的位置:")
- # 筛查书籍位置
- if bindex not in book_indexs:
- # 这是一个新的位置
- break
- else:
- print('该位置已有书籍 请重新设置位置')
- book = Book(book_name,book_author,bindex)
- self.booklist.append(book)
- print("添加图书%s成功!" % (book))
用列表推导式赋值book_indexs:用于判断图书是否存在于图书库中
- def borrow_book(self):
- bookname = input("请输入需要借阅的书:")
- if self.check_book(bookname): # 没错,但面向对象不测底
- for book_self in self.booklist:
- if book_self.name == bookname:
- if book_self.isborrow:
- print(f"无法借阅,该图书{book_self}已经借出")
- break
- else:
- book_self.isborrow = True
- print(f"图书{book_self}借阅成功")
- break
- else:
- print(f"{bookname}不在此图书系统中")
用book_self.isborrow来标志书本是否借出
- def return_book(self):
- bookname = input("请输入待还的书:")
- if self.check_book(bookname):
- for book_self in self.booklist:
- if book_self.name == bookname:
- if book_self.isborrow:
- book_self.isborrow = False
- print(f"该图书{book_self}退还成功")
- break
- else:
- print(f"图书{book_self}无需退还")
- break
- else:
- print(f"{bookname}不在此图书系统中")
- def show_all_book(self):
- for book_ in self.booklist:
- print(book_)
- class Book():
- __slots__ = ("name","author","isborrow","index")
- def __init__(self,name,author,index):
- self.name = name
- self.author = author
- self.index = index
- self.isborrow = False # 初始状态为未借出
- def __str__(self):
- return f"书名为{self.name},作者为{self.author},索引号为{self.index}"
- __repr__ = __str__ # 当打印一个对象的时候,默认会打印该对象的地址,如果在类中重写了__str__函数,则打印对象的时候会调用__str__,从而打印出和对象相关的属性信息
-
- class BookManage():
- booklist = [] #图书库
- def start_book(self): #图书库初始化
- book1 = Book("西游记", "wjy", 1)
- book2 = Book("三国演绎", "qs", 2)
- book3 = Book("红楼梦", "cocair", 3)
- self.booklist = [book1,book2,book3]
- print(f"书籍有{self.booklist}")
-
- def menu(self):
- self.start_book()
- while True:
- print("欢迎进入图书管理系统".center(100, "="))
- print("""
- 1. 添加图书
- 2. 借书
- 3. 还书
- 4. 查询书籍
- 5. 查看所有书籍
- 6. 退出""")
- select = int(input("请选着功能:"))
- if select == 1:
- self.add_book()
- elif select == 2:
- self.borrow_book()
- pass
- elif select == 3:
- self.return_book()
- elif select == 4:
- bookname = input("请输入书本名:")
- self.check_book(bookname)
- elif select == 5:
- self.show_all_book()
- elif select == 6:
- print("退出成功,欢迎再次登入~~")
- break
- else:
- print("暂无此功能")
-
- def check_book(self,bookname):
- for bname in self.booklist:
- if bname.name == bookname:
- print(f"{bname.name}存在")
- return True
- return print(f"您输入的{bookname}不存在嗷~~")
-
- def add_book(self):
- book_name = input("请输入图书名:")
- book_author = input("请输入图书作者:")
- # book_index = input("请输入图书索引号:")
- book_indexs = [book.index for book in self.booklist]
- # for book_self in book_indexs:
- # if book_self != book_index:
- # book = Book(book_name,book_author,book_index)
- # self.booklist.append(book)
- # print("图书添加成功")
- # break
- # else:
- # print("该图书已经在图书库中")
- # break #没有考虑到索引存在,而再次输入新书名情况
- while True:
- bindex = input("请输入存放书的位置:")
- # 筛查书籍位置
- if bindex not in book_indexs:
- # 这是一个新的位置
- break
- else:
- print('该位置已有书籍 请重新设置位置')
- book = Book(book_name,book_author,bindex)
- self.booklist.append(book)
- print("添加图书%s成功!" % (book))
-
-
- def borrow_book(self):
- bookname = input("请输入需要借阅的书:")
- if self.check_book(bookname): # 没错,但面向对象不测底
- for book_self in self.booklist:
- if book_self.name == bookname:
- if book_self.isborrow:
- print(f"无法借阅,该图书{book_self}已经借出")
- break
- else:
- book_self.isborrow = True
- print(f"图书{book_self}借阅成功")
- break
- else:
- print(f"{bookname}不在此图书系统中")
-
- def return_book(self):
- bookname = input("请输入待还的书:")
- if self.check_book(bookname):
- for book_self in self.booklist:
- if book_self.name == bookname:
- if book_self.isborrow:
- book_self.isborrow = False
- print(f"该图书{book_self}退还成功")
- break
- else:
- print(f"图书{book_self}无需退还")
- break
- else:
- print(f"{bookname}不在此图书系统中")
-
- def show_all_book(self):
- for book_ in self.booklist:
- print(book_)
-
- bookmanage = BookManage()
- bookmanage.menu()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。