用python做一个通讯录系统

这篇具有很好参考价值的文章主要介绍了用python做一个通讯录系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用python的easygui模块做一个简易通讯录的系统

它一共有3个功能:

        1. 添加联系人

        2. 查找联系人

        3. 删除联系人

先看一下主界面:

用python做一个通讯录系统

下面是写入联系人的界面: 

用python做一个通讯录系统

下面是查询联系人的界面:

用python做一个通讯录系统

它可以通过联系人姓氏开头的拼音查找、姓名开头查找、手机号码查找、姓名查找的方式来查询联系人。

点击“退出通讯录系统”可以退出程序。

在编写程序前需要导入一些模块:

import easygui as gui
from pypinyin import pinyin,NORMAL
from os import stat

 easygui和pypinyin是第三方模块,需要先下载才能导入。os是标准库,无需下载。

下面是主程序的代码:

mail=open('通讯录.txt','a')
mail=[]
if stat('通讯录.txt').st_size>0:
    a=open('通讯录.txt','r')
    b=a.read()
    a.close()
    b=b.split('-')
    num=2
    for i in range(len(b)):
        if i%num==0:
            mail.append(b[i:i+num+1])
            num=3
print('欢迎使用通讯录程序!\n')
mail_list=['写入联系人','查找联系人','删除联系人','退出通讯录程序']
write_mail=['请输入联系人姓名','请输入联系人号码']
find=['联系人拼音姓氏查找','联系人姓氏开头查找','联系人手机号码查找','联系人姓名查找','查看所有联系人']
while True:
    option=gui.buttonbox('请选择操作选项','通讯录系统',mail_list)
    print('您选择的选项:',option)
    if option==mail_list[3]:
        bye=gui.ccbox('您确定要退出吗?','退出程序',['  退出  ','  取消  '])
        if bye==True:
            break
        continue

    if option==mail_list[0]:
        window=gui.multenterbox('请输入以下信息','添加联系人',write_mail)
        if window==None:
            continue
        if len(window[0])==0 or len(window[1])<11 or len(window[1])>11 or window[1].isdigit()==False:
            error=gui.msgbox('请按照正确格式写入联系人\n\n例:\n\n\t联系人姓名: 小明\n\t电话号码: 13596707980','格式错误',ok_button='知道了')
            continue
        name=window[0]
        num=window[1]
        pinxie=pinyin(name,style=NORMAL)
        number=''
        for i in range(len(num)):
            number+=num[i]
            if len(number)==3:
                number+=' '
            if len(number)==8:
                number+=' '
        wrong=0
        if len(mail)>0:
            for i in range(len(mail)):
                if name in mail[i] or number in mail[i]:
                    wrong+=1
        if wrong>0:
            error=gui.msgbox('您输入的联系人姓名或电话号码已存在,请重新添加','联系人重复',ok_button='好的')
            continue
        mail.append([name,number,pinxie[0][0][0]])
        mail1=open('通讯录.txt','w')
        mail2=''
        for i in range(len(mail)):
            if len(mail2)>0:
                mail2+='-'
            mail2+=mail[i][0]
            mail2+='-'
            mail2+=mail[i][1]
            mail2+='-'
            mail2+=mail[i][2]
        mail1.write(mail2)
        mail1.close()
        finish=gui.msgbox('联系人姓名: {}\n联系人电话号码: {}\n\n联系人添加完成'.format(name,num),'联系人添加完成',ok_button='好的')

    if option==mail_list[1]:
        if len(mail)==0:
            error=gui.msgbox('联系人为空,无法查找','未添加联系人',ok_button='好的');continue
        find_mail=gui.choicebox('请选择查找方式','查找联系人',find)
        if find_mail==None:
            continue
        start=[]
        if find_mail==find[0]:
            pinyin=gui.enterbox('请输入联系人姓氏拼音开头字母(大小写都行)','姓氏拼音开头字母查找')
            if pinyin==None:
                continue
            if len(pinyin)==0 or len(pinyin)>1:
                error=gui.msgbox('请输入正确格式!\n\n例:\n\t小明: "x" 或者"X"','格式错误',ok_button='知道了')
                continue
            for i in range(len(mail)):
                if mail[i][2]==pinyin:
                    start.append(mail[i][:2])
                else:
                    if mail[i][2].upper==pinyin:
                        start.append(mail[i][:2])
            if len(start)==0:
                error=gui.msgbox('该联系人不存在\n请重新输入','联系人不存在')
                continue
            finish=''
            for i in range(len(start)):
                finish+='联系人{} 姓名: {} 电话号码: {}'.format(i+1,start[i][0],start[i][1])
                finish+='\n'
            out=gui.msgbox('在"{}"的拼音开头中有{}个联系人:\n\n{}'.format(pinyin,len(start),finish),'查找完成',ok_button='好的')

        if find_mail==find[1]:
            name_first=gui.enterbox('请输入联系人姓氏开头','姓氏开头查找')
            if name_first==None:
                continue
            if len(name_first)==0 or len(name_first)>1:
                error=gui.msgbox('联系人姓氏格式错误\n\n例:\n\t小明: "小"','格式错误',ok_button='知道了')
                continue
            for i in range(len(mail)):
                if mail[i][0][0]==name_first:
                    start.append(mail[i][:2])
            if len(start)==0:
                error=gui.msgbox('输入联系人姓名开头不存在,请重新输入','错误',ok_button='好的');continue
            finish=''
            for i in range(len(start)):
                finish+='联系人{} 姓名: {} 电话号码: {}'.format(i+1,start[i][0],start[i][1])
                finish+='\n'
            out=gui.msgbox('在"{}"的姓氏开头中有{}个联系人:\n\n{}'.format(name_first,len(start),finish),'查找完成',ok_button='好的')

        if find_mail==find[2]:
            num=gui.enterbox('请输入联系人电话号码','电话号码查找')
            if num==None:
                continue
            if len(num)==0 or len(num)>11 or num.isdigit()==False:
                error=gui.msgbox('输入的电话号码格式不正确\n\n例:\n\t小明: 13596707980','格式错误',ok_button='好的');continue
            finish=''
            number=''
            for i in range(len(mail)):
                for j in range(len(mail[i][1])):
                    if mail[i][1][j]!=' ':
                        number+=mail[i][1][j]
                start.append(number)
            for i in range(len(start)):
                if start[i]==number:
                    finish+='该联系人姓名: {} 电话号码: {}'.format(mail[i][0],mail[i][1])
                    break
            if len(finish)==0:
                error=gui.msgbox('该联系人不存在,请重新输入','联系人不存在',ok_button='好的')
                continue
            out=gui.msgbox('已查找到该联系人\n\n{}'.format(finish),'查找成功',ok_button='好的')

        if find_mail==find[3]:
            name=gui.enterbox('请输入联系人姓名','姓名查找')
            if name==None:
                continue
            if len(name)==0:
                error=gui.msgbox('联系人格式错误\n\n例:\n\t姓名:小明 输入"小明"','格式错误',ok_button='好的')
                continue
            finish=''
            for i in range(len(mail)):
                if mail[i][0]==name:
                    finish+='该联系人姓名: {} 电话号码: {}'.format(mail[i][0],mail[i][1])
                    break
            if len(finish)==0:
                error=gui.msgbox('该联系人不存在,请重新输入','查找失败',ok_button='好的');continue
            out=gui.msgbox('已查找到该联系人\n\n{}'.format(finish),'查找成功',ok_button='好的')

        if find_mail==find[4]:
            finish=''
            for i in range(len(mail)):
                finish+='联系人{} 联系人姓名: {} 电话号码: {}'.format(i+1,mail[i][0],mail[i][1])
                finish+='\n'
            out=gui.msgbox('一共有{}个联系人:\n\n{}'.format(len(mail),finish),'查找结果',ok_button='好的')

    if option==mail_list[2]:
        if len(mail)==0:
            error=gui.msgbox('联系人为空,无法删除','错误',ok_button='好的');continue
        remove=['联系人姓名删除','删除所有联系人']
        window=gui.choicebox('请选择删除方式','删除联系人',remove)
        if window==None:
            continue
        if window==remove[0]:
            name=gui.enterbox('请输入联系人姓名','姓名删除')
            if name==None:
                continue
            if len(name)==0:
                error=gui.msgbox('请输入联系人姓名\n\n例:\n\t"小明"','格式错误',ok_button='好的');continue
            finish=''
            num=0
            for i in range(len(mail)):
                if mail[i][0]==name:
                    finish+='该联系人姓名: {} 电话号码: {}'.format(mail[i][0],mail[i][1])
                    num=i
            if len(finish)==0:
                error=gui.msgbox('该联系人不存在,请检查姓名是否错误后重试','联系人不存在',ok_button='好的')
            remove_true=gui.ccbox(finish,'删除联系人',['  删除  ','  取消  '])
            if remove_true==True:
                mail.remove(mail[i])
                if len(mail)>0:
                    mail1=open('通讯录.txt','w')
                    mail2=''
                    for i in range(len(mail)):
                        if len(mail2)>0:
                            mail2+='-'
                        mail2+=mail[i][0]
                        mail2+='-'
                        mail2+=mail[i][1]
                        mail2+='-'
                        mail2+=mail[i][2]
                    mail1.write(mail2)
                    mail1.close()

                if len(mail)==0:
                    mail1=open('通讯录.txt','w')
                    mail1.close()
                out=gui.msgbox('该联系人删除成功!','删除成功',ok_button='好的')
            else:
                continue
        if window==remove[1]:
            remove_true=gui.ccbox('您确定要删除所有联系人吗?删除后将无法恢复!','联系人全部删除',['  确定  ','  取消  '])
            if remove_true==True:
                mail=[]
                mail1=open('通讯录.txt','w')
                mail1.close()
                out=gui.msgbox('所有联系人删除成功!','删除成功',ok_button='好的')
            else:
                continue

下面是源代码:

import easygui as gui
from pypinyin import pinyin,NORMAL
from os import stat
mail=open('通讯录.txt','a')
mail=[]
if stat('通讯录.txt').st_size>0:
    a=open('通讯录.txt','r')
    b=a.read()
    a.close()
    b=b.split('-')
    num=2
    for i in range(len(b)):
        if i%num==0:
            mail.append(b[i:i+num+1])
            num=3
print('欢迎使用通讯录程序!\n')
mail_list=['写入联系人','查找联系人','删除联系人','退出通讯录程序']
write_mail=['请输入联系人姓名','请输入联系人号码']
find=['联系人拼音姓氏查找','联系人姓氏开头查找','联系人手机号码查找','联系人姓名查找','查看所有联系人']
while True:
    option=gui.buttonbox('请选择操作选项','通讯录系统',mail_list)
    print('您选择的选项:',option)
    if option==mail_list[3]:
        bye=gui.ccbox('您确定要退出吗?','退出程序',['  退出  ','  取消  '])
        if bye==True:
            break
        continue

    if option==mail_list[0]:
        window=gui.multenterbox('请输入以下信息','添加联系人',write_mail)
        if window==None:
            continue
        if len(window[0])==0 or len(window[1])<11 or len(window[1])>11 or window[1].isdigit()==False:
            error=gui.msgbox('请按照正确格式写入联系人\n\n例:\n\n\t联系人姓名: 小明\n\t电话号码: 13596707980','格式错误',ok_button='知道了')
            continue
        name=window[0]
        num=window[1]
        pinxie=pinyin(name,style=NORMAL)
        number=''
        for i in range(len(num)):
            number+=num[i]
            if len(number)==3:
                number+=' '
            if len(number)==8:
                number+=' '
        wrong=0
        if len(mail)>0:
            for i in range(len(mail)):
                if name in mail[i] or number in mail[i]:
                    wrong+=1
        if wrong>0:
            error=gui.msgbox('您输入的联系人姓名或电话号码已存在,请重新添加','联系人重复',ok_button='好的')
            continue
        mail.append([name,number,pinxie[0][0][0]])
        mail1=open('通讯录.txt','w')
        mail2=''
        for i in range(len(mail)):
            if len(mail2)>0:
                mail2+='-'
            mail2+=mail[i][0]
            mail2+='-'
            mail2+=mail[i][1]
            mail2+='-'
            mail2+=mail[i][2]
        mail1.write(mail2)
        mail1.close()
        finish=gui.msgbox('联系人姓名: {}\n联系人电话号码: {}\n\n联系人添加完成'.format(name,num),'联系人添加完成',ok_button='好的')

    if option==mail_list[1]:
        if len(mail)==0:
            error=gui.msgbox('联系人为空,无法查找','未添加联系人',ok_button='好的');continue
        find_mail=gui.choicebox('请选择查找方式','查找联系人',find)
        if find_mail==None:
            continue
        start=[]
        if find_mail==find[0]:
            pinyin=gui.enterbox('请输入联系人姓氏拼音开头字母(大小写都行)','姓氏拼音开头字母查找')
            if pinyin==None:
                continue
            if len(pinyin)==0 or len(pinyin)>1:
                error=gui.msgbox('请输入正确格式!\n\n例:\n\t小明: "x" 或者"X"','格式错误',ok_button='知道了')
                continue
            for i in range(len(mail)):
                if mail[i][2]==pinyin:
                    start.append(mail[i][:2])
                else:
                    if mail[i][2].upper==pinyin:
                        start.append(mail[i][:2])
            if len(start)==0:
                error=gui.msgbox('该联系人不存在\n请重新输入','联系人不存在')
                continue
            finish=''
            for i in range(len(start)):
                finish+='联系人{} 姓名: {} 电话号码: {}'.format(i+1,start[i][0],start[i][1])
                finish+='\n'
            out=gui.msgbox('在"{}"的拼音开头中有{}个联系人:\n\n{}'.format(pinyin,len(start),finish),'查找完成',ok_button='好的')

        if find_mail==find[1]:
            name_first=gui.enterbox('请输入联系人姓氏开头','姓氏开头查找')
            if name_first==None:
                continue
            if len(name_first)==0 or len(name_first)>1:
                error=gui.msgbox('联系人姓氏格式错误\n\n例:\n\t小明: "小"','格式错误',ok_button='知道了')
                continue
            for i in range(len(mail)):
                if mail[i][0][0]==name_first:
                    start.append(mail[i][:2])
            if len(start)==0:
                error=gui.msgbox('输入联系人姓名开头不存在,请重新输入','错误',ok_button='好的');continue
            finish=''
            for i in range(len(start)):
                finish+='联系人{} 姓名: {} 电话号码: {}'.format(i+1,start[i][0],start[i][1])
                finish+='\n'
            out=gui.msgbox('在"{}"的姓氏开头中有{}个联系人:\n\n{}'.format(name_first,len(start),finish),'查找完成',ok_button='好的')

        if find_mail==find[2]:
            num=gui.enterbox('请输入联系人电话号码','电话号码查找')
            if num==None:
                continue
            if len(num)==0 or len(num)>11 or num.isdigit()==False:
                error=gui.msgbox('输入的电话号码格式不正确\n\n例:\n\t小明: 13596707980','格式错误',ok_button='好的');continue
            finish=''
            number=''
            for i in range(len(mail)):
                for j in range(len(mail[i][1])):
                    if mail[i][1][j]!=' ':
                        number+=mail[i][1][j]
                start.append(number)
            for i in range(len(start)):
                if start[i]==number:
                    finish+='该联系人姓名: {} 电话号码: {}'.format(mail[i][0],mail[i][1])
                    break
            if len(finish)==0:
                error=gui.msgbox('该联系人不存在,请重新输入','联系人不存在',ok_button='好的')
                continue
            out=gui.msgbox('已查找到该联系人\n\n{}'.format(finish),'查找成功',ok_button='好的')

        if find_mail==find[3]:
            name=gui.enterbox('请输入联系人姓名','姓名查找')
            if name==None:
                continue
            if len(name)==0:
                error=gui.msgbox('联系人格式错误\n\n例:\n\t姓名:小明 输入"小明"','格式错误',ok_button='好的')
                continue
            finish=''
            for i in range(len(mail)):
                if mail[i][0]==name:
                    finish+='该联系人姓名: {} 电话号码: {}'.format(mail[i][0],mail[i][1])
                    break
            if len(finish)==0:
                error=gui.msgbox('该联系人不存在,请重新输入','查找失败',ok_button='好的');continue
            out=gui.msgbox('已查找到该联系人\n\n{}'.format(finish),'查找成功',ok_button='好的')

        if find_mail==find[4]:
            finish=''
            for i in range(len(mail)):
                finish+='联系人{} 联系人姓名: {} 电话号码: {}'.format(i+1,mail[i][0],mail[i][1])
                finish+='\n'
            out=gui.msgbox('一共有{}个联系人:\n\n{}'.format(len(mail),finish),'查找结果',ok_button='好的')

    if option==mail_list[2]:
        if len(mail)==0:
            error=gui.msgbox('联系人为空,无法删除','错误',ok_button='好的');continue
        remove=['联系人姓名删除','删除所有联系人']
        window=gui.choicebox('请选择删除方式','删除联系人',remove)
        if window==None:
            continue
        if window==remove[0]:
            name=gui.enterbox('请输入联系人姓名','姓名删除')
            if name==None:
                continue
            if len(name)==0:
                error=gui.msgbox('请输入联系人姓名\n\n例:\n\t"小明"','格式错误',ok_button='好的');continue
            finish=''
            num=0
            for i in range(len(mail)):
                if mail[i][0]==name:
                    finish+='该联系人姓名: {} 电话号码: {}'.format(mail[i][0],mail[i][1])
                    num=i
            if len(finish)==0:
                error=gui.msgbox('该联系人不存在,请检查姓名是否错误后重试','联系人不存在',ok_button='好的')
            remove_true=gui.ccbox(finish,'删除联系人',['  删除  ','  取消  '])
            if remove_true==True:
                mail.remove(mail[i])
                if len(mail)>0:
                    mail1=open('通讯录.txt','w')
                    mail2=''
                    for i in range(len(mail)):
                        if len(mail2)>0:
                            mail2+='-'
                        mail2+=mail[i][0]
                        mail2+='-'
                        mail2+=mail[i][1]
                        mail2+='-'
                        mail2+=mail[i][2]
                    mail1.write(mail2)
                    mail1.close()

                if len(mail)==0:
                    mail1=open('通讯录.txt','w')
                    mail1.close()
                out=gui.msgbox('该联系人删除成功!','删除成功',ok_button='好的')
            else:
                continue
        if window==remove[1]:
            remove_true=gui.ccbox('您确定要删除所有联系人吗?删除后将无法恢复!','联系人全部删除',['  确定  ','  取消  '])
            if remove_true==True:
                mail=[]
                mail1=open('通讯录.txt','w')
                mail1.close()
                out=gui.msgbox('所有联系人删除成功!','删除成功',ok_button='好的')
            else:
                continue

以下就是全部内容了,在这里祝贺大家新年快乐,身体健康!再见!文章来源地址https://www.toymoban.com/news/detail-479642.html

到了这里,关于用python做一个通讯录系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python---综合案例:通讯录管理系统---涉及点:列表、字典、死循环

    需求: 开个一个通讯录的管理系统,主要用于实现存储班级中同学的信息(姓名、年龄、电话) 涉及点:列表、字典、死循环 相关链接:Python--列表及其应用场景---增、删、改、查。-CSDN博客 Python---字典---dict-CSDN博客 Python---死循环概念---while True-CSDN博客 注意: 在Python中,

    2024年02月05日
    浏览(54)
  • C语言---认识动态内存管理并实现一个动态通讯录:静态通讯录别来沾边

    👧个人主页:@小沈熬夜秃头中୧⍤⃝❅ 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 📋专栏:C语言学习 🔑本章内容:动态内存管理 送给各位💌:当你的能力还驾驭不了你的目标时那你就应该沉下心来历练 记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~ 提示:以下是本篇

    2024年02月08日
    浏览(92)
  • 通讯录管理系统

    作者:狮子也疯狂 专栏:《项目集锦》 坚持做好每一步,幸运之神自然会驾凌在你的身上 该项目是用于日常生活中记录联系人信息的一款智能小工具。实现了对联系人的姓名、年龄、性别、电话号码、住址的添加及修改、查找、删除、排序等功能。该项目是以 Windows 控制台

    2024年02月05日
    浏览(55)
  • python-手机通讯录

    手机通讯录 通讯录是记录了联系人姓名和联系方式的名录,手机通讯录是最常见的通讯录之一,人们可以在通讯录中通过姓名查看相关联系人的联系方式等信息,也可以在其中新增联系人,或修改、删除联系人信息。 本实例要求编写程序,实现具备添加、查看、修改以及删

    2024年02月06日
    浏览(69)
  • 手机通讯录 python

    person_info = [] print(“=” * 20) print(‘欢迎使用通讯录:’) print(“1.添加联系人”) print(“2.查看通讯录”) print(“3.删除联系人”) print(“4.修改联系人信息”) print(“5.查找联系人”) print(“6.退出”) print(“=” * 20) while True: per_dict = {} fun_num = input(‘请输入功能序号:’) if fun_num

    2024年02月06日
    浏览(38)
  • 通讯录管理系统 C++

    目录 一、前言 二、设计要求  三、概要设计 3.1 主界面设计 3.1.1 设计图 3.1.2设计代码 3.2 存储结构设计 3.3 系统功能设计 3.3.1 系统流程图​编辑 3.3.2 系统子程序及功能介绍  四、详细设计 4.1 头文件 4.2 数据定义 4.3 系统主要子程序详细设计 4.3.1 主函数 4.3.2 添加联系人 4.3

    2024年02月09日
    浏览(72)
  • 封装一个类似微信通讯录带有字母检索功能的vue组件

    这里我们直接使用 scrollIntoView 方法 该方法将调用它的元素滚动到浏览器窗口的可见区域 element.scrollIntoView(); // 等同于element.scrollIntoView(true) element.scrollIntoView(alignToTop); //布尔参数 element.scrollIntoView(scrollIntoViewOptions); //对象参数 分析一下功能就知道很简单了。 首先需要

    2024年02月12日
    浏览(62)
  • 通讯录管理系统C++代码

    目录 通讯录管理系统(课程设计) 一、系统中需要实现的功能 二、创建项目 三、实现功能 1、菜单功能  2.添加联系人功能  3.显示联系人功能 4.删除联系人  5 .查找联系人功能  6.修改联系人功能  7.清空联系人功能  8.退出功能 对于通讯录管理系统而言,不需要太复杂的

    2024年02月09日
    浏览(53)
  • 简单通讯录管理系统(Java)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档     任务 : 在之前的练习任务中,我们已经实现了通讯录的增删改查等基本功能,主要实现一个通讯录的菜单管理功能。 仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 中实现通讯录菜单管

    2024年02月09日
    浏览(66)
  • 基于uniapp与uview做一个按拼音首字母排序的通讯录页面

    效果图: 第一步导入pinyin库并应用,用于区分汉字的拼音首字母 完整算法: 完整代码(样式自己定义):

    2024年02月06日
    浏览(107)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包