python编写超市收银系统
时间: 2023-07-26 20:42:02 浏览: 84
好的,以下是使用Python编写超市收银系统的示例代码,仅供参考:
```python
# 导入所需的库
import time
# 商品管理模块
class Goods:
def __init__(self, name, price, stock):
self.name = name
self.price = price
self.stock = stock
class GoodsManager:
def __init__(self):
self.goods_list = []
# 添加商品
def add_goods(self, goods):
self.goods_list.append(goods)
# 删除商品
def del_goods(self, name):
for goods in self.goods_list:
if goods.name == name:
self.goods_list.remove(goods)
# 修改商品价格
def modify_price(self, name, price):
for goods in self.goods_list:
if goods.name == name:
goods.price = price
# 修改商品库存
def modify_stock(self, name, stock):
for goods in self.goods_list:
if goods.name == name:
goods.stock = stock
# 查询商品信息
def search_goods(self, name):
for goods in self.goods_list:
if goods.name == name:
return goods
return None
# 显示商品列表
def show_goods_list(self):
print("商品列表:")
for goods in self.goods_list:
print("名称:{},价格:{},库存:{}".format(goods.name, goods.price, goods.stock))
# 销售模块
class Sale:
def __init__(self, goods, num):
self.goods = goods
self.num = num
class SaleManager:
def __init__(self):
self.sale_list = []
# 添加销售记录
def add_sale(self, sale):
self.sale_list.append(sale)
# 计算总价格
def calc_total_price(self):
total_price = 0
for sale in self.sale_list:
total_price += sale.goods.price * sale.num
return total_price
# 打印小票
def print_receipt(self):
print("**********小票**********")
for sale in self.sale_list:
print("商品:{},单价:{},数量:{},总价:{}".format(sale.goods.name, sale.goods.price, sale.num, sale.goods.price * sale.num))
print("总价:{}".format(self.calc_total_price()))
print("************************")
# 会员管理模块
class Member:
def __init__(self, name, discount):
self.name = name
self.discount = discount
class MemberManager:
def __init__(self):
self.member_list = []
# 添加会员
def add_member(self, member):
self.member_list.append(member)
# 删除会员
def del_member(self, name):
for member in self.member_list:
if member.name == name:
self.member_list.remove(member)
# 修改会员折扣
def modify_discount(self, name, discount):
for member in self.member_list:
if member.name == name:
member.discount = discount
# 查询会员信息
def search_member(self, name):
for member in self.member_list:
if member.name == name:
return member
return None
# 库存管理模块
class Stock:
def __init__(self, goods, num):
self.goods = goods
self.num = num
class StockManager:
def __init__(self):
self.stock_list = []
# 添加库存
def add_stock(self, stock):
self.stock_list.append(stock)
# 删除库存
def del_stock(self, name):
for stock in self.stock_list:
if stock.goods.name == name:
self.stock_list.remove(stock)
# 修改库存数量
def modify_num(self, name, num):
for stock in self.stock_list:
if stock.goods.name == name:
stock.num = num
# 查询库存信息
def search_stock(self, name):
for stock in self.stock_list:
if stock.goods.name == name:
return stock
return None
# 显示库存列表
def show_stock_list(self):
print("库存列表:")
for stock in self.stock_list:
print("商品:{},数量:{}".format(stock.goods.name, stock.num))
# 报表统计模块
class Report:
def __init__(self, goods, num):
self.goods = goods
self.num = num
class ReportManager:
def __init__(self):
self.report_list = []
# 添加报表记录
def add_report(self, report):
self.report_list.append(report)
# 统计销售情况
def calc_sale_report(self):
sale_dict = {}
for report in self.report_list:
if report.goods.name in sale_dict:
sale_dict[report.goods.name] += report.num
else:
sale_dict[report.goods.name] = report.num
return sale_dict
# 统计库存情况
def calc_stock_report(self):
stock_dict = {}
for report in self.report_list:
if report.goods.name in stock_dict:
stock_dict[report.goods.name] += report.num
else:
stock_dict[report.goods.name] = report.num
return stock_dict
# 主程序
if __name__ == "__main__":
# 初始化商品列表
goods1 = Goods("可口可乐", 3.0, 50)
goods2 = Goods("雪碧", 2.5, 60)
goods3 = Goods("芬达", 2.8, 40)
goods_manager = GoodsManager()
goods_manager.add_goods(goods1)
goods_manager.add_goods(goods2)
goods_manager.add_goods(goods3)
# 初始化会员列表
member1 = Member("张三", 0.8)
member2 = Member("李四", 0.9)
member_manager = MemberManager()
member_manager.add_member(member1)
member_manager.add_member(member2)
# 初始化库存列表
stock1 = Stock(goods1, 50)
stock2 = Stock(goods2, 60)
stock3 = Stock(goods3, 40)
stock_manager = StockManager()
stock_manager.add_stock(stock1)
stock_manager.add_stock(stock2)
stock_manager.add_stock(stock3)
# 初始化报表列表
report_manager = ReportManager()
# 进入销售流程
while True:
print("请输入商品名称:")
goods_name = input()
goods = goods_manager.search_goods(goods_name)
if goods is None:
print("商品不存在,请重新输入!")
continue
print("请输入数量:")
num = int(input())
if num > goods.stock:
print("库存不足,请重新输入!")
continue
sale = Sale(goods, num)
sale_manager = SaleManager()
sale_manager.add_sale(sale)
# 更新库存数量
goods.stock -= num
stock_manager.modify_num(goods_name, goods.stock)
# 更新报表记录
report = Report(goods, num)
report_manager.add_report(report)
# 是否需要结算
print("是否需要结算(Y/N)?")
choice = input()
if choice == "Y" or choice == "y":
# 是否使用会员卡
print("是否使用会员卡(Y/N)?")
choice = input()
if choice == "Y" or choice == "y":
print("请输入会员名称:")
member_name = input()
member = member_manager.search_member(member_name)
if member is None:
print("会员不存在,不使用会员卡!")
discount = 1.0
else:
discount = member.discount
else:
discount = 1.0
# 计算总价
total_price = sale_manager.calc_total_price() * discount
print("总价为:{}".format(total_price))
# 打印小票
sale_manager.print_receipt()
# 更新报表记录
for sale in sale_manager.sale_list:
report = Report(sale.goods, sale.num)
report_manager.add_report(report)
# 退出销售流程
break
# 显示报表统计
sale_report = report_manager.calc_sale_report()
print("销售情况:")
for goods_name, num in sale_report.items():
print("商品:{},数量:{}".format(goods_name, num))
stock_report = report_manager.calc_stock_report()
print("库存情况:")
for goods_name, num in stock_report.items():
print("商品:{},数量:{}".format(goods_name, num))
```
以上代码并不完整,仅仅是一个简单的示例,实际应用中还需要根据具体需求进行完善。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)