当前位置:   article > 正文

python编写通讯录管理系统,python通讯录管理程序_python联系人管理系统

python联系人管理系统

本篇文章给大家谈谈python通讯录管理程序 有界面,以及python通讯录管理系统流程图,希望对各位有所帮助,不要忘了收藏本站喔。

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

它一共有3个功能:

        1. 添加联系人

        2. 查找联系人

        3. 删除联系人

先看一下主界面:

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

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

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

点击“退出通讯录系统”可以退出程序用python如何画雪人

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

  1. import easygui as gui
  2. from pypinyin import pinyin,NORMAL
  3. from os import stat

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

下面是主程序的代码:

  1. mail=open('通讯录.txt','a')
  2. mail=[]
  3. if stat('通讯录.txt').st_size>0:
  4. a=open('通讯录.txt','r')
  5. b=a.read()
  6. a.close()
  7. b=b.split('-')
  8. num=2
  9. for i in range(len(b)):
  10. if i%num==0:
  11. mail.append(b[i:i+num+1])
  12. num=3
  13. print('欢迎使用通讯录程序!\n')
  14. mail_list=['写入联系人','查找联系人','删除联系人','退出通讯录程序']
  15. write_mail=['请输入联系人姓名','请输入联系人号码']
  16. find=['联系人拼音姓氏查找','联系人姓氏开头查找','联系人手机号码查找','联系人姓名查找','查看所有联系人']
  17. while True:
  18. option=gui.buttonbox('请选择操作选项','通讯录系统',mail_list)
  19. print('您选择的选项:',option)
  20. if option==mail_list[3]:
  21. bye=gui.ccbox('您确定要退出吗?','退出程序',[' 退出 ',' 取消 '])
  22. if bye==True:
  23. break
  24. continue
  25. if option==mail_list[0]:
  26. window=gui.multenterbox('请输入以下信息','添加联系人',write_mail)
  27. if window==None:
  28. continue
  29. if len(window[0])==0 or len(window[1])<11 or len(window[1])>11 or window[1].isdigit()==False:
  30. error=gui.msgbox('请按照正确格式写入联系人\n\n例:\n\n\t联系人姓名: 小明\n\t电话号码: 13596707980','格式错误',ok_button='知道了')
  31. continue
  32. name=window[0]
  33. num=window[1]
  34. pinxie=pinyin(name,style=NORMAL)
  35. number=''
  36. for i in range(len(num)):
  37. number+=num[i]
  38. if len(number)==3:
  39. number+=' '
  40. if len(number)==8:
  41. number+=' '
  42. wrong=0
  43. if len(mail)>0:
  44. for i in range(len(mail)):
  45. if name in mail[i] or number in mail[i]:
  46. wrong+=1
  47. if wrong>0:
  48. error=gui.msgbox('您输入的联系人姓名或电话号码已存在,请重新添加','联系人重复',ok_button='好的')
  49. continue
  50. mail.append([name,number,pinxie[0][0][0]])
  51. mail1=open('通讯录.txt','w')
  52. mail2=''
  53. for i in range(len(mail)):
  54. if len(mail2)>0:
  55. mail2+='-'
  56. mail2+=mail[i][0]
  57. mail2+='-'
  58. mail2+=mail[i][1]
  59. mail2+='-'
  60. mail2+=mail[i][2]
  61. mail1.write(mail2)
  62. mail1.close()
  63. finish=gui.msgbox('联系人姓名: {}\n联系人电话号码: {}\n\n联系人添加完成'.format(name,num),'联系人添加完成',ok_button='好的')
  64. if option==mail_list[1]:
  65. if len(mail)==0:
  66. error=gui.msgbox('联系人为空,无法查找','未添加联系人',ok_button='好的');continue
  67. find_mail=gui.choicebox('请选择查找方式','查找联系人',find)
  68. if find_mail==None:
  69. continue
  70. start=[]
  71. if find_mail==find[0]:
  72. pinyin=gui.enterbox('请输入联系人姓氏拼音开头字母(大小写都行)','姓氏拼音开头字母查找')
  73. if pinyin==None:
  74. continue
  75. if len(pinyin)==0 or len(pinyin)>1:
  76. error=gui.msgbox('请输入正确格式!\n\n例:\n\t小明: "x" 或者"X"','格式错误',ok_button='知道了')
  77. continue
  78. for i in range(len(mail)):
  79. if mail[i][2]==pinyin:
  80. start.append(mail[i][:2])
  81. else:
  82. if mail[i][2].upper==pinyin:
  83. start.append(mail[i][:2])
  84. if len(start)==0:
  85. error=gui.msgbox('该联系人不存在\n请重新输入','联系人不存在')
  86. continue
  87. finish=''
  88. for i in range(len(start)):
  89. finish+='联系人{} 姓名: {} 电话号码: {}'.format(i+1,start[i][0],start[i][1])
  90. finish+='\n'
  91. out=gui.msgbox('在"{}"的拼音开头中有{}个联系人:\n\n{}'.format(pinyin,len(start),finish),'查找完成',ok_button='好的')
  92. if find_mail==find[1]:
  93. name_first=gui.enterbox('请输入联系人姓氏开头','姓氏开头查找')
  94. if name_first==None:
  95. continue
  96. if len(name_first)==0 or len(name_first)>1:
  97. error=gui.msgbox('联系人姓氏格式错误\n\n例:\n\t小明: "小"','格式错误',ok_button='知道了')
  98. continue
  99. for i in range(len(mail)):
  100. if mail[i][0][0]==name_first:
  101. start.append(mail[i][:2])
  102. if len(start)==0:
  103. error=gui.msgbox('输入联系人姓名开头不存在,请重新输入','错误',ok_button='好的');continue
  104. finish=''
  105. for i in range(len(start)):
  106. finish+='联系人{} 姓名: {} 电话号码: {}'.format(i+1,start[i][0],start[i][1])
  107. finish+='\n'
  108. out=gui.msgbox('在"{}"的姓氏开头中有{}个联系人:\n\n{}'.format(name_first,len(start),finish),'查找完成',ok_button='好的')
  109. if find_mail==find[2]:
  110. num=gui.enterbox('请输入联系人电话号码','电话号码查找')
  111. if num==None:
  112. continue
  113. if len(num)==0 or len(num)>11 or num.isdigit()==False:
  114. error=gui.msgbox('输入的电话号码格式不正确\n\n例:\n\t小明: 13596707980','格式错误',ok_button='好的');continue
  115. finish=''
  116. number=''
  117. for i in range(len(mail)):
  118. for j in range(len(mail[i][1])):
  119. if mail[i][1][j]!=' ':
  120. number+=mail[i][1][j]
  121. start.append(number)
  122. for i in range(len(start)):
  123. if start[i]==number:
  124. finish+='该联系人姓名: {} 电话号码: {}'.format(mail[i][0],mail[i][1])
  125. break
  126. if len(finish)==0:
  127. error=gui.msgbox('该联系人不存在,请重新输入','联系人不存在',ok_button='好的')
  128. continue
  129. out=gui.msgbox('已查找到该联系人\n\n{}'.format(finish),'查找成功',ok_button='好的')
  130. if find_mail==find[3]:
  131. name=gui.enterbox('请输入联系人姓名','姓名查找')
  132. if name==None:
  133. continue
  134. if len(name)==0:
  135. error=gui.msgbox('联系人格式错误\n\n例:\n\t姓名:小明 输入"小明"','格式错误',ok_button='好的')
  136. continue
  137. finish=''
  138. for i in range(len(mail)):
  139. if mail[i][0]==name:
  140. finish+='该联系人姓名: {} 电话号码: {}'.format(mail[i][0],mail[i][1])
  141. break
  142. if len(finish)==0:
  143. error=gui.msgbox('该联系人不存在,请重新输入','查找失败',ok_button='好的');continue
  144. out=gui.msgbox('已查找到该联系人\n\n{}'.format(finish),'查找成功',ok_button='好的')
  145. if find_mail==find[4]:
  146. finish=''
  147. for i in range(len(mail)):
  148. finish+='联系人{} 联系人姓名: {} 电话号码: {}'.format(i+1,mail[i][0],mail[i][1])
  149. finish+='\n'
  150. out=gui.msgbox('一共有{}个联系人:\n\n{}'.format(len(mail),finish),'查找结果',ok_button='好的')
  151. if option==mail_list[2]:
  152. if len(mail)==0:
  153. error=gui.msgbox('联系人为空,无法删除','错误',ok_button='好的');continue
  154. remove=['联系人姓名删除','删除所有联系人']
  155. window=gui.choicebox('请选择删除方式','删除联系人',remove)
  156. if window==None:
  157. continue
  158. if window==remove[0]:
  159. name=gui.enterbox('请输入联系人姓名','姓名删除')
  160. if name==None:
  161. continue
  162. if len(name)==0:
  163. error=gui.msgbox('请输入联系人姓名\n\n例:\n\t"小明"','格式错误',ok_button='好的');continue
  164. finish=''
  165. num=0
  166. for i in range(len(mail)):
  167. if mail[i][0]==name:
  168. finish+='该联系人姓名: {} 电话号码: {}'.format(mail[i][0],mail[i][1])
  169. num=i
  170. if len(finish)==0:
  171. error=gui.msgbox('该联系人不存在,请检查姓名是否错误后重试','联系人不存在',ok_button='好的')
  172. remove_true=gui.ccbox(finish,'删除联系人',[' 删除 ',' 取消 '])
  173. if remove_true==True:
  174. mail.remove(mail[i])
  175. if len(mail)>0:
  176. mail1=open('通讯录.txt','w')
  177. mail2=''
  178. for i in range(len(mail)):
  179. if len(mail2)>0:
  180. mail2+='-'
  181. mail2+=mail[i][0]
  182. mail2+='-'
  183. mail2+=mail[i][1]
  184. mail2+='-'
  185. mail2+=mail[i][2]
  186. mail1.write(mail2)
  187. mail1.close()
  188. if len(mail)==0:
  189. mail1=open('通讯录.txt','w')
  190. mail1.close()
  191. out=gui.msgbox('该联系人删除成功!','删除成功',ok_button='好的')
  192. else:
  193. continue
  194. if window==remove[1]:
  195. remove_true=gui.ccbox('您确定要删除所有联系人吗?删除后将无法恢复!','联系人全部删除',[' 确定 ',' 取消 '])
  196. if remove_true==True:
  197. mail=[]
  198. mail1=open('通讯录.txt','w')
  199. mail1.close()
  200. out=gui.msgbox('所有联系人删除成功!','删除成功',ok_button='好的')
  201. else:
  202. continue

下面是源代码:

  1. import easygui as gui
  2. from pypinyin import pinyin,NORMAL
  3. from os import stat
  4. mail=open('通讯录.txt','a')
  5. mail=[]
  6. if stat('通讯录.txt').st_size>0:
  7. a=open('通讯录.txt','r')
  8. b=a.read()
  9. a.close()
  10. b=b.split('-')
  11. num=2
  12. for i in range(len(b)):
  13. if i%num==0:
  14. mail.append(b[i:i+num+1])
  15. num=3
  16. print('欢迎使用通讯录程序!\n')
  17. mail_list=['写入联系人','查找联系人','删除联系人','退出通讯录程序']
  18. write_mail=['请输入联系人姓名','请输入联系人号码']
  19. find=['联系人拼音姓氏查找','联系人姓氏开头查找','联系人手机号码查找','联系人姓名查找','查看所有联系人']
  20. while True:
  21. option=gui.buttonbox('请选择操作选项','通讯录系统',mail_list)
  22. print('您选择的选项:',option)
  23. if option==mail_list[3]:
  24. bye=gui.ccbox('您确定要退出吗?','退出程序',[' 退出 ',' 取消 '])
  25. if bye==True:
  26. break
  27. continue
  28. if option==mail_list[0]:
  29. window=gui.multenterbox('请输入以下信息','添加联系人',write_mail)
  30. if window==None:
  31. continue
  32. if len(window[0])==0 or len(window[1])<11 or len(window[1])>11 or window[1].isdigit()==False:
  33. error=gui.msgbox('请按照正确格式写入联系人\n\n例:\n\n\t联系人姓名: 小明\n\t电话号码: 13596707980','格式错误',ok_button='知道了')
  34. continue
  35. name=window[0]
  36. num=window[1]
  37. pinxie=pinyin(name,style=NORMAL)
  38. number=''
  39. for i in range(len(num)):
  40. number+=num[i]
  41. if len(number)==3:
  42. number+=' '
  43. if len(number)==8:
  44. number+=' '
  45. wrong=0
  46. if len(mail)>0:
  47. for i in range(len(mail)):
  48. if name in mail[i] or number in mail[i]:
  49. wrong+=1
  50. if wrong>0:
  51. error=gui.msgbox('您输入的联系人姓名或电话号码已存在,请重新添加','联系人重复',ok_button='好的')
  52. continue
  53. mail.append([name,number,pinxie[0][0][0]])
  54. mail1=open('通讯录.txt','w')
  55. mail2=''
  56. for i in range(len(mail)):
  57. if len(mail2)>0:
  58. mail2+='-'
  59. mail2+=mail[i][0]
  60. mail2+='-'
  61. mail2+=mail[i][1]
  62. mail2+='-'
  63. mail2+=mail[i][2]
  64. mail1.write(mail2)
  65. mail1.close()
  66. finish=gui.msgbox('联系人姓名: {}\n联系人电话号码: {}\n\n联系人添加完成'.format(name,num),'联系人添加完成',ok_button='好的')
  67. if option==mail_list[1]:
  68. if len(mail)==0:
  69. error=gui.msgbox('联系人为空,无法查找','未添加联系人',ok_button='好的');continue
  70. find_mail=gui.choicebox('请选择查找方式','查找联系人',find)
  71. if find_mail==None:
  72. continue
  73. start=[]
  74. if find_mail==find[0]:
  75. pinyin=gui.enterbox('请输入联系人姓氏拼音开头字母(大小写都行)','姓氏拼音开头字母查找')
  76. if pinyin==None:
  77. continue
  78. if len(pinyin)==0 or len(pinyin)>1:
  79. error=gui.msgbox('请输入正确格式!\n\n例:\n\t小明: "x" 或者"X"','格式错误',ok_button='知道了')
  80. continue
  81. for i in range(len(mail)):
  82. if mail[i][2]==pinyin:
  83. start.append(mail[i][:2])
  84. else:
  85. if mail[i][2].upper==pinyin:
  86. start.append(mail[i][:2])
  87. if len(start)==0:
  88. error=gui.msgbox('该联系人不存在\n请重新输入','联系人不存在')
  89. continue
  90. finish=''
  91. for i in range(len(start)):
  92. finish+='联系人{} 姓名: {} 电话号码: {}'.format(i+1,start[i][0],start[i][1])
  93. finish+='\n'
  94. out=gui.msgbox('在"{}"的拼音开头中有{}个联系人:\n\n{}'.format(pinyin,len(start),finish),'查找完成',ok_button='好的')
  95. if find_mail==find[1]:
  96. name_first=gui.enterbox('请输入联系人姓氏开头','姓氏开头查找')
  97. if name_first==None:
  98. continue
  99. if len(name_first)==0 or len(name_first)>1:
  100. error=gui.msgbox('联系人姓氏格式错误\n\n例:\n\t小明: "小"','格式错误',ok_button='知道了')
  101. continue
  102. for i in range(len(mail)):
  103. if mail[i][0][0]==name_first:
  104. start.append(mail[i][:2])
  105. if len(start)==0:
  106. error=gui.msgbox('输入联系人姓名开头不存在,请重新输入','错误',ok_button='好的');continue
  107. finish=''
  108. for i in range(len(start)):
  109. finish+='联系人{} 姓名: {} 电话号码: {}'.format(i+1,start[i][0],start[i][1])
  110. finish+='\n'
  111. out=gui.msgbox('在"{}"的姓氏开头中有{}个联系人:\n\n{}'.format(name_first,len(start),finish),'查找完成',ok_button='好的')
  112. if find_mail==find[2]:
  113. num=gui.enterbox('请输入联系人电话号码','电话号码查找')
  114. if num==None:
  115. continue
  116. if len(num)==0 or len(num)>11 or num.isdigit()==False:
  117. error=gui.msgbox('输入的电话号码格式不正确\n\n例:\n\t小明: 13596707980','格式错误',ok_button='好的');continue
  118. finish=''
  119. number=''
  120. for i in range(len(mail)):
  121. for j in range(len(mail[i][1])):
  122. if mail[i][1][j]!=' ':
  123. number+=mail[i][1][j]
  124. start.append(number)
  125. for i in range(len(start)):
  126. if start[i]==number:
  127. finish+='该联系人姓名: {} 电话号码: {}'.format(mail[i][0],mail[i][1])
  128. break
  129. if len(finish)==0:
  130. error=gui.msgbox('该联系人不存在,请重新输入','联系人不存在',ok_button='好的')
  131. continue
  132. out=gui.msgbox('已查找到该联系人\n\n{}'.format(finish),'查找成功',ok_button='好的')
  133. if find_mail==find[3]:
  134. name=gui.enterbox('请输入联系人姓名','姓名查找')
  135. if name==None:
  136. continue
  137. if len(name)==0:
  138. error=gui.msgbox('联系人格式错误\n\n例:\n\t姓名:小明 输入"小明"','格式错误',ok_button='好的')
  139. continue
  140. finish=''
  141. for i in range(len(mail)):
  142. if mail[i][0]==name:
  143. finish+='该联系人姓名: {} 电话号码: {}'.format(mail[i][0],mail[i][1])
  144. break
  145. if len(finish)==0:
  146. error=gui.msgbox('该联系人不存在,请重新输入','查找失败',ok_button='好的');continue
  147. out=gui.msgbox('已查找到该联系人\n\n{}'.format(finish),'查找成功',ok_button='好的')
  148. if find_mail==find[4]:
  149. finish=''
  150. for i in range(len(mail)):
  151. finish+='联系人{} 联系人姓名: {} 电话号码: {}'.format(i+1,mail[i][0],mail[i][1])
  152. finish+='\n'
  153. out=gui.msgbox('一共有{}个联系人:\n\n{}'.format(len(mail),finish),'查找结果',ok_button='好的')
  154. if option==mail_list[2]:
  155. if len(mail)==0:
  156. error=gui.msgbox('联系人为空,无法删除','错误',ok_button='好的');continue
  157. remove=['联系人姓名删除','删除所有联系人']
  158. window=gui.choicebox('请选择删除方式','删除联系人',remove)
  159. if window==None:
  160. continue
  161. if window==remove[0]:
  162. name=gui.enterbox('请输入联系人姓名','姓名删除')
  163. if name==None:
  164. continue
  165. if len(name)==0:
  166. error=gui.msgbox('请输入联系人姓名\n\n例:\n\t"小明"','格式错误',ok_button='好的');continue
  167. finish=''
  168. num=0
  169. for i in range(len(mail)):
  170. if mail[i][0]==name:
  171. finish+='该联系人姓名: {} 电话号码: {}'.format(mail[i][0],mail[i][1])
  172. num=i
  173. if len(finish)==0:
  174. error=gui.msgbox('该联系人不存在,请检查姓名是否错误后重试','联系人不存在',ok_button='好的')
  175. remove_true=gui.ccbox(finish,'删除联系人',[' 删除 ',' 取消 '])
  176. if remove_true==True:
  177. mail.remove(mail[i])
  178. if len(mail)>0:
  179. mail1=open('通讯录.txt','w')
  180. mail2=''
  181. for i in range(len(mail)):
  182. if len(mail2)>0:
  183. mail2+='-'
  184. mail2+=mail[i][0]
  185. mail2+='-'
  186. mail2+=mail[i][1]
  187. mail2+='-'
  188. mail2+=mail[i][2]
  189. mail1.write(mail2)
  190. mail1.close()
  191. if len(mail)==0:
  192. mail1=open('通讯录.txt','w')
  193. mail1.close()
  194. out=gui.msgbox('该联系人删除成功!','删除成功',ok_button='好的')
  195. else:
  196. continue
  197. if window==remove[1]:
  198. remove_true=gui.ccbox('您确定要删除所有联系人吗?删除后将无法恢复!','联系人全部删除',[' 确定 ',' 取消 '])
  199. if remove_true==True:
  200. mail=[]
  201. mail1=open('通讯录.txt','w')
  202. mail1.close()
  203. out=gui.msgbox('所有联系人删除成功!','删除成功',ok_button='好的')
  204. else:
  205. continue

以下就是全部内容了,在这里祝贺大家新年快乐,身体健康!再见!

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览412758 人正在系统学习中
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/464729
推荐阅读
相关标签
  

闽ICP备14008679号