【前言】學習Python已經有一段時間了,相關的書籍資料也下載了不少,但是沒有一本完整的看完,也沒有編出一個完整的程式。今天下午比較清閑就把《簡明Python教程》看了一遍,然後根據書裡面提的要求編寫了一段命令行通訊錄的小程式。下麵是編寫的思路以及代碼,歡迎感興趣的同學交流探討。 1.目標 編寫一個 ...
【前言】學習Python已經有一段時間了,相關的書籍資料也下載了不少,但是沒有一本完整的看完,也沒有編出一個完整的程式。今天下午比較清閑就把《簡明Python教程》看了一遍,然後根據書裡面提的要求編寫了一段命令行通訊錄的小程式。下麵是編寫的思路以及代碼,歡迎感興趣的同學交流探討。
1.目標
編寫一個命令行通訊錄程式,可以添加、查詢、刪除通訊錄好友及電話
2.實現方法
- 創建一個類來表示一個人的信息。使用字典存儲每個人的對象,名字作為鍵。
- 使用pickle模塊永久地把這些對象存儲下來。
- 使用字典內建的方法添加、刪除修改人員信息。
3.思維導圖
4.編寫偽代碼
# 1.創建字典用來存儲通訊錄信息
# 2.創建人員類,包含姓名、關係、電話三個屬性
# 3.創建操作類,包含增加、查詢、刪除人員,退出,保存並退出五個方法
# 4.程式運行
# 5.判斷通訊錄文件是否存在
# 6.如果存在,將文件讀取到personDictionary字典中
# 7.如果不存在,提示並創建
# 8.while迴圈等待讀取指令
# 9.如果指令為addperson,添加通訊錄人員
# 10.如果指令為delperson,刪除通訊錄人員
# 11.如果指令為search,查找通訊錄人員
# 12.如果指令為quit,不保存退出程式
# 13.如果指令為sq,保存更改並退出程式
5.根據偽代碼編寫代碼
import pickle as p
import os
# 1.創建字典用來存儲通訊錄信息
personDictionary= {'name':{'relationship':'','tel':''}}
relationshipList=['家人','朋友','同事']
# 2.創建人員類,包含姓名、關係、電話三個屬性
class Person:
def __init__(self,name,relationship= relationshipList[1],tel='None'):
personDictionary[name]= {'relationship':relationship,'tel':tel}
# 3.創建操作類,包含增加、查詢、刪除人員,退出,保存並退出五個方法
class Operation:
def Addperson():
addname= input('請輸入姓名:')
addrelationship= int(input('請選擇分組(0:家人,1:朋友,2:同事):'))
addtel= input('請輸入電話:')
Person(addname,relationshipList[addrelationship],addtel)
def Delperson():
name= input('請輸入要刪除的聯繫人姓名:')
del personDictionary[name]
def Search():
name= input('請輸入要查找的聯繫人的姓名:')
if name in personDictionary:
print('姓名:%s,關係:%s,電話:%s' %(name,personDictionary[name]['relationship'],personDictionary[name]['tel']))
else:
print('聯繫人不存在。')
def Quit():
running= False
def SaveQuit():
f= open(addressbookFile,'wb')
p.dump(personDictionary,f)
f.close()
running= False
# 4.程式運行
running= True
# 5.判斷通訊錄文件是否存在
addressbookFile= 'addressbook.data'
# 6.如果存在,將文件讀取到personDictionary字典中
if os.path.exists(addressbookFile):
f= open(addressbookFile,'rb')
personDictionary= p.load(f)
# 7.如果不存在,提示並創建
else:
jCommand= input('未找到通訊錄文件,是否創建?yes/no ')
if jCommand== 'yes':
f= open(addressbookFile,'wb')
p.dump(personDictionary,f)
f.close()
elif jCommand== 'no':
running= False
# 8.while迴圈等待讀取指令
while running:
command= input('請輸入指令:')
# 9.如果指令為addperson,添加通訊錄人員
if command== 'addperson':
Operation.Addperson()
continue
# 10.如果指令為delperson,刪除通訊錄人員
elif command== 'delperson':
Operation.Delperson()
continue
# 11.如果指令為search,查找通訊錄人員
elif command== 'search':
Operation.Search()
continue
# 12.如果指令為quit,不保存退出程式
elif command== 'quit':
Operation.Quit()
break
# 13.如果指令為sq,保存更改並退出程式
elif command== 'sq':
Operation.SaveQuit()
break
else:
print('未找到指令!')
continue
6.演示
Python3 addressbook.py
請輸入指令:search
請輸入要查找的聯繫人的姓名:zhangsan
聯繫人不存在。
請輸入指令:addperson
請輸入姓名:zhangsan
請選擇分組(0:家人,1:朋友,2:同事):1
請輸入電話:1234567
請輸入指令:search
請輸入要查找的聯繫人的姓名:zhangsan
姓名:zhangsan,關係:朋友,電話:1234567
請輸入指令:sq
$ Python3 addressbook.py
請輸入指令:search
請輸入要查找的聯繫人的姓名:zhangsan
姓名:zhangsan,關係:朋友,電話:1234567
請輸入指令:addperson
請輸入姓名:lisi
請選擇分組(0:家人,1:朋友,2:同事):1
請輸入電話:1234567
請輸入指令:q
未找到指令!
請輸入指令:quit
$ Python3 addressbook.py
請輸入指令:search
請輸入要查找的聯繫人的姓名:lisi
聯繫人不存在。
請輸入指令:search
請輸入要查找的聯繫人的姓名:zhangsan
姓名:zhangsan,關係:朋友,電話:1234567
請輸入指令:quit