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语言编写电脑时间自动同步小工具
Mar 08 Python
python之import机制详解
Jul 03 Python
Python删除空文件和空文件夹的方法
Jul 14 Python
Flask-Mail用法实例分析
Jul 21 Python
python2与python3共存问题的解决方法
Sep 18 Python
PyCharm更改字体和界面样式的方法步骤
Sep 27 Python
python路径的写法及目录的获取方式
Dec 26 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
python 如何快速复制序列
Sep 07 Python
python 怎样进行内存管理
Nov 10 Python
用Python实现职工信息管理系统
Dec 30 Python
总结Python常用的魔法方法
May 25 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
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
PHP基础知识回顾
2012/08/16 PHP
解析php中static,const与define的使用区别
2013/06/18 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
php中文验证码实现示例分享
2014/01/12 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
js中this对象用法分析
2018/01/05 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
Python程序设计入门(3)数组的使用
2014/06/16 Python
python多线程操作实例
2014/11/21 Python
在Python程序中实现分布式进程的教程
2015/04/28 Python
Python实现的栈(Stack)
2018/01/26 Python
解读python如何实现决策树算法
2018/10/11 Python
python读取指定字节长度的文本方法
2019/08/27 Python
Python操作redis和mongoDB的方法
2019/12/19 Python
python中entry用法讲解
2020/12/04 Python
TecoBuy澳大利亚:在线电子和小工具商店
2020/06/25 全球购物
销售主管竞聘书
2014/03/31 职场文书
出生证明公证书
2014/04/09 职场文书
教师节倡议书
2014/08/30 职场文书
市场部岗位职责
2015/02/12 职场文书
学生会个人总结范文
2015/02/15 职场文书
JavaScript实现栈结构详细过程
2021/12/06 Javascript