C Beginner Projects - Contact Management System

Published October 12, 2021

In the Series of C Beginner Projects source code list we are going  create Contact Management System(CMS) with C. This CMS project is for adding extra features when you plan to save the contact of a person. With this C program, you will be able to perform operations like saving the contact information of a person including name, phone number, email, and address. There will be a list of all contacts that are stored in the contact file, you can edit the contact information of the person at any time or even delete the contact from your file if you want. 

It can be considered similar to the phonebook or electronic diary where you store the contact details of others, but here you are using the c console for these features. 

The data is stored in the file, including the contact information like name, address, and email, using file handling. You can get the source code for the project by clicking on the download option below the image

 

This project contains below modules

  • Add New Contact
  • List all Contacts
  • Search Contact
  • Edit Contact
  • Delete Contact

C Beginner Project - Contact Management System

 

Let's start

Step 1: Create C console project in any IDE, I have used CodeBlock IDE.

Step 2: Add functionality to Add New Contact

    fflush(stdin);

    printf("To exit enter blank space in the name input\nName (Use identical):");

    scanf("%[^\n]",&list.name);

    if(stricmp(list.name,"")==0 || stricmp(list.name," ")==0)

        break;

    fflush(stdin);

    printf("Phone:");

    scanf("%ld",&list.ph);

    fflush(stdin);

    printf("address:");

    scanf("%[^\n]",&list.add);

    fflush(stdin);

    printf("email address:");

    gets(list.email);

    printf("\n");

    fwrite(&list,sizeof(list),1,fp);

 

Contact Management System Project

 

 

List all Contacts:

for(i=97; i<=122; i=i+1)

{

    fp=fopen("contact.dll","r");

    fflush(stdin);

    found=0;

    while(fread(&list,sizeof(list),1,fp)==1)

    {

        if(list.name[0]==i || list.name[0]==i-32)

        {

            printf("\nName\t: %s\nPhone\t: %ld\nAddress\t: %s\nEmail\t: %s\n",list.name,

                   list.ph,list.add,list.email);

            found++;

        }

    }

    if(found!=0)

    {
        printf("=========================================================== [%c]-(%d)\n\n",i-32,found);

        getch();
    }

    fclose(fp);

 

CMS Project with C Language

 

 

 

Search Contact:

do

{

    found=0;

    printf("\n\n\t..::CONTACT SEARCH\n\t===========================\n\t..::Name of contact to search: ");

    fflush(stdin);

    scanf("%[^\n]",&query);

    l=strlen(query);

    fp=fopen("contact.dll","r");

    system("cls");

    printf("\n\n..::Search result for '%s' \n===================================================\n",query);

    while(fread(&list,sizeof(list),1,fp)==1)

    {

        for(i=0; i<=l; i++)

            name[i]=list.name[i];

        name[l]='\0';

        if(stricmp(name,query)==0)

        {

            printf("\n..::Name\t: %s\n..::Phone\t: %ld\n..::Address\t: %s\n..::Email\t: %s\n",list.name,list.ph,list.add,list.email);

            found++;

            if (found%4==0)

            {

                printf("..::Press any key to continue...");

                getch();

            }

        }

    }

    if(found==0)

        printf("\n..::No match found!");

    else

        printf("\n..::%d match(s) found!",found);

    fclose(fp);

    printf("\n ..::Try again?\n\n\t[1] Yes\t\t[0] No\n\t");

    scanf("%d",&ch);

}
while(ch==1);

 

C Projects Contact Management System

 

Edit Contact:

fp=fopen("contact.dll","r");

ft=fopen("temp.dat","w");

fflush(stdin);

printf("..::Edit contact\n===============================\n\n\t..::Enter the name of contact to edit:");

scanf("%[^\n]",name);

while(fread(&list,sizeof(list),1,fp)==1)

{

    if(stricmp(name,list.name)!=0)

        fwrite(&list,sizeof(list),1,ft);

}

fflush(stdin);

printf("\n\n..::Editing '%s'\n\n",name);

printf("..::Name(Use identical):");

scanf("%[^\n]",&list.name);

fflush(stdin);

printf("..::Phone:");

scanf("%ld",&list.ph);

fflush(stdin);

printf("..::address:");

scanf("%[^\n]",&list.add);

fflush(stdin);

printf("..::email address:");

gets(list.email);

printf("\n");

fwrite(&list,sizeof(list),1,ft);

fclose(fp);

fclose(ft);

remove("contact.dll");

rename("temp.dat","contact.dll");

 

 

Delete Contact

system("cls");

fflush(stdin);

printf("\n\n\t..::DELETE A CONTACT\n\t==========================\n\t..::Enter the name of contact to delete:");

scanf("%[^\n]",&name);

fp=fopen("contact.dll","r");

ft=fopen("temp.dat","w");

while(fread(&list,sizeof(list),1,fp)!=0)

    if (stricmp(name,list.name)!=0)

        fwrite(&list,sizeof(list),1,ft);

fclose(fp);

fclose(ft);

remove("contact.dll");

rename("temp.dat","contact.dll");

 

Complete Code:

#include<stdio.h>

#include<conio.h>

#include<string.h>

#include<process.h>

#include<stdlib.h>

#include<dos.h>

struct contact

{

    long ph;

    char name[20],add[20],email[30];

} list;

char query[20],name[20];

FILE *fp, *ft;

int i,n,ch,l,found;

int main()

{

main:

    system("cls");    /* ************Main menu ***********************  */

    printf("\n\t **** Welcome to Contact Management System ****");

    printf("\n\n\n\t\t\tMAIN MENU\n\t\t=====================\n\t\t[1] Add a new Contact\n\t\t[2] List all Contacts\n\t\t[3] Search for contact\n\t\t[4] Edit a Contact\n\t\t[5] Delete a Contact\n\t\t[0] Exit\n\t\t=================\n\t\t");

    printf("Enter the choice:");

    scanf("%d",&ch);

    switch(ch)

    {

    case 0:

        printf("\n\n\t\tAre you sure you want to exit?");

        break;

        /* *********************Add new contacts************  */

    case 1:

        system("cls");

        fp=fopen("contact.dll","a");

        for (;;)

        {
            fflush(stdin);

            printf("To exit enter blank space in the name input\nName (Use identical):");

            scanf("%[^\n]",&list.name);

            if(stricmp(list.name,"")==0 || stricmp(list.name," ")==0)

                break;

            fflush(stdin);

            printf("Phone:");

            scanf("%ld",&list.ph);

            fflush(stdin);

            printf("address:");

            scanf("%[^\n]",&list.add);

            fflush(stdin);

            printf("email address:");

            gets(list.email);

            printf("\n");

            fwrite(&list,sizeof(list),1,fp);

        }

        fclose(fp);

        break;

        /* *********************list of contacts*************************  */

    case 2:

        system("cls");

        printf("\n\t\t================================\n\t\t\tLIST OF CONTACTS\n\t\t================================\n\nName\t\tPhone No\t    Address\t\tE-mail ad.\n=================================================================\n\n");

        for(i=97; i<=122; i=i+1)

        {

            fp=fopen("contact.dll","r");

            fflush(stdin);

            found=0;

            while(fread(&list,sizeof(list),1,fp)==1)

            {

                if(list.name[0]==i || list.name[0]==i-32)

                {

                    printf("\nName\t: %s\nPhone\t: %ld\nAddress\t: %s\nEmail\t: %s\n",list.name,

                           list.ph,list.add,list.email);

                    found++;

                }

            }

            if(found!=0)

            {
                printf("=========================================================== [%c]-(%d)\n\n",i-32,found);

                getch();
            }

            fclose(fp);

        }

        break;

        /* *******************search contacts**********************  */

    case 3:

        system("cls");

        do

        {

            found=0;

            printf("\n\n\t..::CONTACT SEARCH\n\t===========================\n\t..::Name of contact to search: ");

            fflush(stdin);

            scanf("%[^\n]",&query);

            l=strlen(query);

            fp=fopen("contact.dll","r");

            system("cls");

            printf("\n\n..::Search result for '%s' \n===================================================\n",query);

            while(fread(&list,sizeof(list),1,fp)==1)

            {

                for(i=0; i<=l; i++)

                    name[i]=list.name[i];

                name[l]='\0';

                if(stricmp(name,query)==0)

                {

                    printf("\n..::Name\t: %s\n..::Phone\t: %ld\n..::Address\t: %s\n..::Email\t: %s\n",list.name,list.ph,list.add,list.email);

                    found++;

                    if (found%4==0)

                    {

                        printf("..::Press any key to continue...");

                        getch();

                    }

                }

            }

            if(found==0)

                printf("\n..::No match found!");

            else

                printf("\n..::%d match(s) found!",found);

            fclose(fp);

            printf("\n ..::Try again?\n\n\t[1] Yes\t\t[0] No\n\t");

            scanf("%d",&ch);

        }
        while(ch==1);

        break;

        /* *********************edit contacts************************/

    case 4:

        system("cls");

        fp=fopen("contact.dll","r");

        ft=fopen("temp.dat","w");

        fflush(stdin);

        printf("..::Edit contact\n===============================\n\n\t..::Enter the name of contact to edit:");

        scanf("%[^\n]",name);

        while(fread(&list,sizeof(list),1,fp)==1)

        {

            if(stricmp(name,list.name)!=0)

                fwrite(&list,sizeof(list),1,ft);

        }

        fflush(stdin);

        printf("\n\n..::Editing '%s'\n\n",name);

        printf("..::Name(Use identical):");

        scanf("%[^\n]",&list.name);

        fflush(stdin);

        printf("..::Phone:");

        scanf("%ld",&list.ph);

        fflush(stdin);

        printf("..::address:");

        scanf("%[^\n]",&list.add);

        fflush(stdin);

        printf("..::email address:");

        gets(list.email);

        printf("\n");

        fwrite(&list,sizeof(list),1,ft);

        fclose(fp);

        fclose(ft);

        remove("contact.dll");

        rename("temp.dat","contact.dll");

        break;

        /* ********************delete contacts**********************/

    case 5:

        system("cls");

        fflush(stdin);

        printf("\n\n\t..::DELETE A CONTACT\n\t==========================\n\t..::Enter the name of contact to delete:");

        scanf("%[^\n]",&name);

        fp=fopen("contact.dll","r");

        ft=fopen("temp.dat","w");

        while(fread(&list,sizeof(list),1,fp)!=0)

            if (stricmp(name,list.name)!=0)

                fwrite(&list,sizeof(list),1,ft);

        fclose(fp);

        fclose(ft);

        remove("contact.dll");

        rename("temp.dat","contact.dll");

        break;

    default:

        printf("Invalid choice");

        break;

    }

    printf("\n\n\n..::Enter the Choice:\n\n\t[1] Main Menu\t\t[0] Exit\n");

    scanf("%d",&ch);

    switch (ch)

    {

    case 1:

        goto main;

    case 0:

        break;

    default:

        printf("Invalid choice");

        break;

    }

    return 0;

}

 

Conclusion: In this C Project List we have created simple contact management system project. With this C program, you will be able to perform operations like saving the contact information of a person including name, phone number, email, and address

More Beginner Projects

Employee Management System with CPP

Python Library Management System

C Library Management System - LMS Project with C

Java Library Management System Source code

Calendar application with C Language

Contact Management System with C

Bank Management System with C

Article Contributed By :
https://www.rrtutors.com/site_assets/profile/assets/img/avataaars.svg

1892 Views