Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

Task 1.

Address Book Manager

Intro:
It’s a simple implementation of address book manager using list manipulation functions and
python and write operations. This program lets you maintain a list of aspects that include names,
emails, and other information. It includes functions such as adding, deleting, updating, and
searching entries. It also guarantees that email addresses are unique and performs validation
checks. The entries may be saved to and loaded from a file, making maintaining the data simple.

Code:

def load_entries(file_name):
    try:
        with open(file_name, 'r') as file:
            entries = []
            lines = file.readlines()
            for line in lines:
                entry = line.strip().split(',')
                if len(entry) == 4:
                    name, email, phone, address = entry
                    entries.append({'name': name, 'email': email, 'phone':
phone, 'address': address})
    except FileNotFoundError:
        entries = []
    return entries

def save_entries(entries, file_name):


    with open(file_name, 'w') as file:
        for entry in entries:
            line = f"{entry['name']},{entry['email']},{entry['phone']},
{entry['address']}\n"
            file.write(line)

def add_entry(entries, entry):


    email = entry['email']
    for existing_entry in entries:
        if existing_entry['email'] == email:
            print("Email already exists. Entry not added.")
            return

    entries.append(entry)
    print("Entry added successfully.")
def remove_entry(entries, email):
    for entry in entries:
        if entry['email'] == email:
            entries.remove(entry)
            print("Entry removed successfully.")
            return

    print("Entry not found.")

def update_entry(entries, updated_entry):


    email = updated_entry['email']
    for entry in entries:
        if entry['email'] == email:
            entry['name'] = updated_entry['name']
            entry['phone'] = updated_entry['phone']
            entry['address'] = updated_entry['address']
            print("Entry updated successfully.")
            return

    print("Entry not found.")

def search_entries(entries, query):


    results = []

    for entry in entries:


        if query.lower() in entry['name'].lower() or query.lower() in
entry['email'].lower() or query.lower() in entry['phone'].lower() or
query.lower() in entry['address'].lower():
            results.append(entry)

    if results:
        print("Search results:")
        for entry in results:
            print(f"Name: {entry['name']}, Email: {entry['email']}, Phone:
{entry['phone']}, Address: {entry['address']}")
    else:
        print("No matching entries found.")

def print_entries(entries):
    if entries:
        print("All entries:")
        for entry in entries:
            print(f"Name: {entry['name']}, Email: {entry['email']}, Phone:
{entry['phone']}, Address: {entry['address']}")
    else:
        print("No entries found.")

def handle_action(action, entries):


    parts = action.split(' ', 1)
    command = parts[0].lower()
    if len(parts) > 1:
        argument = parts[1]
    else:
        argument = ""

    if command == 'read':
        entries = load_entries(argument)
    elif command == 'add':
        entry_data = argument.split(',')
        if len(entry_data) == 4:
            name, email, phone, address = entry_data
            new_entry = {'name': name.strip(), 'email': email.strip(), 'phone':
phone.strip(), 'address': address.strip()}
            add_entry(entries, new_entry)
    elif command == 'remove':
        remove_entry(entries, argument.strip())
    elif command == 'update':
        entry_data = argument.split(',')
        if len(entry_data) == 4:
            name, email, phone, address = entry_data
            updated_entry = {'name': name.strip(), 'email': email.strip(),
'phone': phone.strip(), 'address': address.strip()}
            update_entry(entries, updated_entry)
    elif command == 'search':
        search_entries(entries, argument.strip())
    elif command == 'print':
        print_entries(entries)
    elif command == 'save':
        save_entries(entries, argument.strip())
        print("Entries saved successfully.")
    else:
        print("Invalid action keyword.")

    return entries

def main():
    print("Welcome to the Adress entry management system!")

    entries = []
    while True:
        user_input = input("Enter action keyword and input: ")
        if user_input.lower() == 'exit':
            break

        entries = handle_action(user_input, entries)

if __name__ == '__main__':
    main()

Conclusion:
This approach offers an intuitive user interface for managing a group of entries. It offers a range
of operations, including searching, updating, deleting, and adding entries. Features like email
validation, sorting, and data consistency through file handling are also included and implemented
in the approach. This application overall allows us to conveniently arrange and maintain address
list with the help of the specified features. Test the program out and see how easy it is to manage
your data efficiently.

Outputs:

Figure 1: Programm Start

Figure 2: Add Operation


Figure 6: Search Operation

Figure 3: Remove Operation

Figure 4Update Operation

Figure 5: Print Operation

Figure 8: Save Operation

Figure 7: Invalid Operation

You might also like