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实现的jpg格式图片修复代码
Apr 21 Python
Windows下Python的Django框架环境部署及应用编写入门
Mar 10 Python
Python编程实现粒子群算法(PSO)详解
Nov 13 Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 Python
Django 多语言教程的实现(i18n)
Jul 07 Python
Python lxml解析HTML并用xpath获取元素的方法
Jan 02 Python
Python递归函数特点及原理解析
Mar 04 Python
利用python汇总统计多张Excel
Sep 22 Python
python实现图片,视频人脸识别(opencv版)
Nov 18 Python
python某漫画app逆向
Mar 31 Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
Aug 14 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 引用是个坏习惯
2010/03/12 PHP
PHP判断远程url是否有效的几种方法小结
2011/10/08 PHP
mac下Apache + MySql + PHP搭建网站开发环境
2014/06/02 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
Three.js基础部分学习
2017/01/08 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
JS的函数调用栈stack size的计算方法
2018/06/24 Javascript
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
Python3.6简单操作Mysql数据库
2017/09/12 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
解决python 自动安装缺少模块的问题
2018/10/22 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
李宁官方网店:中国运动品牌
2017/11/02 全球购物
加拿大在线旅游公司:Flighthub
2019/03/11 全球购物
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
申报职称专业技术个人的自我评价
2013/12/12 职场文书
庆八一活动方案
2014/01/25 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
天河观后感
2015/06/11 职场文书
酒店员工管理制度
2015/08/05 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书