商品信息管理系统(Python)完整版

目录


功能模块:

商品基本信息管理和商品销量统计。

基本信息管理模块的主要功能有商品基本信息的添加、删除、修改、显示和数据的导入导出

商品销量统计管理模块的主要功能有统计商品的最高销量、最低销量和平均销量。

实现思路:

  1. 设计一个商品类,包含商品编号、名称、一季度销量、二季度销量和三季度销量等数据成员。
  2. 引入OS模块,用于导入导出路径文件信息
  3. 设计一个商品管理类,用于定义各个模块的具体功能函数。
  4. 设计一个主菜单,两个子菜单,分别管理商品基本信息和销量信息

运行功能演示:

商品信息管理系统启动后,首先进入系统主界面,等待用户输入命令选择相应的功能。

如果用户输入“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()

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2023年6月6日
下一篇 2023年6月6日

相关推荐