名片管理系统

  设计名片管理系统,比如说,某公司员工名片信息管理系统,或者班级学生名片信息管理系统。

要求:

  1、系统可以添加新名片,包括名片姓名,年龄,手机号,地址信息。

  2、系统可以删除旧名片,包括名片姓名,年龄,手机号,地址信息。

  3、系统可以更改已有名片,包括名片姓名,年龄,手机号,地址信息。

  4、系统可以查找已有名片,包括名片姓名,年龄,手机号,地址信息。

  5、系统可以打印全部已有名片,包括名片姓名,年龄,手机号,地址信息。

  6、系统可以随时退出。

  7、系统可以重复操作,除非主动退出系统。

  名片管理系统程序大框架:

#名片管理系统-大框架

#1、提示名片管理系统功能
print("="*50)
print("    名片管理系统v2.0")
print("1:添加名片信息")
print("2:删除名片信息")
print("3:更改名片信息")
print("4:查找名片信息")
print("5:打印全部名片信息")
print("6:退出系统")
print("="*50)

#2、选择获取操作系统功能
num = int(input("请输入需要的操作序号:"))

#3、根据功能选择,执行系统操作
#添加名片信息
if num==1:
    pass
#删除名片信息
elif num==2:
    pass
#更改名片信息
elif num==3:
    pass
#查找名片信息
elif num==4:
    pass
#打印全部名片信息
elif num==5:
    pass
#退出系统
elif num==6:
    pass
#输入操作序号错误
else:
    pass

  具体程序如下:

  第一种方法,运用列表和字典的增删改查功能

  

#运用列表字典的增删改查
#1、提示名片管理功能
print("="*50)
print("    名片管理系统v2.0")
print("1:添加名片信息")
print("2:删除名片信息")
print("3:更改名片信息")
print("4:查找名片信息")
print("5:打印全部名片信息")
print("6:退出系统")
print("="*50)
#存储全部的名片信息
card_infor = []

while True:
    #2、获取用户操作信息
    num = int(input("请输入需要的操作序号:"))
    
    #3、根据用户操作信息,执行程序
    #添加名片信息
    if num==1:
        new_name = input("请输入你的姓名:")
        new_age = int(input("请输入你的年龄:"))
        #判断输入手机号为11位号码
        while True:
            new_tel = input("请输入你的手机号:")
            if len(new_tel)!=11:
                print("输入号码有误,请重新输入")
            else:
                break
        new_addr = input("请输入你的地址:")
        #存储新名片的信息
        new_infor = {}
        new_infor['name'] = new_name
        new_infor['age'] = new_age
        new_infor['Tel'] = new_tel
        new_infor['addr'] = new_addr
        #存储新输入的名片信息
        card_infor.append(new_infor)
        #print(card_infor)  #for test
    #删除名片信息
    elif num==2:
        del_name = input("请输入你要删除的名片姓名:")
        del_flag = 0  #用来标记
        #循环查找需要删除的元素
        for temp in card_infor:
            if del_name==temp.get('name'):
                card_infor.remove(temp)#删除要名片信息
                print(card_infor)
                del_flag = 1#如果删除名片信息,标记赋值为1
        #系统中不存在删除名片信息
        if del_flag==0:
            print("系统中不存在此名片")
    #更改名片信息
    elif num==3:
        alter_name = input("请输入要更改的名片姓名:")
        alter_flag = 0   #进行标记
        for temp in card_infor:
            if alter_name==temp['name']:
                alter_flag = 1  #系统中名片姓名存在,标记赋值为1
                #循环输入可能修改信息
                while True:
                #输入需要更改的信息
                    alter = int(input("请输入你要更改的信息 0:name 1:age 2:Tel 3:addr 4:退出修改 "))
                    if alter==0:     #修改姓名
                        temp['name'] = input("请输入你要修改的名字:")
                    elif alter==1:  #修改年龄
                        temp['age'] = int(input("请输入你要修改的年龄:"))
                    elif alter==2:#修改手机号
                        #判断是否为11位号码
                        while True:
                            temp['Tel']=input("请输入你要修改的手机号:")
                            if len(temp['Tel'])!=11:
                                print("输入修改手机号错误,请重新输入")
                            else:
                                break
                    elif alter==3:   #修改地址
                        temp['addr'] = input("请输入你要修改的地址:")
                    elif alter==4:
                        break
                    else:   #输入不是0 1 2 3
                        print("输入错误,请重新输入序号")
        if alter_flag==0:
            print("系统中不存在此名片")
        #print(card_infor)  #for test
    #查找名片信息
    elif num==4:
        get_name = input("请输入你要查找的名片姓名:")
        find_flag = 0   #用来计数
        print("姓名	年龄	手机号	   地址")#打印全部信息的抬头
        for temp in card_infor:
            if temp['name']==get_name:
                print("%s	  %d	%s	%s"%(temp['name'],temp['age'],temp['Tel'],temp['addr']))
                find_flag = 1
        if find_flag==0:
            print("查无此人...")
    #打印全部名片信息
    elif num==5:
        print("姓名	年龄	手机号	   地址")#打印全部信息的抬头
        #循环列表card_infor中的信息
        for temp in card_infor:
            print("%s	  %d	%s	%s"%(temp['name'],temp['age'],temp['Tel'],temp['addr']))
    #退出系统
    elif num==6:
        print("你已经退出系统")
        break
    #输入操作序号错误
    else:
        print("输入有误,请重新输入操作序号...") 
View Code

  第一种方法,程序看起来散乱,不够模块化,可以利用函数,把全部程序分成多个模块进行处理,请看第二种方法。

  第二种方法,运用列表和字典的增删改查功能,并且利用模块函数封装,全局变量,局部变量

#运用列表字典的增删改查,使用模块函数封装,全局变量局部变量

#存储全部的名片信息,全局变量
card_infor = []
#1、提示名片管理功能
def print_menu():
    '''完成提示名片管理系统的操作功能''' #函数文档说明
    print("="*50)
    print("    名片管理系统v2.0")
    print("1:添加名片信息")
    print("2:删除名片信息")
    print("3:更改名片信息")
    print("4:查找名片信息")
    print("5:打印全部名片信息")
    print("6:退出系统")
    print("="*50)
    
def new_name():
    '''完成添加新名片'''    #函数文档说明
    new_name = input("请输入你的姓名:")
    new_age = int(input("请输入你的年龄:"))
    #判断输入手机号为11位号码
    while True:
        new_tel = input("请输入你的手机号:")
        if len(new_tel)!=11:
            print("输入号码有误,请重新输入")
        else:
            break
    new_addr = input("请输入你的地址:")
    #存储新名片的信息    #函数文档说明
    new_infor = {}
    new_infor['name'] = new_name
    new_infor['age'] = new_age
    new_infor['Tel'] = new_tel
    new_infor['addr'] = new_addr
    #存储新输入的名片信息
    card_infor.append(new_infor)
    #print(card_infor)  #for test

def del_name():
    '''完成删除已有名片'''   #函数文档说明
    del_name = input("请输入你要删除的名片姓名:")
    del_flag = 0  #用来标记
    #循环查找需要删除的元素
    for temp in card_infor:
        if del_name==temp.get('name'):
            card_infor.remove(temp)#删除要名片信息
            #print(card_infor)  #for test
            del_flag = 1#如果删除名片信息,标记赋值为1
    #系统中不存在删除名片信息
    if del_flag==0:
        print("系统中不存在此名片")
        
def alter_name():
    '''完成更改名片的信息'''  #函数文档说明
    alter_name = input("请输入要更改的名片姓名:")
    alter_flag = 0   #进行标记
    for temp in card_infor:
        if alter_name==temp['name']:
            alter_flag = 1  #系统中名片姓名存在,标记赋值为1
            #循环输入可能修改信息
            while True:
            #输入需要更改的信息
                alter = int(input("请输入你要更改的信息 0:name 1:age 2:Tel 3:addr 4:退出修改 "))
                if alter==0:     #修改姓名
                    temp['name'] = input("请输入你要修改的名字:")
                elif alter==1:  #修改年龄
                    temp['age'] = int(input("请输入你要修改的年龄:"))
                elif alter==2:#修改手机号
                    #判断是否为11位号码
                    while True:
                        temp['Tel']=input("请输入你要修改的手机号:")
                        if len(temp['Tel'])!=11:
                            print("输入修改手机号错误,请重新输入")
                        else:
                            break
                elif alter==3:   #修改地址
                    temp['addr'] = input("请输入你要修改的地址:")
                elif alter==4:
                    break
                else:   #输入不是0 1 2 3
                    print("输入错误,请重新输入序号")
    if alter_flag==0:
        print("系统中不存在此名片")
    #print(card_infor)   #for test
    
def find_name():
    '''完成查找名片信息'''   #函数文档说明
    get_name = input("请输入你要查找的名片姓名:")
    find_flag = 0   #用来计数
    print("姓名	年龄	手机号	   地址")#打印全部信息的抬头
    for temp in card_infor:
        if temp['name']==get_name:
            print("%s	  %d  	%s	%s"%(temp['name'],temp['age'],temp['Tel'],temp['addr']))
            find_flag = 1
    if find_flag==0:
        print("查无此人...")
        
def all_name():
    '''完成打印全部的名片信息'''    #函数文档说明
    print("姓名	年龄	手机号	   地址")#打印全部信息的抬头
    #循环列表card_infor中的信息
    for temp in card_infor:
        print("%s	  %d	%s	%s"%(temp['name'],temp['age'],temp['Tel'],temp['addr']))


def main_name():
    '''完成对全部程序控制'''   #函数文档说明
    #调用打印功能提示函数
    print_menu()
    
    #循环操作
    while True:
        #2、获取用户操作信息
        num = int(input("请输入需要的操作序号:"))
        
        #3、根据用户操作信息,执行程序
        #添加新名片
        if num==1:
            new_name()  #调用添加名片函数
        #删除名片
        elif num==2:
            del_name()  #调用删除名片函数
        #更改名片信息
        elif num==3:
            alter_name() #调用更改名片函数
        #查找名片
        elif num==4:
            find_name()   #调用查找名片函数
        #打印全部名片信息
        elif num==5:
            all_name()    #调用全部名片信息函数
        #退出系统
        elif num==6:
            print("你已经退出系统")
            break
        #操作序号有误
        else:
            print("输入有误,请重新输入操作序号...") 
#调用主函数
main_name()
View Code

  执行结果:

注:其中部分功能没有测试,同理可以测试其他功能

所有内容,仅作参考,可能有不足或错误之处,欢迎留言批评指正
原文地址:https://www.cnblogs.com/DreamRJF/p/8735500.html