day2、购物商城

  作业:购物商城

商品展示,价格

买,加入购物车

付款,钱不够

代码如下:

import codecs
#登录接口,用户名密码都正确登录成功,否则失败

def login(your_name,your_password):
    with open("user_file","r") as l:
        for line in l:
            user_name,user_password,user_balance=line.strip().split(":")
            if your_name == user_name and your_password == user_password:
                flag = 1
                break
            else:
                print("用户名或密码错误")
                flag = 0
    return flag

#商品展示列表
def show_goods():
    print(10*‘*‘ + "商品列表" + 10*"*")
    print(30 * "-")
    print("| 编号 | 名称 | 价格 | 数量 | ")
    try:
        with codecs.open("goods_file","r","utf-8") as f1:
            for line in f1:
                (goods_id,goods_name,goods_rate,goods_num) = line.strip().split(":")
                print(30 * "-")
                print(‘| %s | %s | %s | %s |‘ %(goods_id,goods_name,goods_rate,goods_num))
            print(30*"-")
        # print("购买商品请输入产品编号/返回请输入b/退出请输入q")
        # the_num = input("请选择:")
    except ValueError:
        pass

#展示购物车
def show_gouwuche(your_name):
    with codecs.open("gouwuche","r","utf-8") as f2:
        n = 0
        print(30 * "-")
        print("| 编号 | 名称 | 数量 | 总价 |")
        for line in f2:
            user_name,goods_name,goods_num,goods_rate = line.strip().split(":")
            if user_name == your_name:
                n += 1
                print(30 * "-")
                print(" | %s | %s | %s | %s |" %(n,goods_name,goods_num,goods_rate))
        print(30*"-")

#查看当前用户已购产品
def show_yigou(your_name):
    with codecs.open("yigoushangpin","r","utf-8") as f3:
        n = 0
        print(30*"-")
        print("| 编号 | 名称 | 数量 | 总价 |")
        for line in f3:
            user_name,goods_name,goods_num,goods_rate = line.strip().split(":")
            if user_name == your_name:
                n += 1
                print(30*"-")
                print(‘| %s | %s | %s | %s |‘ %(n,goods_name,goods_num,goods_rate))
        print(30*"-")

#账户余数查看
def show_money(your_name):
    with open("user_file","r") as l:
        for line in l:
            user_name,user_password,user_blance = line.strip().split(":")
            if your_name == user_name:
                print("您当前账户余额为:%s" %user_blance)
                break

# 账户余额查看
def show_money(your_name):
    with open(‘user_file‘, ‘r‘) as l:
        for line in l:
            user_name, user_password, user_balance = line.strip().split(‘:‘)
            if your_name == user_name:
                print(‘您当前账户余额为:%s‘ % user_balance)
                break

#加入购物车,如果购物车中已经存在该商品则将商品数量相加,商品价格相加;如果购物车中不存在该商品,则添加到购物车中,并将可购买的库存量
def add_gouwuche(n,your_name):
    with codecs.open("goods_file","r+","utf-8") as f1:
        for line1 in f1:
            goods_id,goods_name,goods_rate,goods_num = line1.strip().split(":")
            if n == goods_id:
                goods_quantity = input("请输入数量:")
                #如果输入的并非数字则不合法,输入的数量大于库存,均需要重新输入
                while True:
                    if goods_quantity.isdigit():
                        if int(goods_num) < int(goods_quantity):
                            goods_quantity = input("您输入的数量大于当前库克数量,请重新输入数量:")
                        else:
                            break
                    else:
                        goods_quantity = input("您输入的不合法,请重新输入数量:")
                with codecs.open("gouwuche","r+","utf-8") as f2:
                    for line2 in f2:
                        che_user_name,che_goods_name,che_goods_num,che_goods_rate = line2.strip().split(":")
                        #判断当前选择的商品是否在购物车存在,如果存在标志位che_flag = 1
                        if your_name == che_user_name and goods_name == che_goods_name:
                            che_flag = 1
                            che_goods_num = str(int(che_goods_num) + int(goods_quantity))
                            che_goods_rate = str(int(che_goods_rate) + int(goods_rate)*int(goods_quantity))
                            old_line = line2
                            new_line = che_user_name + ":" + che_goods_name + ":" + che_goods_num + ":" + che_goods_rate + "\n"
                            break
                    #当前选择的商品购物车中不存在,标志位che_flag = 0
                    else:
                        che_flag = 0
                        che_goods_rate = str(int(goods_rate) * int(goods_quantity))
                        che_goods_num = goods_quantity
                        che_goods_name = goods_name
                        che_user_name = your_name
                        new_line = ("%s:%s:%s:%s\n" %(che_user_name,che_goods_name,che_goods_num,che_goods_rate))
                        #购物车中存在,则将购物车中的数量更新,总价格更新
                        if che_flag == 1:
                            f2.seek(0)
                            old_gouwuche = f2.read()
                            new_gouwuche = old_gouwuche.replace(old_line,new_line)
                            f2.seek(0)
                            f2.truncate()
                            f2.write(new_gouwuche)
                        #购物车中不存在,则在购物车中添加
                        elif che_flag == 0:
                            f2.seek(0)
                            old_gouwuche =f2.read()
                            new_gouwuche = old_gouwuche + new_line
                            f2.seek(0)
                            f2.truncate()
                            f2.write(new_gouwuche)
                #加入购物车后,将商品列表中的数量更新
                new_goods_num = str(int(goods_num) - int(goods_quantity))
                old_goods_line = line1
                new_goods_line = ("%s:%s:%s:%s\n" %(goods_id,goods_name,goods_rate,new_goods_num))
                f1.seek(0)
                old_goods_file = f1.read()
                new_goods_file = old_goods_file.replace(old_goods_line,new_goods_line)
                f1.seek(0)
                f1.truncate()
                f1.write(new_goods_file)
                goods_flag = True
                break
        else:
            goods_flag = False
            print("抱歉您选择的商品不存在,请重新选择")
        return goods_flag

#删除购物车的商品
def del_gouwuche(del_gouwuche_num,your_name):
    with codecs.open("gouwuche","r+","utf-8") as f1:
        while True:
            n = 0
            for line in f1:
                user_name,goods_name,goods_num,goods_rate = line.strip().split(":")
                #判断删除的商品是否存在,若存在撒谎拿出标志位del_flag = 1
                if user_name == your_name:
                    n += 1
                    if int(del_gouwuche_num) == n:
                        del_goods_name = goods_name
                        del_goods_num = goods_num
                        del_goods_line = line1
                        del_flag = 1
                        break
                #商品存在,进行删除
                if del_flag == 1:
                    f1.seek(0)
                    gouwuche_file = f1.readlines()
                    gouwuche_file.remove(del_goods_line)
                    f1.seek(0)
                    f1.truncate()
                    for line in gouwuche_file:
                        f1.write(line)
                    #更新商品清单,将从购物车删除的加到商品清单中
                    with codecs.open("goods_file","r+","utf-8") as f2:
                        for line2 in f2:
                            old_goods_line = list(line2.strip().split(":"))
                            old_line = line2.strip()
                            if old_goods_line[1] == del_goods_name:
                                old_goods_line[3] = str(int(old_goods_line[3])) + int(del_goods_num)
                                new_goods_line = old_goods_line
                                del_flag = 1
                                break
                        if del_flag == 1:
                            f2.seek(0)
                            new_line = ":".join(new_goods_line)
                            old_goods_file = f2.read()
                            new_goods_file = old_goods_file.replace(old_line,new_line)
                            f2.seek(0)
                            f2.truncate()
                            f2.write(new_goods_file)
                break
            #要删除的商品不存在,标志位del_flag = 0
            else:
                del_flag = 0
                print("您要删除的商品不存在,请重新输入编号!")
                break
    return del_flag

#支付购物车商品
def pay_gouwuche(gouwuche_num,your_name):
    with codecs.open("gouwuche","r+","utf-8") as f1:
        while True:
            n = 0
            for line1 in f1:
                user_name,goods_name,goods_num,goods_rate = line1.strip().split(":")
                #判断删除的商品是否存在,若存在删除标志位del_flag = 1
                if user_name == your_name:
                    n += 1
                    if int(gouwuche_num) == n:
                        pay_goods_name = goods_name
                        pay_goods_num = goods_num
                        pay_goods_rate = goods_rate
                        pay_goods_line = line1
                        #查看当前用户余额是否能够支付商品
                        with open("user_file","r+") as user_file:
                            for line in user_file:
                                user_name,user_password,user_balance = line.strip().split(":")
                                if your_name == user_name:
                                    old_balance_line = line
                                    new_balance = int(user_balance) - int(goods_rate)
                                    break
                            if new_balance < 0:
                                print("您的当前预余额不足,请充值后再支付!\n")
                                pay_flag = False
                                break
                            #大于等于0时,则可以支付,并更新账户余额
                            else:
                                pay_flag = True
                                new_balance_line = user_name + ":" + user_password + ":" + str(new_balance) + "\n"
                                user_file.seek(0)
                                old_user_file = user_file.read()
                                new_user_file = old_user_file.replace(old_balance_line,new_balance.line)
                                user_file.seek(0)
                                user_file.truncate()
                                user_file.write(new_user_file)
                                break
                    else:
                        pay_flag = ""
            #商品存在,支付成功后进行删除
            if pay_flag == True:
                f1.seek(0)
                gouwuche_file = f1.readlines()
                gouwuche_file.remove(pay_goods_line)
                f1.seek(0)
                f1.truncate()
                for line in gouwuche_file:
                    f1.write(line)
                #更新已购买的商品清单,将已支付的商品加入到购买的清单中
                with codecs.open("yigoushangpin","r+","utf-8") as f2:
                    for line2 in f2:
                        old_yigou_line = list(line2.strip().split(":"))
                        old_line = line2.strip()
                        #当已购商品清单存在该商品购买记录则将数量相加,总价格相加
                        if old_yigou_line[1] == pay_goods_name and old_yigou_line[0] == your_name:
                            old_yigou_line[2] = str(int(old_yigou_line[2]) + int(pay_goods_num))
                            old_yigou_line[3] = str(int(old_yigou_line[3]) + int(pay_goods_rate))
                            new_yigou_line = old_yigou_line
                            f2.seed(0)
                            new_line = ":".join(new_yigou_line)
                            old_yigou_file = f2.read()
                            new_yigou_file = old_yigou_file.replace(old_line,new_line)
                            f2.seed(0)
                            f2.truncate()
                            f2.write(new_yigou_file)
                            break
                    #当已购商品清单灭有购买记录,则附加购买记录
                    else:
                        f2.seek(0)
                        old_yigou_file = f2.read()
                        new_yigou_file = old_yigou_file + pay_goods_line
                        f2.seek(0)
                        f2.truncate()
                        f2.write(new_yigou_file)
                print("\n")
                print("恭喜你,支付成功!")
                break
            elif pay_flag == False:
                flag = True
                break
            #要删除的商品不存在,标志位del_flag = 0
            else:
                pay_flag = False
                print("您要支付的商品不存在,请重新输入编号!")
                break
    return pay_flag

#账户充值
def add_money(blance_num,your_name):
    with open("user_file","r+") as f:
        for line in f:
            user_name,user_passwd,user_balance = line.strip().split(":")
            if user_name == your_name:
                old_user_line = line
                new_user_balance = str(int(user_balance) + int(balance_num))
                new_user_line = user_name + ":" + user_passwd + ":" + new_user_balance + "\n"
                break
        f.seek(0)
        old_user_file = f.read()
        new_user_file = old_user_file.replace(old_user_line,new_user_line)
        f.seek(0)
        old_user_file = f.read()
        new_user_file = old_user_file.replace(old_user_line,new_user_line)
        f.seek(0)
        f.truncate()
        f.write(new_user_file)

def main():
    your_name = input("请输入用户名:")
    your_password = input("请输入密码:")
    menu_num = ""
    #登录,用户名或密码错误重新输入
    while True:
        if login(your_name,your_password):
            print("欢迎%s登录购物商城" %your_name)
            print(30 * "*")
            break
        else:
            your_name = input("请重新输入用户名:")
            your_password = input("请重新输入密码:")
    while True:
        print(30 * "*")
        print("欢迎来到主菜单,您可进行如下操作!")
        print(30 * "*")
        print("| 1 商品列表 | 2 查询购物车 | 3  查看已购商品 | 4 账户余额 | q 退出商城 |")
        if menu_num == "":
            menu_num = input("请输入:")
        #进入商品列表
        elif menu_num == "1":
            while True:
                show_goods()
                print("| 请输入商品编号加入购物车 | 输入b返回主菜单 | 输入q退出商城 |")
                your_goods_num = input("请选择:")
                print("\n")
                #判断输入的是否为纯数字,如果是
                if your_goods_num.isdigit():
                    while add_gouwuche(your_goods_num,your_name):
                        #当商品加入购物车后直接返回给购物车
                        menu_num = "2"
                        break
                    break
                elif your_goods_num == ‘b‘:
                    menu_num = ""
                    break
                elif your_goods_num == "q":
                    print("您已退出商城!")
                else:
                    print("您输入的不合法,请重新输入!\n")
        #查看购物车
        elif menu_num == "2":
            while True:
                print(30 * "*")
                print("您当前购物车商品如下所示:")
                show_gouwuche(your_name)
                print("| 1 返回主菜单 | 2 删除商品 | 3 支付商品 | q 退出商城 |")
                gouwuche_menu_num = input("请输入:")
                print("\n")
                #返回主菜单
                if gouwuche_menu_num == ‘1‘:
                    menu_num = ‘‘
                    break
                #删除商品
                elif gouwuche_menu_num == ‘2‘:
                    while True:
                        del_gouwuche_num = input("请输入要删除的商品编号,或者输入b返回:")
                        if del_gouwuche_num == "b":
                            break
                        elif not del_gouwuche_num.isdigit():
                            print("您输入的不合法,请重新输入!\n")
                            continue
                        elif del_gouwuche(del_gouwuche_num,your_name):
                            print("删除成功\n")
                            break
                #支付商品
                elif gouwuche_menu_num == "3":
                    while True:
                        pay_gouwuche_num = input("请输入要支付的商品编号,返回请输入b:")
                        if pay_gouwuche_num.isdigit():
                            if pay_gouwuche(pay_gouwuche_num,your_name):
                                break
                        elif pay_gouwuche_num == "b":
                            break
                        else:
                            print("您输入的不合法,请重新输入!")
                elif gouwuche_menu_num == "q":
                    print("您已退出商城!")
                    exit()
                else:
                    print("您输入的不合法,请重新输入\n")
        #查看已购买记录
        elif menu_num == "3":
            print(30 * "*")
            print("您已购买商品如下所示:")
            show_yigou(your_name)
            print("| 输入b返回主菜单 | 输入q退出程序 |")
            while True:
                yigou_input = input("请输入:")
                if yigou_input == "b":
                    menu_num = ""
                    print("\n")
                    break
                elif yigou_input == "q":
                    print("您已退出商城!\n")
                else:
                    print("你输入的不合法,请重新输入!\n")
        #查看账户信息
        elif menu_num == "4":
            while True:
                print(30 * "-")
                print("您的账户信息如下所示:")
                show_money(your_name)
                print("| 1 充值账户 | b 返回主菜单 | q 退出商城 |")
                money_num == input("请输入:")
                if money_num == "1":
                    print(30 * "-")
                    add_money_num = input("请输入充值金额,输入b返回:")
                    if add_money_num.isdigit():
                        add_money_num = input("请输入充值金额,输入b返回:")
                        if add_money_num.isdigit():
                            add_money(add_money,your_name)
                            print("恭喜你,充值成功!\n")
                            continue
                        elif add_money_num == "b":
                            continue
                        else:
                            print("您输入的不合法,请重新输入!\n")
                            continue
                        elif money_num == "b":
                            menu_num = ""
                            break
                        elif money_num == "q":
                            print("您已退出商城!")
                            exit()
                        else:
                            print("您输入的不合法,请重新输入\n")
            elif menu_num == "q":
                print("您已退出商城!")
                exit()
            else:
                print("您的输入不合法,请重新输入!\n")

if __name__ == ‘__main__‘:
    main()

上面代码是网上找的,准备自己好好写一遍,开始的时候没有什么思路,里面主要是对文件的操作,还有一些新的方法,都是常用的方法,但是平时自己不会用的。

时间: 2024-08-27 12:02:12

day2、购物商城的相关文章

day2 购物商城

购物商城 商品展示.价格 买,加入购物车 付款,钱不够.(减商品,充值)

day2编写购物商城(1)

作业:购物商城 商品展示,价格 买,加入购物车 付款,钱不够     具体实现了如下功能: 1.可购买的商品信息显示 2.显示购物车内的商品信息.数量.总金额 3.购物车内的商品数量进行增加.减少和商品的删除 4.用户余额的充值 5.用户购买完成进行结账,将最终余额回写到用户文件中. 一.用户文件说明: kevin 123 50000 sky 123 54000 mobi 123 80000 其中第一列为用户名,第二列为密码,第三列为帐户余额. 二.流程图如下: import sys,os,ge

Day2作业: 购物商城

实现功能: 1用户登陆:用户名或密码错误判断 2商品清单展示 3查看购物车 4商品加入购物车并更新商品清单 5删除购物车中商品并更新商品清单 6查看已购买记录 7购物车商品支付 8支付时余额不足判断 9支付成功删除购物车中对应商品并更新已购买记录 10用户账户余额查看 11充值功能 涉及到4个文件作为库: goods_file   #商品清单1:小米5:1999:92:三星S7:4999:153:华为Mate8:3999:124:魅族pro6:2499:215:苹果6plus:5999:11 g

day2编写购物商城

作业:购物商城 商品展示,价格 买,加入购物车 付款,钱不够

Day2作业:购物商城

ReadMe: 注意事项: 1.本程序需要提前安装prettytable模块,在商品展示时使用了prettytable 2.数据库使用json模块,有中文数据,在mac系统上编写,运行没有出现问题,在其他系统上运行时入出现编码问题请转换编码格式 一些需求修改的说明: 1.Alex在布置这个商城作业时,选择物品即自动扣款,但在正常的电商购物流程,是需要先加入购物车结算时扣款,所以我使用了结算时扣款的流程,但充值的金额会模拟扣款 2.用户第二次登陆时会读取上次未结账的商品,自动加入购物车,并会提醒用

微信小程序购物商城系统开发系列-目录结构

上一篇我们简单介绍了一下微信小程序的IDE(微信小程序购物商城系统开发系列-工具篇),相信大家都已经蠢蠢欲试建立一个自己的小程序,去完成一个独立的商城网站. 先别着急我们一步步来,先尝试下写一个自己的小demo. 这一篇文章我们主要的是介绍一下小程序的一些目录结构,以及一些语法,为我们后面的微信小程序商城系统做铺垫. 首先我们来了解下小程序的目录结构 Pages 我们新建的一些页面将保存在这个文件夹下面,每一个小程序页面是由同路径下同名的四个不同后缀文件的组成,如:index.js.index.

Python学习day5作业-ATM和购物商城

Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆,用户间转帐 支持多用户 管理员可添加账户.指定用户额度.冻结用户等 购物车: 商品信息- 数量.单价.名称 用户信息- 帐号.密码.余额 用户可充值 购物历史信息 允许用户多次购买,每次可购买多件 余额不足时进行提醒 用户退出时 ,输出当次购物信息 用户下次登陆时可查看购物历史 商品列表分级显示 1

JAVA EE Demo[购物商城 Strust2]

为了搞定作业,我开始了J2EE的Strust2框架实现一个简单的商城Demo 先创建Java Web Service项目.添加JDBC驱动,导入Strust2框架得到这个: 啧啧.既然是购物商城我们继续沿用上篇文章的结构,欢迎页+商城物品列表+购物车+登录 ,则很明显我们需要一个导航栏 创建一个导航栏:head.html 这样我们以后就可以利用JSP标签将这个导航栏嵌入到任何需要的界面了 而导航栏的内容包括欢迎页 商城物品列表 购物车 登录 登出 这些选项 这个时候弄完这个先得到以下: 然后我们

hadoop实现购物商城推荐系统

1,商城:是单商家,多买家的商城系统.数据库是mysql,语言java. 2,sqoop1.9.33:在mysql和hadoop中交换数据. 3,hadoop2.2.0:这里用于练习的是伪分布模式. 4,完成内容:喜欢该商品的人还喜欢,相同购物喜好的好友推荐. 步骤: 1,通过sqoop从mysql中将 "用户收藏商品" (这里用的是用户收藏商品信息表作为推荐系统业务上的依据,业务依据可以很复杂.这里主要介绍推荐系统的基本原理,所以推荐依据很简单)的表数据导入到hdfs中. 2,用Ma