购物车程序--欢迎大神提建议

# 配套程序,需要创建一个锁文件lock.txt,记录用户名密码的文件shopping_pw.txtuserSaveMoney = 0 # 定义全局变量,用户起始账户余额为0def Recharge(): # 充值函数    global userSaveMoney    userInputMoney = int(input("请输入您要存入的金额:"))    userSaveMoney += userInputMoney    print("您充入的金额为:%d"%userSaveMoney)def Show(): # 商品陈列函数    global userSaveMoney    print("""    您的账号余额:%d 元    商品清单如下:    --------------------------    序号  商品名称  商品单价(元)    --------------------------    1     电脑      1999    2     鼠标      10    3     键盘      50    4     显示器    500    --------------------------    n     购物车结算    --------------------------    Q退出程序    --------------------------    """ % userSaveMoney)def Goods(): # 商品仓库函数    goodsList = [  # 商品仓库        {            "num": 1,            "name": "电脑",            "price": 1999        },        {            "num": 2,            "name": "鼠标",            "price": 200        },        {            "num": 3,            "name": "键盘",            "price": 300        },        {            "num": 4,            "name": "显示器",            "price": 1000        }    ]    return goodsListdef Shopping(goodsList):    global userSaveMoney    totalPrices = 0    shoppingCar = []  # 购物车列表,准备放置客户选购的商品    while True:        Show()        num = input("请输入您的操作(1-4)为选择添加到购物车中的商品:")        if num in ["1", "2", "3", "4"]:  # 判断是否是购买操作,输入1-4范围数字是购买操作            for el in goodsList:  # 从商品仓库中找出用户选购的产品,并打印所选产品明细                if el["num"] == int(num):                    totalPrices += el["price"]                    shoppingCar.append(el)                    print("""                        您说选购商品信息如下:                        商品名称:%s                        商品单价:%d                        """ % (el["name"], el["price"]))        elif num == "n":  # 实现结算功能,判断用户账号余额情况            Balance(shoppingCar,totalPrices)        elif num.upper() == "Q":  # 实现退出程序功能            print("程序退出")            BuiedGoods(shoppingCar,totalPrices)            exit()        else:            print("您输入序号有误,请重新输入")def Balance(shoppingCar,totalPices,):    global userSaveMoney    print("*" * 50)    print("购物车商品有:")    for el in shoppingCar:  # 打印购物车货物明细        print("%s   %s   %d" % (el["num"], el["name"], el["price"]))    if totalPices <= userSaveMoney:  # 判断购物车物品总金额是否超出用户账号金额        userSaveMoney -= totalPices        print("交易完成")    else:        shoppingCarNum = []        for el in shoppingCar:  # 为了下面程序判断用            shoppingCarNum.append(el["num"])        while True:  # 该循环体实现用户余额不足的情况下处理逻辑            print("余额不足")            select = input("输入x存值,输入产品序号从购物车删除商品:")            if select == "x":  # 利用充值的方式解决金额不足问题                userSaveMoney += int(input("请输入存入金额:"))                if userSaveMoney > totalPices:                    userSaveMoney -= totalPices                    print("交易完成")                    break            elif int(select) in shoppingCarNum:  # 利用删除购物车商品的方式解决金额不足问题                count = 0                for el in shoppingCar:                    if el["num"] == int(select):                        shoppingCar.pop(count)                        totalPices -= el["price"]                    count += 1                if userSaveMoney > totalPices:  # 商品减少的情况下再次判断账号余额是否充足                    userSaveMoney -= totalPices                    print("交易完成")                    break            else:                print("输入有误,请重新输入")def BuiedGoods(shoppingCar,totalPrices):    global userSaveMoney    print("您购买商品明细如下:")  # 结算完成后显示购买信息,消费总计,账号余额。    for el in shoppingCar:        print("%s   %s   %s" % (el["num"], el["name"], el["price"]))    print("""        共计消费%d元,        账户余额%d元        """ % (totalPrices, userSaveMoney))

def Buy():    print("""        您的账号余额为%d元,是否充值        1.充值        2.购物        """%userSaveMoney)    select = input("请输入操作选项:")    if select == "1":        Recharge()        Buy()    elif select == "2":        Shopping(Goods()) # 将商品添加到购物车# 定义注册函数def register(): # 单个用户信息保存在字典里,再将每个人的信息字典放在文件中        userInfo = {}        username = input("请输入用户名:").strip()        pw = input("请输入登录密码").strip()        pw1 = input("请再次输入密码").strip()        if pw == pw1:            with open("./shopping_pw.txt",mode="a+",encoding="utf-8") as f: # shopping_pw.txt用于保存用户名和密码信息的文件                for line in f:                    dic = dict(line)                    if username == dic["name"]:                        print("用户名已存在,请修改")                        register()                else:                    userInfo["name"] = username                    userInfo["password"] = pw                    f.write(str(userInfo)+"\n")                    print("注册成功")                    logIn()        else:            print("两次输入密码不一致,请重新输入")#2.定义登录函数def logIn(): # 构建登录函数    count = 4    f = open("lock.txt", "r")    lock = int(f.read())    f.close()    if lock == 1:        print("您的账户已锁定,请联系您的管理员解锁")    else:        # 2.提示用户输入用户名和密码        # print("请输入您的用户名和密码")        print("以下是登录界面,您只有三次重试机会,输错账户将锁定,请慎重输入")        while True:            print("*"*100)            print("进入登录页面")            print("*"*100)            usernameInput = input("请输入用户名:").strip()            userpwInput = input("请输入密码:").strip()            with open("./shopping_pw.txt", mode="r", encoding="utf-8") as f:                for line in f:                    info = eval(line) # 还原字典类型                    if info["name"] == usernameInput and info["password"] == userpwInput:                        print("验证成功,欢迎登录")                        Buy()                        break                else:                    count -= 1                    if count <= 0:                        print("您已经重试三次,账户被锁定,请联系管理员解锁")                        fileLock = open("lock.txt", "w")  # 重试三次后,设置lock锁文件                        fileLock.write("1")                        fileLock.close()                        break                    else:                        print("您还有%d重试机会,请确保输入正确,否则账户将被锁定" % count)                    # print("您输入的用户名密码有误,请重新输入")                    # logIn()#1.定义功能函数def func(select):    if select == "1":        logIn()    elif select == "2":        register()    elif select == "3":        Buy()    elif select == "4":        print("退出程序")        exit()    else:        print("您输入的选项不存在,请重新输入")def main():    select = input("""        ------1.登录------        ------2.注册------        ------3.购物------        ------4.退出------    请选择要进行的操作的序号:        """)    func(select)main()

原文地址:https://www.cnblogs.com/yyl668/p/9419347.html

时间: 2024-10-08 08:21:16

购物车程序--欢迎大神提建议的相关文章

总结过去10年的程序员生涯 (经验)---大神的建议

个人觉得不错,推荐给大家.来自网页:[链接描述][1]展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心得体会你可以借鉴一下,觉得说得有道理的你就接纳,觉得说得没道理的,你就抛弃,以下是我发自内心的,给大家的忠告,特别是针对那些小弟弟妹妹们. 不要轻易换笔记本电脑,不要跟潮流,不要买过多的电子产品,不要过于频繁的更换手机.这方面我的

转:大神提出来的java服务器方面面试问题(当作自己的学习目标平时得多注意)

因为一些个人原因,陆陆续续参加了一些校招补招.社招的笔试和面试(BAT),也包括一些国外公司(Spotify, Google, Ericsson),最后有幸被网易收入麾下,拿到了S.下面罗列一些我复习中的要点,如果能以此为一个参考,做好充足的准备,国内BAT这些公司的基础技术笔试和面试应该没什么问题.当然对于一些大公司,基础知识可能不是最被看重的,关键是学习能力,独立解决问题的能力,是否是一个"灵性"的人,我一直觉得我们程序员是在创造一个新的世界. 当然有一些技术老人,也可以看看这个,

十句程序员大神们的经典语录

10.“If debugging is the process of removing software bugs, then programming must be the process of putting them in.”  —— E.W. Dijkstra 如果调试程序是移除 bug 的过程,那编写程序就是把 bug 放进来的过程.—— 迪杰 · 斯特拉 9.“The first 90% of the code accounts for the first 90% of the de

web开发菜鸟应该如何向前端大神提问题(一次性把问题描述清楚)

1. 问题的环境和背景这里的背景一般包括,是针对桌面浏览器还是移动端开发?如果是桌面浏览器,则兼容性要求如何?比方说,你来咨询父级是百分比高度的垂直居中效果,你就要说明,你这个效果是需要兼容IE7+还是IE8+, 还是只需要IE10+支持就可以,这是很重要的,浏览器兼容性要求背景的不同,所提供的技术解决方案也会大相径庭:如果是移动端开发,是纯web还是Hybrid模式,只主需要关心iOS呢,还是所有设备. 2. 遇到的问题现象描述这里的描述不是简单的直抒胸臆,“哎呀,我这里怎么露出个边框色啊?”

这个程序词索引表的程序 求大神指点错误在哪里

#include < stdio.h >#include < stdlib.h >#include < string.h >#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -1#define MaxBookNum 1000 //假设只对1000本书建立索引表#define MaxKeyNum 2500 //索引表的最大容量#define MaxLineLen 500 //书

一个大神程序员的使命感究竟应该是什么

来源:一个大神程序员的使命感究竟应该是什么 工作了五年的工程师,算不算高级开发者?归类开发者不是简单地看工作年限,因为经验这种东西千金难换但又一文不值. 我们现在工作的行业很奇怪.明明每年都有新的从业人员涌入人才市场,但企业依旧诉苦自己迫切需要大量的开发.这种问题存在已久,而且已经越发严峻. 开发者这个行业非常年轻,也面临着很严重的人才短缺问题.大部分的软件开发项目无疾而终,原因是后期开支过于庞大.那些行业里的大佬是怎么建议我们 的,他们说「世界上永远存在解决问题的办法,但我们还是会遇到各种难题

初级程序猿到大神的晋级之路转载自宅客学院

工作了五年的工程师,算不算高级开发者?归类开发者不是简单地看工作年限,因为经验这种东西千金难换但又一文不值. 我们现在工作的行业很奇怪.明明每年都有新的从业人员涌入人才市场,但企业依旧诉苦自己迫切需要大量的开发.这种问题存在已久,而且已经越发严峻. 开发者这个行业非常年轻,也面临着很严重的人才短缺问题.大部分的软件开发项目无疾而终,原因是后期开支过于庞大.那些行业里的大佬是怎么建议我们的,他们说「世界上永远存在解决问题的办法,但我们还是会遇到各种难题.因为除非我们真正去尝试解决,否则永远不知道哪

&quot;菜鸟&quot;与大神程序员之间的差别(转载)

前段时间看到一篇文章,写得很好,针对菜鸟与大神之间的差别做了很客观.很透彻的分析,现在将文章转载过来,原文地址:http://www.apkbus.com/forum.php?mod=viewthread&tid=239356&highlight=%E8%8F%9C%E9%B8%9F “菜鸟”和“大神” 刚刚走出就业的程序员,技术是刚刚起步的基点.那下面我们就聊一聊有关技术 的东西.首先请您先想想这几个问题.现在社会上有很多程序员,CSDN就是我们程序员的家,那您是否可想过程序员为什么会有

学会思考--菜鸟程序员晋升大神之路

"菜鸟"和"大神" 刚刚走出就业的程序员,技术是刚刚起步的基点.那下面我们就聊一聊有关技术的东西.首先请您先想想这几个问题.现在社会上有很多程序员,那您是否可想过程序 员为什么会有不同的水平?你又是哪一类的程序员?"菜鸟"程序员和"大神"程序员差在哪里?真是差在技术上了吗?那不是差在技术上那差在了哪里? 上面很多一连串的问题,没有把你搞晕吧!那就听我一一给您分析这个问题背后的答案.确切的说程序员分为"菜鸟"