Для создания телефонного справочника с возможностью импорта и экспорта данных в формате .txt и реализации функционала изменения и удаления данных, можно разработать программу на языке программирования Python.
Прежде всего, необходимо определить структуру данных для хранения информации о контактах. Можно использовать словарь, где ключом будет уникальный идентификатор контакта, а значением – другой словарь с данными контакта (фамилия, имя, отчество, номер телефона).
Для начала создадим функции для добавления, изменения и удаления контактов в справочнике:
phone_book = {}
def add_contact(last_name, first_name, middle_name, phone_number):
contact_id = len(phone_book) + 1
phone_book[contact_id] = {'last_name': last_name, 'first_name': first_name, 'middle_name': middle_name, 'phone_number': phone_number}
def update_contact(contact_id, last_name, first_name, middle_name, phone_number):
if contact_id in phone_book:
phone_book[contact_id] = {'last_name': last_name, 'first_name': first_name, 'middle_name': middle_name, 'phone_number': phone_number}
else:
print("Contact not found")
def delete_contact(contact_id):
if contact_id in phone_book:
del phone_book[contact_id]
else:
print("Contact not found")
Затем реализуем функции для поиска контакта по имени или фамилии:
def search_contact(search_key):
for contact_id, contact_info in phone_book.items():
if search_key.lower() in contact_info['last_name'].lower() or search_key.lower() in contact_info['first_name'].lower():
print(f"Contact ID: {contact_id}")
print(f"Last Name: {contact_info['last_name']}")
print(f"First Name: {contact_info['first_name']}")
print(f"Middle Name: {contact_info['middle_name']}")
print(f"Phone Number: {contact_info['phone_number']}")
Для сохранения данных в текстовом файле и последующего импорта можно создать функции:
def export_phone_book(filename):
with open(filename, 'w') as file:
for contact_id, contact_info in phone_book.items():
file.write(f"{contact_id},{contact_info['last_name']},{contact_info['first_name']},{contact_info['middle_name']},{contact_info['phone_number']}n")
def import_phone_book(filename):
with open(filename, 'r') as file:
lines = file.readlines()
for line in lines:
contact_id, last_name, first_name, middle_name, phone_number = line.strip().split(',')
phone_book[int(contact_id)] = {'last_name': last_name, 'first_name': first_name, 'middle_name': middle_name, 'phone_number': phone_number}
Для работы с программой необходимо добавить интерфейс в виде консольного ввода и вывода пользовательских данных:
while True:
print("1. Add contact")
print("2. Update contact")
print("3. Delete contact")
print("4. Search contact")
print("5. Export phone book")
print("6. Import phone book")
print("7. Exit")
choice = input("Enter your choice: ")
if choice == '1':
last_name = input("Enter last name: ")
first_name = input("Enter first name: ")
middle_name = input("Enter middle name: ")
phone_number = input("Enter phone number: ")
add_contact(last_name, first_name, middle_name, phone_number)
elif choice == '2':
contact_id = int(input("Enter contact ID to update: "))
last_name = input("Enter last name: ")
first_name = input("Enter first name: ")
middle_name = input("Enter middle name: ")
phone_number = input("Enter phone number: ")
update_contact(contact_id, last_name, first_name, middle_name, phone_number)
elif choice == '3':
contact_id = int(input("Enter contact ID to delete: "))
delete_contact(contact_id)
elif choice == '4':
search_key = input("Enter name or last name to search: ")
search_contact(search_key)
elif choice == '5':
export_file = input("Enter filename to export phone book: ")
export_phone_book(export_file)
elif choice == '6':
import_file = input("Enter filename to import phone book: ")
import_phone_book(import_file)
elif choice == '7':
break
else:
print("Invalid choice. Please try again.")
Теперь программа позволяет пользователю добавлять, обновлять, удалять контакты, выполнять поиск по имени или фамилии, а также экспортировать и импортировать данные в/из текстового файла. Каждый контакт хранится в словаре с уникальным идентификатором, что обеспечивает быстрый доступ к данным.