因功能改进和CSDN博客对项目的上传不支持,完整版已经移动到github地址:
https://github.com/LieLieLiekey/Small-supermarket-inventory-management-system
欢迎大家访问。
Py文件分下面几个
-
supermarketmanage.py ,负责软件的开始界面和调用其他几个人员界面
-
basic.py ,负责软件与数据库交流的函数,提供软件与数据库所需的基本查询、修改、删除等功能
-
frontdesk.py ,售货员的前台界面以及功能
-
purchasemanage.py ,进货员的前台界面以及功能
-
adminmanage.py ,管理员的前台界面以及功能
-
generaloperat.py ,包含所有员工共有的一些操作函数
-
commodity.py ,商品对象的定义
-
cashier.py ,售货员对象的定义
-
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"工资/月","手机号","出生日期"])