#include #include #include 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; i0) { 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