Python简单实现网上购物系统

#1、输出欢迎界面还有登录注册菜单
#    1、登录
#    2、注册
#    保留用户信息,目前做不到固话,先注册,注册成功之后再选择登录进去
#    用户信息 -  用户名, 密码 ,  初始金额
#2、登录成功之后,又弹出菜单
#    1、查看商品信息
#    2、购买商品,将商品加入购物车
#    3、查看和结算购物车
#    4、退出


# 完善三乐购物系统
# ·所有用户存放在Excel中(用户名,密码,余额)
# ·定义装饰器login_required,给需要的功能添加装饰器
# ·查看超市物品,不需要登录
# ·购物及查看余额,需要登录
# ·先验证用户是否已经登录(如果用户未登录提示“用户未登录,请登录后重试"
# .转到功能菜单


import xlsxwriter as xw

def xw_toExcel(data, fileName):  # xlsxwriter库储存数据到excel
    workbook = xw.Workbook(fileName)  # 创建工作簿
    worksheet1 = workbook.add_worksheet("sheet1")  # 创建子表
    worksheet1.activate()  # 激活表
    title = ['用户名', '密码', '余额']  # 设置excel表头
    worksheet1.write_row('A1', title)  # 从A1单元格开始写入表头
    index = 2  # 从第二行开始写入数据
    for i in user_data:
        for data in i:
            # print(data)
            print(data,i[data],end="\t")
            # print(i[data]["passwd"])
            # print(i[data]["余额"])
            insertUser = [data, i[data]["passwd"], i[data]["money"]]
            row = 'A' + str(index)
            worksheet1.write_row(row, insertUser,)
            print("写入第", index, "行")
            index += 1
    workbook.close()  # 关闭表

user_data = [
    {'root': {'passwd':  123456, 'money': 500},
     'admin': {'passwd':  255278, 'money': 1000},
     'sanchuang': {'passwd': 249583245, 'money':5000},
     'sanchuang1': {'passwd': 1008611, 'money':5000}}
]
fileName = '用户.xlsx'
xw_toExcel(user_data, fileName)

####

user = {'root': {'passwd': '123456', 'money': '500'}}
goods_list = {"no1":{"name": "apple", "price": 10},
              "no2":{"name": "watermelon", "price": 30},
              "no3":{"name": "banana", "price": 20}
             }
# 装饰器
def login_required(func):
    def inner(*args,**kwargs):
        if username in user:
            print("用户成功登录!")
            result = func(*args,**kwargs)
            return result
        else:
            print("用户未登录,请登录!")
    return inner

# 登陆
@login_required
def login(username, passwd):
    if username in user and user[username]['passwd'] == passwd:
        return True


# 注册
@login_required
def register(username, passwd, money):
    if username in user:
        print("用户名已存在!请重新输入!")
    elif username == exit:
        exit()
    else:
        user[username] = {"passwd":passwd, "money":money}
        print(f"{username}注册成功!余额{user[username]['money']}!")
        print(user)

# 不登录查看商品信息 -->不用装饰器
def goods_view():
    print('==========/今日商品信息/===========')
    print(f"{'商品编号':<7}{'商品名称':<10}{'单价':<7}")
    for item in goods_list:
        print(f"{item:<10}{goods_list[item]['name']:<12}{goods_list[item]['price']:<10}")
    print('=================================')

# 购物车、结算
shopping_car = {}
sum_price = 0
@login_required
def good_choose(goods_no):
    global sum_price, money1
    if goods_no in goods_list:
        sum_price += int(goods_list[goods_no]['price'])
        shopping_car.update({goods_list[goods_no]['name']:
                            {'单价': goods_list[goods_no]['price'], '总价': sum_price}})
        print(f"购物车商品:{shopping_car},当前加入:{goods_list[goods_no]['name']},单价:{goods_list[goods_no]['price']}")
    elif goods_no == "exit":
        exit()
    elif goods_no == 'r' or goods_no == 'R':
        print(f"开始结算,购物信息:{shopping_car},需要支付{sum_price}")
        money1 = int(user[username]['money'])
        if money1 >= sum_price:
            money1 -= sum_price
            print("当前账户余额:", money1)
        else:
            print("余额不足,是否充值?")
            print("1.充值")
            print("2.放弃购物")
            option1 = int(input("请您选择: "))
            if option1 == 1:
                return topup()
            elif option1 == 2:
                exit()
            else:
                print("输入错误,请重新输入")
    else:
        print("请正确输入!")

# 充值
@login_required
def topup():
    print("欢迎充值!")
    upmoney = int(input("请输入您要充值的金额:"))
    user[username]['money'] = money1 + upmoney
    print("充值成功!")
    print(f"当前余额:{user[username]['money']}")
    return good_choose()


# 主程序
username = " "
print("欢迎进入三乐购物系统".center(50, "*"))
while 1:
    print("1、登陆".center(40))
    print("2、注册".center(40))
    print("3、查看今日商品".center(40))
    option = input("请输入你的选择:")
    if option == '1':
        username = input("请输入用户名:")
        passwd = input("请输入密码:")
        if login(username, passwd):
            print("登陆成功!")
            print("您当前余额为:", user[username]['money'])
            print("1、选购商品".center(40))
            print("2、退出".center(40))
            option2 = input("请输入你的选择:")
            if option2 == "1":
                goods_view()
                while 1:
                    goods_no = input("请输入商品编号(按r买单,exit退出):")
                    good_choose(goods_no)

        else:
            print("登陆失败!")
    elif option == '2':
        username = input("请输入用户名:")
        passwd = input("请输入密码:")
        money = input("请输入金额:")
        register(username, passwd, money)
    elif option == '3':
        goods_view()
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值