Code:
#include<stdio.h>
//#include<conio.h>
#include<string.h>
#include<stdlib.h>
//#include<windows.h>
struct person
{
char name[50];
char address[50];
char father_name[35];
char mother_name[30];
long int mble_no;
char sex[8];
char mail[100];
char ic_no[20];
};
void menu();
void got();
void start();
void back();
void addrecord();
void listrecord();
void editrecord();
void deleterecord();
void searchrecord();
int main()
{
system("color 2f");
start();
return 0;
}
void back()
{
start();
}
void start()
{
menu();
}
void menu()
{
system("cls");
printf("\n\n\t=========================================\n");
printf("\t**********WELCOME TO PHONEBOOK***********\n");
printf("\t=========================================\n");
printf("\n\n\tMAIN MENU\t\t\n");
printf("\n\t1. Add New Contact \n\n\t2. List All Contacts \n\n\t3. Edit Existing Contact \n\n\t4. Search Contact \n\n\t5. Delete Contact \n\n\t6. Exit \n\n\n\n\tENTER NO OF CHOICE : ");
switch(getch())
{
case '1': addrecord();
break;
case '2': listrecord();
break;
case '3': editrecord();
break;
case '4': searchrecord();
break;
case '5': deleterecord();
break;
case '6': exit(0);
break;
default:
system("cls");
printf("\n\n\n\tERROR: ENTER NO 1 TO 6 ONLY!");
printf("\n\n\tEnter any key to return to main menu. ");
getch();
menu();
}
}
void addrecord()
{
char another='Y';
system("cls");
FILE *f;
struct person p;
while((another=='Y')||(another=='y')){
system("cls");
f=fopen("project","ab+");
fseek(f,0,SEEK_END);
fwrite(&p,sizeof(p),1,f);
printf("\n\t===========================\n");
printf("\t******ADD NEW CONTACT******");
printf("\n\t===========================\n");
printf("\n\tEnter name : ");
gets(p.name);
printf("\n\tEnter home address: ");
gets(p.address);
printf("\n\tEnter father's name: ");
gets(p.father_name);
printf("\n\tEnter mother's name : ");
gets(p.mother_name);
printf("\n\tEnter phone no (+60) : ");
scanf("%ld",&p.mble_no);
printf("\n\tEnter gender : ");
scanf("%s",&p.sex);
printf("\n\tEnter e-mail address : ");
scanf("%s",&p.mail);
printf("\n\tEnter IC No : ");
scanf("%s",&p.ic_no);
fwrite(&p,sizeof(p),1,f);
//fflush(stdin);
printf("\n\n\n\tCONTACT HAS BEEN SUCCESFULLY ADDED!");
printf("\n\n\tWant to add Another Contact? ( Y : Yes / N : No ) ---> ");
//fflush(stdin);
another=getche();
}
if(another!='Y'||(another!='y')){
fclose(f);
system("cls");
menu();
}
}
void listrecord(FILE *f)
{
int count=0;
char keyPress;
struct person p;
f=fopen("project","rb");
system("cls");
printf("\n\t=============================\n");
printf("\t******ALL CONTACT LIST******");
printf("\n\t=============================\n");
while(fread(&p,sizeof(p),1,f)==1){
count++;
printf("\n\n\n\tName = %s\n\n\tAddress = %s\n\n\tFather's name = %s\n\n\tMother's name = %s\n\n\tPhone no (+60) = %ld\n\n\tGender = %s\n\n\tE-mail = %s\n\n\tIC No = %s",p.name,p.address,p.father_name,p.mother_name,p.mble_no,p.sex,p.mail,p.ic_no);
printf("\n\n\t-------------------------------------------------------------------");
}
if(count==0){
printf("\n\n\n\tLIST STILL EMPTY. NOTHING TO DISPLAY!");
}
fclose(f);
printf("\n\n\n\t\t- END OF LIST -\n");
printf("\n\tEnter any key to return to main menu. ");
getch();
system("cls");
menu();
}
void searchrecord()
{
int count=0;
struct person p;
FILE *f;
char name[100];
f=fopen("project","rb");
if(f==NULL)
{
printf("\n\n\n\tERROR IN SEARCHING!\a\a\a\a");
}
system("cls");
printf("\n\t===========================");
printf("\n\t******SEARCH CONTACT******");
printf("\n\t===========================\n");
printf("\n\n\tENTER CONTACT NAME TO SEARCH : ");
gets(name);
while(fread(&p,sizeof(p),1,f)==1){
if(strcmp(strupr(p.name),strupr(name))==0){
count++;
system("cls");
printf("\n\n\n\tDetail Information About: %s",name);
printf("\n\n\n\tName = %s\n\n\tAddress = %s\n\n\tFather's name = %s\n\n\tMother's name = %s\n\n\tPhone no (+60) = %ld\n\n\tGender = %s\n\n\tE-mail = %s\n\n\tIC No = %s",p.name,p.address,p.father_name,p.mother_name,p.mble_no,p.sex,p.mail,p.ic_no);
}
}
if ( count == 0 )
{
printf("\n\n\tERROR: CONTACT FOR NAME %s IS NOT FOUND!", name);
//else
//printf("\n\n\tERROR: CONTACT FOR NAME %s IS NOT FOUND!",name);
}
fclose(f);
printf("\n\n\tEnter any key to return to main menu. ");
getch();
system("cls");
menu();
}
void deleterecord()
{
struct person p;
FILE *f,*ft;
int flag;
char name[100];
f=fopen("project","rb");
if(f==NULL)
{
printf("\n\n\tCONTACT'S DATA NOT ADDED YET.");
}
else
{
ft=fopen("temp","wb+");
if(ft==NULL)
printf("\n\n\tCONTACT'S DATA NOT ADDED YET!");
else
{
system("cls");
printf("\n\t===========================");
printf("\n\t******DELETE CONTACT******");
printf("\n\t===========================\n");
printf("\n\n\tENTER CONTACT NAME TO DELETE : ");
gets(name);
//fflush(stdin);
while(fread(&p,sizeof(p),1,f)==1)
{
if(strcmp(strupr(p.name),strupr(name))!=0)
fwrite(&p,sizeof(p),1,ft);
if(strcmp(p.name,name)==0)
flag=1;
}
fclose(f);
fclose(ft);
if(flag!=1)
{
printf("\n\n\tCONTACT NOT FOUND!");
remove("temp");
}
else
{
remove("project");
rename("temp","project");
printf("\n\n\n\n\tCONTACT'S RECORD SUCCESSFULLY DELETED.");
}
}
}
printf("\n\n\tEnter any key to return to main menu. ");
getch();
system("cls");
menu();
}
void editrecord()
{
int c;
FILE *f;
int flag=0;
struct person p,s;
system("cls");
char name[50];
f=fopen("project","rb+");
if(f==NULL)
{
printf("\n\n\tCONTACT'S DATA NOT ADDED YET.");
}
else
{
system("cls");
printf("\n\n\tENTER CONTACT NAME TO EDIT : ");
gets(name);
while(fread(&p,sizeof(p),1,f)==1)
{
if(strcmp(strupr(name),strupr(p.name))==0)
{
printf("\n\n\t=================================");
printf("\n\t******EDIT EXISTING CONTACT******");
printf("\n\t=================================\n");
printf("\n\tEnter name : ");
gets(s.name);
printf("\n\tEnter home address: ");
gets(s.address);
printf("\n\tEnter father's name: ");
gets(s.father_name);
printf("\n\tEnter mother's name : ");
gets(s.mother_name);
printf("\n\tEnter phone no (+60) : ");
scanf("%ld",&s.mble_no);
printf("\n\tEnter gender : ");
scanf("%s",&s.sex);
printf("\n\tEnter e-mail address : ");
scanf("%s",&s.mail);
printf("\n\tEnter IC No : ");
scanf("%s",&s.ic_no);
//printf("\n\n\n\t=================================");
//printf("\n\t******EDIT EXISTING CONTACT******");
//printf("\n\t=================================\n");
//printf("\n\tEnter name: ");
//got(s.name);
//printf("\n\n\tEnter address: ");
//got(s.address);
//printf("\n\n\tEnter father name: ");
//got(s.father_name);
//printf("\n\n\tEnter mother name: ");
//got(s.mother_name);
//printf("\n\n\tEnter phone no (+60) : ");
//scanf("%ld",&s.mble_no);
//printf("\n\tEnter sex: ");
//got(s.sex);
//printf("\n\n\tEnter e-mail: ");
//got(s.mail);
//printf("\n\n\tEnter IC no : ");
//got(s.ic_no);
fseek(f,-sizeof(p),SEEK_CUR);
fwrite(&s,sizeof(p),1,f);
flag=1;
break;
}
//fflush(stdin);
}
if(flag==1)
{
printf("\n\n\n\tCONTACT RECORD SUCCESSFULLY MODIFIED!");
}
else
{
printf("\n\n\n\tCONTACT FOR THE NAME: %s IS NOT FOUND!",name);
}
fclose(f);
}
printf("\n\n\tEnter any key to return to main menu. ");
getch();
system("cls");
menu();
}
void got(char *name)
{
int i=0,j;
char c,ch;
do
{
c=getch();
if(c!=8&&c!=13)
{
*(name+i)=c;
putch(c);
i++;
}
if(c==8)
{
if(i>0)
{
i--;
}
// printf("h");
system("cls");
for(j=0;j<i;j++)
{
ch=*(name+j);
putch(ch);
}
}
}while(c!=13);
*(name+i)='\0';
}