python通讯录课程设计

最近自学了python,想到之前学c++的通讯录课程设计,就试着用来检验python的学习成果。

import os
file_name='contact.txt'
def menu():
        print("=====================欢迎使用通讯簿=====================")
        print("*********************菜单*****************************")
        print("*                    1.新建联系人                     *")
        print("*                    2.查找联系人                     *")
        print("*                    3.删除联系人                     *")
        print("*                    4.修改联系人                     *")
        print("*                    5.显示联系人信息                  *")
        print("*                    0.退出                          *")
        print("=====================================================")
def main():
    while True:
        menu()
        choice=int(input("请输入0-5选择"))
        if choice in [0,1,2,3,4,5]:
            if choice==0:
                print("谢谢使用")
                break
            elif choice==1:
                insert()
            elif choice==2:
                search()
            elif choice==3:
                delete()
            elif choice==4:
                modify()
            elif choice==5:
                display()
def insert():
    contact_list=[]
    while True:
        number=input("请输入联系人手机号:")
        if not number:
            break
        name=input("请输入联系人姓名:")
        if not name:
           break
        try:
          sex=input("请输入联系人性别:")
          address=input("请输入联系人籍贯:")
          qq=input("请输入联系人qq号:")
        except:
             print("输入错误,请重新输入")
             continue
        contact={
    
    'number':number,'name':name,'sex':sex,'address':address,'qq':qq}
        contact_list.append(contact)
        answer=input('是否继续添加?y/n\n')
        if answer=='y':
            continue
        else:
            break
    save(contact_list)
    print("联系人输入完毕!")
def save(list):
    try:
        cont_txt=open(file_name,'a',encoding='utf-8')
    except:
        cont_txt=open(file_name,'w',encoding='utf-8')
    for item in list:
        cont_txt.write(str(item)+'\n')
    cont_txt.close()
def search():
    contact_query = []
    while True:
        number = ''
        name = ''
        if os.path.exists(file_name):
            mode = input("按手机号查找请输入1,按姓名查找请输入2:")
            if mode == '1':
                number = input("请输入手机号:")
            elif mode == '2':
                name = input("请输入姓名:")
            else:
                print("===========输入错误,请重新输入==========")
                search()
            with open(file_name, 'r', encoding='utf-8') as rfile:
                contact = rfile.readlines()
                for item in contact:
                    d = dict(eval(item))
                    if number != '':
                         if d['number'] == number:
                                contact_query.append(d)
                    elif name != '':
                        if d['name'] == name:
                                contact_query.append(d)
            display_contact(contact_query)
            contact_query.clear()
            answer = input('是否继续查询y/n\n')
            if answer == 'y':
                continue
            else:
                break
        else:
            print("暂未保存联系人信息")
            return
def display_contact(list):
    if len(list)==0:
        print("没有查询到联系人信息,无数据显示!!")
        return
    format_title='{:^6}\t{:^12}\t{:^8}\t{:^10}'
    print(format_title.format('手机号','姓名','性别','籍贯','qq'))
    format_data='{:^6}\t{:^12}\t{:^8}\t{:^10}'
    for item in list:
        print(format_data.format(item.get('number'),item.get('name'),
                                 item.get('sex'),item.get('address'),
                                 item.get('qq')))
def delete():
    while True:
        contact_number = input(("请输入删除联系人的手机号"))
        if contact_number != ' ':
            if os.path.exists(file_name):
                with open(file_name, 'r', encoding='utf-8')as file:
                    contact_old = file.readlines()
            else:
                contact_old = []
            flag = False
            if contact_old:
                with open(file_name, 'w', encoding='utf-8')as wfile:
                    d = {
    
    }
                    for item in contact_old:
                        d = dict(eval(item))
                        if d['number'] != contact_number:
                            wfile.write(str(d) + '\n')
                        else:
                            flag = True
                    if flag:
                        print(f'number为{contact_number}的联系人已被删除')
                    else:
                        print(f'没有找到number为{contact_number}的联系人')
            else:
                print('无联系人信息')
                break
            display()
            answer = input('是否继续删除?y/n\n')
            if answer == 'y':
                continue
            else:
                break
def modify():
    display()
    if os.path.exists(file_name):
        with open(file_name,'r',encoding='utf-8') as rfile:
            contact_old=rfile.readlines()
    else:
        return
    contact_number=input("请输入要修改的联系人手机号:")
    with open(file_name,'w',encoding='utf-8')as wfile:
        for item in contact_old:
            d=dict(eval(item))
            if d['number']==contact_number:
                print("找到该联系人")
                while True:
                    try:
                        d['name']=input("请输入姓名:")
                        d['sex']=input("请输入性别:")
                        d['address']=input("请输入籍贯:")
                        d['qq']=input("请输入qq:")
                    except:
                        print("您的输入有误,请重新输入!")
                    else:
                        break
                wfile.write(str(d)+'\n')
                print("修改成功!")
            else:
                wfile.write(str(d)+'\n')
        answer=input('是否继续修改其他联系人信息y/n\n')
        if answer=='y':
            modify()
def display():
    contact_list=[]
    if os.path.exists(file_name):
        with open(file_name,'r',encoding='utf-8') as rfile:
            contacts=rfile.readlines()
            for item in contacts:
                contact_list.append(eval(item))
            if contact_list:
                display_contact(contact_list)
    else:
        print('暂未保存过数据!!!')
main()

生成exe:
cmd:
先安装 输入pip install PyInstaller
再输入
pyinstaller -F D:\pthon\Pythonxuexi\main.py
在这里插入图片描述

**大概就是这样,接下来再学吧~
============更新一下=
=============================**
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45921943/article/details/113733366
今日推荐