项目场景:

图书管理系统的编写:
图书类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 jsonclass Book(object):"""该类为图书的类"""def __init__(self, name, author, isborrow, bookID, category):self.name = nameself.author = authorself.isborrow = isborrowself.bookID = bookIDself.category = categoryclass 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:returndef 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)@staticmethoddef is_empty_file():"""json文件中是否存在图书,返回布尔类型"""with open("book.json", "r", encoding="utf-8") as f:is_exist_book = bool(f.readline())return is_exist_bookdef 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 = 0while 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("该图书已经被借出")breakelif book_name not in self.json_list[flag].values() and flag == len(self.json_list) - 1:# 不存在,并且到最后一个了,返回没有该图书print("没有该图书")flag += 1def review_book(self, book_name):"""该函数为还书的操作,执行借书的逆向操作,原理相同"""flag = 0while 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("该图书已经被还")breakelif book_name not in self.json_list[flag].values() and flag == len(self.json_list) - 1:# 不存在,并且到最后一个了,返回没有该图书print("没有该图书")flag += 1def 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 = Noneif 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 = Noneif 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 = 0while flag < len(self.json_list):"""判断图书是否存在,字典的values中,存在则进入借书,借完直接退出;"""if book_name  == self.json_list[flag]["name"]:return flagflag += 1def search_category_book(self,category):flag = 0while flag < len(self.json_list):"""判断图书是否存在,字典的values中,存在则进入借书,借完直接退出;"""if category == self.json_list[flag]["category"]:self.category_list.append(self.json_list[flag])flag += 1def update_book(self, ID):"""该函数为修改图书"""flag = 0while 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"] = nameself.json_list[flag]["author"] = authorself.json_list[flag]["isborrow"] = isborrowself.json_list[flag]["category"] = categoryself.json_write()  # 每一次修改,要提交重新写入print("修改成功!")breakelif ID not in self.json_list[flag].values() and flag == len(self.json_list) - 1:# 不存在,并且到最后一个了,返回没有该图书IDprint("没有该图书ID")flag += 1if __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 = Falsecategory = 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)passelif id == 4:bm.search_book()elif id == 5:update_ID = input("请修改的书名ID")bm.update_book(update_ID)else:print("输入格式错误重新输入")

python实现图书管理系统BookManager类相关推荐

  1. python实现图书管理系统的借阅

    文章目录 具体代码 实践功能 python实现图书管理系统的借阅 具体代码 class Book:def __init__(self,name,author,comment,state=0):self ...

  2. 图书管理系统python源代码-Python实现图书管理系统

    本文实例为大家分享了python实现图书管理系统的具体代码,供大家参考,具体内容如下 import mysql.connector import sys, os import time import ...

  3. python实现图书管理系统——通过excel文件或者TXT文件存放数据

    用python实现图书管理系统--通过excel文件或者TXT文件存放数据 话不多说,先上图,看看运行起来的效果: 由上图可知,我实现的主要功能: 用户注册 用户登录 添加图书 查询图书 删除图书 修 ...

  4. python实现图书管理系统(超详细)

    python实现图书管理系统 图书管理系统 python实现图书管理系统 图书管理系统: 图书的功能: 现在开始添加数据: 增加数据 删除数据 查询数据 图书位置修改 图书的借出 图书的还回 主体界面 ...

  5. python实现图书管理系统(带gui)

    0. 简介 这是这学期一门关于python的课程的大作业,我用了pyqt5来做界面,实现了一个简单的图书管理系统,其功能包括图书信息和读者信息的增删查找,源代码放在最后. 1.实现思路与基本架构 该项 ...

  6. python实现图书管理系统(课设)

    图书管理系统图书管理系统 某图书馆所藏图书如表1所示: 书号 书名 出版社 作者 价格 库存 10001 C语言程序设计 清华大学出版社 张三 51 5 10002 Python程序设计基础 高等教育 ...

  7. 用python实现图书管理系统

    用户注册 def logon():print("欢迎来到图书管理系统注册页面~")username = input("请输入用户名:")if len(usern ...

  8. 某图书管理系统的类图

    某图书管理系统的主要功能如下: 1.图书管理系统的资源目录中记录着所有可供读者借阅的资源,毎项资源都有一个唯一的索引号.系统需登记每项资源的名称.出版时间和资源状态(可借阅或已借出). 2.资源分两类 ...

  9. python实现图书管理系统(完善版)

    user = [['aaa', '123456'], ['bbb', '123456789']] i = 0 f = 0 print('-'*10, '欢迎进入图书管理系统', '-'*10) pri ...

最新文章

  1. Voyage 联合创始人目击苹果无人车,推测其计算堆栈集成在传感器中
  2. python爬虫——web前端基础(1)
  3. pyrDown和pyrUp函数
  4. 三菱a系列motion软体_三菱M70A/64SM重要功能比较
  5. 怎么样得到平台相关的换行符?
  6. ubuntu vim8.0源码安装
  7. HTML5新特征、窍门和技术(1~5)
  8. 定位模块介绍及使用(GPS、北斗、GLONASS、伽利略、准天顶)
  9. android中sharedPreferences的用法
  10. Struts2 文件上传 文件类型 大小过滤
  11. spring+hibernate中clob、blob字段的处理方法
  12. Windows 删除系统恢复分区
  13. 2021-05-21 Matlab实现快速傅里叶逆变换
  14. web编辑器——百度UEditor编辑器使用教程与使用方法
  15. android修改recovery菜单,安卓刷机Recovery菜单介绍刷入教程详解
  16. 如何快速部署静态页面?
  17. Keil5 MDK版本使用ST-LINK下载程序的方法及注意事项
  18. 《如果……》拉迪亚德·吉卜林
  19. 微机原理——基础知识及计算机基本组成
  20. oracle多表关联多字段update

热门文章

  1. 微新余微信号ivxinyu新余农村户口多值钱?@一张表告诉你(农民的逆袭)!
  2. 养猫就像养女朋友,一不留神就得挨揍!
  3. 给图像加logo(不同大小图像叠加)
  4. 如何解决mathtype公式从visol复制到Word中变形的问题
  5. 聂长浪计算机应用与基础答案,李久芳
  6. 浅谈什么是缓存以及与虚拟内存的对比
  7. mysql no wait_MySQL 8.0新特性 -- nowait以及skip locked
  8. 次坐标从0开始_交易“关键词”之 坐标
  9. 友盟+2019 UBDC大数据峰会:数据云智能 灯塔照通途
  10. 在powerpoint中默认的视图是_在PowerPoint中,默认的视图模式是