用列表做通讯录

#!/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')

猜你喜欢

转载自blog.csdn.net/Hai_peng_yu/article/details/80615316