day4_shop程序
# 1、作业:# 先让你登录 # { # "nhy":{"passwd":123,'role':1,'money':10000,"carts":['mac']}, # "nhy2":{"passwd":123,'role':2,'money':10000,"carts":[]} # } # role是1的话,代表管理员,2代表普通用户 # 普通用户: # 1、查看所有的商品 2、输入商品名称购买商品,购买完了之后要加到自己的购物车里面,钱要减去 3、可以查看自己购物车和余额,你已经买了xx东西,你还xxx钱 4、退出
# 管理员: #1、添加商品,商品名称,商品价格 2、充值,输入用户名,给他加钱 3、退出
# 需求分析# 1、存用户信息的这个文件、存商品信息的文件,都需要初始化# 2、登录# 3、登录成功之后判断角色展示不同的菜单 #普通用户:# 1、查看所有商品,打印字典 2、购买商品,字典的修改,修改完之后写文件 3、查看购物车和余额,打印字典 4、退出
#管理员:# 1、添加商品,字典的修改,修改完之后写文件 2、充值、输入用户名,字典的修改,修改完之后写文件 3、退出
# 公共的,就是读文件、写文件
USER_FILE = 'user.txt' # 用常量保存用户信息GOODS_FILE = 'goods.txt' # 用常量保存用户信息
def op_file(file_name,content = None): # content = None,如果content为真是写操作 f = open(file_name,'a+',encoding = 'utf8') f.seek(0) if content: f.truncate() f.write(str(content)) f.flush() res = None else: res = eval(f.read()) f.close() return res
def not_null(var): # 输入的内容不为空的函数 if len(var) > 0: return True return False
def is_price(s): # 合法的价格函数 s = str(s) if s.count('.') == 1: new_s = s.split('.') left_num = new_s[0] right_num = new_s[-1] if right_num.isdigit(): if left_num.isdigit(): return True elif s.isdigit() and int(s) > 0: return True return False
def add_products(): # 管理员添加商品 products = op_file(GOODS_FILE) while True: product_name = input('请输入你要添加的商品名称:').strip() money = input('请输入你的商品价格:').strip() if not_null(product_name) and not_null(money): if product_name not in products: if is_price(money):#价格合法的话 products[product_name] = float(money) op_file(GOODS_FILE,products) print('商品添加成功!') return admin() else: print('价格输入不合法!') else: print('商品已存在!') else: print('商品名称/价格不能为空!')
def recharge(): # 管理员充值 users = op_file(USER_FILE) while True: username = input('请输入你要充值的账号:').strip() money = input('请输入你要充值的钱:').strip() if not_null(username) and not_null(money): if username in users: if is_price(money): src_money = users[username]['money'] users[username]['money'] = src_money + float(money) op_file(USER_FILE,users) print('充值成功!') return admin() else: print('钱输入不合法!') else: print('用户不存在!') else: print('账号/钱不能为空!')
def admin(): # 管理员菜单函数 choice = input('请输入你的选择:1、充值 2、添加商品 3、退出').strip() menu = { '1':recharge, '2':add_products, '3':exit } if choice in menu: menu[choice]() else: print('请输入正确的选择!') admin()
def show_products(user): # 普通用户查看商品 products = op_file(GOODS_FILE) for k in products: print('商品名称是%s,价格是%s' % (k,products[k])) return buyer(user)
def buy(user): # 普通用户购买商品,要传入user # 1、把原来的用户信息读出来 # 2、买完之后,再写进去 users = op_file(USER_FILE) products = op_file(GOODS_FILE) money = users[user]['money'] carts = users[user]['carts'] for k in products: print('商品名称是%s,价格是%s' % (k,products[k])) while True: product_name = input('请输入你要购买的商品名称:').strip() if not_null(product_name): if product_name in products: product_price = products[product_name] if money >= product_price: carts.append(product_name) money -= product_price users[user]['carts'] = carts users[user]['money'] = money op_file(USER_FILE,users) print('商品购买成功!') return buyer(user) else: print('对不起,你的余额不足,你的余额是 %s' % money) else: print('你输入的商品名称不存在!') else: print('商品名称不能为空!')
def user_info(user): # 把哪个用户的信息打印出来 users = op_file(USER_FILE) money = users[user]['money'] carts = users[user]['carts'] print('你的余额是%s' % money) print('你的购物车里有'% carts) return buyer(user)
def buyer(user): # 普通用户菜单函数 choice = input('请输入你的选择:1、查看商品信息 2、购买商品 3、查看购物车 4、退出').strip() menu = { '1': show_products, '2': buy, '3': user_info, '4': exit } if choice in menu: menu[choice](user) else: print('请输入正确的选择!') buyer(user)
def login(): # 登录函数读文件 users = op_file(USER_FILE) for i in range(3): username = input('请输入账号:').strip() passwd = input('请输入密码:').strip() if not_null(username) and not_null(passwd):#账号和密码都不为空 if username in users: cur_user = users[username] # 代表通过账号获取到的小字典 if cur_user['passwd'] == passwd: if cur_user['role'] == 1: print('欢迎管理员登录') admin() else: print('欢迎%s登录' % username) buyer(username) else: print('用户不存在!') else: print('账号/密码不能为空!') login()
转载于:https://www.cnblogs.com/laosun0204/p/8515287.html
day4_shop程序相关推荐
- 编程精粹 --Microsoft编写优质无错C程序秘诀
献给我的妻子Beth, 以及我的双亲Joseph和Julia Maguire ────为了他们的爱和支持 序 1986年,在为几家小公司咨询和工作了10年之后为了获得编写Macintosh应用程序的经 ...
- POCO C++库学习和分析 -- 序
POCO C++库学习和分析 -- 序 1. POCO库概述: POCO是一个C++的开源库集.同一般的C++库相比,POCO的特点是提供了整一个应用框架.如果要做C++程序应用框架的快速开发,我觉得 ...
- 程序主动进行电话短信报警,自定义电话、短信、钉钉报警通知
程序主动进行电话短信报警,自定义电话.短信.钉钉报警通知 一. 规则说明 这里我们要利用到阿里云的云监控的手段,有一个叫做事件监控的东西,可以通过自定义事件上传来进行监控报警. 流程: 程序发现错误 ...
- 终止js程序执行的方法
js终止程序执行的方法共有三种 (一)在function里面(普通js方法) (1)return; (2)return false; (二)非function方法里面(如ajax方法) alert(& ...
- 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析
目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...
- 【ReactiveX】基于Golang pmlpml/RxGo程序包的二次开发
基于Golang pmlpml/RxGo程序包的二次开发[阅读时间:约20分钟] 一.ReactiveX & RxGo介绍 1.ReactiveX 2.RxGo 二.系统环境&项目介绍 ...
- 【golang程序包推荐分享】分享亿点点golang json操作及myJsonMarshal程序包开发的踩坑经历 :)
目录[阅读时间:约5分钟] 一.概述 1.Json的作用 2.Go官方 encoding/json 包 3. golang json的主要操作 二.Json Marshal:将数据编码成json字符串 ...
- 基于Golang的对象序列化的程序包开发——myJsonMarshal
基于Golang的对象序列化的程序包开发--myJsonMarshal[阅读时间:约10分钟] 一.对象序列化概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 三.具体程序设计及 ...
- 【golang程序包推荐分享】go-ini、viper、godoc
[golang程序包推荐&分享]go-ini.viper.godoc 一.go-ini 1.程序包简介 2.下载安装 3.简单使用[截取自官网] 二.viper 1.程序包简介 2.下载安装 ...
最新文章
- 年中盘点:2020年炙手可热的10家数据科学和机器学习初创公司
- 这个AI模型用最少的训练数据学习对象之间的关系
- jquery选择器的一些处理
- mysql3308_mysql 5.7.16多源复制
- http://blog.chinaunix.net/uid-20577907-id-3519578.html
- 使用前台方式启动Redis时,出现Creating Server TCP listening socket 127.0.0.1:6379: bind: Address already in use报错
- 摄像头YUV2格式详解
- mysql sql dateadd_在SQL语句中DATEADD和DATEDIFF函数
- 试题7 算法训练 P0505(最右边的那个非0的数字)
- WinPmem:跨平台内存采集工具
- 2021研究生数学建模B题,空气质量检测
- win10无法正常弹出移动硬盘/U盘
- MySQL快速解决“is marked as crashed and should be repaired“故障
- G1调优实践日记--G1HeapWastePercent和InitiatingHeapOccupancyPercent的应用
- Kotlin的SAM转换
- 使用CM快速搭建CDH集群
- 数据结构与算法_01_复杂度分析
- excel 导入导出使用poi自定义注解
- 在Word文档中插入Excel表格时出现:“用于创建此对象的程序是Excel。您的计算机尚未安装此程序。”试试这个方法
- MySQL 5.7--------多实例部署最佳实战