1、实现目标
编写一个命令行通讯录程序,可以添加、查询、删除通讯录好友及电话
2、实现方法
创建一个类来表示一个人的信息。使用字典存储每个人的对象,名字作为键。
使用pickle模块永久地把这些对象存储下来。
使用字典内建的方法添加、删除修改人员信息。
3、思维导图
4、编写伪代码
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 1.创建字典用来存储通讯录信息 # 2.创建人员类,包含姓名、关系、电话三个属性 # 3.创建操作类,包含增加、查询、删除人员,退出,保存并退出五个方法 # 4.程序运行 # 5.判断通讯录文件是否存在 # 6.如果存在,将文件读取到personDictionary字典中 # 7.如果不存在,提示并创建 # 8.while循环等待读取指令 # 9.如果指令为addperson,添加通讯录人员 # 10.如果指令为delperson,删除通讯录人员 # 11.如果指令为search,查找通讯录人员 # 12.如果指令为quit,不保存退出程序 # 13.如果指令为sq,保存更改并退出程序 |
5、根据伪代码编写代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
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、演示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
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 |
总结
以上就是Python实现命令行通讯录实例教程的全部内容,如果有疑问可以留言讨论,希望本文的内容对大家学习使用python能有所帮助。