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中mechanize库的简单使用示例
Jan 10 Python
在Python中操作日期和时间之gmtime()方法的使用
May 22 Python
Python简单实现的代理服务器端口映射功能示例
Apr 08 Python
python和pygame实现简单俄罗斯方块游戏
Feb 19 Python
对pandas处理json数据的方法详解
Feb 08 Python
用python建立两个Y轴的XY曲线图方法
Jul 08 Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 Python
python基础 range的用法解析
Aug 23 Python
python中class的定义及使用教程
Sep 18 Python
5行Python代码实现图像分割的步骤详解
May 25 Python
Python常用外部指令执行代码实例
Nov 05 Python
python 爬虫爬取京东ps4售卖情况
Dec 18 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
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
页面使用密码保护代码
2013/04/10 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
Python中为feedparser设置超时时间避免堵塞
2014/09/28 Python
Python3中的2to3转换工具使用示例
2015/06/12 Python
python删除特定文件的方法
2015/07/30 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
Python随机数函数代码实例解析
2020/02/09 Python
django 读取图片到页面实例
2020/03/27 Python
python学生管理系统的实现
2020/04/05 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
数据库的约束含义
2012/09/09 面试题
拾金不昧感谢信范文
2015/01/21 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers