用python的easygui模塊做一個簡易通訊錄的系統(tǒng)
它一共有3個功能:
? ? ? ? 1. 添加聯(lián)系人
? ? ? ? 2. 查找聯(lián)系人
? ? ? ? 3. 刪除聯(lián)系人
先看一下主界面:
下面是寫入聯(lián)系人的界面:?
下面是查詢聯(lián)系人的界面:
它可以通過聯(lián)系人姓氏開頭的拼音查找、姓名開頭查找、手機號碼查找、姓名查找的方式來查詢聯(lián)系人。
點擊“退出通訊錄系統(tǒng)”可以退出程序。
在編寫程序前需要導入一些模塊:
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=['寫入聯(lián)系人','查找聯(lián)系人','刪除聯(lián)系人','退出通訊錄程序']
write_mail=['請輸入聯(lián)系人姓名','請輸入聯(lián)系人號碼']
find=['聯(lián)系人拼音姓氏查找','聯(lián)系人姓氏開頭查找','聯(lián)系人手機號碼查找','聯(lián)系人姓名查找','查看所有聯(lián)系人']
while True:
option=gui.buttonbox('請選擇操作選項','通訊錄系統(tǒng)',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('請輸入以下信息','添加聯(lián)系人',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('請按照正確格式寫入聯(lián)系人\n\n例:\n\n\t聯(lián)系人姓名: 小明\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('您輸入的聯(lián)系人姓名或電話號碼已存在,請重新添加','聯(lián)系人重復',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('聯(lián)系人姓名: {}\n聯(lián)系人電話號碼: {}\n\n聯(lián)系人添加完成'.format(name,num),'聯(lián)系人添加完成',ok_button='好的')
if option==mail_list[1]:
if len(mail)==0:
error=gui.msgbox('聯(lián)系人為空,無法查找','未添加聯(lián)系人',ok_button='好的');continue
find_mail=gui.choicebox('請選擇查找方式','查找聯(lián)系人',find)
if find_mail==None:
continue
start=[]
if find_mail==find[0]:
pinyin=gui.enterbox('請輸入聯(lián)系人姓氏拼音開頭字母(大小寫都行)','姓氏拼音開頭字母查找')
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('該聯(lián)系人不存在\n請重新輸入','聯(lián)系人不存在')
continue
finish=''
for i in range(len(start)):
finish+='聯(lián)系人{} 姓名: {} 電話號碼: {}'.format(i+1,start[i][0],start[i][1])
finish+='\n'
out=gui.msgbox('在"{}"的拼音開頭中有{}個聯(lián)系人:\n\n{}'.format(pinyin,len(start),finish),'查找完成',ok_button='好的')
if find_mail==find[1]:
name_first=gui.enterbox('請輸入聯(lián)系人姓氏開頭','姓氏開頭查找')
if name_first==None:
continue
if len(name_first)==0 or len(name_first)>1:
error=gui.msgbox('聯(lián)系人姓氏格式錯誤\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('輸入聯(lián)系人姓名開頭不存在,請重新輸入','錯誤',ok_button='好的');continue
finish=''
for i in range(len(start)):
finish+='聯(lián)系人{} 姓名: {} 電話號碼: {}'.format(i+1,start[i][0],start[i][1])
finish+='\n'
out=gui.msgbox('在"{}"的姓氏開頭中有{}個聯(lián)系人:\n\n{}'.format(name_first,len(start),finish),'查找完成',ok_button='好的')
if find_mail==find[2]:
num=gui.enterbox('請輸入聯(lián)系人電話號碼','電話號碼查找')
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+='該聯(lián)系人姓名: {} 電話號碼: {}'.format(mail[i][0],mail[i][1])
break
if len(finish)==0:
error=gui.msgbox('該聯(lián)系人不存在,請重新輸入','聯(lián)系人不存在',ok_button='好的')
continue
out=gui.msgbox('已查找到該聯(lián)系人\n\n{}'.format(finish),'查找成功',ok_button='好的')
if find_mail==find[3]:
name=gui.enterbox('請輸入聯(lián)系人姓名','姓名查找')
if name==None:
continue
if len(name)==0:
error=gui.msgbox('聯(lián)系人格式錯誤\n\n例:\n\t姓名:小明 輸入"小明"','格式錯誤',ok_button='好的')
continue
finish=''
for i in range(len(mail)):
if mail[i][0]==name:
finish+='該聯(lián)系人姓名: {} 電話號碼: {}'.format(mail[i][0],mail[i][1])
break
if len(finish)==0:
error=gui.msgbox('該聯(lián)系人不存在,請重新輸入','查找失敗',ok_button='好的');continue
out=gui.msgbox('已查找到該聯(lián)系人\n\n{}'.format(finish),'查找成功',ok_button='好的')
if find_mail==find[4]:
finish=''
for i in range(len(mail)):
finish+='聯(lián)系人{} 聯(lián)系人姓名: {} 電話號碼: {}'.format(i+1,mail[i][0],mail[i][1])
finish+='\n'
out=gui.msgbox('一共有{}個聯(lián)系人:\n\n{}'.format(len(mail),finish),'查找結(jié)果',ok_button='好的')
if option==mail_list[2]:
if len(mail)==0:
error=gui.msgbox('聯(lián)系人為空,無法刪除','錯誤',ok_button='好的');continue
remove=['聯(lián)系人姓名刪除','刪除所有聯(lián)系人']
window=gui.choicebox('請選擇刪除方式','刪除聯(lián)系人',remove)
if window==None:
continue
if window==remove[0]:
name=gui.enterbox('請輸入聯(lián)系人姓名','姓名刪除')
if name==None:
continue
if len(name)==0:
error=gui.msgbox('請輸入聯(lián)系人姓名\n\n例:\n\t"小明"','格式錯誤',ok_button='好的');continue
finish=''
num=0
for i in range(len(mail)):
if mail[i][0]==name:
finish+='該聯(lián)系人姓名: {} 電話號碼: {}'.format(mail[i][0],mail[i][1])
num=i
if len(finish)==0:
error=gui.msgbox('該聯(lián)系人不存在,請檢查姓名是否錯誤后重試','聯(lián)系人不存在',ok_button='好的')
remove_true=gui.ccbox(finish,'刪除聯(lián)系人',[' 刪除 ',' 取消 '])
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('該聯(lián)系人刪除成功!','刪除成功',ok_button='好的')
else:
continue
if window==remove[1]:
remove_true=gui.ccbox('您確定要刪除所有聯(lián)系人嗎?刪除后將無法恢復!','聯(lián)系人全部刪除',[' 確定 ',' 取消 '])
if remove_true==True:
mail=[]
mail1=open('通訊錄.txt','w')
mail1.close()
out=gui.msgbox('所有聯(lián)系人刪除成功!','刪除成功',ok_button='好的')
else:
continue
下面是源代碼:文章來源:http://www.zghlxwxcb.cn/news/detail-479642.html
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=['寫入聯(lián)系人','查找聯(lián)系人','刪除聯(lián)系人','退出通訊錄程序']
write_mail=['請輸入聯(lián)系人姓名','請輸入聯(lián)系人號碼']
find=['聯(lián)系人拼音姓氏查找','聯(lián)系人姓氏開頭查找','聯(lián)系人手機號碼查找','聯(lián)系人姓名查找','查看所有聯(lián)系人']
while True:
option=gui.buttonbox('請選擇操作選項','通訊錄系統(tǒng)',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('請輸入以下信息','添加聯(lián)系人',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('請按照正確格式寫入聯(lián)系人\n\n例:\n\n\t聯(lián)系人姓名: 小明\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('您輸入的聯(lián)系人姓名或電話號碼已存在,請重新添加','聯(lián)系人重復',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('聯(lián)系人姓名: {}\n聯(lián)系人電話號碼: {}\n\n聯(lián)系人添加完成'.format(name,num),'聯(lián)系人添加完成',ok_button='好的')
if option==mail_list[1]:
if len(mail)==0:
error=gui.msgbox('聯(lián)系人為空,無法查找','未添加聯(lián)系人',ok_button='好的');continue
find_mail=gui.choicebox('請選擇查找方式','查找聯(lián)系人',find)
if find_mail==None:
continue
start=[]
if find_mail==find[0]:
pinyin=gui.enterbox('請輸入聯(lián)系人姓氏拼音開頭字母(大小寫都行)','姓氏拼音開頭字母查找')
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('該聯(lián)系人不存在\n請重新輸入','聯(lián)系人不存在')
continue
finish=''
for i in range(len(start)):
finish+='聯(lián)系人{} 姓名: {} 電話號碼: {}'.format(i+1,start[i][0],start[i][1])
finish+='\n'
out=gui.msgbox('在"{}"的拼音開頭中有{}個聯(lián)系人:\n\n{}'.format(pinyin,len(start),finish),'查找完成',ok_button='好的')
if find_mail==find[1]:
name_first=gui.enterbox('請輸入聯(lián)系人姓氏開頭','姓氏開頭查找')
if name_first==None:
continue
if len(name_first)==0 or len(name_first)>1:
error=gui.msgbox('聯(lián)系人姓氏格式錯誤\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('輸入聯(lián)系人姓名開頭不存在,請重新輸入','錯誤',ok_button='好的');continue
finish=''
for i in range(len(start)):
finish+='聯(lián)系人{} 姓名: {} 電話號碼: {}'.format(i+1,start[i][0],start[i][1])
finish+='\n'
out=gui.msgbox('在"{}"的姓氏開頭中有{}個聯(lián)系人:\n\n{}'.format(name_first,len(start),finish),'查找完成',ok_button='好的')
if find_mail==find[2]:
num=gui.enterbox('請輸入聯(lián)系人電話號碼','電話號碼查找')
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+='該聯(lián)系人姓名: {} 電話號碼: {}'.format(mail[i][0],mail[i][1])
break
if len(finish)==0:
error=gui.msgbox('該聯(lián)系人不存在,請重新輸入','聯(lián)系人不存在',ok_button='好的')
continue
out=gui.msgbox('已查找到該聯(lián)系人\n\n{}'.format(finish),'查找成功',ok_button='好的')
if find_mail==find[3]:
name=gui.enterbox('請輸入聯(lián)系人姓名','姓名查找')
if name==None:
continue
if len(name)==0:
error=gui.msgbox('聯(lián)系人格式錯誤\n\n例:\n\t姓名:小明 輸入"小明"','格式錯誤',ok_button='好的')
continue
finish=''
for i in range(len(mail)):
if mail[i][0]==name:
finish+='該聯(lián)系人姓名: {} 電話號碼: {}'.format(mail[i][0],mail[i][1])
break
if len(finish)==0:
error=gui.msgbox('該聯(lián)系人不存在,請重新輸入','查找失敗',ok_button='好的');continue
out=gui.msgbox('已查找到該聯(lián)系人\n\n{}'.format(finish),'查找成功',ok_button='好的')
if find_mail==find[4]:
finish=''
for i in range(len(mail)):
finish+='聯(lián)系人{} 聯(lián)系人姓名: {} 電話號碼: {}'.format(i+1,mail[i][0],mail[i][1])
finish+='\n'
out=gui.msgbox('一共有{}個聯(lián)系人:\n\n{}'.format(len(mail),finish),'查找結(jié)果',ok_button='好的')
if option==mail_list[2]:
if len(mail)==0:
error=gui.msgbox('聯(lián)系人為空,無法刪除','錯誤',ok_button='好的');continue
remove=['聯(lián)系人姓名刪除','刪除所有聯(lián)系人']
window=gui.choicebox('請選擇刪除方式','刪除聯(lián)系人',remove)
if window==None:
continue
if window==remove[0]:
name=gui.enterbox('請輸入聯(lián)系人姓名','姓名刪除')
if name==None:
continue
if len(name)==0:
error=gui.msgbox('請輸入聯(lián)系人姓名\n\n例:\n\t"小明"','格式錯誤',ok_button='好的');continue
finish=''
num=0
for i in range(len(mail)):
if mail[i][0]==name:
finish+='該聯(lián)系人姓名: {} 電話號碼: {}'.format(mail[i][0],mail[i][1])
num=i
if len(finish)==0:
error=gui.msgbox('該聯(lián)系人不存在,請檢查姓名是否錯誤后重試','聯(lián)系人不存在',ok_button='好的')
remove_true=gui.ccbox(finish,'刪除聯(lián)系人',[' 刪除 ',' 取消 '])
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('該聯(lián)系人刪除成功!','刪除成功',ok_button='好的')
else:
continue
if window==remove[1]:
remove_true=gui.ccbox('您確定要刪除所有聯(lián)系人嗎?刪除后將無法恢復!','聯(lián)系人全部刪除',[' 確定 ',' 取消 '])
if remove_true==True:
mail=[]
mail1=open('通訊錄.txt','w')
mail1.close()
out=gui.msgbox('所有聯(lián)系人刪除成功!','刪除成功',ok_button='好的')
else:
continue
以下就是全部內(nèi)容了,在這里祝賀大家新年快樂,身體健康!再見!文章來源地址http://www.zghlxwxcb.cn/news/detail-479642.html
到了這里,關于用python做一個通訊錄系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!