超市购物功能,会员卡功能,会员卡积分查询功能,会员卡奖品功能,自己练手函数程序

函数自己练手一晚上敲的,各位博主可以走过路过可以来瞧瞧,欢迎评价提需求哈哈

total_prices = 0

def chiose(action):
    '''0是注册功能,1是会员卡系统,2是购物功能,3是会员查找积分功能,4为会员积分兑换功能'''
    #注册功能
    if action == 0:
        # 注册内容
        def register():
            while True:
                print('注册账号'.center(50, "-"))
                name = input('请输入账号').strip()
                print('注册密码'.center(50, "-"))
                pwd = input('请输入密码').strip()
                with open('用户注册信息.txt', 'r', encoding='utf8') as fw:
                    data = fw.read()
                if name in data :
                    print('已有账号')
                    continue
                else:
                    print('注册成功')
                    with open('用户注册信息.txt', 'a', encoding='utf8') as fw:
                        fw.write(f'{name}:{pwd}|')
                    break
            print(50*'-')
        return register

    # 会员卡功能,100块钱1分
    # 其中加个必须结合shoping进行
    #小于10分是普通会员9折优惠
    #大于等于10分是黄金会员8.5折优惠
    # 大于等于100分是至尊会员打8折
    if action == 1:
        def member():
            choise = input('有会员输入1\n'
                           '没会员输入其他\n'
                           '最终解释权归杨文益所有')
            count = 0
            if choise == '1':
                while count == 0:
                    info_dict = dict()
                    member_dict = dict()
                    new_member_dict = dict()
                    print('登入账号'.center(50, "-"))
                    name = input('请输入账号(真的想不起来了,输入我忘了密码随意退出)\n').strip()
                    print('登入密码'.center(50, "-"))
                    pwd = input('请输入密码').strip()
                    with open('用户注册信息.txt', 'r', encoding='utf8') as fr:
                        info = fr.read()
                    info_list = info.split('|')
                    for info in info_list[:-1]:
                        info = info.split(':')
                        info_name = info[0]
                        info_pwd = info[1]
                        info_dict[info_name] = info_pwd
                    if name == '我忘了':
                        print(50 * '-')
                        count = 1
                    elif name not in info_dict:
                        print('会员账号错误')
                        continue
                    elif pwd != info_dict.get(name):
                        print('密码错误')
                        continue
                    else:
                        print('会员成功')
                        count = 1
                        # 写入会员名字加积分
                        with open('会员积分.txt', 'a', encoding='utf8')  as fw,                            open('会员积分剩余积分.txt', 'a', encoding='utf8')  as fw_1:
                            fw.write(f'{name}:{total_prices / 100}|')
                            fw_1.write(f'{name}:{total_prices / 100}|')
                        # 读写会员总积分
                        with open('会员积分.txt', 'r', encoding='utf8') as fw:
                            member = fw.read()
                        member_list = member.split('|')
                        for member in member_list[:-1]:
                            member = member.split(':')
                            member_name = member[0]
                            member_integral = float(member[1])
                            if member_name not in member_dict:
                                member_dict[member_name] = member_integral
                            else:
                                member_dict[member_name] += member_integral

                        # 读写会员剩余积分
                        with open('会员积分剩余积分.txt', 'r', encoding='utf8') as fw:
                            new_member = fw.read()
                        new_member_list = new_member.split('|')
                        for new_member in new_member_list[:-1]:
                            new_member = new_member.split(':')
                            new_member_name = new_member[0]
                            new_member_integral = float(new_member[1])
                            if new_member_name not in new_member_dict:
                                new_member_dict[new_member_name] = new_member_integral
                            else:
                                new_member_dict[new_member_name] += new_member_integral

                        # 打印积分
                        print(50 * '-')
                        print(f'你好{name}')
                        print(f'您当前的积分{member_dict.get(name)}分')
                        integral = member_dict.get(name)
                        if integral < 10:
                            print(50 * '-')
                            print('您是我们超市的普通会员可以享受9折优惠')
                            print(50 * '-')
                            print(f'你本次购买总计:{total_prices}')
                            print(f'会员折扣后为{0.9*total_prices}')
                            print(50 * '-')
                            print(f'请到前台支付{0.9 * total_prices}')
                            print(50 * '-')
                            print('欢迎下次光临'.center(44,"-"))
                        elif integral < 100:
                            print(50 * '-')
                            print('您是我们超市的黄金会员可以享受8.5折优惠')
                            print(50 * '-')
                            print(f'你本次购买总计:{total_prices}')
                            print(f'会员折扣后为{0.85 * total_prices}')
                            print(50 * '-')
                            print(f'请到前台支付{0.85 * total_prices}')
                            print(50 * '-')
                            print('欢迎下次光临'.center(44, "-"))
                        else:
                            print(50 * '-')
                            print('您是我们超市的至尊会员可以享受8折优惠')
                            print(50 * '-')
                            print(f'你本次购买总计:{total_prices}')
                            print(f'会员折扣后为{0.8 * total_prices}')
                            print(50 * '-')
                            print(f'请到前台支付{0.8 * total_prices}')
                            print(50 * '-')
                            print('欢迎下次光临'.center(44, "-"))
                        print(50 * '-')

        return member

    #购物系统
    if action == 2:
        def shopping():
            # 产品成功选择后用judge = 1跳转到继续,结清,清空选择列表
            # 选择产品后继续 jump == '1'跳转,结算用jump == '0' 跳转, 清空继续购买用jump == '2'跳转,清空退出购买用jump == '3'跳转
            # 用 a == '0' 控制继续购买, a =='1'控制退出购买
            commodity_dict = {
                '0': ['cat', 100],
                '1': ['dog', 200],
                '2': ['pig', 300]
            }
            user_dict = dict()
            a = '0'
            print('欢迎来选购'.center(50, "-"))
            while a == '0':
                chiose = input('输入0商品是cat\n'
                               '输入1商品是dog\n'
                               '输入2商品是pig\n'
                               '请选择你要购买的商品:')
                print(50 * '-')
                commodity_info = commodity_dict.get(chiose)
                num = input('请输入你选择商品的数量')
                # 判断输入内容

                if not num.isdigit():
                    print('数量输入有误请重新输入,数量只能输入数字')
                    continue
                if chiose not in commodity_dict:
                    print('无效商品,请在0,1,2中选择输入')
                    continue

                # 整理商品清单
                else:
                    num_int = int(num)
                    if commodity_info[0] not in user_dict:
                        user_dict[commodity_info[0]] = [num_int, num_int * commodity_info[1]]
                        judge = 1  # 跳转选择界面
                        a = '1'

                    else:
                        user_dict[commodity_info[0]][0] += num_int
                        user_dict[commodity_info[0]][1] += num_int * commodity_info[1]
                        judge = 1  # 跳转选择界面
                        a = '1'

                # 打印购买信息
                global total_prices
                total_prices = 0
                print("\n")
                print('杨大爷超市欢迎您'.center(42, '-'))
                print('\n你选择的商品')
                for name, info_list in user_dict.items():
                    print(f'{name}{info_list[0]}个合计{info_list[1]}元\n')
                    total_prices += info_list[1]
                print(50 * '-')
                print(f'        总计{total_prices}元')

                # 功能选择
                while judge == 1:
                    print(50 * '-')
                    jump = input('输入0结算\n'
                                 '输入1继续购买\n'
                                 '输入2清空购物车继续购买\n'
                                 '输入3清空购物车退出\n'
                                 '请输入您的选择').strip()
                    if not jump.isdigit():
                        print('请正确输入0,1,2,3中任意数字')
                        continue
                    if jump == '1':
                        judge = 4  # 跳出功能选择
                        a = '0'  # 继续购买
                    elif jump == '2':
                        user_dict = dict()  # 清空购物车
                        judge = 4  # 跳出功能选择
                        a = '0'  # 继续购买
                    elif jump == '3':
                        user_dict = dict()
                        judge = 4  # 跳出功能选择
                        print("-" * 50)
                        print('欢迎下次光临')
                    elif jump == '0':
                        judge = 4  # 跳出功能选择
                        print("-" * 50)
                        print(f'一共{total_prices}元请到前台支付,如果有会员在下面输入会员信息')
                        print("-" * 50)
                        print('欢迎下次光临')

        return shopping

    #会员积分查询
    if action == 3:
        def menber_integral():
            #生成总积分字典:
            menber_integral_dict = dict()
            with open('会员积分.txt','r',encoding='utf8') as fr:
                info_list = fr.read().split('|')[:-1]
                for info in info_list:
                    info = info.split(':')
                    if info[0] not in menber_integral_dict:
                        menber_integral_dict[info[0]] = float(info[1])
                    else:
                        menber_integral_dict[info[0]] += float(info[1])
            # 生成剩余积分字典:
            new_menber_integral_dict = dict()
            with open('会员积分剩余积分.txt', 'r', encoding='utf8') as fr:
                new_info_list = fr.read().split('|')[:-1]
                for new_info in new_info_list:
                    new_info = new_info.split(':')
                    if new_info[0] not in new_menber_integral_dict:
                        new_menber_integral_dict[new_info[0]] = float(new_info[1])
                    else:
                        new_menber_integral_dict[new_info[0]] += float(new_info[1])
            while True :
                print('-'*50)
                name = input('请输入你会员卡的名字(退出输入我忘了)').strip()
                if name == '我忘了':
                    print('-' * 50)
                    print('请选择')
                    break
                if not name in menber_integral_dict:
                    print('-' * 50)
                    print('会员账号输入错误')
                    print('-' * 50)
                else:
                    print('-' * 50)
                    print('会员介绍'.center(46,' '))
                    print('积分小于10分为普通会员可以打9折')
                    print('积分大于10分小于100分为黄金会员可以打8.5折')
                    print('积分大于100分为黄金会员可以打8折')
                    print('-' * 50)
                    print(f'会员卡账号:{name}')
                    if menber_integral_dict[name] <10:
                        print('您当前会员等级为普通会员')
                        print('您可以享受9折优惠')
                    elif menber_integral_dict[name] <100:
                        print('您当前会员等级为黄金会员')
                        print('您可以享受8.5折优惠')
                    else:
                        print('您当前会员等级为至尊会员')
                        print('您可以享受8折优惠')
                    print(f'当前总积分:{menber_integral_dict[name]}')
                    print(f'已使用积分:{new_menber_integral_dict[name] - menber_integral_dict[name]}')
                    print(f'剩余积分:{new_menber_integral_dict[name]}')
                    break
        return menber_integral

    #会员积分兑换系统
    if action == 4:
        def gift():
            count = 0
            # 生成剩余积分字典:
            new_menber_integral_dict = dict()
            with open('会员积分剩余积分.txt', 'r', encoding='utf8') as fr:
                new_info_list = fr.read().split('|')[:-1]
                for new_info in new_info_list:
                    new_info = new_info.split(':')
                    if new_info[0] not in new_menber_integral_dict:
                        new_menber_integral_dict[new_info[0]] = float(new_info[1])
                    else:
                        new_menber_integral_dict[new_info[0]] += float(new_info[1])
            #礼物字典:
            gift_dict = {
                '0':['钢笔',1.0],
                '1':['奥特曼玩偶',2.0],
                '2':['高达',10.0],
                '3':['钢铁侠1比1外套',100.0]
            }
            #账号登入
            #生成账号字典
            user_dict = dict()
            with open('用户注册信息.txt','r',encoding='utf8') as fr:
                user_info = fr.read()
            user_info_list = user_info.split('|')[:-1]
            for user_pwd in user_info_list:
                user_pwd = user_pwd.split(':')
                user_name = user_pwd[0]
                user_pwd = user_pwd[1]
                user_dict[user_name] = user_pwd  #注册时候用户名肯定不同所以不需要判断

            #开始登入,生成用户信息内容为密码和姓名都是字符串格式
            while count == 0:
                name = input('输入账号名字(输入我忘了退出会员积分兑换)')
                pwd = input('输入账号密码')
                if name =='我忘了':
                    break
                if name not in user_dict:
                    print('账号错误')
                elif pwd != user_dict[name]:
                    print('密码错误')
                else:
                    print('登入成功')

                    #打印他剩余积分以及奖品兑换信息
                    print('-'*50)
                    print('可兑换的奖品'.center(50,' '))
                    print(f"输入0礼品为{gift_dict['0'][0]}需要积分为{gift_dict['0'][1]}分")
                    print(f"输入1礼品为{gift_dict['1'][0]}需要积分为{gift_dict['0'][1]}分")
                    print(f"输入2礼品为{gift_dict['2'][0]}需要积分为{gift_dict['2'][1]}分")
                    print(f"输入3礼品为{gift_dict['3'][0]}需要积分为{gift_dict['3'][1]}分")
                    print(f'退出输入X或者x')
                    # print(gift_dict)
                    # print(new_menber_integral_dict)
                    print('-' * 50)

                    #选择礼物
                    while True:
                        gift_choise = input('请输入你要兑换的礼物').strip()
                        if gift_choise not in gift_dict:
                            print('请在0,1,2,3,X,x中选择输入')
                            continue
                        else:
                            if gift_choise == 'X' or gift_choise == 'x':
                                break
                            if name not in new_menber_integral_dict:
                                print('你的账号没有积分')
                                break
                            if gift_dict[gift_choise][1] > new_menber_integral_dict[name]:
                                print('积分不足')
                                print(f'您的剩余积分:{new_menber_integral_dict[name]}分')
                            else:
                                print('-' * 50)
                                print(f'恭喜你获得{gift_dict[gift_choise][0]}')
                                print(f'剩余积分{new_menber_integral_dict[name]-gift_dict[gift_choise][1]}')
                                #将内容剩余积分进行统计
                                with open('会员积分剩余积分.txt','a',encoding='utf8') as fw:
                                    fw.write(f'{name}:-{gift_dict[gift_choise][1]}|)')
                                count = 1
                                break
        return gift

print('欢迎来到杨大爷超市')
print('-' * 50)
x = 0
while x == 0:
    print('-' * 50)
    your_chiose = input('输入0注册会员进入注册功能\n'
                        '输入1黑店我要走了\n'
                        '输入2直接进入购物\n'
                        '输入3会员积分查询\n'
                        '输入4会员积分兑换礼物')
    print('-' * 50)
    if your_chiose not in ['0', '2', '1','3','4']:
        print('亲,输入0~4中数字')
        continue
    else:
        if your_chiose == '0':
            chiose(0)()
        elif your_chiose == '2':
            chiose(2)()
            chiose(1)()
        elif your_chiose == '3':
            chiose(3)()
        elif your_chiose == '4':
            chiose(4)()
        else:
            print('拜拜')
            x = 1

原文地址:https://www.cnblogs.com/pythonywy/p/10957368.html

时间: 2024-11-06 09:38:04

超市购物功能,会员卡功能,会员卡积分查询功能,会员卡奖品功能,自己练手函数程序的相关文章

TFS 2015新功能之一,当前迭代查询标记

TFS 2015发布在即,有幸作为MVP提前获得了TFS的RTM版本,下面就TFS 2015的新功能做一些介绍:   TFS 2015新功能之一,当前迭代查询标记 在TFS的查询中,可以将"迭代路径"做为筛选条件获得需要的工作项.但是在实际使用过程中,经常需要将当前迭代作为筛选条件,例如需要获取当前迭代为完成的任务:而当前迭代是经常变化的,进入到下一个月后,当前迭代就变了,如果工作项查询条件不支持自动变化,则查询出来的结果还是上一个迭代的工作项,不得不手动去修改查询条件,设置为当前的迭

【SSH网上商城项目实战11】查询和删除商品功能的实现

在第8节我们完成了查询和删除商品类别的功能,那么现在实现查询和删除商品的功能就很好做了,原理和第8节一模一样,只是修改一些参数,比如请求不同的action等.由于查询和删除商品不需要弹出新的UI窗口,所以我们只要完成完成query.jsp中相应的部分以及相应的后台即可. 1. 查询商品功能的实现 查询功能主要在查询框中实现,从上一节可知,查询框用的是一个text:"<input id='ss' name='serach' />",我们通过把普通的文本框转化为查询搜索文本框来

MySQL实现排名并查询指定用户排名功能,并列排名功能

MySQL实现排名并查询指定用户排名功能,并列排名功能 表结构: CREATE TABLE test.testsort ( id int(11) NOT NULL AUTO_INCREMENT, uid int(11) DEFAULT 0 COMMENT '用户id', score decimal(10, 2) DEFAULT 0.00 COMMENT '分数', PRIMARY KEY (id) ) ENGINE = INNODB AUTO_INCREMENT = 1 CHARACTER SE

【redis 学习系列07】Redis小功能大用处01 慢查询分析以及Redis Shell

Redis提供了5种数据结构已经足够强大,但除此之外,Redis还提供了诸如慢查询分析.功能强大的Redis Shell.Pipeline.事务与Lua脚本.Bitmaps.HyperLogLog.发布订阅.GEO等附加功能,这些功能可以在某些场景发挥重要作用. 慢查询分析:通过慢查询分析,找出有问题的命令进行优化: Redis Shell:功能强大的Redis Shell会有意想不到的使用功能: Pipeline:通过Pipeline(管道或者流水线)机制有效提高客户端性能: 事务与Lua:制

分析超市购物流程,并画出活动图

第一部分:活动图语法 (1)简单活动图:活动标签(activity label)以冒号开始,以分号结束.活动默认安装它们定义的顺序就行连接. 1 @startuml 2 :Hello world; 3 :This is on defined on 4 several **lines**; 5 @enduml (2)开始/结束:你可以使用关键字start和stop表示图示的开始和结束. 1 @startuml 2 start 3 :Hello world; 4 :This is on define

IAP升级功能编写初期的一些困惑与疑问---完成功能后的总结

IAP的源码等资料我上传了,压缩包内有12个文件,,http://download.csdn.net/detail/f907279313/7524849(要积分的辛苦收集的你们就给点积分吧) 还有另一篇博客总结的IAP:http://blog.csdn.net/super_demo/article/details/32086541 一,网上下载的例程,跳转部分的代码有差异,尤其是用的汇编那句 eg: ①Jump_To_Application  = (pFunction)(*(vu32*) (IA

微信小程序 超市购物页面

日常记录 附上文档地址 有兴趣可以指点指点 纯属学习 https://files.cnblogs.com/files/NISUN/restaurant.zip 日常学习 index.wxml <!--index.wxml--> <view class="page"> <!-- 搜索框--> <view class="viewbox"> <view class="search"> <

Eclipse自动补全功能和自动生成作者、日期注释等功能设置

以前想实现添加代码作者信息的东西,但不知道怎样实现,今天终于在网上无意中找到解决办法了 Eclipse自动生成作者.日期注释等功能设置 在使用Eclipse 编写Java代码时,自动生成的注释信息都是按照预先设置好的格式生成的. 修改作者.日期注释格式:打开Windows->Preferences->Java->Code Style->Code Templates,点击右边窗口中的Comments,可以看到有很多选项,我们便可对此注释信息模板进行编辑. 如我们希望在一个Java文件

RFID射频卡超市购物结算系统

这段时间在做RFID射频卡超市购物结算系统,这个系统的设想来自于大学研究课题,但是我们在淘宝网上购买设备的时候淘宝店主都认为RF射频技术不好应用在超市购物结算系统,原因有几点:第一个是超市有许多商品是水.饮料.肉类,射频会被削弱导致漏扫,第二个是超市每天卖出商品量很大,而RF卡的成本并不低,例如nxp sli卡的价格在1.6元以上 ,而FM1108的价格也在0.3元以上,如果商品采用这种卡,成本太高. 但既然是研究课题,也就是要通过项目实施去解决这些问题,对于各种问题提出解决方案.以下简单记录截