目录
功能模块:
实现思路:
运行功能演示:
具体实现过程:
定义商品类:
定义商品管理类
定义显示商品信息函数
输入销量函数:
添加商品信息:
删除商品信息
修改商品信息
导入商品信息
导出商品信息
求商品平均销量
求商品最高销量
求商品最低销量
最后定义菜单函数和主函数:
完整代码:
商品基本信息管理和商品销量统计。
基本信息管理模块的主要功能有商品基本信息的添加、删除、修改、显示和数据的导入导出
商品销量统计管理模块的主要功能有统计商品的最高销量、最低销量和平均销量。
商品信息管理系统启动后,首先进入系统主界面,等待用户输入命令选择相应的功能。
如果用户输入“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 os
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 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()