Last active
July 5, 2017 19:09
-
-
Save aaayushsingh/a27c0b168b616e1ad8e30a3892667a67 to your computer and use it in GitHub Desktop.
phonebook using linked list for mayank
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<stdio.h> | |
#include<stdlib.h> | |
#include<conio.h> | |
#include<malloc.h> | |
#include<string.h> | |
struct entry{ | |
char name[50]; | |
char nick[50]; | |
char email[50]; | |
char address[50]; | |
char city[50]; | |
char cont[50]; | |
char pin[50]; | |
struct entry *lptr; | |
struct entry *rptr; | |
}*temp,*newe,*l,*r; | |
typedef struct entry *list; | |
void newentry(); | |
void display(char n[50]); | |
void deletentry(char n[50]); | |
void displayall(); | |
void makempty(); | |
int isempty(); | |
void saventry(); | |
void loadentry(); | |
void deleteall(); | |
void newentry() | |
{ | |
char a[50],b[50],f[50],g[50],c[50],d[50],e[50]; | |
int i,k=0; | |
printf("Enter the Datas for the New Entry:\n"); | |
printf("Name :"); | |
scanf("%s",a); | |
printf("Nick name :"); | |
scanf("%s",b); | |
printf("E-mail ID :"); | |
scanf("%s",c); | |
printf("Address :"); | |
scanf("%s",d); | |
printf("City :"); | |
scanf("%s",e); | |
printf("Contact No:"); | |
scanf("%s",f); | |
printf("Pincode :"); | |
scanf("%s",g); | |
newe=(struct entry*)malloc(sizeof(struct entry)); | |
for(i=0;i<50;i++){ | |
newe->name[i]=' '; | |
newe->nick[i]=' '; | |
newe->email[i]=' '; | |
newe->address[i]=' '; | |
newe->city[i]=' '; | |
newe->cont[i]=' '; | |
newe->pin[i]=' '; | |
} | |
for(i=0;i<50;i++){ | |
newe->name[i]=a[i]; | |
newe->nick[i]=b[i]; | |
newe->email[i]=c[i]; | |
newe->address[i]=d[i]; | |
newe->city[i]=e[i]; | |
newe->cont[i]=f[i]; | |
newe->pin[i]=g[i]; | |
} | |
if(isempty()){ | |
newe->lptr=newe->rptr=NULL; | |
l=r=newe; | |
printf("Your Entry is Added\n"); | |
} else { | |
temp=l; | |
while(temp!=NULL) { | |
i=stricmp(newe->name,temp->name); | |
if(i<0) | |
break; | |
else if(i>0) | |
temp=temp->rptr; | |
else if(i==0){ | |
printf("Name Already Exists.Entry cannot be Added"); | |
k=1; | |
break; | |
} | |
} | |
if(k!=1) { | |
if(temp==l) { | |
newe->lptr=NULL; | |
newe->rptr=l; | |
l->lptr=newe; | |
l=newe; | |
printf("Your Entry is Added"); | |
} else if(temp==NULL) { | |
newe->rptr=NULL; | |
newe->lptr=r; | |
r->rptr=newe; | |
r=newe; | |
printf("Your Entry is Added"); | |
} else { | |
newe->rptr=temp; | |
newe->lptr=temp->lptr; | |
temp->lptr=newe; | |
(newe->lptr)->rptr=newe; | |
printf("Your Entry is Added"); | |
} | |
} | |
} | |
} | |
void displayall() { | |
int n=1; | |
if(!isempty()) { | |
temp=l; | |
while(temp!=NULL) { | |
printf("[%d] \nName :%s\n Nick Name :%s\n E-mail ID :%s\n address : %s\n City :%s\n Contact.No :%s\n Pin code :%s",n,temp->name,temp->nick,temp->email,temp->address,temp->city,temp->cont,temp->pin); | |
temp=temp->rptr; | |
n++; | |
} | |
} | |
else | |
printf("Address Book is Empty"); | |
} | |
void deletentry(char n[50]) { | |
int i; | |
if(isempty()) | |
printf("Address Book is Empty"); | |
else { | |
temp=l; | |
while(temp!=NULL) { | |
i=stricmp(temp->name,n); | |
if(i==NULL) { | |
if(l==r) { | |
l=r=NULL; | |
printf("Entry deleted"); | |
break; | |
} | |
else if(temp==l) { | |
l=l->rptr; | |
l->lptr=NULL; | |
printf("Entry deleted"); | |
break; | |
} | |
else if(temp==r) { | |
r=r->lptr; | |
r->rptr=NULL; | |
printf("Entry deleted"); | |
break; | |
} | |
else { | |
(temp->lptr)->rptr=temp->rptr; | |
(temp->rptr)->lptr=temp->lptr; | |
printf("Entry deleted"); | |
break; | |
} | |
} | |
temp=temp->rptr; | |
} | |
if(temp==NULL) | |
printf("Not Found"); | |
} | |
} | |
int isempty() { | |
return l==NULL; | |
} | |
void makempty() { | |
l=r=NULL; | |
printf("Address Book is Emptied"); | |
} | |
void display(char n[50]) { | |
int i,p=1; | |
if(isempty()) | |
printf("Address Book is Empty"); | |
else { | |
temp=l; | |
while(temp!=NULL) { | |
i=stricmp(temp->name,n); | |
if(i==NULL){ | |
if(p==1) | |
printf("Entry is found in %dst position",p); | |
else if(p==2) | |
printf("Entry is found in %dnd position",p); | |
else if (p==3) | |
printf("Entry is found in %drd position",p); | |
else | |
printf("Entry is found in %dth position",p); | |
printf("\nName :%s\n Nick Name :%s\n E-mail ID :%s\n address : %s\n City :%s\n Contact.No :%s\n Pin code :%s",temp->name,temp->nick,temp->email,temp->address,temp->city,temp->cont,temp->pin); | |
break; | |
} | |
temp=temp->rptr; | |
p++; | |
} | |
if(temp==NULL) | |
printf("Entry Not Found"); | |
} | |
} | |
void main() | |
{ | |
int l=1,m; | |
char n[50]; | |
while(l!=8) { | |
system("cls"); | |
printf("********************************************************************************\n#------------------------MINI PROJECT-SIMPLE ADDRESSBOOK----------------------\n#********************************************************************************"); | |
printf("\nEnter Your Choice"); | |
printf("\n"); | |
printf("(1)-New Entry"); | |
printf("\n"); | |
printf("(2)-Display an Entry"); | |
printf("\n"); | |
printf("(3)-Delete an Entry"); | |
printf("\n"); | |
printf("(4)-Display all Entries"); | |
printf("\n"); | |
printf("(5)-Empty the book"); | |
printf("\n"); | |
printf("(6)-Save Entry"); | |
printf("\n"); | |
printf("(7)-Load Entries"); | |
printf("\n"); | |
printf("(8)-Delete All Saved Files"); | |
printf("\n"); | |
printf("(9)-End"); | |
printf("\n"); | |
printf("********************************************************************************"); | |
printf("\n"); | |
scanf("%d",&l); | |
switch(l) { | |
case 1: | |
newentry(); | |
getch(); | |
break; | |
case 2: | |
printf("Enter the Name of the Person to Display"); | |
printf("\n"); | |
scanf("%s",&n); | |
display(n); | |
getch(); | |
break; | |
case 3: | |
printf("Enter the Name of the Person to Delete"); | |
printf("\n"); | |
scanf("%s",&n); | |
deletentry(n); | |
getch(); | |
break; | |
case 4: | |
displayall(); | |
getch(); | |
break; | |
case 5: | |
makempty(); | |
getch(); | |
break; | |
case 6: | |
saventry(); | |
getch(); | |
break; | |
case 7: | |
loadentry(); | |
getch(); | |
break; | |
case 8: | |
deleteall(); | |
getch(); | |
break; | |
case 9: | |
printf("Program Ends Here. Thank You!!!"); | |
printf("\n"); | |
getch(); | |
exit(0); | |
break; | |
default: | |
printf("Enter a Valid Choice from 1-9 only"); | |
printf("\n"); | |
getch(); | |
break; | |
} | |
} | |
getch(); | |
} | |
void saventry() { | |
char n[50]; | |
int c; | |
printf("Enter the Name of the Person: "); | |
scanf("%s",n); | |
list t; | |
if(isempty()) | |
printf("Address Book is Empty\n"); | |
else { | |
FILE *f; | |
f=fopen("entry.c","a"); | |
int i;t=l; | |
while(t!=NULL) { | |
i=stricmp(t->name,n); | |
if(i==0) { | |
fprintf(f,"%s %s %s %s %s %s %s",t->name,t->nick,t->email,t->address,t->city,t->cont,t->pin); | |
printf("Your Entry Saved\n"); | |
printf("Add Another Entry? (1-yes/2-no)"); | |
scanf("%d",&c); | |
if(c==1) | |
saventry(); | |
else if(c==2) | |
break; | |
} | |
t=t->rptr; | |
} | |
fclose(f); | |
if(t==NULL) | |
printf("Entry Not Found"); | |
} | |
} | |
void loadentry() { | |
int i=1; | |
list t; | |
FILE *f; | |
f=fopen("entry.c","r"); | |
if(f==NULL) { | |
printf("Cannot Open"); | |
exit(1); | |
} | |
while(fscanf(f," %s %s %s %s %s %s %s",t->name,t->nick,t->email,t->address,t->city,t->cont,t->pin)!=EOF) { | |
printf("[%d] Name :%s\n Nick Name :%s\n E-mail ID :%s\n address : %s\n City :%s\n Contact.No :%s\n Pin code :%s",i,temp->name,temp->nick,temp->email,temp->address,temp->city,temp->cont,temp->pin); | |
i++; | |
} | |
fclose(f); | |
} | |
void deleteall() { | |
FILE *f; | |
f=fopen("entry.c","w"); | |
fclose(f); | |
printf("all saved files were delete"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment