Python实现命令行通讯录实例教程


Posted in Python onAugust 18, 2016

1、实现目标

编写一个命令行通讯录程序,可以添加、查询、删除通讯录好友及电话

2、实现方法

创建一个类来表示一个人的信息。使用字典存储每个人的对象,名字作为键。
使用pickle模块永久地把这些对象存储下来。
使用字典内建的方法添加、删除修改人员信息。

3、思维导图

Python实现命令行通讯录实例教程

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

总结

以上就是Python实现命令行通讯录实例教程的全部内容,如果有疑问可以留言讨论,希望本文的内容对大家学习使用python能有所帮助。

Python 相关文章推荐
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
详解python的sorted函数对字典按key排序和按value排序
Aug 10 Python
深入理解Python异常处理的哲学
Feb 01 Python
python爬虫豆瓣网的模拟登录实现
Aug 21 Python
Python列表切片常用操作实例解析
Dec 16 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
Mar 23 Python
Python字符串格式化f-string多种功能实现
May 07 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
Python字典实现伪切片功能
Oct 28 Python
详解vscode实现远程linux服务器上Python开发
Nov 10 Python
Python 无限级分类树状结构生成算法的实现
Jan 21 Python
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
May 17 Python
Python采用Django开发自己的博客系统
Sep 29 #Python
浅析Python中元祖、列表和字典的区别
Aug 17 #Python
Python+django实现简单的文件上传
Aug 17 #Python
Python Django使用forms来实现评论功能
Aug 17 #Python
小小聊天室Python代码实现
Aug 17 #Python
python如何在终端里面显示一张图片
Aug 17 #Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 #Python
You might like
利用PHP实现与ASP Banner组件相似的类
2006/10/09 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
socket.io学习教程之基础介绍(一)
2017/04/29 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
jQuery实现table表格信息的展开和缩小功能示例
2018/07/21 jQuery
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
Linux下将Python的Django项目部署到Apache服务器
2015/12/24 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Python Flask基础教程示例代码
2018/02/07 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
电子商务专业推荐信范文
2013/12/02 职场文书
行政专员工作职责
2013/12/22 职场文书
导游实习生自荐书
2014/01/28 职场文书
文秘大学生求职信
2014/02/25 职场文书
演讲稿的写法
2014/05/19 职场文书
建设幸福中国演讲稿
2014/09/11 职场文书
父亲节寄语大全
2015/02/27 职场文书
荒岛余生观后感
2015/06/09 职场文书
施工现场安全管理制度
2015/08/05 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis