8 第一个py小程序,名片处理系统

'''
我的第一个py小程序 名片处理系统
2020 06 09

main.py

'''

#导入功能模块,单词处理每一部分功能
import cards_fun1

while True:
    #欢迎页面
    cards_fun1.hy()

    # 请用户选择
    num_input = input("请选择:")
    print("您选的是 【%s】"% num_input)

    #选择0,退出
    if num_input=="0":
        print("欢迎再次使用")
        break
    #选择1,新建名片
    elif num_input=="1":
        cards_fun1.new_card()

    #选择2,显示全部名片
    elif num_input=="2":
        cards_fun1.show_card()

    #选择3,搜索名片
    elif num_input=="3":
        cards_fun1.search_card()

    else :
        print("输入错误")
'''功能模块

cards_fun1.py

'''


#列表数据类型,用来保存所有名片信息
cards_list=[]    # 可以修改为gl_cards_list[],以示全局变量

"""欢迎页面

"""
def hy():
    print("*"*50)
    print('''
    欢迎使用 名片管理系统
    
    0.  退出
    1.  新建名片
    2.  显示全部
    3.  查询名片
    ''' )
    print("*"*50)


'''新建名片模块

'''
def new_card():
    #功能标题
    print("-" * 50)
    print("新建名片")

    #提示输入
    name_in=input("请输入名字:")
    tel_in=input("请输入电话:")
    qq_in=input("请输入qq :")

    #放入字典
    card_dic={"name":name_in,"tel":tel_in,"qq":qq_in}
    #放入列表
    cards_list.append(card_dic)

    # TODO #提示输入完成
    print("-"*50)
    print("您输入的名片是:\n名字:%s\t\t\t电话:%s\t\t\tqq:%s" % (card_dic["name"], card_dic["tel"], card_dic["qq"]))


'''显示全部名片模块

'''
def show_card():
    print("-" * 50)
    print("显示名片")

    if cards_list==[]:
        print("系统为空")
    else :
        # 打印分割线
        print("-"*50)
        #打印表头
        for t in ["姓名","电话","qq"]:
            print(t,end="\t\t\t")
        print("")

        # TODO 显示不好看,对不齐!!!
        #遍历列表
        for x in cards_list:
            print("%s\t\t\t%s\t\t\t%s" % (x["name"],x["tel"],x["qq"]))

        # 打印分割线
        print("-"*50)

'''查询名片功能模块

'''
def search_card():
    print("-" * 50)
    print("搜索名片")

    input_name=input("请输入要搜索的名字:")

    for card in cards_list:
        if card["name"]==input_name:
            print("找到了~")

            # 打印表头
            for t in ["姓名", "电话", "qq"]:
                print(t, end="\t\t\t")
            print("")

            # 显示搜索结果
            print("%s\t\t\t%s\t\t\t%s" % (card["name"], card["tel"], card["qq"]))

            #调用名片处理函数
            modify_card(card)

            #找到退出for循环
            break
    else:
        print("没有找到")




def modify_card(card):
    """#名片处理函数

    :param card:搜索到card字典
    :return: NULL
    """
    #接收输入
    inp=input("1: 修改\t2:删除\t3:退出,请选择:")

    #选择1 ,修改card
    if inp=="1":
        #显示标题
        print("修改名片")

        #没有指针,调用有点不方便
        #单独定义函数,区分用户回车与否,如果输入回车不返回字典中的旧值
        card["name"]=md_tel(card["name"],"输入回车不修改,请输入名字:")
        card["tel"]=md_tel(card["tel"],"输入回车不修改,请输入电话:")
        card["qq"]=md_tel(card["tel"],"输入回车不修改,请输入qq:")

        #提示修改完成
        print("修改完成:")

        # 打印表头
        for t in ["姓名", "电话", "qq"]:
            print(t, end="\t\t\t")
        print("")
        # 显示修改后的结果
        print("%s\t\t\t%s\t\t\t%s" % (card["name"], card["tel"], card["qq"]))


    #选择2,删除card
    elif inp=="2":
        #显示标题
        print("删除名片")

        delcard=input("1:确认删除  2: 放弃删除")
        if delcard=="1":
            cards_list.remove(card)
        print("已删除!")

    #选择3,退出
    elif inp=="3":
        return


def md_name(old_name,out_str):
    """修改名字,如果回车,不修改

    :param old_name: 字典中旧值,即card[name]
    :param out_str: 输入提示字符串
    :return: 字典中的旧值或用户输入的名字
    """
    in_name=input(out_str)
    if len(in_name)==0:
        return old_name
    else :
        return in_name



def md_qq(old_qq,out_str):
    """修改qq,如果回车,不修改

    :param old_qq: 字典中旧值,即card[qq]
    :param out_str: 输入提示字符串
    :return:
    """
    in_qq=input(out_str)
    if len(in_qq)==0:
        return old_qq
    else :
        return in_qq



def md_tel(old_tel,out_str):
    """修改电话,如果回车,不修改

    :param old_tel: 字典中旧值,即card[tel]
    :param out_str: 输入提示字符串
    :return:
    """
    in_tel=input(out_str)
    if len(in_tel)==0:
        return old_tel
    else :
        return in_tel

 

posted @ 2020-06-09 18:30  abel2020  阅读(287)  评论(0编辑  收藏  举报