第一步:标准化先获得信息
#coding=utf-8 import traceback import pickle import os import os.path class GRLlibrary(object): '''huiziz的图书馆''' def __init__(self,name,location): self.name=name self.location=location self.book_list=[] #获取图书馆的基本信息 def get_library_info(self): info="名字:%s\n地点:%s"%(self.name,self.location) return info #只有当文件本身被执行【被当做模块被其他程序引用】的时候,才会执行if里面的代码[下面代码的作用] if __name__=="__main__": gr_library=GRLlibrary("光荣之路北京图书馆","北京") print (gr_library.get_library_info())
运行结果:
E:\workspace-python\test>py -3 a.py
名字:光荣之路北京图书馆
地点:北京
第二步:打印出command命令
class Book(object): def __init__(self,name,author,tag,price): self.__name = name self.__author = author self.__tag = tag self.__price = price def get_book_name(self): return self.__name def set_book_name(self,new_name): self.__name = new_name def book_info(self): print(self.name,self.author,self.tag,self.price) class GRLibrary(object): '''吴老师创建的创建的光荣之路图书馆!''' def __init__(self,name,location): self.name = name self.location = location def get_library_info(self): info = "名字:%s \n地点:%s" %(self.name,self.location) return info def list_info(): print(""" 图书馆可以输入如下命令进行操作: create:创建图书馆 use:使用某个图书馆 add:增加图书 borrow:借阅图书 lend:还书 list:查看库中的图书列表 search:查看库中是否存在某本书 """) library = None def create(library_name,location): global library library = GRLibrary(library_name,location) if __name__ == "__main__": list_info() #gr_library = GRLibrary("光荣之路北京图书馆","北京") #print(gr_library.get_library_info())
运行结果:
E:\workspace-python\test>py -3 a.py
图书馆可以输入如下命令进行操作:
create:创建图书馆
use:使用某个图书馆
add:增加图书
borrow:借阅图书
lend:还书
list:查看库中的图书列表
search:查看库中是否存在某本书
第三步:实现创建图书馆、添加图书、查看库中图书列表-雏形
import traceback import pickle class Book(object): def __init__(self,name,author,tag,price): self.__name = name self.__author = author self.__tag = tag self.__price = price def get_book_name(self): return self.__name def set_book_name(self,new_name): self.__name = new_name def book_info(self): print(self.name,self.author,self.tag,self.price) class GRLibrary(object): '''吴老师创建的创建的光荣之路图书馆!''' def __init__(self,name,location): self.name = name self.location = location self.book_list=[] def get_library_info(self): info = "名字:%s \n地点:%s" %(self.name,self.location) return info def add(self,book): self.book_list.append(book) #print ("%s图书入库成功"%book.get_book_name()) def list(self): for book in self.book_list: #print (book) #我写的 print (book.get_book_name()) #获取每本书的书名 def list_info(): print(""" 图书馆可以输入如下命令进行操作: create:创建图书馆 use:使用某个图书馆 add:增加图书 borrow:借阅图书 lend:还书 list:查看库中的图书列表 search:查看库中是否存在某本书 exit:退出 """) library = None def create_library(): global library library_name=input("请输入图书馆的名字:").strip() location=input("请输入图书馆的地址:").strip() library = GRLibrary(library_name,location) ####这个定义...嗯 print (("********"+"["+"%s"+"]"+"图书馆创建成功"+"********")%library_name) def add_book(): book_name=input("请输入书名:").strip() author_name=input("请输入作者名:").strip() tag=input("请输入分类:").strip() price=input("请输入书的价格:").strip() book=Book(book_name,author_name,tag,price) if library is not None: library.add(book) print (("********"+"["+"%s"+"]"+"图书入库成功"+"********")%book_name) else: print ("图书馆还未创建,请输入create命令进行创建!") def list_book(): if library is not None: print ("图书列表为:") library.list() command={"create":"create_library","add":"add_book","list":"list_book"} #前面对应list_info中的值,后面对应要调用的方法 if __name__ == "__main__": list_info() while 1: try: user_command=input("请输入操作命令:").lower().strip() if user_command=="exit": break eval(command[user_command]+"()") #执行程序:输入的东西+user_command就可以调用函数了 except: traceback.print_exc() #打印报错的堆栈信息 if user_command not in command: print ("您输入的命令不存在") else: print ("您输入的命令有误,请按照命令列表输入:") print (list_info()) #gr_library = GRLibrary("光荣之路北京图书馆","北京") #print(gr_library.get_library_info())
运行结果:
E:\workspace-python\test>py -3 a.py 图书馆可以输入如下命令进行操作: create:创建图书馆 use:使用某个图书馆 add:增加图书 borrow:借阅图书 lend:还书 list:查看库中的图书列表 search:查看库中是否存在某本书 exit:退出 请输入操作命令:create 请输入图书馆的名字:zita 请输入图书馆的地址:虹口 ********[zita]图书馆创建成功******** 请输入操作命令:add 请输入书名:测试开发 请输入作者名:吴老师 请输入分类:测试 请输入书的价格:68 ********[测试开发]图书入库成功******** 请输入操作命令:add 请输入书名:自动化测试 请输入作者名:吴老师 请输入分类:测试 请输入书的价格:99 ********[自动化测试]图书入库成功******** 请输入操作命令:list 图书列表为: 测试开发 自动化测试
终极:写入文件+添加注释
import traceback import pickle import os import os.path class Book(object): def __init__(self,name,author,tag,price): #定义4个书的实例变量 self.__name = name self.__author = author self.__tag = tag self.__price = price def get_book_name(self): return self.__name def set_book_name(self,new_name): self.__name = new_name def book_info(self): print(self.name,self.author,self.tag,self.price) class GRLibrary(object): '''吴老师创建的创建的光荣之路图书馆!''' def __init__(self,name,location): self.name = name self.location = location self.book_list=[] #存储所有的书的实例对象 def get_library_info(self): info = "名字:%s \n地点:%s" %(self.name,self.location) return info def add(self,book): self.book_list.append(book) #print ("%s图书入库成功"%book.get_book_name()) def list(self): for book in self.book_list: #print (book) #我写的 print (book.get_book_name()) #获取每本书的书名 def find(self): book_search=input("请输入要查找书的名字:") for book in self.book_list: if book.get_book_name()==book_search: print ("找到了%s"%book_search) break else: print ("没有找到%s"%book_search) def list_info(): print(""" 图书馆可以输入如下命令进行操作: create:创建图书馆 use:使用某个图书馆 add:增加图书 borrow:借阅图书 lend:还书 list:查看库中的图书列表 find:查看库中是否存在某本书 exit:退出 """) library = None library_data_file_path="" #封装了一个函数,这个函数实质上是在操作实例对象。所有要输入的参数通过命令行的方式让用户输入,然后再操作类。这个设计模式叫代理 #一个函数把这个类的所有操作都实现了 def create_library(): global library library_name=input("请输入图书馆的名字:").strip() location=input("请输入图书馆的地址:").strip() library = GRLibrary(library_name,location) ####这个定义...嗯 print ("图书馆创建成功") def use_library(): global library global data_file_path data_file_path=input("请输入图书馆数据文件的位置:").strip() if os.path.exists(data_file_path): try: fp=open(data_file_path,"rb") library=pickle.load(fp) ###盲点。通过pickle模块的反序列化操作,从文件中创建上一次程序保存的对象。 library_data_file_path=data_file_path #库恢复出来了 except: print ("图书馆的数据文件没有合法的数据") def add_book(): book_name=input("请输入书名:").strip() author_name=input("请输入作者名:").strip() tag=input("请输入分类:").strip() price=input("请输入书的价格:").strip() book=Book(book_name,author_name,tag,price) if library is not None: library.add(book) print (("["+"%s"+"]"+"图书入库成功")%book_name) else: print ("图书馆还未创建,请输入create命令进行创建!") def list_book(): if library is not None: library.list() def find_book(): global library if library is not None: library.find() command={"create":"create_library","add":"add_book","list":"list_book","use":"use_library","find":"find_book"} #前面对应list_info中的值,后面对应要调用的方法 if __name__ == "__main__": list_info() while 1: try: user_command=input("请输入操作命令:").lower().strip() if user_command=="exit": if library_data_file_path=="": library_data_file_path=input("请输入保存图书馆数据的数据文件路径:") fp= open(library_data_file_path,"wb") if library is not None: pickle.dump(library,fp) #序列化。通过pickle模块的序列化操作将程序中运行的对象信息保存到文件中去,永久存储 fp.close() break eval(command[user_command]+"()") #执行程序:输入的东西+user_command就可以调用函数了 except: traceback.print_exc() #打印报错的堆栈信息,调试用 if user_command not in command: print ("您输入的命令不存在") else: print ("您输入的命令有误,请按照命令列表输入:") print (list_info()) continue
运行结果:
E:\workspace-python\test>py -3 a.py 图书馆可以输入如下命令进行操作: create:创建图书馆 use:使用某个图书馆 add:增加图书 borrow:借阅图书 lend:还书 list:查看库中的图书列表 find:查看库中是否存在某本书 exit:退出 请输入操作命令:create 请输入图书馆的名字:zita 请输入图书馆的地址:虹口 图书馆创建成功 请输入操作命令:add 请输入书名:测试开发 请输入作者名:吴老师 请输入分类:测试 请输入书的价格:68 [测试开发]图书入库成功 请输入操作命令:add 请输入书名:自动化测试 请输入作者名:吴老师 请输入分类:测试 请输入书的价格:99 [自动化测试]图书入库成功 请输入操作命令:list 测试开发 自动化测试 请输入操作命令:exit 请输入保存图书馆数据的数据文件路径:e:\\a.py E:\workspace-python\test>py -3 a.py 图书馆可以输入如下命令进行操作: create:创建图书馆 use:使用某个图书馆 add:增加图书 borrow:借阅图书 lend:还书 list:查看库中的图书列表 find:查看库中是否存在某本书 exit:退出 请输入操作命令:use 请输入图书馆数据文件的位置:e:\\a.py 请输入操作命令:list 测试开发 自动化测试