赞
踩
本篇文章给大家谈谈python通讯录管理程序 有界面,以及python通讯录管理系统流程图,希望对各位有所帮助,不要忘了收藏本站喔。
用python的easygui模块做一个简易通讯录的系统
它一共有3个功能:
1. 添加联系人
2. 查找联系人
3. 删除联系人
先看一下主界面:
下面是写入联系人的界面:
下面是查询联系人的界面:
它可以通过联系人姓氏开头的拼音查找、姓名开头查找、手机号码查找、姓名查找的方式来查询联系人。
点击“退出通讯录系统”可以退出程序用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
以下就是全部内容了,在这里祝贺大家新年快乐,身体健康!再见!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。