#!/usr/bin/env python
# -*- coding: utf-8 -*-
# __author__=="HAI"
class Telephone_Book(object):
"""
:param 作业用列表方式做出通讯管理系统
"""
def __init__(self):
self.name_list = ['张三', '张三']
self.phone_number = ['13112345678', '13112345678']
self.address_id = ['北京', '天津']
self.astr = """
练习:
=======通讯录管理系统=======
1.增加姓名,手机号,地址
2.删除姓名
3.修改手机
4.查询所有用户
5.根据姓名查找手机号
6.退出
======正常退出才能保存======"""
def name_tel_look(self, name):
"""
根据姓名查手机号
:param name:
"""
a_row = self.name_list.count(name)
if a_row == 0:
print('Your name is not found')
elif a_row == 1:
a_index = self.name_list.index(name)
print('姓名:%s 电话:%s 地址:%s' % (self.name_list[a_index], self.phone_number[a_index], self.address_id[a_index]))
elif a_row > 1:
print('The name you entered has a repeat', 'and what you want to query is the several', sep='\n')
alist = []
for k, i in enumerate(self.name_list, start=1):
if i == name:
print(i, 'Their position is:', k)
alist.append(str(k))
look = input('what you want to query is the several')
if look in alist:
look = int(look) - 1
print('姓名:%s 电话:%s 地址:%s' % (self.name_list[look], self.phone_number[look], self.address_id[look]))
else:
print('Input error')
else:
print('Error')
def change_phone_number(self, number):
"""
修改手机号码
:param number:
"""
name = input('Please enter you this phone\'s name:')
if name in self.name_list:
number1 = input('Please enter you want change phone number')
number2 = self.tel_len_isdigit(number1)
self.phone_number[self.phone_number.index(number)] = number2
print('Change success')
else:
print('Error')
def delete_name(self, name):
"""
删除姓名
:param name: 名字
"""
if len(self.name_list) > 1:
a_count = self.name_list.count(name)
if a_count == 0:
print('Enter the name is not found')
elif a_count == 1:
name_index = self.name_list.index(name)
del self.name_list[name_index]
del self.phone_number[name_index]
del self.address_id[name_index]
print('Deletion success')
elif a_count > 1:
print('The name you entered has a repeat', 'and what you want to delete is the several', sep='\n')
alist = []
for k, i in enumerate(self.name_list, start=1):
if i == name:
print(i, 'Their position is:', k)
alist.append(str(k))
del_k = input('what you want to delete is the several')
if del_k in alist:
del_k = int(del_k)
phone_number = input('Please enter the corresponding phone number')
tel_number = self.tel_len_isdigit(phone_number)
if self.phone_number[del_k - 1] == tel_number:
del self.name_list[del_k - 1]
del self.phone_number[del_k - 1]
del self.address_id[del_k - 1]
print('Deletion success')
else:
print('Deletion error')
else:
print('Error')
else:
print('Input error ;')
else:
print('请保留一位联系人')
def add_name_tel(self):
"""
添加电话姓名地址
"""
name = input('Please enter you name: ')
tel = input('Please enter you telephone number: ')
tel_number = self.tel_len_isdigit(tel)
address = input('Please enter your address:')
self.name_list.append(name)
self.phone_number.append(tel_number)
self.address_id.append(address)
def tel_len_isdigit(self, string):
"""
手机电话号码校验
:param string: str
:return: number_str
"""
while not string.isdigit() or (len(string) < 11 or len(string) > 11):
tel = input('Please enter the correct phone number: ')
if len(tel) == 11:
return tel
return string
def isdigit_str(self, string):
"""
判断是否是数字
:param string: 接收一个字符串
"""
return string.isdigit()
def read_txt(self):
"""
读取文件并转为列表
:rtype
"""
with open(r'name book.txt', 'r', encoding='utf-8') as name_f:
self.name_list = name_f.read().split(',')
with open(r'telephon tel book.txt', 'r', encoding='utf-8') as phone_f:
self.phone_number = phone_f.read().split(',')
with open(r'telephon id book.txt', 'r', encoding='utf-8') as addres_f:
self.address_id = addres_f.read().split(',')
def write_txt(self):
"""
以字符串的方式写入文件
:rtype
"""
name_list = str(self.name_list)
phone_list = str(self.phone_number)
addres_list = str(self.address_id)
phone_list1 = self.remove_char(phone_list)
addres_list1 = self.remove_char(addres_list)
name_list1 = self.remove_char(name_list)
with open(r'name book.txt', 'w', encoding='utf-8') as name_f:
name_f.write(name_list1)
with open(r'telephon tel book.txt', 'w', encoding='utf-8') as phone_f:
phone_f.write(phone_list1)
with open(r'telephon id book.txt', 'w', encoding='utf-8') as addres_f:
addres_f.write(addres_list1)
def remove_char(self, string):
"""
移除不想要的字符
:param string: 接收一个字符串
"""
need_string = string.replace('[', '').replace(']', '').replace("'", '').replace(' ', '')
return need_string
if __name__ == '__main__':
telbook = Telephone_Book()
try:
telbook.read_txt()
except:
telbook.write_txt()
# print(telbook.address_id)
print(telbook.astr)
print('0查看目录 10 查看列表')
while True:
num = input('Please enter the number you are choosing:')
print('输入0查看目录')
if telbook.isdigit_str(num):
num = int(num)
if num == 0:
print(telbook.astr)
if num == 1:
telbook.add_name_tel()
print('Success')
elif num == 2:
name = input('Please enter a name that you want to delete:')
telbook.delete_name(name)
elif num == 3:
phone_number = input('Please enter the original phone number:')
number = telbook.tel_len_isdigit(phone_number)
telbook.change_phone_number(number)
elif num == 4:
for i in telbook.name_list:
print(i, end=' ')
print()
elif num == 5:
name_look = input('Please enter the name of your query:')
telbook.name_tel_look(name_look)
elif num == 6:
telbook.write_txt()
print('The file is being saved and please wait...'.center(100, '='))
break
elif num == 10:
print(telbook.name_list, telbook.address_id, telbook.phone_number, sep='\n')
else:
print('Deletion error')
# -*- coding: utf-8 -*-
# __author__=="HAI"
class Telephone_Book(object):
"""
:param 作业用列表方式做出通讯管理系统
"""
def __init__(self):
self.name_list = ['张三', '张三']
self.phone_number = ['13112345678', '13112345678']
self.address_id = ['北京', '天津']
self.astr = """
练习:
=======通讯录管理系统=======
1.增加姓名,手机号,地址
2.删除姓名
3.修改手机
4.查询所有用户
5.根据姓名查找手机号
6.退出
======正常退出才能保存======"""
def name_tel_look(self, name):
"""
根据姓名查手机号
:param name:
"""
a_row = self.name_list.count(name)
if a_row == 0:
print('Your name is not found')
elif a_row == 1:
a_index = self.name_list.index(name)
print('姓名:%s 电话:%s 地址:%s' % (self.name_list[a_index], self.phone_number[a_index], self.address_id[a_index]))
elif a_row > 1:
print('The name you entered has a repeat', 'and what you want to query is the several', sep='\n')
alist = []
for k, i in enumerate(self.name_list, start=1):
if i == name:
print(i, 'Their position is:', k)
alist.append(str(k))
look = input('what you want to query is the several')
if look in alist:
look = int(look) - 1
print('姓名:%s 电话:%s 地址:%s' % (self.name_list[look], self.phone_number[look], self.address_id[look]))
else:
print('Input error')
else:
print('Error')
def change_phone_number(self, number):
"""
修改手机号码
:param number:
"""
name = input('Please enter you this phone\'s name:')
if name in self.name_list:
number1 = input('Please enter you want change phone number')
number2 = self.tel_len_isdigit(number1)
self.phone_number[self.phone_number.index(number)] = number2
print('Change success')
else:
print('Error')
def delete_name(self, name):
"""
删除姓名
:param name: 名字
"""
if len(self.name_list) > 1:
a_count = self.name_list.count(name)
if a_count == 0:
print('Enter the name is not found')
elif a_count == 1:
name_index = self.name_list.index(name)
del self.name_list[name_index]
del self.phone_number[name_index]
del self.address_id[name_index]
print('Deletion success')
elif a_count > 1:
print('The name you entered has a repeat', 'and what you want to delete is the several', sep='\n')
alist = []
for k, i in enumerate(self.name_list, start=1):
if i == name:
print(i, 'Their position is:', k)
alist.append(str(k))
del_k = input('what you want to delete is the several')
if del_k in alist:
del_k = int(del_k)
phone_number = input('Please enter the corresponding phone number')
tel_number = self.tel_len_isdigit(phone_number)
if self.phone_number[del_k - 1] == tel_number:
del self.name_list[del_k - 1]
del self.phone_number[del_k - 1]
del self.address_id[del_k - 1]
print('Deletion success')
else:
print('Deletion error')
else:
print('Error')
else:
print('Input error ;')
else:
print('请保留一位联系人')
def add_name_tel(self):
"""
添加电话姓名地址
"""
name = input('Please enter you name: ')
tel = input('Please enter you telephone number: ')
tel_number = self.tel_len_isdigit(tel)
address = input('Please enter your address:')
self.name_list.append(name)
self.phone_number.append(tel_number)
self.address_id.append(address)
def tel_len_isdigit(self, string):
"""
手机电话号码校验
:param string: str
:return: number_str
"""
while not string.isdigit() or (len(string) < 11 or len(string) > 11):
tel = input('Please enter the correct phone number: ')
if len(tel) == 11:
return tel
return string
def isdigit_str(self, string):
"""
判断是否是数字
:param string: 接收一个字符串
"""
return string.isdigit()
def read_txt(self):
"""
读取文件并转为列表
:rtype
"""
with open(r'name book.txt', 'r', encoding='utf-8') as name_f:
self.name_list = name_f.read().split(',')
with open(r'telephon tel book.txt', 'r', encoding='utf-8') as phone_f:
self.phone_number = phone_f.read().split(',')
with open(r'telephon id book.txt', 'r', encoding='utf-8') as addres_f:
self.address_id = addres_f.read().split(',')
def write_txt(self):
"""
以字符串的方式写入文件
:rtype
"""
name_list = str(self.name_list)
phone_list = str(self.phone_number)
addres_list = str(self.address_id)
phone_list1 = self.remove_char(phone_list)
addres_list1 = self.remove_char(addres_list)
name_list1 = self.remove_char(name_list)
with open(r'name book.txt', 'w', encoding='utf-8') as name_f:
name_f.write(name_list1)
with open(r'telephon tel book.txt', 'w', encoding='utf-8') as phone_f:
phone_f.write(phone_list1)
with open(r'telephon id book.txt', 'w', encoding='utf-8') as addres_f:
addres_f.write(addres_list1)
def remove_char(self, string):
"""
移除不想要的字符
:param string: 接收一个字符串
"""
need_string = string.replace('[', '').replace(']', '').replace("'", '').replace(' ', '')
return need_string
if __name__ == '__main__':
telbook = Telephone_Book()
try:
telbook.read_txt()
except:
telbook.write_txt()
# print(telbook.address_id)
print(telbook.astr)
print('0查看目录 10 查看列表')
while True:
num = input('Please enter the number you are choosing:')
print('输入0查看目录')
if telbook.isdigit_str(num):
num = int(num)
if num == 0:
print(telbook.astr)
if num == 1:
telbook.add_name_tel()
print('Success')
elif num == 2:
name = input('Please enter a name that you want to delete:')
telbook.delete_name(name)
elif num == 3:
phone_number = input('Please enter the original phone number:')
number = telbook.tel_len_isdigit(phone_number)
telbook.change_phone_number(number)
elif num == 4:
for i in telbook.name_list:
print(i, end=' ')
print()
elif num == 5:
name_look = input('Please enter the name of your query:')
telbook.name_tel_look(name_look)
elif num == 6:
telbook.write_txt()
print('The file is being saved and please wait...'.center(100, '='))
break
elif num == 10:
print(telbook.name_list, telbook.address_id, telbook.phone_number, sep='\n')
else:
print('Deletion error')