因功能改进和CSDN博客对项目的上传不支持,完整版已经移动到github地址:

https://github.com/LieLieLiekey/Small-supermarket-inventory-management-system
欢迎大家访问。

Py文件分下面几个

  1. supermarketmanage.py ,负责软件的开始界面和调用其他几个人员界面

  2. basic.py ,负责软件与数据库交流的函数,提供软件与数据库所需的基本查询、修改、删除等功能

  3. frontdesk.py ,售货员的前台界面以及功能

  4. purchasemanage.py ,进货员的前台界面以及功能

  5. adminmanage.py ,管理员的前台界面以及功能

  6. generaloperat.py ,包含所有员工共有的一些操作函数

  7. commodity.py ,商品对象的定义

  8. cashier.py ,售货员对象的定义

  9. purchaser.py ,进货员的定义

注:该代码是sql课程设计,使用python3.7编写前台和后台与数据库交互的部分(from NYIST 计工学院计科专业 17级DCH) ,费时四天,无任何抄袭,都为自己一个一个写的。
sql代码等过了验收再放出来

supermarketmanage.py

import pymssql
from basic import Basic
from frontdesk import FrontDesk
from purchasemanage import PurchaseManage
from adminmanage import AdminManage
import os
def link():
    conn = pymssql.connect(host="127.0.0.1",  # 连接数据库
                           user="sa",
                           password="123",
                           database="supermarket",  # Suppermarket
                           charset="utf8")
    return conn
def meta():
    while True:
        os.system("cls")
        print("------------------------------------------------")
        print("1: 售货员界面")
        print("2: 进货员界面")
        print("3: 管理员界面")
        print(" 其他数字退出")
        print("------------------------------------------------")
        cmd = input("请输入选项:").strip()
        if cmd=="1":
            front_desk=FrontDesk()
            front_desk.meta()
        elif cmd=="2":
            purchase_manage = PurchaseManage()
            purchase_manage.meta()
        elif cmd=="3":
            admin_manage = AdminManage()
            admin_manage.meta()
        else:
            break
        os.system("pause")

if __name__ == '__main__':
    try:
        conn=link()
        Basic.setConn(conn)
        meta()
    except Exception as e:
        print("出现错误,原因:",e)

basic.py

from cashier import *
from commodity import  *
import datetime
import random
class Basic:
    conn=None
    # def __init__(self,conn):
    # self.conn=conn
    @classmethod
    def setConn(cls,conn):#ok
        Basic.conn=conn

    @classmethod
    def runQuery(cls,sql):#ok
        with Basic.conn.cursor() as cursor:
            cursor.execute(sql)
            ans=cursor.fetchall()
            return ans

    @classmethod
    def runModify(cls,sql):#ok
        with Basic.conn.cursor() as cursor:
            cursor.execute(sql)
            Basic.conn.commit()
    @classmethod
    def queryOneCommodity(cls, com_num):#==queryOneCommodityView
        '''返回列表,没有则返回空列表'''
        sql="select * from Commodity where commodity_no='{}'".format(com_num)
        # print(sql)
        ans=Basic.runQuery(sql)
        if ans!=[]:
            ans=ans[0]
        return ans

    @classmethod
    def queryAllCommodity(cls):# ==queryAllCommodityView
        '''返回列表'''
        sql = "select * from Commodity"
        return Basic.runQuery(sql)

    @classmethod
    def queryOneCashier(cls,cash_num):
        sql ="select * from Cashier where cashier_no='{}'".format(cash_num)
        res=Basic.runQuery(sql)
        if res!=[]:
            res = res[0]
        return res

    @classmethod
    def queryOnePurchase(cls,pur_num):
        sql ="select * from Purchaser where purchaser_no='{}'".format(pur_num)
        res=Basic.runQuery(sql)
        if res!=[]:
            res = res[0]
        return res
    @classmethod
    def addOneSell(cls,cashier_no,com_no,sell_no,sell_cnt,sell_rmoney):#向支付条目中添加信息
        sql="insert into Sell values('{}','{}','{}',{},{},'{}')".format(cashier_no,com_no,sell_no,sell_cnt,sell_rmoney,Basic.getNowTime())
        Basic.runModify(sql)
    @classmethod
    def addOneCommodity(cls,com_no,com_name,com_type,com_size,com_price,com_mdate,com_edate,com_quantity):
        sql="insert into Commodity values('{}','{}','{}','{}',{},'{}','{}',{})".format(com_no,com_name,com_type,com_size,com_price,com_mdate,com_edate,com_quantity)
        Basic.runModify(sql)

    @classmethod
    def modifyOneCommodity(cls,com_num, com_name, com_type, com_size, com_price, com_mdate, com_edate, com_quantity):
        sql='''update Commodity set Commodity__name='{}',commodity__type1='{}',commodity__size='{}',commodity__sprice={},commodity__mdate='{}',commodity__edate='{}',commodity__quantity={} where commodity_no='{}' '''.format(com_name, com_type, com_size, com_price, com_mdate, com_edate, com_quantity,com_num)
        Basic.runModify(sql)
    @classmethod
    def addOneCommodityCnt(cls,com_num,com_cnt):
        sql = "update Commodity set commodity__quantity=commodity__quantity +{} where commodity_no='{}'".format(com_cnt,com_num)
        Basic.runModify(sql)

    @classmethod
    def addOneCashier(cls,cash_no,cash_name,cash_pwd,cash_sex,cash_age,cash_hourse,cash_salary,cash_phone,cash_entry):
        sql="insert into Cashier values('{}','{}','{}','{}',{},{},{},{},'{}')".format(cash_no,cash_name,cash_pwd,cash_sex,cash_age,cash_hourse,cash_salary,cash_phone,cash_entry)
        Basic.runModify(sql)

    @classmethod
    def modifyOneCashier(cls,cash_no,cash_name,cash_pwd,cash_sex,cash_age,cash_hourse,cash_salary,cash_phone,cash_entry):
        sql='''update Cashier set cashier_name='{}',cashier_pwd='{}',cashier_sex='{}',cashier_age={},cashier_hourse={},cashier_salary={},cashier_phone={},cashier_entrytime='{}' where cashier_no='{}' '''.format(cash_name,cash_pwd,cash_sex,cash_age,cash_hourse,cash_salary,cash_phone,cash_entry,cash_no)
        Basic.runModify(sql)

    @classmethod
    def addOnePurchaser(cls,pur_no,pur_name,pur_sex,pur_age,pur_salary,pur_phone,pur_entry):
        sql="insert into Purchaser values('{}','{}','{}',{},{},{},'{}')".format(pur_no,pur_name,pur_sex,pur_age,pur_salary,pur_phone,pur_entry)
        Basic.runModify(sql)

    @classmethod
    def modifyOnePurchaser(cls,pur_no, pur_name, pur_sex, pur_age, pur_salary, pur_phone, pur_entry):
        sql='''update Purchaser set purchaser_name='{}',purchaser_sex='{}',purchaser_age={},purchaser_salary={},purchaser_phone={},purchaser_entrytime='{}' where purchaser_no='{}' '''.format(pur_name, pur_sex, pur_age, pur_salary, pur_phone, pur_entry,pur_no)
        Basic.runModify(sql)
    @classmethod
    def delCommodityCnt(cls,com_num,com_cnt):
        '''删除某一个商品的数量 '''
        sql="update Commodity set commodity__quantity=commodity__quantity -{} where commodity_no='{}'".format(com_cnt,com_num)
        Basic.runModify(sql)

    @classmethod
    def delOneCashier(cls,cash_no):
        sql="delete from Cashier where cashier_no='{}'".format(cash_no)
        Basic.runModify(sql)

    @classmethod
    def delOnePurchase(cls,pur_no):
        sql="delete from Purchaser where purchaser_no='{}'".format(pur_no)
        Basic.runModify(sql)

    @classmethod
    def delOneCommodity(cls,com_no):
        sql="delete from Commodity where commodity_no='{}'".format(com_no)
        Basic.runModify(sql)

    @classmethod
    def addOneStock(cls,pur_no,com_no,stock_no,com_price,com_cnt,in_date):
        sql = "insert into Stock values('{}','{}','{}',{},{},'{}')".format(pur_no,com_no,stock_no,com_price,com_cnt,in_date)
        Basic.runModify(sql)

    @classmethod
    def queryAllStock(cls):
        sql="select * from Stock"
        res=Basic.runQuery(sql)
        return res

    @classmethod
    def queryAllCashier(cls):
        sql="select * from Cashier"
        res=Basic.runQuery(sql)
        return res

    @classmethod
    def queryAllPurchaser(cls):
        sql="select * from Purchaser"
        res=Basic.runQuery(sql)
        return res

    @classmethod
    def queryAllSell(cls):
        sql="select * from Sell"
        res=Basic.runQuery(sql)
        return res

    @classmethod
    def getNowTime(cls):
        return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

    @classmethod
    def getFlowNum(cls):
        res=datetime.datetime.now().strftime("%Y%m%d")+"%06d"%(random.randint(0,1000000))
        return res

    @classmethod
    def queryOneSellFlowNum(cls,sell_num):
        sql="select * from sell where sell_no='{}'".format(sell_num)
        res=cls.runQuery(sql)
        if res!=[]:
            res=res[0]
        return res

    @classmethod
    def queryOneStockFlowNum(cls,stock_num):
        sql="select * from stock where stock_no='{}'".format(stock_num)
        res=cls.runQuery(sql)
        if res!=[]:
            res=res[0]
        return res
    


frontdesk.py

from basic import Basic
from commodity import  Commodity
from prettytable import PrettyTable
from cashier import Cashier
import os
class ShopCar:
    '''储存商品对象和购买数量 '''
    def __init__(self):
        self.shop_list=[]
    def addCommodity(self,com,com_cnt):#传入商品信息和购买数量
        ''' *保证库存肯定是有货的 商品重复则直接添加数量,否则添加到列表即可 '''
        com_no=com.getNo()
        for i in range(len(self.shop_list)):
            now_com=self.shop_list[i][0]
            if now_com.getNo()==com_no:
                self.shop_list[i][1]+=com_cnt
                return
        #购物车不存在该商品
        self.shop_list.append([com,com_cnt])
        return
    def delCommodity(self,com_num,com_cnt):
        '''保证满足 '''
        for i in range(len(self.shop_list)):
            now_com=self.shop_list[i][0]
            if now_com.getNo()==com_num:
                self.shop_list[i][1]-=com_cnt
                if self.shop_list[i][1]==0:
                    self.shop_list.pop(i)
                return
    def clear(self):
        '''清空购物车'''
        self.shop_list.clear()

    def getMonery(self):
        '''得到总钱数'''
        res=0.0
        for com,cnt in self.shop_list:
            res+=com.getPrice()*cnt
        return res
    def getCommodityCnt(self,com_num):
        '''返回商品编号对应的数量'''
        res=0
        for com,cnt in self.shop_list:
            if com.getNo()==com_num:
                res=cnt
                break
        return res
    def printList(self):
        '''打印当前购物车信息 ["商品编号", "商品名称", "商品类型","规格","单价","购买数量"] '''
        table=PrettyTable(["商品编号", "商品名称", "商品类型","规格","单价","购买数量"])
        for com, cnt in self.shop_list:
            table.add_row([com.getNo(),com.getName(),com.getType(),com.getSize(),com.getPrice(),cnt])
        print(table)
        print("总价:",self.getMonery(),end="\n\n")
    def getlist(self):
        ''' 返回购买信息'''
        # res_list=[]
        # for i in self.shop_list:
        # com=i[0]
        # cnt=i[2]
        # res_list.append((com.getNo(),cnt))#返回商品编号和 购买的数量
        # return res_list
        return self.shop_list
    def empty(self):
        if not self.shop_list:
            return True
        return False
class FrontDesk:
    '''前台控制'''
    def __init__(self):
        self.admin=None
        self.car=ShopCar()
    def exitLogin(self):
        print("账号 {} 已经退出登陆.".format(self.admin.getNo()))
        self.admin=None

    def meta(self):
        '''前台:菜单'''
        if self.login()==False:
            return
        while(True):
            os.system("cls")
            print("------------------------------------------------")
            print("1: 查询单个商品信息")
            print("2: 查看所有商品信息")
            print("3: 购买功能")
            if self.admin!=None:
                print("4: 退出登录")
            print(" 其他数字退出")
            print("------------------------------------------------")
            cmd=input("请输入选项:").strip()
            if cmd=="1":
                self.queryOne()
            elif cmd=="2":
                self.queryAll()
            elif cmd=="3":
                if (self.admin!=None) or self.login():
                    self.shopingMeta()
            elif self.admin!=None and cmd=="4":
                self.exitLogin()
                break
            else:
                break
            os.system("pause")
    def login(self):
        '''前台:admin登陆'''
        in_num=input("请输入您的账号:").strip()
        cash=Basic.queryOneCashier(in_num)
        if not cash:
            print("不存在该账号.")
            return  False
        cashier=Cashier(cash)
        in_pwd=input("请输入您的密码:").strip()
        if cashier.getPwd()==in_pwd:
            self.admin=cashier
            print("登陆成功.")
            return True
        else:
            print("密码错误.")
            return False
    def queryAll(self):
        '''前台:查询所有商品信息'''
        info=Basic.queryAllCommodity()
        table = comm = Commodity.getTableaHead()
        for i in info:
            table.add_row(i)
        print(table)
        print("以上共 {} 条记录.".format(len(info)))
    def queryOne(self):
        '''前台:查询一个商品信息'''
        com_num=input("请输入需要查询商品的编号:")
        res=Basic.queryOneCommodity(com_num)
        if not res:#res为空
            print("没有该商品")
        else:
            table=comm=Commodity.getTableaHead()
            table.add_row(res)
            print(table,end="\n\n")
    def shopingMeta(self):
        '''前台:购买'''
        while True:
            os.system("cls")
            print("当前购物车:")
            self.car.printList()
            print("-------\n")
            print("1:向购物车中添加商品")
            print("2:从购物车中删除商品")
            print("3:清空购物车")
            print("4:结算")
            print("--------------------其他选项退出")
            cmd=input("请输入选项:").strip()
            if cmd=="1":
                self.addCom()
            elif cmd=="2":
                self.delCom()
            elif cmd=="3":
                self.clearShopCar()
            elif cmd=="4":
                self.pay()
            else:
                break
            os.system("pause")
    def addCom(self):
        '''前台: 添加购物车 '''
        com_num=input("请输入商品编号:").strip()
        com_info=Basic.queryOneCommodity(com_num)
        if not com_info:
            print("商品不存在.")
            return
        com=Commodity(com_info)
        com_cnt=int(input("请输入商品数量:").strip())
        if com_cnt <=0:
            print("购买数量必须大于0.")
            return
        if com_cnt>com.getQuantiy() :
            print("商品库存不足.")
        else :
            self.car.addCommodity(com,com_cnt)
            print("添加进入购物车成功.")

    def clearShopCar(self):
        '''前台:清空购物车'''
        cmd=input("输入 1 确认清空购物车:").strip()
        if cmd=="1":
            self.car.clear()
            print("购物车已清空.")
        else:
            print("操作已取消.")

    def delCom(self):
        '''前台:删除购物车某一个物品'''
        com_num = input("请输入商品编号:").strip()
        have_cnt=self.car.getCommodityCnt(com_num)
        if have_cnt==0:
            print("购物车中无该商品")
        else:
            del_cnt=int(input("购物车中该商品有 {} 个,请输入需要删除该商品的数量:".format(have_cnt)).strip())
            self.car.delCommodity(com_num,min(del_cnt,have_cnt))
            print("删除成功.")
    def getFlowNum(self):
        while True:
            num=Basic.getFlowNum()
            info=Basic.queryOneSellFlowNum(num)
            if info==[]:
                return num
    def pay(self):
         '''前台:结算'''
         if self.car.empty():
             print("购物车是空的.")
             return
         all_money=self.car.getMonery()
         pay_money=float(input("请支付{}元:".format(all_money)).strip())
         if pay_money<all_money :
             print("支付失败.")
         else:
             print("支付成功,找零{}元. ".format(pay_money-all_money))
             shop_list=self.car.getlist()
             for com,com_cnt in shop_list:
                 #删除库存数量
                 Basic.delCommodityCnt(com.getNo(),com_cnt)
                 #添加购买信息
                 num=self.getFlowNum()
                 Basic.addOneSell(self.admin.getNo(),com.getNo(),num,com_cnt,com.getPrice()*com_cnt)
             print("您已经成功购买以下商品,支付{}元 ,找零{}元 .".format(pay_money,pay_money-all_money))
             self.car.printList()
             self.car.clear()




purchasemanage.py

from basic import Basic
from commodity import  Commodity
from prettytable import PrettyTable
from purchaser import Purchaser
import os
import generaloperat
from purchaser import Purchaser
class PurchaseManage:
    def __init__(self):
        self.admin=None
    def login(self):
        '''带前台的登陆界面'''
        pur_num=input("请输入您的编号:").strip()
        pur=Basic.queryOnePurchase(pur_num)
        if not pur:
            print("不存在该编号.")
            return False
        else:
            self.admin=Purchaser(pur)
            return True
    def meta(self):
        '''操作选项界面'''
        if not self.login():
            return
        while True:
            os.system("cls")
            print("------------------------------------------------")
            print("1: 查询单个商品信息")
            print("2: 查看所有商品信息")
            print("3: 添加商品信息")
            print("4: 查看所有进货信息")
            print("5: 进货")
            print(" 其他数字退出")
            print("------------------------------------------------")
            cmd = input("请输入选项:").strip()
            if cmd=="1":
                self.queryOne()
            elif cmd=="2":
                self.queryAll()
            elif cmd=="3":
                self.addOne()
            elif cmd=="4":
                self.querAllStock()
            elif cmd=="5":
                self.purchase()
            else:
                self.admin=None
                break
            os.system("pause")
    def querAllStock(self):
        generaloperat.queryAllStock()
    def addOne(self):
        '''前台 添加一个新的商品,库存数量为0'''
        com_num=input("请输入要添加的商品编号:").strip()
        com=Basic.queryOneCommodity(com_num)
        if com!=[]:
            print("该商品已存在不能重复添加.")
            return
        com_name=input("请输入商品名称:").strip()
        com_type=input("请输入商品类型:").strip()
        com_size=input("请输入规格:").strip()
        com_price=float(input("请输入单价:").strip())
        com_mdate=input("请输入生产日期(格式 年-月-日):").strip()
        com_edate=input("请输入过期日期(格式 年-月-日):").strip()
        com_quantity=0
        try:
            Basic.addOneCommodity(com_num,com_name,com_type,com_size,com_price,com_mdate,com_edate,com_quantity)
            print("添加成功")
        except Exception as e:
            print("添加失败,原因:",e)
    def purchase(self):
        '''前台 进货'''
        com_num=input("请输入要进货的商品编号:").strip()
        com=Basic.queryOneCommodity(com_num)
        if com==[]:
            print("该商品不存在,请先添加该商品.")
            return
        com_cnt=int(input("请输入进货的数量:").strip())
        com_price = float(input("请输入进货的单价:").strip())
        in_date = input("请输入进货日期(格式 年-月-日):").strip()
        try:
            num=self.getFlowNum()
            Basic.addOneStock(self.admin.getNo(), com_num, num, com_price, com_cnt, in_date)
            Basic.addOneCommodityCnt(com_num,com_cnt)
            print("操作成功.")
        except Exception as e:
            print("操作失败,原因:",e)

    def queryAll(self):
        '''前台 查看所有商品信息'''
        generaloperat.queryAllCommodity()
    def queryOne(self):
        '''前台 查看一个商品信息'''
        generaloperat.queryOneCommodity()
    def exitlogin(self):
        '''前台 退出登陆 ,保证已经登陆'''
        self.admin=None
    def getFlowNum(self):
        while True:
            num=Basic.getFlowNum()
            info=Basic.queryOneStockFlowNum(num)
            if info==[]:
                return num

adminmanage.py

import generaloperat
from basic import Basic
from commodity import Commodity
from purchaser import Purchaser
import os
class AdminManage:
    def login(self):
        '''前台的登陆'''
        pwd=input("请输入管理员密码:").strip()
        if pwd!="123456":
            print("密码错误.")
            return False
        return True
    def metaQuery(self):
        while True:
            os.system("cls")
            print("------------------------------------------------")
            print("1: 查看所有商品信息")
            print("2: 查看所有售货员信息")
            print("3: 查看所有进货员信息")
            print("4: 查看所有售货信息")
            print("5: 查看所有进货信息")
            print("6: 查看单个售货员信息(未开发)")
            print("7: 查看单个进货员信息(未开发)")
            print("8: 查看单个商品信息(未开发)")
            print(" 其他数字退出")
            print("------------------------------------------------")
            cmd = input("请输入选项:").strip()
            if cmd=="1":
                self.queryAllCommodity()
            elif cmd=="2":
                self.queryAllCashier()
            elif cmd=="3":
                self.queryAllPurchaser()
            elif cmd=="4":
                self.queryAllSell()
            elif cmd=="5":
                self.queryAllStock()
            else:
                break
            os.system("pause")
    def metaAdd(self):
        while True:
            os.system("cls")
            print("------------------------------------------------")
            print("1: 增加新的售货员")
            print("2: 增加新的进货员")
            print("3: 增加新的商品")
            print(" 其他数字退出")
            print("------------------------------------------------")
            cmd = input("请输入选项:").strip()
            if cmd=="1":
                self.addOneCashier()
            elif cmd=="2":
                self.addOnePurchaser()
            elif cmd=="3":
                self.addOneCommodity()
            else:
                break
            os.system("pause")
    def metaDel(self):
        while True:
            os.system("cls")
            print("------------------------------------------------")
            print("1: 移除一个售货员")
            print("2: 移除一个进货员")
            print("3: 移除一个商品")
            print(" 其他数字退出")
            print("------------------------------------------------")
            cmd = input("请输入选项:").strip()
            if cmd=="1":
                self.delOneCashier()
            elif cmd=="2":
                self.delOnePurchaser()
            elif cmd=="3":
                self.delOneCommodity()
            else:
                break
            os.system("pause")
    def metaModity(self):
        while True:
            os.system("cls")
            print("------------------------------------------------")
            print("1: 修改售货员信息")
            print("2: 修改进货员信息")
            print("3: 修改库存中商品信息")
            print(" 其他数字退出")
            print("------------------------------------------------")
            cmd = input("请输入选项:").strip()
            if cmd=="1":
                self.modifyOneCashier()
            elif cmd=="2":
                self.modifyOnePurchaser()
            elif cmd=="3":
                self.modifyOneCommodity()
            else:
                break
            os.system("pause")
    def meta(self):
        '''前台 菜单'''
        if not self.login():
            return
        while True:
            os.system("cls")
            print("------------------------------------------------")
            print("1: 进入查询菜单")
            print("2: 进入添加菜单")
            print("3: 进入删除菜单")
            print("4: 进入修改菜单")
            print(" 其他数字退出")
            print("------------------------------------------------")
            cmd = input("请输入选项:").strip()
            if cmd=="1":
                self.metaQuery()
            elif cmd=="2":
                self.metaAdd()
            elif cmd=="3":
                # continue
                self.metaDel()
            elif cmd=="4":
                pass
                self.metaModity()
            else:
                break
            os.system("pause")
    def queryAllCommodity(self):
        generaloperat.queryAllCommodity()
    def queryAllCashier(self):
        '''前台 查询所有cashier的信息'''
        generaloperat.queryAllCashier()
    def queryAllPurchaser(self):
        '''前台 查询所有purchase'''
        generaloperat.queryAllPurchaser()
    def queryAllSell(self):
        '''前台 查询所有sell'''
        generaloperat.queryAllSell()
    def queryAllStock(self):
        '''前台'''
        generaloperat.queryAllStock()

    def addOneCashier(self):
        '''前台'''
        cash_no=input("请输入增加售货员的编号:").strip()
        cash=Basic.queryOneCashier(cash_no)
        if cash!=[]:
            print("该编号已存在不能重复添加.")
            return
        cash_name=input("请输入该员工的姓名:").strip()
        cash_pwd=input("请输入该员工的密码:").strip()
        cash_sex=input("请输入该员工的性别:").strip()
        cash_age=int(input("请输入该员工的年龄:").strip())
        cash_hourse=float(input("请输入该员工的日工作量:").strip())
        cash_salary=float(input("请输入该员工的月工资:").strip())
        cash_phone=input("请输入该员工的手机号:").strip()
        cash_entry=input("请输入该员工的出生日期(eg: 2019-6-4):").strip()
        try:
            Basic.addOneCashier(cash_no,cash_name,cash_pwd,cash_sex,cash_age,cash_hourse,cash_salary,cash_phone,cash_entry)
            print("添加售货员成功.")
        except Exception as e:
            print("添加售货员失败,原因:",e)

    def addOnePurchaser(self):
        '''''' pur_no=input("请输入增加进货员的编号:").strip() pur=Basic.queryOnePurchase(pur_no) if pur!=[]: print("该编号已存在不能重复添加.") return pur_name=input("请输入该员工的姓名:").strip() pur_sex=input("请输入该员工的性别:").strip() pur_age=int(input("请输入该员工的年龄:").strip()) pur_salary=float(input("请输入该员工的月工资:").strip()) pur_phone=input("请输入该员工的手机号:").strip() pur_entry=input("请输入该员工的出生日期(eg: 2019-6-4):").strip() try: Basic.addOnePurchaser(pur_no,pur_name,pur_sex,pur_age,pur_salary,pur_phone,pur_entry) print("添加进货员成功.") except Exception as e: print("添加进货员失败,原因:",e) def addOneCommodity(self): '''''' com_num = input("请输入要添加的商品编号:").strip() com = Basic.queryOneCommodity(com_num) if com != []: print("该商品已存在不能重复添加.") return com_name = input("请输入商品名称:").strip() com_type = input("请输入商品类型:").strip() com_size = input("请输入规格:").strip() com_price = float(input("请输入单价:").strip()) com_mdate = input("请输入生产日期(格式 年-月-日):").strip() com_edate = input("请输入过期日期(格式 年-月-日):").strip() com_quantity = int(input("请输入库存数量:").strip()) try: Basic.addOneCommodity(com_num, com_name, com_type, com_size, com_price, com_mdate, com_edate, com_quantity) print("添加商品成功") except Exception as e: print("添加商品失败,原因:", e) def delOneCashier(self): '''''' cash_no=input("请输入要移除的售货员的编号:").strip() cash=Basic.queryOneCashier(cash_no) if cash==[]: print("不存在该员工.") return cmd=input("确认移除该员工?(移除后所有与该员工有关的售货记录都会删除.y/n)").strip() if cmd[0]=='y'or cmd[0]=='Y': Basic.delOneCashier(cash_no) print("操作成功.") else: print("操作失败.") def delOnePurchaser(self): pur_no=input("请输入要移除的售货员的编号:").strip() pur=Basic.queryOnePurchase(pur_no) if pur==[]: print("不存在该员工.") return cmd=input("确认移除该员工?(移除后所有与该员工有关的进货记录都会删除.y/n)").strip() if cmd[0]=='y'or cmd[0]=='Y': Basic.delOnePurchase(pur_no) print("操作成功.") else: print("操作失败.") def delOneCommodity(self): ''''''
        com_no=input("请输入要移除的商品的编号:").strip()
        com=Basic.queryOneCommodity(com_no)
        if com==[]:
            print("不存在该商品.")
            return
        cmd=input("确认移除该商品?(移除后所有与该商品有关的进出货记录都会删除.y/n)").strip()
        if cmd[0]=='y'or cmd[0]=='Y':
            Basic.delOneCommodity(com_no)
            print("操作成功.")
        else:
            print("操作失败.")

    def modifyOneCashier(self):
        cash_no = input("请输入需要修改的售货员的编号:").strip()
        cash = Basic.queryOneCashier(cash_no)
        if cash == []:
            print("该售货员不存在.")
            return
        cash_name = input("请输入修改后的姓名:").strip()
        cash_pwd = input("请输入该员工的密码:").strip()
        cash_sex = input("请输入该员工的性别:").strip()
        cash_age = int(input("请输入该员工的年龄:").strip())
        cash_hourse = float(input("请输入该员工的日工作量:").strip())
        cash_salary = float(input("请输入该员工的月工资:").strip())
        cash_phone = input("请输入该员工的手机号:").strip()
        cash_entry = input("请输入该员工的出生日期(eg: 2019-6-4):").strip()
        try:
            Basic.modifyOneCashier(cash_no, cash_name, cash_pwd, cash_sex, cash_age, cash_hourse, cash_salary,
                                   cash_phone, cash_entry)
            print("修改成功.")
        except Exception as e:
            print("修改失败,原因:", e)

    def modifyOnePurchaser(self):
        pur_no = input("请输入需要修改的进货员的编号:").strip()
        pur = Basic.queryOnePurchase(pur_no)
        if pur == []:
            print("该售货员不存在.")
            return
        pur_name = input("请输入修改后的姓名:").strip()
        pur_sex = input("请输入该员工的性别:").strip()
        pur_age = int(input("请输入该员工的年龄:").strip())
        pur_salary = float(input("请输入该员工的月工资:").strip())
        pur_phone = input("请输入该员工的手机号:").strip()
        pur_entry = input("请输入该员工的出生日期(eg: 2019-6-4):").strip()
        try:
            Basic.modifyOnePurchaser(pur_no, pur_name, pur_sex, pur_age, pur_salary, pur_phone, pur_entry)
            print("修改成功.")
        except Exception as e:
            print("修改失败,原因:", e)

    def modifyOneCommodity(self):
        com_num = input("请输入要修改的商品编号:").strip()
        com = Basic.queryOneCommodity(com_num)
        if com == []:
            print("该商品不存在.")
            return
        com_name = input("请输入修改后的商品名称:").strip()
        com_type = input("请输入修改后的商品类型:").strip()
        com_size = input("请输入修改后的规格:").strip()
        com_price = float(input("请输入修改后的单价:").strip())
        com_mdate = input("请输入修改后的生产日期(格式 年-月-日):").strip()
        com_edate = input("请输入修改后的过期日期(格式 年-月-日):").strip()
        com_quantity = int(input("请输入修改后的库存数量:").strip())
        try:
            Basic.modifyOneCommodity(com_num, com_name, com_type, com_size, com_price, com_mdate, com_edate, com_quantity)
            print("修改商品成功")
        except Exception as e:
            print("修改商品失败,原因:", e)


generaloperat.py

from basic import Basic
from commodity import Commodity
from prettytable import PrettyTable
from purchaser import Purchaser
from cashier import Cashier
def queryAllCommodity():
    '''前台:查询所有商品信息'''
    info = Basic.queryAllCommodity()
    table = comm = Commodity.getTableaHead()
    for i in info:
        table.add_row(i)
    print(table)
    print("以上共 {} 条记录.".format(len(info)))


def queryOneCommodity():
    '''前台:查询一个商品信息'''
    com_num = input("请输入需要查询商品的编号:")
    res = Basic.queryOneCommodity(com_num)
    if not res:  # res为空
        print("没有该商品")
    else:
        table = comm = Commodity.getTableaHead()
        table.add_row(res)
        print(table, end="\n\n")
def queryOneCahier():
    cash_no=input("请输入需要查询的售货员的编号:").strip()
    cash=Basic.queryOneCashier(cash_no)
    if cash==[]:
        print("该售货员不存在.")
        return
    table=Commodity.getTableaHead()
    table.add_row(cash)
    print(table)
def queryOnePurchaser():
    pur_no=input("请输入需要查询的进货员的编号:").strip()
    pur=Basic.queryOnePurchase(pur_no)
    if pur==[]:
        print("该进货员不存在.")
        return
    table=Purchaser.getTableaHead()
    table.add_row(pur)
    print(table)

def queryAllStock():
    '''前台:查看所有进货信息'''
    info=Basic.queryAllStock()
    table=PrettyTable(["进货员编号","商品编号","进货流水号","进货单价","增加数量","进货日期"])
    for i in info:
        table.add_row(i)
    print(table)
    print("以上共 {} 条记录.".format(len(info)))
def queryAllCashier():
    '''前台 查询所有cashier的信息'''
    info=Basic.queryAllCashier()
    # print(info)
    table=Cashier.getTableaHead()
    # print(table)
    for i in info:
        table.add_row(i)
    print(table)
    print("以上共{}条记录.".format(len(info)))

def queryAllPurchaser():
    '''前台 查询所有purchase'''
    info=Basic.queryAllPurchaser()
    table=Purchaser.getTableaHead()
    for i in info:
        table.add_row(i)
    print(table)
    print("以上共{}条记录.".format(len(info)))
def queryAllSell():
    info=Basic.queryAllSell()
    table=PrettyTable(["收银员编号","商品编号","出售流水号","出售数量","总价","日期"])
    for i in info:
        table.add_row(i)
    print(table)
    print("以上共 {} 条记录.".format(len(info)))

commodity.py

from prettytable import PrettyTable
class Commodity:
    def __init__(self,info_list=None):
        self.info=info_list
    def getNo(self):
        return self.info[0]
    def getName(self):
        return self.info[1]
    def getType(self):
        return self.info[2]
    def getSize(self):
        return self.info[3]
    def getPrice(self):
        return self.info[4]
    def getDate(self):
        return self.info[5]
    def getmDate(self):
        return self.info[6]
    def getQuantiy(self):
        return self.info[7]
    @classmethod
    def getTableaHead(cls):
        return  PrettyTable(["商品编号", "商品名称", "商品类型","规格","单价","生产日期","过期日期","库存数量"])

cashier.py

from prettytable import PrettyTable
class Cashier:
    def __init__(self,info_list=None):
        self.info=info_list
    def getNo(self):
        return self.info[0]
    def getName(self):
        return self.info[1]
    def getPwd(self):
        return self.info[2]
    def getSex(self):
        return self.info[3]
    def getAge(self):
        return self.info[4]
    def getHourse(self):
        return self.info[5]
    def getSalary(self):
        return self.info[6]
    def getPhone(self):
        return self.info[7]
    def getEntrytime(self):
        return self.info[8]
    @classmethod
    def getTableaHead(cls):
        return  PrettyTable(["售货员编号", "姓名", "密码","性别","年龄","Hourse",r"工资/月","手机号","出生日期"])



purchaser.py

from prettytable import PrettyTable
class Purchaser:
    def __init__(self,info_list=None):
        self.info=info_list
    def getNo(self):
        return self.info[0]
    def getName(self):
        return self.info[1]
    def getSex(self):
        return self.info[2]
    def getAge(self):
        return self.info[3]
    def getSalary(self):
        return self.info[4]
    def getPhone(self):
        return self.info[5]
    def getEntrytime(self):
        return self.info[6]
    @classmethod
    def getTableaHead(cls):
        return  PrettyTable(["进货员编号", "姓名","性别","年龄",r"工资/月","手机号","出生日期"])