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

来源:互联网 发布:2017程序员 编辑:程序博客网 时间:2024/06/05 03:46


题目来自书籍:Python3简明教程

题目描述:创建你自己的命令行地址簿程序。在这个程序中,你可以添加、修改、删除和搜索你的联系人(朋友、家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码)。这些详细信息应该被保存下来以便以后提取。

做着给的思路:建一个类来表示人的信息。用字典来存储人的对象,可以将名字作为其键值。用pickle 模块将对象永久地存在磁盘上。用字典的内置方法实现增加,删除和修改联系人的信息。

代码:

原始链接:http://blog.csdn.net/chenxingzhen001/article/details/8504126

#!usr/bin/python
#coding: utf-8
#Filename:phonebook.py


# 创建你自己的命令行地址簿程序。
# 在这个程序中,你可以添加、修改、删除和搜索你的联系人(朋友、家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码)。这些详细信息应该被保存下来以便以后提取。


# 创建一个类来表示人的信息。
# 用字典来存储人的对象,可以将名字作为其键值。用pickle 模块将对象永久地存在磁盘上。用字典的内置方法实现增加,删除和修改联系人的信息。


import pickle
import sys
import os


filename = 'phonebook.data'


# 创建一个类来表示人的信息
class member:
  def __init__(self, name, mail, phone, address):
    self.name = name
    self.mail = mail
    self.phone = phone
    self.address = address


# 搜索联系人
def select():
  f = file(filename)
  contactlist = pickle.load(f)
  print(contactlist)
  s = input('Please enter the name which you want to select: ')
  print(s, ' : ', contactlist[s])


# 添加、修改联系人
def update():
  s = input('Please input contactor\'s name, mail, phone, address, for example: elizabeth,test@163.com,135123345678,Beijing Chaoyang district-->')
  s1 = s.split(',')
  pp = member(s1[0], s1[1], s1[2], s1[3])
  f = file(filename)
  contactlist = pickle.load(f)
  contactlist[pp.name] = pp.mail + ',' + pp.phone+ ',' + pp.address
  f = file(filename, 'w')
  pickle.dump(contactlist, f)
  f.close()
  del contactlist


  # print the result
  f = file(filename)
  contactlist = pickle.load(f)
  print(contactlist)


# 删除联系人
def delete():
  f = file(filename)
  contactlist = pickle.load(f)
  print(contactlist)
  s = input('Please input the person\'s name which you want to delete: ')
  # 如果存在该联系人,则删除该联系人。如果不存在,程序出错,需要处理一下。
  del contactlist[s]
  print(contactlist)
  f = file(filename, 'w')
  pickle.dump(contactlist, f)
  f.close()
  del contactlist


def main():
  while True:
    menu = input('''
             1. select
             2. add/update
             3. delete
             x. exit
                 ''')
    if menu == '1':
      select()
    elif menu == '2':
      update()
    elif menu == '3':
      delete()
    elif menu == 'x':
      sys.exit()
    else:
      print('Don\'t have this option, please try again!')


if os.path.exists('phonebook.data'):
  main()
else:
  f = file('phonebook.data', 'w')
  contactlist = {'elizabeth' : 'test@163.com,13512345678,Beijing Chaoyang district'}
  pickle.dump(contactlist, f)
  f.close()
  del contactlist
  main()

阅读全文
0 0
原创粉丝点击