Building a Simple Contact Book in C#

Managing contacts is a common task, and having a simple, efficient contact book can be extremely useful. In this tutorial, we’ll walk through the process of building a basic contact book application in C#. This project covers important concepts such as…


This content originally appeared on DEV Community and was authored by Kerimova_Manzura

Managing contacts is a common task, and having a simple, efficient contact book can be extremely useful. In this tutorial, we'll walk through the process of building a basic contact book application in C#. This project covers important concepts such as object-oriented programming, handling collections, and implementing CRUD (Create, Read, Update, Delete) operations.

Step 1: Define the Contact Type Enumeration

The first step is to define an enumeration ContactType to categorize the contacts. This enum allows us to classify contacts into groups such as friends, family, professional, or others.

enum ContactType
{
    friend,
    family,
    professional,
    Other
}

Step 2: Create the Contact Struct

Next, we'll create a Contact struct to represent each contact. This struct includes properties for the contact's name, address, phone number, and type. We'll also override the ToString method to provide a readable format for the contact details.


struct Contact
{
    public string Name { get; set; }
    public string Address { get; set; }
    public string PhoneNumber { get; set; }
    public ContactType Type { get; set; }

    public Contact(string name, string address, string phoneNumber, ContactType type)
    {
        Name = name;
        Address = address;
        PhoneNumber = phoneNumber;
        Type = type;
    }

    public override string ToString()
    {
        return $" Name: {Name}\n Address: {Address}\n Phone: {PhoneNumber}\n Type: {Type}";
    }
}

Step 3: Implement the Address Book Class

Now, we'll create an AddressBook class to manage the contacts. This class contains methods to add, edit, delete, and display contacts. It also includes a method to filter contacts by their type.

class AddressBook
{
    private List<Contact> contacts;

    public AddressBook()
    {
        contacts = new List<Contact>();
    }

    public void ContactAdd(Contact contact)
    {
        contacts.Add(contact);
        Console.WriteLine("Contact successfully added.");
    }

    public void ContactEdit(string name, Contact updatedContact)
    {
        for (int i = 0; i < contacts.Count; i++)
        {
            if (contacts[i].Name.Equals(name, StringComparison.OrdinalIgnoreCase))
            {
                contacts[i] = updatedContact;
                Console.WriteLine("Contact updated successfully.");
                return;
            }
        }
        Console.WriteLine("Contact not found.");
    }

    public void ContactOpen(string name)
    {
        var contact = contacts.FirstOrDefault(k => k.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
        if (contact.Equals(default(Contact)))
        {
            Console.WriteLine("Contact not found.");
        }
        else
        {
            contacts.Remove(contact);
            Console.WriteLine("Contact deleted successfully.");
        }
    }

    public void ShowContacts()
    {
        if (contacts.Count == 0)
        {
            Console.WriteLine("No contacts available.");
            return;
        }

        foreach (var contact in contacts)
        {
            Console.WriteLine(contact);
        }
    }

    public void FilterContactsByType(ContactType type)
    {
        var filteredContacts = contacts.Where(k => k.Type == type).ToList();

        if (filteredContacts.Count == 0)
        {
            Console.WriteLine("No contacts found for the selected type.");
        }
        else
        {
            foreach (var contact in filteredContacts)
            {
                Console.WriteLine(contact);
            }
        }
    }
}

Step 4: Create the Main Program

Finally, we'll put everything together in the Main method. This method provides a simple menu for the user to interact with the contact book, allowing them to add, view, edit, delete, and filter contacts.

class Program
{
    static void Main(string[] args)
    {
        AddressBook addressBook = new AddressBook();

        while (true)
        {
            Console.WriteLine("\n1. Add new contact");
            Console.WriteLine("2. Show all contacts");
            Console.WriteLine("3. Edit Contact");
            Console.WriteLine("4. Delete contact");
            Console.WriteLine("5. Filter contacts by type");
            Console.WriteLine("6. Exit");
            Console.Write("Enter your choice (1-6): ");

            string selection = Console.ReadLine()!;

            switch (selection)
            {
                case "1":
                    Console.Write("Enter the name of the contact: ");
                    string name = Console.ReadLine()!;
                    Console.Write("Enter the address of the contact: ");
                    string address = Console.ReadLine()!;
                    Console.Write("Enter the phone number of the contact: ");
                    string phoneNumber = Console.ReadLine()!;

                    Console.WriteLine("Select contact type: (0: Friend, 1: Family, 2: Professional, 3: Other)");
                    int typeSelect = int.Parse(Console.ReadLine()!);
                    ContactType contactType = (ContactType)typeSelect;

                    Contact newContact = new Contact(name, address, phoneNumber, contactType);
                    addressBook.ContactAdd(newContact);
                    break;

                case "2":
                    Console.WriteLine("\nAll contacts:");
                    addressBook.ShowContacts();
                    break;

                case "3":
                    Console.Write("Enter the name of the contact to edit: ");
                    string editableName = Console.ReadLine()!;
                    Console.Write("Enter new name: ");
                    string newName = Console.ReadLine()!;
                    Console.Write("Enter new address: ");
                    string newAddress = Console.ReadLine()!;
                    Console.Write("Enter new phone number: ");
                    string newPhone = Console.ReadLine()!;

                    Console.WriteLine("Select a new contact type: (0: Friend, 1: Family, 2: Professional, 3: Other)");
                    int newTypeSelect = int.Parse(Console.ReadLine()!);
                    ContactType newContactType = (ContactType)newTypeSelect;

                    Contact updatedContact = new Contact(newName, newAddress, newPhone, newContactType);
                    addressBook.ContactEdit(editableName, updatedContact);
                    break;

                case "4":
                    Console.Write("Enter the name of the contact to delete: ");
                    string openName = Console.ReadLine()!;
                    addressBook.ContactOpen(openName);
                    break;

                case "5":
                    Console.WriteLine("Select a contact type to filter: (0: Friend, 1: Family, 2: Professional, 3: Other)");
                    int filterTypeSelect = int.Parse(Console.ReadLine()!);
                    ContactType filterContactType = (ContactType)filterTypeSelect;
                    addressBook.FilterContactsByType(filterContactType);
                    break;

                case "6":
                    Console.WriteLine("Exiting...");
                    return;

                default:
                    Console.WriteLine("Invalid selection! Please select between 1-6.");
                    break;
            }
        }
    }
}

Conclusion

With these steps, you’ve created a basic contact book application in C#. This project is a great way to get familiar with object-oriented programming concepts, handling collections, and implementing basic CRUD operations. From here, you can expand this application by adding more features, such as saving contacts to a file, implementing search functionality, or even creating a graphical user interface (GUI).


This content originally appeared on DEV Community and was authored by Kerimova_Manzura


Print Share Comment Cite Upload Translate Updates
APA

Kerimova_Manzura | Sciencx (2024-08-23T13:55:22+00:00) Building a Simple Contact Book in C#. Retrieved from https://www.scien.cx/2024/08/23/building-a-simple-contact-book-in-c/

MLA
" » Building a Simple Contact Book in C#." Kerimova_Manzura | Sciencx - Friday August 23, 2024, https://www.scien.cx/2024/08/23/building-a-simple-contact-book-in-c/
HARVARD
Kerimova_Manzura | Sciencx Friday August 23, 2024 » Building a Simple Contact Book in C#., viewed ,<https://www.scien.cx/2024/08/23/building-a-simple-contact-book-in-c/>
VANCOUVER
Kerimova_Manzura | Sciencx - » Building a Simple Contact Book in C#. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/08/23/building-a-simple-contact-book-in-c/
CHICAGO
" » Building a Simple Contact Book in C#." Kerimova_Manzura | Sciencx - Accessed . https://www.scien.cx/2024/08/23/building-a-simple-contact-book-in-c/
IEEE
" » Building a Simple Contact Book in C#." Kerimova_Manzura | Sciencx [Online]. Available: https://www.scien.cx/2024/08/23/building-a-simple-contact-book-in-c/. [Accessed: ]
rf:citation
» Building a Simple Contact Book in C# | Kerimova_Manzura | Sciencx | https://www.scien.cx/2024/08/23/building-a-simple-contact-book-in-c/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.