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的Django框架实现事务交易管理的教程
Apr 20 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
python实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
Mar 13 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 Python
python中从for循环延申到推导式的具体使用
Nov 29 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
Jan 10 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
Feb 20 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
Mar 24 Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 Python
python 如何区分return和yield
Sep 22 Python
scrapy结合selenium解析动态页面的实现
Sep 28 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
域名查询代码公布
2006/10/09 PHP
php性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
PHP中文乱码解决方案
2015/03/05 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
2016/07/01 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
简单谈谈json跨域
2016/03/13 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
python fabric使用笔记
2015/05/09 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
flask的orm框架SQLAlchemy查询实现解析
2019/12/12 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
西班牙手机之家:Phone House
2018/10/18 全球购物
新浪网技术部笔试题
2016/08/26 面试题
个人收入证明范本
2014/01/12 职场文书
大学自我评价
2014/02/12 职场文书
个人主要事迹材料
2014/08/26 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
个人承诺书格式范文
2015/04/29 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
python 模块重载的五种方法
2021/04/24 Python
JavaScript原型链中函数和对象的理解
2022/06/16 Javascript