目录
功能模块:
实现思路:
运行功能演示:
具体实现过程:
定义商品类:
定义商品管理类
定义显示商品信息函数
输入销量函数:
添加商品信息:
删除商品信息
修改商品信息
导入商品信息
导出商品信息
求商品平均销量
求商品最高销量
求商品最低销量
最后定义菜单函数和主函数:
完整代码:
功能模块:
商品基本信息管理和商品销量统计。
基本信息管理模块的主要功能有商品基本信息的添加、删除、修改、显示和数据的导入导出
商品销量统计管理模块的主要功能有统计商品的最高销量、最低销量和平均销量。
实现思路:
设计一个商品类,包含商品编号、名称、一季度销量、二季度销量和三季度销量等数据成员。引入OS模块,用于导入导出路径文件信息设计一个商品管理类,用于定义各个模块的具体功能函数。设计一个主菜单,两个子菜单,分别管理商品基本信息和销量信息运行功能演示:
商品信息管理系统启动后,首先进入系统主界面,等待用户输入命令选择相应的功能。
如果用户输入“info”命令,则进入商品基本信息管理子功能模块。
在商品基本信息管理界面,用户通过输入相应的命令进行商品基本信息的增、删、改、显示等操作。
添加商品信息
删除商品信息
修改商品信息
显示商品信息
如果用户输入“sale”命令,则进入商品销量管理子功能模块。
在商品销量管理界面用户可选择相应的功能进行销量处理。
平均销量:
最高销量:
最低销量:
具体实现过程:
定义商品类:
class Goods: def __init__(self,no,name,first=0,second=0,third=0): self.no = no self.name = name self.first = int(first) self.second = int(second) self.third = int(third)
定义商品管理类
class GoodsList: def __init__(self): self.gdslist = []
定义显示商品信息函数
在商品管理类下面定义显示商品信息函数:
def show(self): #显示信息 print('{}\t{}\t{}\t{}\t{}' .format('编号','名称','一季度','二季度','三季度')) for gd in self.gdslist: print('{}\t{}\t{}\t{}\t{}' .format(gd.no,gd.name,gd.first,gd.second,gd.third))
输入销量函数:
def __enterSale(self,message): #销量输入 while True: try: sale = input(message) if 0 <= int(sale) <= 10000: break else: print("输入错误,应在0到10000之间") except: print("输入错误,应在0到10000之间") return sale def __exists(self,no): #判断编号是否存在 for gd in self.gdslist: if gd.no == no: return True else: return False
添加商品信息:
def insert(self): #添加信息 while True: no = input('编号:') if self.__exists(no): print('该编号已存在') else: name = input('名称:') first = self.__enterSale('一季度:') second = self.__enterSale('二季度:') third = self.__enterSale('三季度:') gd = Goods(no,name,first,second,third) self.gdslist.append(gd) choice = input('继续添加(y/n)?').lower() if choice == 'n': break
删除商品信息
def delete(self): #删除学生信息 while True: no = input('请输入要删除的学生学号:') for stu in self.stulist[::]: if stu.no == no: self.stulist.remove(stu) print('删除成功') break else: print('该学号不存在') choice = input('继续删除(y/n)?').lower() if choice == 'n': break
修改商品信息
def delete(self): #删除信息 while True: no = input('请输入要删除的商品编号:') for gd in self.gdslist[::]: if gd.no == no: self.gdslist.remove(gd) print('删除成功') break else: print('该编号不存在') choice = input('继续删除(y/n)?').lower() if choice == 'n': break
导入商品信息
def load(self,fn): #导入信息 if os.path.exists(fn): try: with open(fn,'r',encoding = 'utf-8') as fp: while True: fs = fp.readline().strip('\n') if not fs: break else: gd = Goods(*fs.split(',')) if self.__exists(gd.no): print('该编号已存在') else: self.gdslist.append(gd) print('导入完毕') except: print('error...') else: print('要导入的文件不存在')
导出商品信息
def save(self,fn): #导出信息 with open(fn,'w',encoding = 'utf-8') as fp: for gd in self.gdslist: fp.write(gd.no + ',') fp.write(gd.name + ',') fp.write(str(gd.first) + ',') fp.write(str(gd.second) + ',') fp.write(str(gd.third) + '\n') print("导出完毕")
求商品平均销量
def sale_avg(self): #求平均销量 length = len(self.gdslist) if length > 0: first_avg = sum([gd.first for gd in self.gdslist])/length second_avg = sum([gd.second for gd in self.gdslist])/length third_avg = sum([gd.third for gd in self.gdslist])/length print('一季度平均销量是:%.2f'%first_avg) print('二季度平均销量是:%.2f'%second_avg) print('三季度平均销量是:%.2f'%third_avg) else: print('尚没有商品销量...')
求商品最高销量
def sale_max(self): #求最高 if len(self.gdslist) > 0: first_max = max([gd.first for gd in self.gdslist]) second_max = max([gd.second for gd in self.gdslist]) third_max = max([gd.third for gd in self.gdslist]) print('一季度最高销量是:%d'%first_max) print('二季度最高销量是:%d'%second_max) print('三季度最高销量是:%d'%third_max) else: print('尚没有商品销量...')
求商品最低销量
def sale_min(self): #求最低 if len(self.gdslist) > 0: first_min = min([gd.first for gd in self.gdslist]) second_min = min([gd.second for gd in self.gdslist]) third_min = min([gd.third for gd in self.gdslist]) print('一季度最低销量是:%d'%first_min) print('二季度最低销量是:%d'%second_min) print('三季度最低销量是:%d'%third_min) else: print('尚没有商品销量...')
最后定义菜单函数和主函数:
def infoprocess(self): #基本信息管理 print('商品基本信息管理'.center(20,'-')) print('load----------导入商品信息') print('insert--------添加商品信息') print('delete--------删除商品信息') print('update--------修改商品信息') print('show----------显示商品信息') print('save----------导出商品信息') print('return--------返回') print('-'*28) while True: s = input('info>').strip().lower() if s == 'load': fn = input('请输入要导入的文件名:') self.load(fn) elif s == 'show': self.show() elif s == 'insert': self.insert() elif s == 'delete': self.delete() elif s == 'update': self.update() elif s == 'save': fn = input('请输入要导出的文件名:') self.save(fn) elif s =='return': break else: print('输入错误') def saleprocess(self): #销量统计 print('商品销量统计'.center(24,'=')) print('avg --------平均销量') print('max --------最高销量') print('min --------最低销量') print('return --------返回') print(''.center(30,'=')) while True: s = input('sale>').strip().lower() if s == 'avg': self.sale_avg() elif s == 'max': self.sale_max() elif s == 'min': self.sale_min() elif s == 'return': break else: print('输入错误') def main(self): #主控函数 while True: print('商品信息管理系统V1.0'.center(24,'=')) print('info --------商品基本信息管理') print('sale --------商品销量统计') print('exit --------退出系统') print(''.center(32,'=')) s = input('main>').strip().lower() if s == 'info': self.infoprocess() elif s == 'sale': self.saleprocess() elif s == 'exit': break else: print('输入错误') if __name__ == '__main__': gds = GoodsList() gds.main()
完整代码:
'''导入导出文件的编码是utf-8'''import osclass Goods: def __init__(self,no,name,first=0,second=0,third=0): self.no = no self.name = name self.first = int(first) self.second = int(second) self.third = int(third) class GoodsList: def __init__(self): self.gdslist = [] def show(self): #显示信息 print('{}\t{}\t{}\t{}\t{}' .format('编号','名称','一季度','二季度','三季度')) for gd in self.gdslist: print('{}\t{}\t{}\t{}\t{}' .format(gd.no,gd.name,gd.first,gd.second,gd.third)) def __enterSale(self,message): #销量输入 while True: try: sale = input(message) if 0 <= int(sale) <= 10000: break else: print("输入错误,应在0到10000之间") except: print("输入错误,应在0到10000之间") return sale def __exists(self,no): #判断编号是否存在 for gd in self.gdslist: if gd.no == no: return True else: return False def insert(self): #添加信息 while True: no = input('编号:') if self.__exists(no): print('该编号已存在') else: name = input('名称:') first = self.__enterSale('一季度:') second = self.__enterSale('二季度:') third = self.__enterSale('三季度:') gd = Goods(no,name,first,second,third) self.gdslist.append(gd) choice = input('继续添加(y/n)?').lower() if choice == 'n': break def delete(self): #删除信息 while True: no = input('请输入要删除的商品编号:') for gd in self.gdslist[::]: if gd.no == no: self.gdslist.remove(gd) print('删除成功') break else: print('该编号不存在') choice = input('继续删除(y/n)?').lower() if choice == 'n': break def update(self): #修改信息 while True: no = input('请输入要修改的商品编号:') if self.__exists(no): for gd in self.gdslist: if gd.no == no: gd.name = input('名称:') gd.salary = int(self.__enterSale('一季度:')) gd.bonus = int(self.__enterSale('二季度:')) gd.tax = int(self.__enterSale('三季度:')) print('修改成功') break else: print('该编号不存在') choice = input('继续修改(y/n)?').lower() if choice == 'n': break def load(self,fn): #导入信息 if os.path.exists(fn): try: with open(fn,'r',encoding = 'utf-8') as fp: while True: fs = fp.readline().strip('\n') if not fs: break else: gd = Goods(*fs.split(',')) if self.__exists(gd.no): print('该编号已存在') else: self.gdslist.append(gd) print('导入完毕') except: print('error...') else: print('要导入的文件不存在') def save(self,fn): #导出信息 with open(fn,'w',encoding = 'utf-8') as fp: for gd in self.gdslist: fp.write(gd.no + ',') fp.write(gd.name + ',') fp.write(str(gd.first) + ',') fp.write(str(gd.second) + ',') fp.write(str(gd.third) + '\n') print("导出完毕") def sale_avg(self): #求平均销量 length = len(self.gdslist) if length > 0: first_avg = sum([gd.first for gd in self.gdslist])/length second_avg = sum([gd.second for gd in self.gdslist])/length third_avg = sum([gd.third for gd in self.gdslist])/length print('一季度平均销量是:%.2f'%first_avg) print('二季度平均销量是:%.2f'%second_avg) print('三季度平均销量是:%.2f'%third_avg) else: print('尚没有商品销量...') def sale_max(self): #求最高 if len(self.gdslist) > 0: first_max = max([gd.first for gd in self.gdslist]) second_max = max([gd.second for gd in self.gdslist]) third_max = max([gd.third for gd in self.gdslist]) print('一季度最高销量是:%d'%first_max) print('二季度最高销量是:%d'%second_max) print('三季度最高销量是:%d'%third_max) else: print('尚没有商品销量...') def sale_min(self): #求最低 if len(self.gdslist) > 0: first_min = min([gd.first for gd in self.gdslist]) second_min = min([gd.second for gd in self.gdslist]) third_min = min([gd.third for gd in self.gdslist]) print('一季度最低销量是:%d'%first_min) print('二季度最低销量是:%d'%second_min) print('三季度最低销量是:%d'%third_min) else: print('尚没有商品销量...') def infoprocess(self): #基本信息管理 print('商品基本信息管理'.center(20,'-')) print('load----------导入商品信息') print('insert--------添加商品信息') print('delete--------删除商品信息') print('update--------修改商品信息') print('show----------显示商品信息') print('save----------导出商品信息') print('return--------返回') print('-'*28) while True: s = input('info>').strip().lower() if s == 'load': fn = input('请输入要导入的文件名:') self.load(fn) elif s == 'show': self.show() elif s == 'insert': self.insert() elif s == 'delete': self.delete() elif s == 'update': self.update() elif s == 'save': fn = input('请输入要导出的文件名:') self.save(fn) elif s =='return': break else: print('输入错误') def saleprocess(self): #销量统计 print('商品销量统计'.center(24,'=')) print('avg --------平均销量') print('max --------最高销量') print('min --------最低销量') print('return --------返回') print(''.center(30,'=')) while True: s = input('sale>').strip().lower() if s == 'avg': self.sale_avg() elif s == 'max': self.sale_max() elif s == 'min': self.sale_min() elif s == 'return': break else: print('输入错误') def main(self): #主控函数 while True: print('商品信息管理系统V1.0'.center(24,'=')) print('info --------商品基本信息管理') print('sale --------商品销量统计') print('exit --------退出系统') print(''.center(32,'=')) s = input('main>').strip().lower() if s == 'info': self.infoprocess() elif s == 'sale': self.saleprocess() elif s == 'exit': break else: print('输入错误') if __name__ == '__main__': gds = GoodsList() gds.main()