'''
此模块需要使用用户登陆模块代码

用户入口:
1、输入用户名和密码
2、商品信息存在文件里
3、已购商品和余额记录在文件里

注:用户购买商品后退出,再次登陆会自动读取上次用户的余额

商户入口:
1、添加商品
2、修改商品名称和价格
3、删除商品

备注:需要新建shop文件和购物车文件,其中shop文件保存商品信息:


'''
import os
import userLogin
import types

def read_info(_name):
    if os.path.getsize("购物车"):
        remaining = 0
        with open("购物车","r",encoding="utf-8") as f:
            for line in f:
                if line.strip() == "":
                    continue
                line = eval(line)
                if line["name"] == _name:
                    remaining = line["shopping"][2]
                    if remaining > line["shopping"][2]:
                        remaining = line["shopping"][2]
            if remaining == 0:
                return None
            else:
                return remaining
    else:
        return None


def memu(num):
    if os.path.getsize("shop"):
        with open("shop","r",encoding="utf-8") as f:
            print("------------商品------------")
            for index,line in enumerate(f):
                if line.strip() == "":
                    continue
                    index -= 1
                line = eval(line)
                info2 = '''
      {_index}、{_goods},价格:{_price}
                '''.format(_index = index + 1,
                           _goods = line["goods"],
                           _price = line["price"])
                print(info2)
    else:
        print("当前无商品")
        if num == 1:
            exit()

def shopping_list(name):
    sum = 0
    flag = 0
    with open("购物车", "r+", encoding="utf-8") as f:
        for temp in f:
            if temp.strip() == "":
                continue
            temp = eval(temp)
            if temp["name"] == name:
                sum += temp["shopping"][1]
                info2 = '''
商品:{_goods},价格:{_price}
            '''.format(_goods=temp["shopping"][0],
                       _price=temp["shopping"][1])
                if flag == 0:
                    print("---------购物清单---------")
                print(info2)
                flag = 1
        print("总计金额:         %d" % sum)


def user(_momey,name):
    choose = input("输入你要购买商品的编号 >>>:")
    if choose.isdigit():
        choose = int(choose)
    elif choose == 'q':
        shopping_list(name)
        exit()
    else:
        print("输入错误")
    res = read_info(name)
    if res != None:
        _momey = res
    f = open("shop", "r", encoding="utf-8")
    content = f.readlines()
    for i in range(len(content)):
        if choose - 1 == i:
            content[i] = eval(content[i])
            surplus = _momey - content[i]["price"]
            if surplus >= 0:
                _momey = surplus
                print("\033[33;1m %s \033[0m 已加入购物车,你的当前余额为:\033[32;1m %d \033[0m "%(content[i]["goods"],_momey))
                save(content[i],name,_momey)
                return _momey
            else:
                print("\033[31;1m 你的余额不足,当前余额为:%d \033[0m"%_momey)
                return _momey
    f.close()
def save(d,name,momey):
    dict = {}
    dict["name"] = name
    dict["shopping"] = [d["goods"],d["price"],momey]
    with open("购物车","a+",encoding="utf-8") as f:
        f.write(str(dict) + '\n')

def deposit(name):
    while True:
        res = read_info(name)
        if res == None:
            momey = input("输入你的存款金额 >>>:")
        else:
            momey = res
            print("\033[34;1m %s你好,你的当前余额是:%d \033[0m"%(name,momey))
            return momey
        if type(momey) != type(1):
            if momey.isdigit():
                momey = int(momey)
                return momey
            elif momey == 'q':
                exit()
            else:
                print("存款输入错误")
                continue

def add_shop():
    with open("shop","a+",encoding="utf-8") as f:
        dict = {}
        goods = input("输入你要添加的商品名称 >>>")
        price = input("输入商品的价格(正整数) >>>")
        if price.isdigit():
            price = int(price)
        dict["goods"] = goods
        dict["price"] = price
        f.write(str(dict) +'\n')
    print("\033[31;1m 添加商品成功 \033[0m")

def modify_shop():
    list = []
    f = open("shop", "r+", encoding="utf-8")
    content = f.readlines()
    num = input("请输入你要修改的商品编号 >>>")
    if num.isdigit():
        num = int(num)
    else:
        print("输入错误")
    for i in range(len(content)):
        if num - 1 == i:
            content[i] = eval(content[i])
            choose = input("请输入你要修改商品的信息1、名称,2、价格 >>>")
            if choose.isdigit():
                choose = int(choose)
            else:
                print("输入错误")
            if choose == 1:
                goods = input("请输入修改后的商品名称 >>>")
                content[i]["goods"] = goods

            elif choose == 2:
                price = input("请输入修改后的商品价格 >>>")
                if price.isdigit():
                    price = int(price)
                content[i]["price"] = price

            else:
                print("输入错误")
        list.append(content[i])
    f.truncate(0)
    f.close()
    with open("shop", "a+", encoding="utf-8") as f1:
        for temp in list:
            f1.write(str(temp))
    print("\033[31;1m 修改商品成功 \033[0m")

def del_shop():
    list = []
    f = open("shop", "r+", encoding="utf-8")
    content = f.readlines()
    num = input("请输入你要删除的商品编号 >>>")
    if num.isdigit():
        num = int(num)
    else:
        print("输入错误")

    for i in range(len(content)):
        if num - 1 == i:
            continue
        list.append(content[i])
    f.truncate(0)
    f.close()
    with open("shop", "a+", encoding="utf-8") as f1:
        for temp in list:
            f1.write(temp)
    print("\033[31;1m 删除商品成功 \033[0m")

def main1(name):
    res = input("请输入你的选择:1、用户,2、商户 >>>")
    if res.isdigit():
        res = int(res)
        if res == 1:
            momey = deposit(name)
            while True:
                memu(res)
                momey = user(momey,name)
        elif res == 2:
            while True:
                memu(res)
                res1 = input("请输入你的选择:1、添加,2、修改,3、删除 >>>")
                if res1.isdigit():
                    res1 = int(res1)
                    if res1 == 1:
                        add_shop()
                    elif res1 == 2:
                        modify_shop()
                    elif res1 == 3:
                        del_shop()
                    else:
                        print("输入错误")
                elif res1 == 'q':
                    exit()
        else:
            print("输入错误")
    elif res == 'q':
        exit()
    else:
        print("输入错误")

if __name__ == "__main__":
    while True:
        userLogin.main()
'''
-------用户登陆模块代码------
'''
'''
先创建user、lock文件,user存储账号密码,用于登录时判断,lock文件为账号错误3次后,冻结
user内容格式为:
{'name':'zhangsan','passwd':'123'}
{'name':'lisi','passwd':'123'}
{'name':'wangwu','passwd':'123'}
'''

import os
import shopping

def lock(_name):
    '''判断一个用户是否冻结'''
    if os.path.getsize("lock"):
        with open("lock","r") as f:
            for line in f:
                if line.strip() == "":
                    continue
                line = eval(line)
                if line["name"] == _name and line["num"] == 3:
                    return 0
            else:
                return -1
    else:
        return -1

def clear_lock():
    '''当程序退出时,删除非冻结的账号信息'''
    list = []
    with open("lock","r+") as f:
        for line in f:
            if line.strip() == "":
                continue
            line = eval(line)
            if line["num"] == 3:
                list.append(line)
        f.truncate(0)
    with open("lock","w") as f1:
        for i in list:
            f1.write(str(i) + '\n')

def login(_name,_passwd):
    '''用户登陆'''
    with open("user","r") as f:
        flag = 0
        for line in f:
            if line.strip() == "":
                continue
            line = eval(line)
            if line["name"] == _name:
                if line["name"] == _name and line["passwd"] == _passwd:
                    return 0
                else:
                    return 1
        return -1

def write_lock(_name):
    '''将输入错误的账号写入lock文件'''
    #文件不为空
    if os.path.getsize("lock"):
        list = []
        with open("lock","r+") as f:
            flag = 0
            for line in f:
                if line.strip() == "":
                    continue
                line = eval(line)
                #判断账号是否存在
                if line["name"] == _name:
                    line["num"] += 1
                list.append(line)
            else:
                dict2 = {}
                dict2["name"] = _name
                dict2["num"] = 1
                list.append(dict2)
        with open("lock","w") as f1:
            for i in list:
                f1.write(str(i) + '\n')


    #空文件直接写入
    else:
        list1 = []
        dict1 = {}
        dict1["name"] = _name
        dict1["num"] = 1
        list1.append(str(dict1))
        with open("lock","w") as f2:
            for j in list1:
                f2.write(str(j) + '\n')

def main():
    name = input("用户名:")
    res = lock(name)
    if res == 0:
        print("%s已被冻结,请联系管理员"%name)
        clear_lock()
        exit()
    passwd = input("密码:")
    res1 = login(name,passwd)
    if res1 == 0:
        print("欢迎%s登陆CBD购物中心"%name)
        while True:
            shopping.main1(name)
    elif res1 == 1:
        print("密码错误")
        write_lock(name)
    else:
        print("账号不存在")

    res2 = lock(name)
    if res2 == 0:
        print("%s已被冻结,请联系管理员" %name)
        clear_lock()
        exit()

if __name__ == "__main__":
    while True:
        main()

人生苦短,我学python