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中装饰器的使用
Jul 12 Python
Python单体模式的几种常见实现方法详解
Jul 28 Python
Python实现句子翻译功能
Nov 14 Python
Python动态导入模块的方法实例分析
Jun 28 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
Python高级特性与几种函数的讲解
Mar 08 Python
python3 pygame实现接小球游戏
May 14 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
将python2.7添加进64位系统的注册表方式
Nov 20 Python
Python hashlib常见摘要算法详解
Jan 13 Python
通过实例解析Python RPC实现原理及方法
Jul 07 Python
python类共享变量操作
Sep 03 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网站在线人数统计
2008/04/09 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
accesskey 提交
2006/06/26 Javascript
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
JS求平均值的小例子
2013/11/29 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
浅谈对yield的初步理解
2017/05/29 Python
Python文件操作基本流程代码实例
2017/12/11 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
keras 权重保存和权重载入方式
2020/05/21 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
加拿大便宜的隐形眼镜商店:Clearly
2016/09/15 全球购物
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
什么是.net
2015/08/03 面试题
自我推荐书
2013/12/04 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
2016年元旦主持词
2015/07/06 职场文书
KTV员工管理制度
2015/08/06 职场文书
交通安全教育主题班会
2015/08/12 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang