Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<string.h>
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct
- {
- char street[50];
- char city[20];
- char zipcode[10];
- char flat_no[5];
- } address;
- typedef struct
- {
- char home_num[10];
- char mobile_num[20];
- } numbers;
- typedef struct
- {
- char first_name[10];
- char last_name[10];
- address adrs;
- numbers num;
- char email[20];
- int validcontact;
- } contact;
- contact *contacts;
- int location;
- void LOAD();
- int Query();
- void display(int i);
- void ADD();
- void Edit();
- void save();
- void print_sorted();
- void show_all();
- int main()
- {
- contacts=(contact *) malloc(1000*sizeof(contact));
- LOAD();
- system("cls");
- int i, number;
- while(1)
- {
- printf("Enter the number of your choice :\n ");
- printf("1-read file \n2-search \n3-Add contact\n4-Edit to contact \n5-Delete\n6-sort\n7-save\n8-Quit\n");
- scanf("%d",&number);
- switch(number)
- {
- case 1:
- LOAD();
- break;
- case 2:
- i= Query();
- printf("i=%d\n",i);
- if(i != -1)
- {
- display(i);
- }
- else
- {
- printf("name not found.\n\n");
- }
- //el i h5odha mn el function w b3den a3ml display
- break;
- case 3:
- ADD();
- break;
- case 4:
- Edit();
- break;
- case 5:
- Delete();
- break;
- case 6:
- print_sorted();
- break;
- case 7:
- save();
- break;
- case 8:
- Quit();
- break;
- default:
- printf("you don't enter an existing number");
- scanf("%d",&number);
- }
- }
- return 0;
- }
- void LOAD()
- {
- char stringLine[100];
- int count=0,i;
- FILE *f= fopen("contact.txt","r");
- if (f == NULL)
- exit(EXIT_FAILURE);
- while (EOF != fscanf(f, "%[^\n]\n", stringLine))
- {
- printf("> %s\n", stringLine);
- count++;
- }
- printf("count %d\n", count);
- fclose(f);
- f= fopen("contact.txt","r");
- for(i=0; i<count; i++)
- {
- /* contacts[i].first_name=(char*)malloc(sizeof(char*));
- contacts[i].last_name=(char*)malloc(sizeof(char*));
- contacts[i].adrs.street=(char*)malloc(sizeof(char*));
- contacts[i].adrs.flat_no=malloc(sizeof(char*));
- contacts[i].adrs.city=(char*)malloc(sizeof(char*));
- contacts[i].adrs.zipcode=(char*)malloc(sizeof(char*));
- contacts[i].email=(char*)malloc(sizeof(char*));
- contacts[i].num.mobile_num =(char*)malloc(sizeof(char*));
- contacts[i].num.home_num =(char*)malloc(sizeof(char*));
- */
- fscanf(f,"%[^,]",contacts[i].first_name);
- fscanf(f,",%[^,]",contacts[i].last_name);
- fscanf(f,",%[^,]",contacts[i].adrs.street);
- fscanf(f,",%[^,]",contacts[i].adrs.flat_no);
- fscanf(f,",%[^,]",contacts[i].adrs.city);
- fscanf(f,",%[^,]",contacts[i].adrs.zipcode);
- fscanf(f,",%[^,]",contacts[i].email);
- fscanf(f,",%[^,]",contacts[i].num.mobile_num);
- fscanf(f,",%[^\n]\n",contacts[i].num.home_num); //the last element so \n
- }
- //print all
- for(i=0; i<count; i++)
- {
- printf("%s - %s\n",contacts[i].first_name,contacts[i].last_name);
- printf("%s - %s - %s - %s\n",contacts[i].adrs.street,contacts[i].adrs.flat_no,contacts[i].adrs.city,contacts[i].adrs.zipcode);
- printf("%s - %s - %s\n\n",contacts[i].email,contacts[i].num.mobile_num,contacts[i].num.home_num);
- }
- location=count;
- }
- int Query()
- {
- int i;
- char target[20];
- printf("Enter the first name:");
- gets(target);
- gets(target);
- for(i=0; i<location; i++)
- {
- if(strncmp(contacts[i].first_name,target,strlen(target))==0)
- {
- return i;
- break;
- }
- }
- return -1;
- }
- void display(int i)
- {
- printf("%s - %s\n",contacts[i].first_name,contacts[i].last_name);
- printf("%s - %s - %s - %s\n",contacts[i].adrs.street,contacts[i].adrs.flat_no,contacts[i].adrs.city,contacts[i].adrs.zipcode);
- printf("%s - %s - %s\n\n",contacts[i].email,contacts[i].num.mobile_num,contacts[i].num.home_num);
- }
- void ADD()
- {
- printf("Enter the first name you want to add:");
- gets(contacts[location].first_name);
- gets(contacts[location].first_name);
- printf("\n Enter the last name you want to add:");
- gets(contacts[location].last_name);
- printf("\n Enter the address street you want to add:");
- gets(contacts[location].adrs.street);
- printf("\n Enter the flat no you want to add:");
- gets(contacts[location].adrs.flat_no);
- printf("\n Enter the address city you want to add:");
- gets(contacts[location].adrs.city);
- printf("\n Enter the zip code you want to add:");
- gets(contacts[location].adrs.zipcode);
- printf("\n Enter the email you want to add:");
- gets(contacts[location].email);
- printf("\n Enter the mobile number you want to add:");
- gets(contacts[location].num.mobile_num);
- printf("\n Enter the home number you want to add:");
- gets(contacts[location].num.home_num);
- //printf("%s",contacts[location].last_name);
- location++;
- }
- void Edit()
- {
- char firstname[20];
- char lastname[20];
- char newfirstname[20];
- char newlastname[20];
- char newaddress_street[30];
- char newaddress_flatno[10];
- char newaddress_city[10];
- char newaddress_zipcode[10];
- char newemail[30];
- char newmobile_no[20];
- char newhome_no[10];
- int i,found_at;
- printf("Enter the first name of the contact you want to edit:");
- gets(firstname);
- gets(firstname);
- printf("Enter the last name of the contact you want to edit:");
- gets(lastname);
- for(i=0; i<location; i++)
- {
- if(strcmp(contacts[i].first_name,firstname)==0&&strcmp(contacts[i].last_name,lastname)==0)
- {
- found_at=i;
- break;
- }
- }
- if(found_at==-1)
- {
- printf("Not found");
- return 0;
- }
- else
- display(found_at);
- printf("the first name?\n");
- gets(newfirstname);
- if(strcmp(newfirstname,"\0")==0)
- {
- printf("\n you didn't change it\n");
- strcpy(contacts[found_at].first_name,contacts[found_at].first_name);
- }
- else strcpy(contacts[found_at].first_name,newfirstname);
- printf("the last name?\n");
- gets(newlastname);
- if(strcmp(newlastname,"\0")==0)
- {
- printf("\n you didn't change it\n");
- }
- else strcpy(contacts[found_at].last_name,newlastname);
- printf("the address street ?\n");
- gets(newaddress_street);
- if(strcmp(newaddress_street,"\0")==0)
- printf("\n you didn't change it\n");
- else strcpy(contacts[found_at].adrs.street,newaddress_street);
- printf("the new flat number?\n");
- gets(newaddress_flatno);
- if(strcmp(newaddress_flatno,"\0")==0)
- printf("\n you didn't change it\n");
- else strcpy(contacts[found_at].adrs.flat_no,newaddress_flatno);
- printf("the new city?\n");
- gets(newaddress_city);
- if(strcmp(newaddress_city,"\0")==0)
- printf("\n you didn't change it\n");
- else strcpy(contacts[found_at].adrs.city,newaddress_city);
- printf("the new zip code?\n");
- gets(newaddress_zipcode);
- if(strcmp(newaddress_zipcode,"\0")==0)
- printf("\n you didn't change it\n");
- else strcpy(contacts[found_at].adrs.zipcode,newaddress_zipcode);
- printf("the new email?\n");
- gets(newemail);
- if(strcmp(newemail,"\0")==0)
- printf("\n you didn't change it\n");
- else strcpy(contacts[found_at].email,newemail);
- printf("the new mobile number?\n");
- gets(newmobile_no);
- if(strcmp(newmobile_no,"\0")==0)
- printf("\n you didn't change it\n");
- else strcpy(contacts[found_at].num.mobile_num,newmobile_no);
- printf("the new home number?\n");
- gets(newhome_no);
- if(strcmp(newhome_no,"\0")==0)
- printf("\n you didn't change it\n");
- else strcpy(contacts[found_at].num.home_num,newhome_no);
- display(found_at);
- }
- /*char s[MAX_LINE];
- fgets(s, sizeof(s), stdin);
- valid = TRUE;
- for (i = 0; i < strlen(s); ++i)
- {
- if (!isdigit(s[i]))
- {
- valid = FALSE;
- break;
- }
- }*/
- void Delete()
- {
- int i,found_at=-1;
- char firstname[20];
- char lastname[20];
- /*for(i=0; i<location; i++)
- {
- contacts[i].validcontact=1;
- }*/
- printf("Enter the first name you want to delete:");
- gets(firstname);
- gets(firstname);
- printf("Enter the last name:");
- gets(lastname);
- for(i=0; i<location; i++)
- {
- if(strcmp(contacts[i].first_name,firstname)==0&&strcmp(contacts[i].last_name,lastname)==0)
- {
- found_at=i;
- break;
- }
- }
- if(found_at==-1)
- {
- printf("Not found");
- return 0;
- }
- else
- {
- strcpy(contacts[found_at].first_name,contacts[location-1].first_name);
- strcpy(contacts[found_at].last_name,contacts[location-1].last_name);
- strcpy(contacts[found_at].adrs.street,contacts[location-1].adrs.street);
- strcpy(contacts[found_at].adrs.flat_no,contacts[location-1].adrs.flat_no);
- strcpy(contacts[found_at].adrs.city,contacts[location-1].adrs.city);
- strcpy(contacts[found_at].adrs.zipcode,contacts[location-1].adrs.zipcode);
- strcpy(contacts[found_at].email,contacts[location-1].email);
- strcpy(contacts[found_at].num.home_num,contacts[location-1].num.home_num);
- strcpy(contacts[found_at].num.mobile_num,contacts[location-1].num.mobile_num);
- location--;
- // contacts[found_at].validcontact=0;
- }
- /* for(i=0;i<location;i++){
- if(contacts[i].validcontact==0)
- {
- contacts[i].first_name="\0";
- contacts[i].last_name="\0";
- contacts[i].adrs.street="\0";
- contacts[i].adrs.flat_no="\0";
- contacts[i].adrs.city="\0";
- contacts[i].adrs.zipcode="\0";
- contacts[i].email="\0";
- contacts[i].num.home_num="\0";
- contacts[i].num.mobile_num="\0";
- break;
- }*/
- /* for(i=0; i<location; i++)
- {
- strcpy(contacts[found_at+i].first_name,contacts[found_at+i+1].first_name);
- strcpy(contacts[found_at+i].last_name,contacts[found_at+i+1].last_name);
- strcpy(contacts[found_at+i].adrs.street,contacts[found_at+i+1].adrs.street);
- strcpy(contacts[found_at+i].adrs.flat_no,contacts[found_at+i+1].adrs.flat_no);
- strcpy(contacts[found_at+i].adrs.city,contacts[found_at+i+1].adrs.city);
- strcpy(contacts[found_at+i].adrs.zipcode,contacts[found_at+i+1].adrs.zipcode);
- strcpy(contacts[found_at+i].email,contacts[found_at+i+1].email);
- strcpy(contacts[found_at+i].num.home_num,contacts[found_at+i+1].num.home_num);
- strcpy(contacts[found_at+i].num.mobile_num,contacts[found_at+i+1].num.mobile_num);
- }*/
- strcpy(contacts[found_at].first_name,contacts[location-1].first_name);
- strcpy(contacts[found_at].last_name,contacts[location-1].last_name);
- strcpy(contacts[found_at].adrs.street,contacts[location-1].adrs.street);
- strcpy(contacts[found_at].adrs.flat_no,contacts[location-1].adrs.flat_no);
- strcpy(contacts[found_at].adrs.city,contacts[location-1].adrs.city);
- strcpy(contacts[found_at].adrs.zipcode,contacts[location-1].adrs.zipcode);
- strcpy(contacts[found_at].email,contacts[location-1].email);
- strcpy(contacts[found_at].num.home_num,contacts[location-1].num.home_num);
- strcpy(contacts[found_at].num.mobile_num,contacts[location-1].num.mobile_num);
- printf("contacts after deleting:\n");
- show_all();
- }
- void print_sorted()
- {
- int pass,i;
- contact *temp;
- for(i=0; i<location; i++)
- {
- for(pass=0; pass<location-1; pass++)
- {
- //printf("%d",i);
- if(strcmp(contacts[pass].first_name,contacts[pass+1].first_name)>0)
- {
- strcpy(temp[pass].first_name,contacts[pass].first_name);
- strcpy(contacts[pass].first_name,contacts[pass+1].first_name);
- strcpy(contacts[pass+1].first_name,temp[pass].first_name);
- strcpy(temp[pass].last_name,contacts[pass].last_name);
- strcpy(contacts[pass].last_name,contacts[pass+1].last_name);
- strcpy(contacts[pass+1].last_name,temp[pass].last_name);
- strcpy(temp[pass].adrs.street,contacts[pass].adrs.street);
- strcpy(contacts[pass].adrs.street,contacts[pass+1].adrs.street);
- strcpy(contacts[pass+1].adrs.street,temp[pass].adrs.street);
- strcpy(temp[pass].adrs.city,contacts[pass].adrs.city);
- strcpy(contacts[pass].adrs.city,contacts[pass+1].adrs.city);
- strcpy(contacts[pass+1].adrs.city,temp[pass].adrs.city);
- strcpy(temp[pass].adrs.flat_no,contacts[pass].adrs.flat_no);
- strcpy(contacts[pass].adrs.flat_no,contacts[pass+1].adrs.flat_no);
- strcpy(contacts[pass+1].adrs.flat_no,temp[pass].adrs.flat_no);
- strcpy(temp[pass].adrs.zipcode,contacts[pass].adrs.zipcode);
- strcpy(contacts[pass].adrs.zipcode,contacts[pass+1].adrs.zipcode);
- strcpy(contacts[pass+1].adrs.zipcode,temp[pass].adrs.zipcode);
- strcpy(temp[pass].email,contacts[pass].email);
- strcpy(contacts[pass].email,contacts[pass+1].email);
- strcpy(contacts[pass+1].email,temp[pass].email);
- strcpy(temp[pass].num.home_num,contacts[pass].num.home_num);
- strcpy(contacts[pass].num.home_num,contacts[pass+1].num.home_num);
- strcpy(contacts[pass+1].num.home_num,temp[pass].num.home_num);
- strcpy(temp[pass].num.mobile_num,contacts[pass].num.mobile_num);
- strcpy(contacts[pass].num.mobile_num,contacts[pass+1].num.mobile_num);
- strcpy(contacts[pass+1].num.mobile_num,temp[pass].num.mobile_num);
- }
- else if(strcmp(contacts[pass].first_name,contacts[pass+1].first_name)==0&&strcmp(contacts[pass].last_name,contacts[pass+1].last_name)==1)
- {
- strcpy(temp[pass].first_name,contacts[pass].first_name);
- strcpy(contacts[pass].first_name,contacts[pass+1].first_name);
- strcpy(contacts[pass+1].first_name,temp[pass].first_name);
- strcpy(temp[pass].last_name,contacts[pass].last_name);
- strcpy(contacts[pass].last_name,contacts[pass+1].last_name);
- strcpy(contacts[pass+1].last_name,temp[pass].last_name);
- strcpy(temp[pass].adrs.street,contacts[pass].adrs.street);
- strcpy(contacts[pass].adrs.street,contacts[pass+1].adrs.street);
- strcpy(contacts[pass+1].adrs.street,temp[pass].adrs.street);
- strcpy(temp[pass].adrs.city,contacts[pass].adrs.city);
- strcpy(contacts[pass].adrs.city,contacts[pass+1].adrs.city);
- strcpy(contacts[pass+1].adrs.city,temp[pass].adrs.city);
- strcpy(temp[pass].adrs.flat_no,contacts[pass].adrs.flat_no);
- strcpy(contacts[pass].adrs.flat_no,contacts[pass+1].adrs.flat_no);
- strcpy(contacts[pass+1].adrs.flat_no,temp[pass].adrs.flat_no);
- strcpy(temp[pass].adrs.zipcode,contacts[pass].adrs.zipcode);
- strcpy(contacts[pass].adrs.zipcode,contacts[pass+1].adrs.zipcode);
- strcpy(contacts[pass+1].adrs.zipcode,temp[pass].adrs.zipcode);
- strcpy(temp[pass].email,contacts[pass].email);
- strcpy(contacts[pass].email,contacts[pass+1].email);
- strcpy(contacts[pass+1].email,temp[pass].email);
- strcpy(temp[pass].num.home_num,contacts[pass].num.home_num);
- strcpy(contacts[pass].num.home_num,contacts[pass+1].num.home_num);
- strcpy(contacts[pass+1].num.home_num,temp[pass].num.home_num);
- strcpy(temp[pass].num.mobile_num,contacts[pass].num.mobile_num);
- strcpy(contacts[pass].num.mobile_num,contacts[pass+1].num.mobile_num);
- strcpy(contacts[pass+1].num.mobile_num,temp[pass].num.mobile_num);
- }
- }
- }
- for(i=0; i<location; i++)
- display(i);
- }
- void save()
- {
- int i;
- char line[300];
- FILE *f;
- f=fopen("contact.txt","w");
- for(i=0; i<location; i++)
- {
- fprintf(f,"%s",contacts[i].first_name);
- fprintf(f,",%s",contacts[i].last_name);
- fprintf(f,",%s",contacts[i].adrs.street);
- fprintf(f,",%s",contacts[i].adrs.flat_no);
- fprintf(f,",%s",contacts[i].adrs.city);
- fprintf(f,",%s",contacts[i].adrs.zipcode);
- fprintf(f,",%s",contacts[i].email);
- fprintf(f,",%s",contacts[i].num.mobile_num);
- fprintf(f,",%s\n",contacts[i].num.home_num);
- }
- printf("SAVED!");
- fclose(f);
- }
- void Quit()
- {
- char A[3];
- char a2[3];
- int i;
- printf("All your changes will be discarded!\n do you want to save? yes or no?\n");
- //for(i=0; i<3; i++)
- //{
- scanf("%s",A);
- if(strcmp(A,"yes")==0)
- {
- save();
- exit(0);
- }
- else
- {
- printf("do you want to exit?");
- scanf("%s",a2);
- if(strcmp(a2,"yes")==0)
- exit(0);
- else
- return 0;
- }
- //}
- }
- void show_all()
- {
- int i;
- for(i=0;i<location;i++)
- {
- printf("%s - %s\n",contacts[i].first_name,contacts[i].last_name);
- printf("%s - %s - %s - %s\n",contacts[i].adrs.street,contacts[i].adrs.flat_no,contacts[i].adrs.city,contacts[i].adrs.zipcode);
- printf("%s - %s - %s\n\n",contacts[i].email,contacts[i].num.mobile_num,contacts[i].num.home_num);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement