'''
手机销售系统
    手机品牌    手机价格    库存数量

vivoX9               2798          25 

      iphone7(32G)       4888          31 

      iphone7(128G)       5668          22 

      iphone7P(128G)       6616          29 

      iphone6(16G)       3858          14 

      .... 

      ....


     ....
功能要求:
    四个选项:
        1.查看所有手机品牌
            1.vivoX9
            2.iphone7(32G)
            ......
                分支选项:
                1.选择产品序号查看详情(根据序号输出产品名称,价格,库存)
                    1.购买(库存数量-1,库存为0时,删除该产品)
                    2.返回
                2.返回
        2.更改产品库存信息
            1.添加新产品(添加新产品,包括产品名称、价格、库存)
            2.修改原有产品
              输出所有产品信息(将产品的名称  价格  库存)
              1.根据选择序号进行修改
              2.返回
        3.移除产品库存信息
            1.查看所有产品,根据序号移除
            2.移除所有产品
            3.返回
        4.退出程序
'''

#查看产品信息的函数
def query():
    print('1.查看所有手机品牌')
    print('2.选择产品序号查看详情')
    num=int(input('请输入您的选择:'))
    while num not in range(1,3):
        num = int(input('该选项不存在,请您重选选择:'))
    if num==1:
        if len(product_list) == 0:
            print('没有产品信息!')
            # 强制结束函数的执行 return  下面的代码 都不会再执行了
            return
        for x in range(0,len(product_list)):
            kind=product_list[x]
            #print('手机品牌:%s'% kind[0])
            print('序号:%s手机品牌:%s手机价格:%s手机库存:%s' % (x, kind[0], kind[1], kind[2]))
    else:
        if len(product_list) == 0:
            print('没有产品信息,无法进行查看!')
            # 强制结束函数的执行 return  下面的代码 都不会再执行了
            return
        index=get_index('查询')
        kind=product_list[index]
        print('序号:%s手机品牌:%s手机价格:%s手机库存:%s' % (index, kind[0], kind[1], kind[2]))
        print('~~~~~~~~~~~~~~1.购买~~~~~~~~~~~~')
        print('~~~~~~~~~~~~~~2.返回~~~~~~~~~~~~')
        num = int(input('请输入您的选择:'))
        while num not in range(1, 3):
            num = int(input('没有改选项,请重选:'))
        if num==1:
            print('购买成功')
            total_number=int(kind[2])
            total_number-=1
            kind[2]=total_number
            if total_number==0:
                del product_list[index]
                print('该产品已无库存!')
        else:
            print('返回')

#封装判断选择学员序号是否在范围的函数
#带返回值的函数 函数执行完之后,会返回一个结果,可以声明变量接收这个结果
def get_index(type):
    '''
    函数的功能描述:获取用户选择的学员序号
    :param type: 选择序号类型
    :return: 选择的序号
    '''
    index = input('请选择要%s的产品序号:'%type)
    # 转换为整数类型
    index = int(index)
    while index not in range(0, len(product_list)):
        index = input('选择的产品序号不存在,请重选:')
        index = int(index)
    #返回选择的序号
    return index

def update():
    print('1.添加新产品')
    print('2.修改原有产品')
    num = int(input('请输入您的选择:'))
    while num not in range(1, 3):
        num = int(input('改选项不存在,请重选:'))
    if num==1:
        # 添加产品信息
        name = input('请输入手机品牌:')
        price = input('请输入手机价格:')
        number = input('请输入库存数量:')
        # 把name、age、phone放在小列表中
        kind = [name, price, number]
        product_list.append(kind)
        print('****添加产品成功****')
    else:
        #判断是否有产品信息,如果没有,直接结束函数的执行
        if len(product_list) == 0:
            print('没有产品信息,无法进行修改操作!')
            # 强制结束函数的执行 return  下面的代码 都不会再执行了
            return
        for  x in range(0,len(product_list)):
            kind=product_list[x]
            print('序号:%s手机品牌:%s手机价格:%s手机库存:%s' % (x, kind[0], kind[1], kind[2]))

        #选择要修改的产品序号
        index=get_index('修改')
        kind=product_list[index]
        new_name=input('请输入修改后的手机品牌(%s):'%kind[0])
        new_price=input('请输入修改后的手机价格(%s):'%kind[1])
        new_number=input('请输入修改后的库存数量(%s):'%kind[2])
        #修改小列表中的数据
        kind[0]=new_name
        kind[1]=new_price
        kind[2]=new_number
        print('------------------修改数据完成------------')

#移除产品函数
def delete():
    print('1.根据序号移除')
    print('2.移除所有产品')
    num = int(input('请输入您的选择:'))
    while num not in range(1, 3):
        num = int(input('没有改选项,请重选:'))
    if num==1:
        for x in range(0, len(product_list)):
            kind = product_list[x]
            print('序号:%s手机品牌:%s手机价格:%s手机库存:%s' % (x, kind[0], kind[1], kind[2]))
        index=get_index('删除')
        rs = input('确定要删除序号为(%s)的手机信息?y(是的)/n(不是):' % index)
        if rs == 'y':
            # 根据索引删除列表中的数据
            del product_list[index]
            print('************删除数据成功*******')
    else:
        rs = input('确定要删除所有信息?y(是的)/n(不是):')
        if rs == 'y':
            # 根据索引删除列表中的数据
            product_list.clear()
        else:
            print('取消删除数据操作!!!')

#保存数据
def save_data():
    file_handle=open('product.txt',mode='w')
    for kind in product_list:
        s=' '.join(kind)
        file_handle.write(s)
        file_handle.write('\n')
    file_handle.close()

#读取数据
import os
def read_data():
    #判断文件是否存在
    rs=os.path.exists('product.txt')
    if rs==True:
        file_handle=open('product.txt',mode='r')
        #读取所有行
        contents=file_handle.readlines()
        for msg in contents:
            #去除\n
            msg=msg.strip('\n')
            kind=msg.split(' ')
            product_list.append(kind)
        file_handle.close()


product_list=[]
read_data()
while True:
    print('-------------------手机销售系统----------------')
    print('1.查看所有手机品牌')
    print('2.更改产品库存信息')
    print('3.移除产品库存信息')
    print('4.退出程序')
    num=int(input('请输入您的选择:'))
    while num not in range(1,5):
        num = int(input('改选项不存在,请重选:'))
    if num==1:
        query()
        save_data()
    elif num==2:
        update()
        save_data()
    elif num==3:
        delete()
        save_data()
    else:
        print('-----------程序运行结束-------------')
        break