1. 手机销售系统(结合着本地文件的读写,进行数据的持久化(.txt),当程序退出的时候,将所有修改后的数据保存在txt中,等下一次再运行程序的时候,可以直接从txt中读取最新的数据信息)
2018-07-31 19:23
836 查看
import os import pickle
查看手机信息的函数
def query_phone(type): # phone_list = [{'name': 'vivo9', 'price': '1200', 'count': '30'}, # {'name': 'iphone6', 'price': '2000', 'count': '55'}, # {'name': 'iphone6s', 'price': '2200', 'count': '120'}, # {'name': 'iphone7', 'price': '4000', 'count': '80'}, # {'name': 'iphone7s', 'price': '4200', 'count': '90'}, # {'name': 'iphone8', 'price': '5200', 'count': '70'}] for x in range(0, len(phone_list)): phone = phone_list[x] name = phone['name'] if type == 1: price = phone['price'] count = phone['count'] print('序号:%s 产品名称:%s 产品价格:%s 产品库存:%s' % (x+1, name, price, count)) else: print('序号:%s 产品名称:%s' % (x+1, name))
购买手机的函数
def buy_phone(): if len(phone_list) <= 0: print('当前无商品信息!') return print('1.选择序号查看手机详情:') print('2.返回') num = int(input('请选择您的操作:')) while num not in range(1, 3): num = int(input('选项有误,请重选:')) if num == 1: # 输入选择产品序号 index = int(input('请输入查看的产品序号:')) while index not in range(0, len(phone_list)): index = int(input('序号有误,请重选:')) # 根据index的值,取出小字典 phone = phone_list[index] # 输出产品序号、名称、价格、库存 print('序号:%s 产品名称:%s 产品价格:%s 产品库存:%s' % (index, phone['name'], phone['price'], phone['count'])) # 是否购买 print('1.购买') print('2.返回') num = int(input('请选择:')) while num not in range(1, 3): num = int(input('选择错误,请重选:')) if num == 1: count = phone['count'] count = count - 1 if count == 0: # 手机卖完了 print('%s 已售罄,请及时补货!' % phone['name']) phone_list.remove(phone) else: # 更改库存量 phone['count'] = count return else: return
更改产品信息
def update_phone(): print('1.添加新产品') print('2.修改原有产品') print('3.返回') num = int(input('请选择您的操作:')) while num not in range(1, 4): num = int(input('选项错误,请重选')) if num == 1: # 包括产品名称、价格、库存 name = input('请输入添加的产品名称:') price = input('请输入添加的产品价格:') # 转换为数字 count = int(input('请输入添加的产品库存量:')) while count <= 0: count = int(input('库存量不能小于1,请重新输入:')) # 将产品信息组装为一个小字典 phone = {'name': name, 'price': price, 'count': count} # 将小字典添加到大列表中 phone_list.append(phone) save() elif num == 2: if len(phone_list) <= 0: print('当前无商品信息!') return # 查询手机详细信息 query_phone(1) index = int(input('请输入要修改的产品序号:')) while index not in range(0, len(phone_list)): index = int(input('序号有误,请重选:')) # 根据index取出手机信息字典 phone = phone_list[index] # 取出原来的名称 old_name = phone['name'] phone['name'] = input('请输入修改后的名称(%s):' % old_name) phone['price'] = input('请输入修改后的价格(%s):' % phone['price']) count = int(input('请输入修改后的库存量(%s):' % phone['count'])) # 库存量不能为0 while count <= 0: count = int(input('库存不能小于1,请重新输入:')) phone['count'] = count print('修改成功!') save() else: # 结束函数执行 return
声明大列表,存储所有手机信息
[{‘name’:’iPhone8’,’price’:’1999’,’count’:’1’},{‘name’:’iPhone8’,’price’:’1999’,’count’:’1’}]
def save(): with open('data.txt', 'wb') as f: pickle.dump(phone_list, f) if os.path.exists('data.txt'): with open('data.txt', 'rb') as f: phone_list = pickle.load(f) else: phone_list = [] while True: print('1.查看所有手机品牌') print('2.更改产品信息') print('3.移除产品信息') print('4.退出程序') # 选择操作: num = int(input('选择您的操作:')) while num not in range(1, 5): num = int(input('选项错误,请重选:')) if num == 1: query_phone(2) buy_phone() elif num == 2: update_phone() elif num == 3: print('移除产品信息') else: # 结束循环 break阅读更多
相关文章推荐
- 将文本文件中的数据读取到一个二维数组中,求出这些数据的中位数,然后求所有数据与中位数的差值的绝对值和,并求出和的最小值,最后把程序运行的结果写到一个txt文件中
- 利用POI对MS Excel进行读写(可以设置写入文件的样式),利用tm-extractor对Word进行读取操作并将信息用(log4j)日志信息显示出
- 从本地目录读取指定.txt文件,并且对数据进行解析。
- ORACLE DBA工具收集(Oracle DUL/AUL/ODU 恢复工具,可以脱离Oracle运行环境,直接从数据文件中读取记录)
- Matlab批量读取元胞数组中数据保存到txt文件中(WIDER FACE数据集中,读取人脸标注矩形框信息)
- Matlab批量读取元胞数组中数据保存到txt文件中(WIDER FACE数据集中,读取人脸标注矩形框信息)
- Dynamo分布式系统——「RWN」协议解决多备份数据如何读写来保证数据一致性,而「向量时钟」来保证当读取到多个备份数据的时候,如何判断哪些数据是最新的这种情况
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- Matlab批量读取元胞数组中数据保存到txt文件中(WIDER FACE数据集中,读取人脸标注矩形框信息)
- 用C#编程从数据库中读取图片数据导进Excel文件的方法(如何从数据库中读取保存的文件,直接打开,中间不保存到本地)
- [木马]不释放资源到本地文件系统,直接运行其内嵌exe程序 卡巴竟然报毒,MSE正常
- 数据存储(3):将数据以txt文件存储在本地,多个apk都可进行读写
- 静态资源路径是指系统可以直接访问的路径,且路径下的所有文件均可被用户直接读取
- Matlab批量读取元胞数组中数据保存到txt文件中(WIDER FACE数据集中,读取人脸标注矩形框信息)
- 用javascript读取xml,并进行修改xml数据,解决保存没有权限问题
- Android基础--将程序崩溃信息保存本地文件
- 现在我要写一个定时程序定时读取该目录下的所有txt文件到数据库,并把这些txt文件转移到另外一个目录
- 程序的又一次测量学实际应用(程序对全站仪测量学导出数据文件的读取与修改)
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
- 让程序在 iOS 4系统里直接退出不后台运行的方法