您的位置:首页 > 编程语言 > Python开发

用Python做命令行地址簿

2018-01-19 11:13 78 查看

用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]]=address
self.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]=addressNew
self.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]=addressNew
self.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 service

ads=service.AddressService()
ads.showMainMenu()
ads.inputCode()


运行:–>python main.py
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息