sql课程设计-小型超市进销存管理系统_小型sql数据库进销存_KetchupZ的博客-程序员秘密

技术标签: # 实战项目  专项之sql  

因功能改进和程序员秘密对项目的上传不支持,完整版已经移动到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"工资/月","手机号","出生日期"])



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Dch19990825/article/details/90940077

智能推荐

Error writing trailer of ****:Broken pipe_qzxl的博客-程序员秘密

SRS直播用FFmpeg转码报错:[flv @ 0x3e733c0] Failed to update header with correct duration.[flv @ 0x3e733c0] Failed to update header with correct filesize.Error writing trailer of rtmp://127.0.0.1:1935/live?vhost=defaultVhost/26347_31e2d7e3ce2d4d378ad2887cf559d52

x86上的那些UNIX——BSD篇+主流桌面_fryer的博客-程序员秘密

我想把古老编程环境系列完成,这是unix篇,其实从linux开始,该系列就有些变味了,变成了操作系统的介绍,本unix篇将分FreeBSD、Solaris、SCO等几个部分,unix的发行版不是很多,有些像AIX、HP-UX、IRIX等根本不能用在x86上,所有做个全面的介绍是有可能的。有些老的unix确实难装,而且vmware作为虚拟化软件,对老系统兼容性不如bochs、dosbox等模拟器,说

爬虫06 —— selenium_有意识的呼吸的博客-程序员秘密

Selenium一、基本使用from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.wait import WebDrive

【NOIP2013】火柴排队 线段树+逆序对_火柴排队线段树_WeZiH的博客-程序员秘密

CODEVS 题目描述 Description 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为: ,其中 ai表示第一列火柴中第 i 个火柴的高度,bi表示第二列火柴中第 i 个火柴的高度。 每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。请问得到这个最小的距离,最

java.lang.IllegalArgumentException: column '_id' does not exist_weixin_34365635的博客-程序员秘密

android报错: java.lang.IllegalArgumentException: column '_id' does not exist使用Cursor相关的Adapter时需要一个自增的列,且名字必需为 _id。举个特殊的例子:--创建一张SQLite的表 (字段均大写)Create Table Test(_ID integer primary key...

vb屏幕分辨率设置和获取_hawkol_新浪博客_hawkol的博客-程序员秘密

窗体控件​Command1Command1Command1'窗体代码:Private Sub Command1_Click()SetDisplaymode 800, 600End SubPrivate Sub Command2_Click()SetDisplaymode 1920, 1080End SubPrivate Sub Command3...

随便推点

【论文阅读】HGT:Heterogeneous Graph Transformer_Cziun的博客-程序员秘密

目录摘要引言摘要这篇论文提出了用于建模Web规模异质图的异质图转换架构(HGT)。为了对异质的节点和边进行建模,作者设计了和节点类别、边类别有关的参数,来表征在每个边上的异质性的注意力,这使得HGT可以为不同类型的节点和边生成专用的表示。HGT还可以处理动态的异质图。作者在HGT中引入相对时间编码技术,可以捕获到任意时间段内的动态结构依赖关系。为了能够处理Web规模的图数据,还设计了mini-batch图采样算法——HGSampling,实现高效并可扩展的训练。引言参考博客:https://b

前端和后端的英文_前端开发与架构师_weixin_39553423的博客-程序员秘密

(给前端大学加星标,提升前端技能.)作者:吕小鸣https://juejin.im/post/5d7990a16fb9a06ad16f9d55前端架构师,听起来就是个很高大上的职位,在大多数程序员的眼中,架构师一般从事后端开发,Java或者C++出身,它们往往拥有这十八般武艺,可以解决业务中出现的各种问题。好像架构师就从来没有和前端有过关系,那么真的是这样么,通读此文,便可豁然开朗。前端...

Windows下安装MySQL数据库_windows下搭建mysql数据库_「已注销」的博客-程序员秘密

windows下安装MySQL数据库,照着帖子安装了两个电脑,没次都有一点小错误,参考别人的安装记录,根据自己的安装过程,记录一下。(一个电脑安装的5.7.25一个电脑安装的5.7.26)一、MySQL官网下载安装包 https://dev.mysql.com/downloads/mysq二、移到安装目录下:解压下载的文件1.2.配置环境变量3.在解压的文...

达梦数据库备份、还原与恢复_达梦bak文件恢复_蝶恋玉儿的博客-程序员秘密

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档达梦数据库备份恢复总结前言随着IT科技的不断发展,数据已成为各大企业的核心资产,数据安全性越来越被重视。数据库备份是 DBA 日常最重要的工作内容。备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态。本章主要介绍 DM 备份与还原的概述和基本概念,为理解归档配置、备份还原的原理与工具使用奠定基础。内容主要包括:逻辑备份与恢复、物理备份与恢复等。一、备份、还原与恢复的关系是什么?.

java常见面试考点(四十七):synchronized底层原理_夏天的爱人是绿色的博客-程序员秘密

java常见面试考点往期文章推荐:  java常见面试考点(四十一):short运算小错误  java常见面试考点(四十二):序列化与反序列化  java常见面试考点(四十三):泛型  java常见面试考点(四十四):Comparable和Comparator接口  java常见面试考点(四十五):阻塞队列【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权);本博客的内容来自于:java常见面试考点(四十六):生产者消费者;学习、合作与交流联系q384660495;

Java初学总结(三十一)_爷极度无聊的博客-程序员秘密

一、什么是泛型泛型:数据类型的参数化,任意化。将某一个类/接口/方法/变量的数据类型象使用参数一样传递给类/接口/方法/变量。二、为什么需要泛型第一天 类中的x,y变量需要int类型package com.wangxing.test1;public class IntTest { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x =