C++ Program to Build Personal Dairy Management System Algorithm

In this article, we are going to execute a program “C++ Program to Build Personal Dairy Management System Algorithm” successfully without facing any troubles. Yes, Let’s do it using this article.

C++ Program to Build Personal Dairy Management System Algorithm

C++ Program to Build Personal Dairy Management System Algorithm

Source Code

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<string.h>


int password();

void addrecord();

void viewrecord();

void editrecord();

void editpassword();

void deleterecord();


struct record

{

    char time[6];

    char name[30];

    char place[25];

    char duration[10];

    char note[500];

} ;


int main()

{

    int ch;

    printf("nnt***********************************n");

    printf("t*PASSWORD PROTECTED PERSONAL DIARY*n");

    printf("t***********************************");


   while(1)


        {

                printf("nnttMAIN MENU:");

                printf("nntADD RECORDt[1]");

                printf("ntVIEW RECORDt[2]");

                printf("ntEDIT RECORDt[3]");

                printf("ntDELETE RECORDt[4]");

                printf("ntEDIT PASSWORDt[5]");

                printf("ntEXITtt[6]");

                printf("nntENTER YOUR CHOICE:");

                scanf("%d",&ch);


            switch(ch)

                    {

                            case 1:

                            addrecord();

                            break;


                            case 2:

                            viewrecord();

                            break;


                            case 3:

                            editrecord();

                            break;


                            case 4:

                            deleterecord();

                            break;


                            case 5:

                            editpassword();

                            break;


                            case 6:

                            printf("nnttTHANK YOU FOR USING THE SOFTWARE BY:nntBIJAY PURInntBHANU POUDELnntNRIPASH AYER...");

                            getch();

                            exit(0);


                            default:

                            printf("nYOU ENTERED WRONG CHOICE..");

                            printf("nPRESS ANY KEY TO TRY AGAIN");

                            getch();

                            break;

                    }

                system("cls");

        }

            return 0;

}

void addrecord( )

{

                system("cls");

                FILE *fp ;

                char another = 'Y' ,time[10];

                struct record e ;

                char filename[15];

                int choice;

                printf("nntt***************************n");

                printf("tt* WELCOME TO THE ADD MENU *");

                printf("ntt***************************nn");

                printf("nntENTER DATE OF YOUR RECORD:[yyyy-mm-dd]:");

                fflush(stdin);

                gets(filename);

                fp = fopen (filename, "ab+" ) ;

                if ( fp == NULL )

                {

                fp=fopen(filename,"wb+");

                if(fp==NULL)

                {

                    printf("nSYSTEM ERROR...");

                    printf("nPRESS ANY KEY TO EXIT");

                    getch();

                    return ;

                }

                }



                while ( another == 'Y'|| another=='y' )

                {

                    choice=0;

                    fflush(stdin);

                printf ( "ntENTER TIME:[hh:mm]:");

                scanf("%s",time);

                rewind(fp);

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

                {

                    if(strcmp(e.time,time)==0)

                    {

                        printf("ntTHE RECORD ALREADY EXISTS.n");

                        choice=1;

                    }

                }

                    if(choice==0)

                    {

                        strcpy(e.time,time);

                        printf("tENTER NAME:");

                        fflush(stdin);

                        gets(e.name);

                        fflush(stdin);

                        printf("tENTER PLACE:");

                        gets(e.place);

                        fflush(stdin);

                        printf("tENTER DURATION:");

                        gets(e.duration);

                        fflush(stdin);

                        printf("tNOTE:");

                        gets(e.note);

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

                        printf("nYOUR RECORD IS ADDED...n");

                    }

                        printf ( "ntADD ANOTHER RECORD...(Y/N) " ) ;

                        fflush ( stdin ) ;

                        another = getchar( ) ;

                }


                fclose ( fp ) ;

                printf("nntPRESS ANY KEY TO EXIT...");

                getch();

    }


void viewrecord( )

{

        FILE *fpte ;

        system("cls");

        struct record customer ;

        char time[6],choice,filename[14];

        int ch;

        printf("nntt*******************************n");

        printf("tt* HERE IS THE VIEWING MENU *");

        printf("ntt*******************************nn");

        choice=password();

        if(choice!=0)

            {

                return ;

            }

        do

            {

                    printf("ntENTER THE DATE OF RECORD TO BE VIEWED:[yyyy-mm-dd]:");

                    fflush(stdin);

                    gets(filename);


                    fpte = fopen ( filename, "rb" ) ;

                    if ( fpte == NULL )

                            {

                                puts ( "nTHE RECORD DOES NOT EXIST...n" ) ;

                                printf("PRESS ANY KEY TO EXIT...");

                                getch();

                                return ;

                            }

                            system("cls");

                printf("ntHOW WOULD YOU LIKE TO VIEW:n");

                printf("nt1.WHOLE RECORD OF THE DAY.");

                printf("nt2.RECORD OF FIX TIME.");

                printf("nttENTER YOUR CHOICE:");

                scanf("%d",&ch);

                switch(ch)

                {

                    case 1:

                            printf("nTHE WHOLE RECORD FOR %s IS:",filename);

                         while ( fread ( &customer, sizeof ( customer ), 1, fpte ) == 1 )

                         {

                            printf("n");

                            printf("nTIME: %s",customer.time);

                            printf("nMEETING WITH: %s",customer.name);

                            printf("nMEETING AT: %s",customer.place);

                            printf("nDURATION: %s",customer.duration);

                            printf("nNOTE: %s",customer.note);

                            printf("n");

                         }

                         break;


                    case 2:

                            fflush(stdin);

                            printf("nENTER TIME:[hh:mm]:");

                            gets(time);

                            while ( fread ( &customer, sizeof ( customer ), 1, fpte ) == 1 )


                            {

                                if(strcmp(customer.time,time)==0)

                                {

                                    printf("nYOUR RECORD IS:");

                                    printf("nTIME: %s",customer.time);

                                    printf("nMEETING WITH: %s",customer.name);

                                    printf("nMEETING AT: %s",customer.place);

                                    printf("nDUARATION: %s",customer.duration);

                                    printf("nNOTE: %s",customer.note);

                                }

                            }

                            break;


                    default: printf("nYOU TYPED SOMETHING ELSE...n");

                             break;

                }


               printf("nnWOULD YOU LIKE TO CONTINUE VIEWING...(Y/N):");

               fflush(stdin);

            scanf("%c",&choice);

        }while(choice=='Y'||choice=='y');

            fclose ( fpte ) ;

            return ;

}

void editrecord()

{

        system("cls");

        FILE *fpte ;

        struct record customer ;

        char time[6],choice,filename[14];

        int num,count=0;

        printf("nntt*******************************n");

        printf("tt* WELCOME TO THE EDITING MENU *");

        printf("ntt*******************************nn");

        choice=password();

        if(choice!=0)

            {

                return ;

            }

        do

            {

                    printf("ntENTER THE DATE OF RECORD TO BE EDITED:[yyyy-mm-dd]:");

                    fflush(stdin);

                    gets(filename);

                    printf("ntENTER TIME:[hh:mm]:");

                    gets(time);

                    fpte = fopen ( filename, "rb+" ) ;

                    if ( fpte == NULL )

                            {

                                printf( "nRECORD DOES NOT EXISTS:" ) ;

                                printf("nPRESS ANY KEY TO GO BACK");

                                getch();

                                return;

                            }

                    while ( fread ( &customer, sizeof ( customer ), 1, fpte ) == 1 )

                    {

                        if(strcmp(customer.time,time)==0)

                        {

                            printf("nYOUR OLD RECORD WAS AS:");

                            printf("nTIME: %s",customer.time);

                            printf("nMEETING WITH: %s",customer.name);

                            printf("nMEETING AT: %s",customer.place);

                            printf("nDURATION: %s",customer.duration);

                            printf("nNOTE: %s",customer.note);


                            printf("nnttWHAT WOULD YOU LIKE TO EDIT..");

                                printf("n1.TIME.");

                                printf("n2.MEETING PERSON.");

                                printf("n3.MEETING PLACE.");

                                printf("n4.DURATION.");

                                printf("n5.NOTE.");

                                printf("n6.WHOLE RECORD.");

                                printf("n7.GO BACK TO MAIN MENU.");

                                do

                                {

                                        printf("ntENTER YOUR CHOICE:");

                                        fflush(stdin);

                                        scanf("%d",&num);

                                        fflush(stdin);

                                        switch(num)

                                        {

                                            case 1: printf("nENTER THE NEW DATA:");

                                                    printf("nNEW TIME:[hh:mm]:");

                                                    gets(customer.time);

                                                    break;


                                            case 2: printf("nENTER THE NEW DATA:");

                                                    printf("nNEW MEETING PERSON:");

                                                    gets(customer.name);

                                                    break;


                                            case 3: printf("nENTER THE NEW DATA:");

                                                    printf("nNEW MEETING PLACE:");

                                                    gets(customer.place);

                                                    break;


                                            case 4: printf("nENTER THE NEW DATA:");

                                                    printf("nDURATION:");

                                                    gets(customer.duration);

                                                    break;


                                            case 5: printf("ENTER THE NEW DATA:");

                                                    printf("nNOTE:");

                                                    gets(customer.note);

                                                    break;


                                            case 6:  printf("nENTER THE NEW DATA:");

                                                     printf("nNEW TIME:[hh:mm]:");

                                                     gets(customer.time);

                                                     printf("nNEW MEETING PERSON:");

                                                     gets(customer.name);

                                                     printf("nNEW MEETING PLACE:");

                                                     gets(customer.place);

                                                     printf("nDURATION:");

                                                     gets(customer.duration);

                                                     printf("nNOTE:");

                                                     gets(customer.note);

                                                     break;


                                            case 7: printf("nPRESS ANY KEY TO GO BACK...n");

                                                    getch();

                                                    return ;

                                                    break;


                                            default: printf("nYOU TYPED SOMETHING ELSE...TRY AGAINn");

                                                     break;

                                        }


                                }while(num<1||num>8);

                            fseek(fpte,-sizeof(customer),SEEK_CUR);

                            fwrite(&customer,sizeof(customer),1,fpte);

                            fseek(fpte,-sizeof(customer),SEEK_CUR);

                            fread(&customer,sizeof(customer),1,fpte);

                            choice=5;

                            break;

                        }

                    }

                    if(choice==5)

                    {

                    system("cls");

                    printf("nttEDITING COMPLETED...n");

                    printf("--------------------n");

                    printf("THE NEW RECORD IS:n");

                    printf("--------------------n");

                    printf("nTIME: %s",customer.time);

                    printf("nMEETING WITH: %s",customer.name);

                    printf("nMEETING AT: %s",customer.place);

                    printf("nDURATION: %s",customer.duration);

                    printf("nNOTE: %s",customer.note);

                    fclose(fpte);

                    printf("nntWOULD YOU LIKE TO EDIT ANOTHER RECORD.(Y/N)");

                    scanf("%c",&choice);

                    count++;

                    }

                    else

                    {

                        printf("nTHE RECORD DOES NOT EXIST::n");

                        printf("nWOULD YOU LIKE TO TRY AGAIN...(Y/N)");

                        scanf("%c",&choice);

                    }


            }while(choice=='Y'||choice=='y');

            fclose ( fpte ) ;


            if(count==1)

            printf("n%d FILE IS EDITED...n",count);

            else if(count>1)

            printf("n%d FILES ARE EDITED..n",count);

            else

            printf("nNO FILES EDITED...n");

            printf("tPRESS ENTER TO EXIT EDITING MENU.");

            getch();

}

int password()

{

        char pass[15]={0},check[15]={0},ch;

        FILE *fpp;

        int i=0,j;

        printf("::FOR SECURITY PURPOSE::");

        printf("::ONLY THREE TRIALS ARE ALLOWED::");

        for(j=0;j<3;j++)

        {

                        i=0;

                        printf("nntENTER THE PASSWORD:");

                        pass[0]=getch();

                        while(pass[i]!='r')

                        {

                            if(pass[i]=='b')

                            {

                                i--;

                                printf("b");

                                printf(" ");

                                printf("b");

                                pass[i]=getch();

                            }

                            else

                            {

                                printf("*");

                                i++;

                                pass[i]=getch();

                            }

                        }

                        pass[i]='';

                        fpp=fopen("SE","r");

                        if (fpp==NULL)

                        {

                            printf("nERROR WITH THE SYSTEM FILE...[FILE MISSING]n");

                            getch();

                            return 1;

                        }

                        else

                        i=0;

                        while(1)

                        {

                            ch=fgetc(fpp);

                            if(ch==EOF)

                            {

                                check[i]='';

                                break;

                            }

                            check[i]=ch-5;

                            i++;

                        }

                        if(strcmp(pass,check)==0)

                        {

                            printf("nntACCESS GRANTED...n");

                            return 0;

                        }

                        else

                        {

                            printf("nntWRONG PASSWORD..nntACCESS DENIED...n");

                        }

        }

        printf("nnt::YOU ENTERED WRONG PASSWORD::YOU ARE NOT ALLOWED TO ACCESS ANY FILE::nntPRESS ANY KEY TO GO BACK...");

        getch();

        return 1;

}

void editpassword()

{

    system("cls");

    printf("n");

    char pass[15]={0},confirm[15]={0},ch;

    int choice,i,check;

    FILE *fp;

    fp=fopen("SE","rb");

    if(fp==NULL)

    {

        fp=fopen("SE","wb");

        if(fp==NULL)

        {

            printf("SYSTEM ERROR...");

            getch();

            return ;

        }

        fclose(fp);

        printf("nSYSTEM RESTORED...nYOUR PASSWORD IS 'ENTER'n PRESS ENTER TO CHANGE PASSWORDnn");

        getch();

    }

        fclose(fp);

        check=password();

    if(check==1)

    {

        return ;

    }

    do

    {

        if(check==0)

                    {

                        i=0;

                        choice=0;

                        printf("nntENTER THE NEW PASSWORD:");

                        fflush(stdin);

                        pass[0]=getch();

                        while(pass[i]!='r')

                        {

                            if(pass[i]=='b')

                            {

                                i--;

                                printf("b");

                                printf(" ");

                                printf("b");

                                pass[i]=getch();

                            }

                            else

                            {

                                printf("*");

                                i++;

                                pass[i]=getch();

                            }

                        }

                        pass[i]='';

                        i=0;

                        printf("ntCONFIRM PASSWORD:");

                        confirm[0]=getch();

                        while(confirm[i]!='r')

                        {

                            if(confirm[i]=='b')

                            {

                                i--;

                                printf("b");

                                printf(" ");

                                printf("b");

                                confirm[i]=getch();

                            }

                            else

                            {

                                printf("*");

                                i++;

                                confirm[i]=getch();

                            }

                        }

                        confirm[i]='';

                        if(strcmp(pass,confirm)==0)

                        {

                            fp=fopen("SE","wb");

                            if(fp==NULL)

                            {

                                printf("nttSYSTEM ERROR");

                                getch();

                                return ;

                            }

                            i=0;

                            while(pass[i]!='')

                            {

                                ch=pass[i];

                                putc(ch+5,fp);

                                i++;

                            }

                            putc(EOF,fp);

                            fclose(fp);

                        }

                        else

                        {

                            printf("ntTHE NEW PASSWORD DOES NOT MATCH.");

                            choice=1;


                        }


                    }

}while(choice==1);


    printf("nntPASSWORD CHANGED...nntPRESS ANY KEY TO GO BACK...");

    getch();

}


void deleterecord( )

{

                system("cls");

                FILE *fp,*fptr ;

                struct record file ;

                char filename[15],another = 'Y' ,time[10];;

                int choice,check;

                printf("nntt*************************n");

                printf("tt* WELCOME TO DELETE MENU*");

                printf("ntt*************************nn");

                check = password();

                    if(check==1)

                    {

                        return ;

                    }


                while ( another == 'Y' )

                {

                printf("nntHOW WOULD YOU LIKE TO DELETE.");

                printf("nnt#DELETE WHOLE RECORDttt[1]");

                printf("nt#DELETE A PARTICULAR RECORD BY TIMEt[2]");


                do

                {

                        printf("nttENTER YOU CHOICE:");

                        scanf("%d",&choice);


                    switch(choice)

                        {

                            case 1:

                            printf("ntENTER THE DATE OF RECORD TO BE DELETED:[yyyy-mm-dd]:");

                            fflush(stdin);

                            gets(filename);

                            fp = fopen (filename, "wb" ) ;

                            if ( fp == NULL )

                            {

                                printf("nTHE FILE DOES NOT EXISTS");

                                printf("nPRESS ANY KEY TO GO BACK.");

                                getch();

                                return ;

                            }

                            fclose(fp);

                            remove(filename);

                            printf("nDELETED SUCCESFULLY...");

                            break;


                            case 2:

                            printf("ntENTER THE DATE OF RECORD:[yyyy-mm-dd]:");

                            fflush(stdin);

                            gets(filename);

                            fp = fopen (filename, "rb" ) ;

                            if ( fp == NULL )

                            {

                                printf("nTHE FILE DOES NOT EXISTS");

                                printf("nPRESS ANY KEY TO GO BACK.");

                                getch();

                                return ;

                            }

                            fptr=fopen("temp","wb");

                            if(fptr==NULL)

                            {

                                printf("nSYSTEM ERROR");

                                printf("nPRESS ANY KEY TO GO BACK");

                                getch();

                                return ;

                            }

                            printf("ntENTER THE TIME OF RECORD TO BE DELETED:[hh:mm]:");

                            fflush(stdin);

                            gets(time);

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

                            {

                                if(strcmp(file.time,time)!=0)

                                fwrite(&file,sizeof(file),1,fptr);

                            }


                            fclose(fp);

                            fclose(fptr);

                            remove(filename);

                            rename("temp",filename);

                            printf("nDELETED SUCCESFULLY...");

                            break;


                    default:

                            printf("ntYOU ENTERED WRONG CHOICE");

                            break;

                    }

                }while(choice<1||choice>2);



                    printf("ntDO YOU LIKE TO DELETE ANOTHER RECORD.(Y/N):");

                    fflush(stdin);

                    scanf("%c",&another);

                }

                printf("nntPRESS ANY KEY TO EXIT...");

                getch();

}

Final Words

We hope You gained a piece of knowledge about “C++ Program to Build Personal Dairy Management System Algorithm“. Do visit our other programs too on our website. If you face any difficulties in this topic then ask me via the comment section. Share this article with your friends.

Share on:

Hi, I'm Ranjith a full-time Blogger, YouTuber, Affiliate Marketer, & founder of Coding Diksha. Here, I post about programming to help developers.

Leave a Comment