#include<stdio.h> #include<conio.h> #include<stdio.h> #include<string.h> #include<stdlib.h> #define FILENAME "PHONEBOOK.PHN" /* structure of PhoneBook datatype */ struct PhoneBook{ char name[100]; char address[200]; int phoneNo; char email[100]; }; void mainMenu(); /*display main menu*/ void addContact(FILE *fp); /*add new contact*/ void readContacts(FILE *); /*read contacts from file*/ void deleteContact(FILE *); /*delete contacts from file*/ void modifyContact(FILE *); /*modify contacts from file*/ PhoneBook basicDetails(char[]); /*takes input for one contact object*/ void searchContact(FILE *); /*search contact from file*/ int checkForMatch(char[],char[]); /*helper method for searchContact()*/ void menuDesign(char[]); /*display header */ void showMessage(char[]); /*display message*/ void pressForMainMenu(); /* returns to main menu */ void fileOpen(FILE *); void fileClose(FILE *); main(){ system("cls"); mainMenu(); } void mainMenu(){ printf("\n\n\n\n\n\t\tLOADING . PLEASE WAIT...."); FILE *fp; fp=fopen(FILENAME,"rb+"); if(fp==NULL){ fp=fopen(FILENAME,"wb+"); if(fp==NULL){ printf("CANNOT OPEN THE FILE"); } } system("cls"); int choise; char ch; int result; printf("\n\n"); menuDesign("PHONEBOOK MANAGMENT SYSTEM"); printf("\n\t\t1. ADD NEW CONTACT"); printf("\n\t\t2. VIEW ALL CONTACTS"); printf("\n\t\t3. SEARCH CONTACTS"); printf("\n\t\t4. MODIFY CONTACTS"); printf("\n\t\t5. DELETE CONTACT"); printf("\n\t\t6. EXIT"); printf("\n\n\n\t\t ENTER YOUR CHOISE : "); fflush(stdin); ch=getche(); system("cls"); switch(ch){ case '1' : addContact(fp); break; case '2': readContacts(fp); break; case '3': searchContact(fp); break; case '4': modifyContact(fp); break; case '5': deleteContact(fp); break; case '6': exit(0); break; default: system("cls"); showMessage("ERROR !! PRESS 1-6 ONLY"); pressForMainMenu(); getch(); } } void searchContact(FILE *fp){ typedef PhoneBook CONTACT; CONTACT ph; int result; int count=0; char item[50]; printf("\n\t\tEnter Some text to be Searched : "); scanf("%s",&item); while(fread(&ph,sizeof(ph),1,fp)==1){ result=checkForMatch(ph.name,item); if(result==1){ count++; printf("\n \t\t Name : %s \n\t\t Address : %s \n\t\t E-Mail :%s\n\t\t Phone No %d \n\n",ph.name,ph.address,ph.email,ph.phoneNo); } } fclose(fp); if(count==0) printf("\n\t\tNothing found for Name : %s",item); else printf("\n\t\tTotal %d no of Contact(s) found for : %s",count,item); pressForMainMenu(); } int checkForMatch(char a[],char b[]) { int i,k; char *p,temp[strlen(b)]; if(strlen(a)>=strlen(b)){ for(i=0;i<=(strlen(a)-strlen(b));i++) { p=&a[i]; k=0; while(k!=strlen(b)) { temp[k]=*(p+k); k++; } temp[k]='\0'; //printf("\nOriginal : %s ~~~~~ Temp : %s\n",b,temp); if(strcmp(strupr(temp),strupr(b))==0) { return 1; } } } return 0; } PhoneBook basicDetails(char level[200]){ PhoneBook ph; menuDesign(level); printf("\n\t\tEnter Name : "); scanf("%s",&ph.name); printf("\n\t\tEnter Address : "); scanf("%s",&ph.address); printf("\n\t\tEnter E-Mail : "); scanf("%s",&ph.email); printf("\n\t\tEnter phoneNo : "); scanf("%d",&ph.phoneNo); return ph; } void addContact(FILE *fp){ char another='Y'; PhoneBook ph; while((another=='Y')||(another=='y')){ system("cls"); ph=basicDetails("ADD NEW CONTACT"); fseek(fp,0,SEEK_END); fwrite(&ph,sizeof(ph),1,fp); printf("\n\n\t\t-------------------------------------------------"); printf("\n\t\tAdded Successfully"); printf("\n\n\t\t-------------------------------------------------"); printf("\n\n\t\tWant to add Another Contact ( Y / Any Key ) : "); fflush(stdin); another=getche(); } if(another!='Y'||(another!='y')){ fclose(fp); system("cls"); mainMenu(); } } void readContacts(FILE *fp){ int count=0; char keyPress; rewind(fp); PhoneBook ph; menuDesign("ALL CONTACTS"); while(fread(&ph,sizeof(ph),1,fp)==1){ count++; printf("\n \t\t Name : %s \n\t\t Address : %s \n\t\t E-Mail :%s\n\t\t Phone No : %d \n\n",ph.name,ph.address,ph.email,ph.phoneNo); } if(count==0){ showMessage("Nothing To Display ..... "); } fclose(fp); pressForMainMenu(); } void deleteContact(FILE *fp){ system("cls"); menuDesign("DELETE CONTACT"); PhoneBook ph; FILE *temp; int count=0; char name[50]; temp=fopen("TEMP.DAT","wb+"); printf("\n\t\tEnter Contant Name to Delete : "); scanf("%s",&name); rewind(fp); while(fread(&ph,sizeof(ph),1,fp)==1){ if ( strcmp ( ph.name, name ) != 0 ){ fwrite(&ph,sizeof(ph),1,temp); }else{ count++; } } fclose(fp); fclose(temp); remove ( FILENAME ) ; rename ( "TEMP.DAT", FILENAME ) ; fp = fopen ( FILENAME, "rb+" ) ; printf("\n\n\t\t-------------------------------------------------"); if(count!=0) printf("\n\t\tDeleted Successfully"); else printf("\n\t\tNo entry found with Name : %s",name); printf("\n\n\t\t-------------------------------------------------"); fclose(fp); pressForMainMenu(); } void modifyContact(FILE *fp){ system("cls"); menuDesign("MODIFY CONTACT DETAILS"); rewind(fp); int count=0; PhoneBook ph; char name[50]; printf("\n\t\tEnter Name to be Modified : "); scanf("%s",&name); while(fread(&ph,sizeof(ph),1,fp)==1){ if(strcmp(ph.name,name)==0){ count++; ph=basicDetails("MODIFY CONTACT "); fseek(fp,-sizeof(ph),SEEK_CUR) ; fwrite(&ph,sizeof(ph),1,fp); break; } } printf("\n\n\t\t-------------------------------------------------"); if(count!=0) printf("\n\t\tModified Successfully"); else printf("\n\t\tNo entry found with Name : %s",name); printf("\n\n\t\t-------------------------------------------------"); fclose(fp); pressForMainMenu(); } void menuDesign(char topic[]){ char *pattren; //pattren=printPattren('=',200); printf("\n\t\t============================="); printf("\n\t\t%s",topic); printf("\n\t\t=============================\n\n"); } void showMessage(char message[]){ printf("\n\t\t----------------------------------------------"); printf("\n\t\t%s",message); printf("\n\t\t----------------------------------------------"); } void pressForMainMenu(){ char keyPress; printf("\n\n\t\tPress Any Key For Main Menu ... "); keyPress=getche(); if(keyPress!=' ') system("cls"); mainMenu(); }
Nov
10
2014