利用python实现收银系统,利用文本文件和字典,要求不同种类商品建立不同文档,每件商品拥有属于自己的序列号,出库时通过输入序列号判断商品种类和数量,并自动计算,出库成功后删除对应序列号以及其对应商品
时间: 2024-03-17 15:45:22 浏览: 95
利用python+mysql实现的一个简单银行系统;用于完成数据库课程的大作业+源代码+文档说明+数据库
好的,这是一个比较具体的问题,我尽量详细回答。首先,我们可以利用Python的字典数据结构来保存商品信息,其中每个键值对表示一种商品,键为商品名称,值为一个包含商品属性的字典,例如:
```
goods = {
'apple': {'id': '001', 'price': 5.5, 'stock': 10},
'banana': {'id': '002', 'price': 3.2, 'stock': 20},
'orange': {'id': '003', 'price': 2.5, 'stock': 15}
}
```
这里我们以苹果、香蕉和橙子为例,每个商品包含一个序列号、单价和库存数量。接下来,我们可以为不同种类的商品建立不同的文本文件,例如:
```
apple.txt
banana.txt
orange.txt
```
每个文件中包含该种商品的所有序列号,每行一个。例如,apple.txt 可以包含如下内容:
```
001
002
003
...
```
在出库时,我们可以先让用户输入商品序列号,然后根据该序列号找到对应的商品名称,再更新该商品的库存数量。如果该商品库存为 0,则从字典中删除该商品。代码示例:
``` python
# 读取商品信息
def load_goods():
goods = {}
# 读取每个商品的序列号文件
for name in ['apple', 'banana', 'orange']:
with open(f'{name}.txt', 'r') as f:
sn_list = [sn.strip() for sn in f.readlines()]
# 构建商品属性字典
for sn in sn_list:
goods[sn] = {'name': name, 'price': 0, 'stock': 0}
return goods
# 更新商品库存
def update_stock(goods, sn, amount):
# 找到对应的商品
if sn in goods:
name = goods[sn]['name']
price = goods[sn]['price']
stock = goods[sn]['stock']
# 更新库存数量
if stock >= amount:
goods[sn]['stock'] -= amount
print(f'出库成功:{name} x {amount},总价值 {price * amount} 元')
# 如果库存为0,则从字典中删除该商品
if goods[sn]['stock'] == 0:
del goods[sn]
with open(f'{name}.txt', 'w') as f:
for sn in goods:
if goods[sn]['name'] == name:
f.write(sn + '\n')
else:
print(f'库存不足:{name} x {amount},当前库存 {stock},无法出库')
else:
print(f'无效序列号:{sn}')
```
在实际应用中,我们还可以添加更多功能,例如:
- 添加新商品:用户可以输入商品名称、单价和初始库存,程序会自动为该商品生成一批序列号,并将它们写入对应的文件。
- 显示库存信息:用户可以查看所有商品的库存情况,包括名称、序列号、单价和库存数量等。
- 保存商品信息:程序可以定期将当前商品信息保存到文件中,以便下次启动时恢复。
阅读全文