赞
踩
图书管理系统的编写:
图书类Book:
属性:书名name 作者author 是否借出isborrow 书籍ID bookID 书籍类型category
注意:书籍ID不能重复
图书管理系统BookManager类
存放图书的工具使用列表
方法:
1.添加图书
2.借书 (根据图书名字借书)要检验图书是否存在、图书是否已经借出
3.还书
4.查询书籍 (根据名字查询, 根据类别查询)
5.修改书籍信息(根据书籍ID修改)
6.本地化保存数据信息(json格式)
设计两个类,图书类Book,图书管理系统BookManager类(需要存储book对象)/以及每一次json文件的数据列表。
代码需要自己创建一个json文件
保存代码,创建一个book.json文件
""" 图书管理系统的编写: 图书类Book: 属性:书名name 作者author 是否借出isborrow 书籍ID bookID 书籍类型category 注意:书籍ID不能重复 图书管理系统BookManager类 存放图书的工具使用列表 方法: 1.添加图书 2.借书 (根据图书名字借书)要检验图书是否存在、图书是否已经借出 3.还书 4.查询书籍 (根据名字查询, 根据类别查询) 5.修改书籍信息(根据书籍ID修改) 6.本地化保存数据信息(json格式) """ import json class Book(object): """该类为图书的类""" def __init__(self, name, author, isborrow, bookID, category): self.name = name self.author = author self.isborrow = isborrow self.bookID = bookID self.category = category class BookManager(object): book_list = [] # 存储book的对象列表 json_list = [] # 读取json文件,并且战时存储json数据的列表 category_list = [] #存储category类别的数据信息 def __init__(self): """初始化读取json,放入json_list中""" try: self.json_read() except Exception as e: return def json_read(self): """封装读取json文件的函数""" with open('book.json', mode='r', encoding='utf-8') as file_object: self.json_list = json.load(file_object) def json_write(self): """封装写入json文件数据""" with open('book.json', mode='w', encoding='utf-8') as file_object: json.dump(self.json_list, file_object) @staticmethod def is_empty_file(): """json文件中是否存在图书,返回布尔类型""" with open("book.json", "r", encoding="utf-8") as f: is_exist_book = bool(f.readline()) return is_exist_book def add_book(self, book_object): """增加图书,写入json中,初始化读取json,放入json_list中""" self.book_list.append(book_object) dic = {'id': book_object.bookID, 'name': book_object.name, 'author': book_object.author, 'isborrow': False, 'category': book_object.category} self.json_list.append(dic) self.json_write() def borrow_book(self, book_name): """借书的函数""" flag = 0 while flag < len(self.json_list): """判断图书是否存在,字典的values中,存在则进入借书,借完直接退出;""" if book_name in self.json_list[flag].values(): if self.json_list[flag]["isborrow"] == False: print("可以借书") data = {"id": self.json_list[flag]["id"], "name": self.json_list[flag]["name"], "author": self.json_list[flag]["author"], "isborrow": True, "category": self.json_list[flag]["category"]} self.json_list[flag] = data # 修改对应列表的索引值 self.json_write() # 每一次修改,要提交重新写入 print("借书成功!") else: print("该图书已经被借出") break elif book_name not in self.json_list[flag].values() and flag == len(self.json_list) - 1: # 不存在,并且到最后一个了,返回没有该图书 print("没有该图书") flag += 1 def review_book(self, book_name): """该函数为还书的操作,执行借书的逆向操作,原理相同""" flag = 0 while flag < len(self.json_list): """判断图书是否存在,字典的values中,存在则进入借书,借完直接退出;""" if book_name in self.json_list[flag].values(): if self.json_list[flag]["isborrow"] == True: data = {"id": self.json_list[flag]["id"], "name": self.json_list[flag]["name"], "author": self.json_list[flag]["author"], "isborrow": False, "category": self.json_list[flag]["category"]} self.json_list[flag] = data # 修改对应列表的索引值 self.json_write() # 每一次修改,要提交重新写入 print("还书成功!") else: print("该图书已经被还") break elif book_name not in self.json_list[flag].values() and flag == len(self.json_list) - 1: # 不存在,并且到最后一个了,返回没有该图书 print("没有该图书") flag += 1 def search_book(self): """查询书籍,先判断是否存在图书""" is_exist_book = self.is_empty_file() if is_exist_book: select = input("请选择查询方式:(1.图书名查询)(2.图书类别查询[文学,科学])") if select == "1": book_name = input("输入查询的图书名") v = self.search_name_book(book_name) #获取图书名的索引 if v == None: #none则代表没有返回索引,即无图书信息 print("无图书信息") else: print("图书id\t图书名\t图书作者\t是否可借\t图书类别") book = self.json_list[v] id = book["id"] name = book["name"] author = book["name"] isborrow = None if book["isborrow"]: isborrow = "否" else: isborrow = "是" category = book["category"] print("{}\t\t{}\t\t{}\t\t{}\t\t{}".format(id, name, author, isborrow, category)) elif select == "2": book_category = input("输入查询的图书类别") self.search_category_book(book_category) #将类别的列表打印出来 for book in self.category_list: id = book["id"] name = book["name"] author = book["name"] isborrow = None if book["isborrow"]: isborrow = "否" else: isborrow = "是" category = book["category"] print("{}\t\t{}\t\t{}\t\t{}\t\t{}".format(id, name, author, isborrow, category)) self.category_list = [] #每一次查询完,将暂存数据的列表至为空 else: print("输入错误") else: print("没有图书信息,请添加图书") def search_name_book(self, book_name): """依据图书姓名查询""" flag = 0 while flag < len(self.json_list): """判断图书是否存在,字典的values中,存在则进入借书,借完直接退出;""" if book_name == self.json_list[flag]["name"]: return flag flag += 1 def search_category_book(self,category): flag = 0 while flag < len(self.json_list): """判断图书是否存在,字典的values中,存在则进入借书,借完直接退出;""" if category == self.json_list[flag]["category"]: self.category_list.append(self.json_list[flag]) flag += 1 def update_book(self, ID): """该函数为修改图书""" flag = 0 while flag < len(self.json_list): """判断图书是否存在,字典的values中,存在则进入借书,借完直接退出;""" if ID in self.json_list[flag].values(): if self.json_list[flag]["id"] == ID: # 输入修改的图书,依据图书id修改 name = input("添加的书名") author = input("添加的作者") isborrow = bool(int(input("图书是否被借出,输入:(0代表未借出,1代表借出)"))) category = input("请输入图书种类:文学,科学") # 将修改后的值赋值给json_list,并提交 self.json_list[flag]["name"] = name self.json_list[flag]["author"] = author self.json_list[flag]["isborrow"] = isborrow self.json_list[flag]["category"] = category self.json_write() # 每一次修改,要提交重新写入 print("修改成功!") break elif ID not in self.json_list[flag].values() and flag == len(self.json_list) - 1: # 不存在,并且到最后一个了,返回没有该图书ID print("没有该图书ID") flag += 1 if __name__ == '__main__': print("欢迎来到图书管理系统") bm = BookManager() while True: id = int(input("请输入你的选择,1.添加图书;2.借书;3.还书;4.查询书籍;5.修改书籍;")) if id == 1: bookID = input("请输入ID") name = input("添加的书名") author = input("添加的作者") isborrow = False category = input("请输入图书种类:文学,科学") book = Book(name, author, isborrow, bookID, category) bm.add_book(book) elif id == 2: """借书 (根据图书名字借书)要检验图书是否存在、图书是否已经借出 """ book_name = input("请输入借书的书名") bm.borrow_book(book_name) elif id == 3: review_name = input("请输入还书的书名") bm.review_book(review_name) pass elif id == 4: bm.search_book() elif id == 5: update_ID = input("请修改的书名ID") bm.update_book(update_ID) else: print("输入格式错误重新输入")
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。