用Python做命令行地址簿

阅读《简明Python教程》有一段时间了,书里提出一个小练习,实现了下。
问题:命令行地址簿程序,可以用来浏览、添加、编辑、删除联系人,需要有邮件地址、电话号码等多种信息。
程序设计
1、数据存储位置,程序主目录下address.data文件
存储方式:编号,,,姓名,,,年龄,,,地址,,,电话

2、功能: 浏览:查看所有信息
添加:添加一条信息
编辑:编辑指定的信息
删除:删除指定信息
3、实现代码

dao.py

# coding=UTF-8
#数据层#数据库文件
datafile='address.data'
#连接符
contact=',,,'__version__='1.0'class AddressDao:'''地址簿数据层'''def __init__(self):self.addressMap={}self.number = '0'def readaddressMap(self):'''读取地址簿所有内容'''with open(datafile) as f:for line in f:address = line.split(contact)self.addressMap[address[0]]=addressself.number=address[0]def saveAddress(self,name,age,mail,phone):'''保存一条记录'''newSeq = str(int(self.number)+1)addressNew = [newSeq,name,age,mail,phone]self.addressMap[newSeq]=addressNewself.saveAddressToFile()def saveAddressToFile(self):'''持久化到文件'''with open(datafile,'w') as f:keys = list(self.addressMap.keys())keys.sort(key=lambda i:i)for key in keys:f.writelines(contact.join(self.addressMap[key]))def updateAddress(self,code,name,age,mail,phone):'''修改一条记录'''addressNew = [code,name,age,mail,phone]self.addressMap[code]=addressNewself.saveAddressToFile()def delAddress(self,code):'''删除一条记录'''del(self.addressMap[code])self.saveAddressToFile()

service.py

# coding=UTF-8
import dao__version__='1.0'menumain = '''
******我的地址簿******1-浏览2-新建3-编辑4-删除----------------------
'''
title=['序号','姓名','年龄','邮箱','电话']
class AddressService:'''地址簿服务层'''def __init__(self):'''程序加载时读取数据库现有的地址簿'''self.add = dao.AddressDao()self.add.readaddressMap()def showMainMenu(self):'''展示主菜单'''print(menumain)def inputCode(self):'''接收用户输入指令'''      try:code = input('请选择需要进行的操作:')except EOFError:print('谢谢使用,再见')except KeyboardInterrupt:print('谢谢使用,再见')else:if code=='1':self.readAddress()elif code=='2':self.newAddress()elif code=='3':self.editAddress()elif code=='4':self.delAddress()self.inputCode()def readAddress(self):'''浏览功能'''print('\n浏览\n')print('\t\t'.join(title))keys = list(self.add.addressMap.keys())keys.sort(key=lambda i:i)for key in keys:print('\t\t'.join(self.add.addressMap[key]).replace('\n',''))self.showMainMenu()def newAddress(self):'''新建功能'''print('\n新建\n')name = ""while name=="":name=input('请输入*姓名:')age = ""while age=="":age=input('请输入年龄:')mail = ""while mail=="":mail=input('请输入邮箱:')phone = ""while phone=="":phone=input('请输入电话')self.add.saveAddress(name,age,mail,phone)print('保存成功')self.showMainMenu()def editAddress(self):'''编辑功能'''print('\n编辑\n')willEdit = input('请输入想要编辑的序号:')if willEdit in self.add.addressMap:name = ""while name=="":name=input('请输入*姓名:')age = ""while age=="":age=input('请输入年龄:')mail = ""while mail=="":mail=input('请输入邮箱:')phone = ""while phone=="":phone=input('请输入电话:')self.add.updateAddress(willEdit,name,age,mail,phone)print('修改成功')           else:print('找不到要修改的序号')self.showMainMenu()def delAddress(self):'''删除功能'''print('\n删除\n')willDel = input('请输入想要删除的序号:')if willDel in self.add.addressMap:self.add.delAddress(willDel)print('删除成功')       else:print('找不到想要删除的序号')self.showMainMenu()

main.py

# coding=UTF-8
#程序入口
import serviceads=service.AddressService()
ads.showMainMenu()
ads.inputCode()

运行:–>python main.py

用Python做命令行地址簿相关推荐

  1. 用python创建你自己的命令行地址簿程序

    题目来自书籍:Python3简明教程 题目描述:创建你自己的命令行地址簿程序.在这个程序中,你可以添加.修改.删除和搜索你的联系人(朋友.家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码 ...

  2. python中成绩分析函数_自学Python笔记:用Python做成绩分析(1)

    有朋友会问,刚学了一周,什么是面向对象都还不清楚就可以写程序?还有Python不是写"爬虫"吗? Python是面向对象的语言,函数.模块.数字.字符串都是对象,并且完全支持继承. ...

  3. 如何用Python做Web开发?——Django环境配置

    用Python做Web开发,Django框架是个非常好的起点.如何从零开始,配置好Django开发环境呢?本文带你一步步无痛上手. 概念 最近有个词儿很流行,叫做"全栈"(full ...

  4. pythonweb开发-如何用Python做Web开发?——Django环境配置

    用Python做Web开发,Django框架是个非常好的起点.如何从零开始,配置好Django开发环境呢?本文带你一步步无痛上手. 概念 最近有个词儿很流行,叫做"全栈"(full ...

  5. python用中文怎么说-如何用Python做中文分词?

    打算绘制中文词云图?那你得先学会如何做中文文本分词.跟着我们的教程,一步步用Python来动手实践吧. 需求 在<如何用Python做词云>一文中,我们介绍了英文文本的词云制作方法.大家玩 ...

  6. python代码示例图形-纯干货:手把手教你用Python做数据可视化(附代码)

    原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...

  7. python 命令-新手向——用python编写命令行应用的简洁方式

    我们有一些方法可以做出Python的命令行式app.我试过它们,不过它们大都有自己的痛点和烦恼.所以我到社区里去寻找一种更好的方法. 什么是CLI? CLI 意味着命令行界面(command line ...

  8. python工具是什么-使用Python编写命令行工具有什么好的库?

    使用Python编写命令行工具的库很多,我最推荐的还是Google Fire Hello World 要介绍Fire是什么,看一个简单的例子就明白了 # calc.py import fire cla ...

  9. python恶搞-python—做一个恶搞程序

    python-做一个恶搞程序 very easy print("You can't win this game") #你不可能赢这个游戏 n = int(input("B ...

最新文章

  1. python字符串基本形式_python字符串常用方式
  2. HDU 2084 数塔 DP
  3. 双边滤波器的原理及实现
  4. 提高博客访问量14种方法
  5. 分别是什么意思_美国FBA头程:空派/海派分别是什么意思?
  6. python如何限制字符串长度_Python uuid4,如何限制唯一字符的长度 - python
  7. win32 sdk C语言菜单,win32 sdk 设定/获取checkbox控件状态
  8. html让后端删除数据库,Chrome在请求之间删除WebSQL数据库
  9. 有没有妈妈生了孩子一点不像自己的,觉得亏吗?
  10. 使用Xcode、Android Studio将项目链接到Git
  11. 2008 r2安装总是跳出 server sql_关于sql server 2008 r2 安装闪退问题解决办法
  12. 版本名称SNAPSHOT、alpha、beta、release、GA含义
  13. python绘图--由逐日风场数据计算月平均风场数据并绘制二维填色图
  14. TypeError: invalid destination position for blit
  15. 【Python 基于EasyOCR库进行图片文字识别】
  16. 高薪资的优秀平面设计师是怎样的
  17. PDF格式和HTML,XML格式
  18. 二维码及验证码的生成
  19. leetcode1079.活字印刷C++
  20. JavaScript交互式网页设计 • 【第6章 初识jQuery】

热门文章

  1. MySQL(学习笔记)
  2. 【matlab】spm数据处理
  3. 深度残差网络(ResNet)浅析
  4. 五金制品厂物料产品编码方案(1)
  5. 数据治理-数据生命周期管理-大数据归档与销毁
  6. 在线版音乐播放器APP
  7. strtotime那些事
  8. 基于Blackfin处理器的嵌入式数码相框
  9. CCF认证练习题-西西艾弗岛的购物中心
  10. Linux 笔试面试常见题目(整理)