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解析文件示例
Jan 23 Python
Windows和Linux下使用Python访问SqlServer的方法介绍
Mar 10 Python
python实现的简单窗口倒计时界面实例
May 05 Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 Python
python取均匀不重复的随机数方式
Nov 27 Python
Anaconda的安装及其环境变量的配置详解
Apr 22 Python
Python实现密钥密码(加解密)实例详解
Apr 26 Python
Django与pyecharts结合的实例代码
May 13 Python
keras load model时出现Missing Layer错误的解决方式
Jun 11 Python
python 爬虫如何正确的使用cookie
Oct 27 Python
python 制作简单的音乐播放器
Nov 25 Python
filter使用python3代码进行迭代元素的实例详解
Dec 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
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
2013/06/02 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
php+html5基于websocket实现聊天室的方法
2015/07/17 PHP
Yii中Model(模型)的创建及使用方法
2015/12/28 PHP
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
$.each遍历对象、数组的属性值并进行处理
2014/07/18 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
2016/06/13 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
jQuery仿IOS弹出框插件
2017/02/18 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
微信小程序云函数使用mysql数据库过程详解
2019/08/07 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
Python对wav文件的重采样实例
2020/02/25 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
倩碧美国官网:Clinique美国
2016/07/20 全球购物
本科毕业生的求职信范文
2013/11/20 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
环保守法证明
2015/06/24 职场文书
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android
Python实现文字pdf转换图片pdf效果
2022/04/03 Python
Redis基本数据类型Set常用操作命令
2022/06/01 Redis