Advertisement
yoyo106

el code el azab ba3atholy

Dec 24th, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 18.09 KB | None | 0 0
  1. #include<string.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5.  
  6. typedef struct
  7. {
  8.     char street[50];
  9.     char city[20];
  10.     char zipcode[10];
  11.     char flat_no[5];
  12.  
  13. } address;
  14. typedef struct
  15. {
  16.     char home_num[10];
  17.     char mobile_num[20];
  18. } numbers;
  19. typedef struct
  20. {
  21.     char first_name[10];
  22.     char last_name[10];
  23.     address adrs;
  24.     numbers num;
  25.     char email[20];
  26.     int validcontact;
  27.  
  28. } contact;
  29.  
  30. contact *contacts;
  31.  
  32. int location;
  33. void LOAD();
  34. int Query();
  35. void display(int i);
  36. void ADD();
  37. void Edit();
  38. void save();
  39. void  print_sorted();
  40. void show_all();
  41. int main()
  42. {
  43.     contacts=(contact *) malloc(1000*sizeof(contact));
  44.     LOAD();
  45.     system("cls");
  46.  
  47.  
  48.  
  49.     int i, number;
  50.     while(1)
  51.     {
  52.         printf("Enter the number of your choice :\n ");
  53.         printf("1-read file \n2-search \n3-Add contact\n4-Edit to contact \n5-Delete\n6-sort\n7-save\n8-Quit\n");
  54.         scanf("%d",&number);
  55.  
  56.         switch(number)
  57.         {
  58.         case 1:
  59.             LOAD();
  60.             break;
  61.         case 2:
  62.  
  63.             i= Query();
  64.             printf("i=%d\n",i);
  65.             if(i != -1)
  66.             {
  67.                 display(i);
  68.             }
  69.             else
  70.             {
  71.                 printf("name not found.\n\n");
  72.             }
  73.             //el i h5odha mn el function w b3den a3ml display
  74.             break;
  75.         case 3:
  76.             ADD();
  77.             break;
  78.         case 4:
  79.             Edit();
  80.             break;
  81.         case 5:
  82.  
  83.             Delete();
  84.             break;
  85.         case 6:
  86.             print_sorted();
  87.             break;
  88.         case 7:
  89.             save();
  90.             break;
  91.         case 8:
  92.  
  93.             Quit();
  94.             break;
  95.         default:
  96.             printf("you don't enter an existing number");
  97.             scanf("%d",&number);
  98.         }
  99.     }
  100.     return 0;
  101. }
  102. void LOAD()
  103. {
  104.  
  105.     char stringLine[100];
  106.     int count=0,i;
  107.  
  108.     FILE *f= fopen("contact.txt","r");
  109.  
  110.  
  111.     if (f == NULL)
  112.         exit(EXIT_FAILURE);
  113.  
  114.     while (EOF != fscanf(f, "%[^\n]\n", stringLine))
  115.     {
  116.         printf("> %s\n", stringLine);
  117.         count++;
  118.     }
  119.  
  120.     printf("count %d\n", count);
  121.  
  122.     fclose(f);
  123.     f= fopen("contact.txt","r");
  124.  
  125.  
  126.  
  127.     for(i=0; i<count; i++)
  128.     {
  129.         /* contacts[i].first_name=(char*)malloc(sizeof(char*));
  130.          contacts[i].last_name=(char*)malloc(sizeof(char*));
  131.          contacts[i].adrs.street=(char*)malloc(sizeof(char*));
  132.          contacts[i].adrs.flat_no=malloc(sizeof(char*));
  133.          contacts[i].adrs.city=(char*)malloc(sizeof(char*));
  134.          contacts[i].adrs.zipcode=(char*)malloc(sizeof(char*));
  135.          contacts[i].email=(char*)malloc(sizeof(char*));
  136.          contacts[i].num.mobile_num =(char*)malloc(sizeof(char*));
  137.          contacts[i].num.home_num =(char*)malloc(sizeof(char*));
  138.          */
  139.  
  140.         fscanf(f,"%[^,]",contacts[i].first_name);
  141.         fscanf(f,",%[^,]",contacts[i].last_name);
  142.         fscanf(f,",%[^,]",contacts[i].adrs.street);
  143.         fscanf(f,",%[^,]",contacts[i].adrs.flat_no);
  144.         fscanf(f,",%[^,]",contacts[i].adrs.city);
  145.         fscanf(f,",%[^,]",contacts[i].adrs.zipcode);
  146.         fscanf(f,",%[^,]",contacts[i].email);
  147.         fscanf(f,",%[^,]",contacts[i].num.mobile_num);
  148.         fscanf(f,",%[^\n]\n",contacts[i].num.home_num);   //the last element so \n
  149.     }
  150.  
  151.     //print all
  152.     for(i=0; i<count; i++)
  153.     {
  154.         printf("%s - %s\n",contacts[i].first_name,contacts[i].last_name);
  155.         printf("%s - %s - %s - %s\n",contacts[i].adrs.street,contacts[i].adrs.flat_no,contacts[i].adrs.city,contacts[i].adrs.zipcode);
  156.         printf("%s - %s - %s\n\n",contacts[i].email,contacts[i].num.mobile_num,contacts[i].num.home_num);
  157.  
  158.     }
  159.  
  160.     location=count;
  161.  
  162. }
  163.  
  164. int Query()
  165. {
  166.     int i;
  167.     char target[20];
  168.     printf("Enter the first name:");
  169.     gets(target);
  170.     gets(target);
  171.     for(i=0; i<location; i++)
  172.     {
  173.         if(strncmp(contacts[i].first_name,target,strlen(target))==0)
  174.         {
  175.             return i;
  176.             break;
  177.         }
  178.  
  179.  
  180.  
  181.  
  182.  
  183.     }
  184.     return -1;
  185.  
  186. }
  187. void display(int i)
  188. {
  189.  
  190.  
  191.     printf("%s - %s\n",contacts[i].first_name,contacts[i].last_name);
  192.     printf("%s - %s - %s - %s\n",contacts[i].adrs.street,contacts[i].adrs.flat_no,contacts[i].adrs.city,contacts[i].adrs.zipcode);
  193.     printf("%s - %s - %s\n\n",contacts[i].email,contacts[i].num.mobile_num,contacts[i].num.home_num);
  194.  
  195. }
  196. void ADD()
  197. {
  198.     printf("Enter the first name you want to add:");
  199.     gets(contacts[location].first_name);
  200.     gets(contacts[location].first_name);
  201.     printf("\n Enter the last name you want to add:");
  202.     gets(contacts[location].last_name);
  203.     printf("\n Enter the address street you want to add:");
  204.     gets(contacts[location].adrs.street);
  205.     printf("\n Enter the flat no you want to add:");
  206.     gets(contacts[location].adrs.flat_no);
  207.     printf("\n Enter the address city you want to add:");
  208.     gets(contacts[location].adrs.city);
  209.     printf("\n Enter the zip code you want to add:");
  210.     gets(contacts[location].adrs.zipcode);
  211.     printf("\n Enter the email you want to add:");
  212.     gets(contacts[location].email);
  213.     printf("\n Enter the mobile number you want to add:");
  214.     gets(contacts[location].num.mobile_num);
  215.     printf("\n Enter the home number you want to add:");
  216.     gets(contacts[location].num.home_num);
  217. //printf("%s",contacts[location].last_name);
  218.  
  219.     location++;
  220.  
  221.  
  222. }
  223. void Edit()
  224. {
  225.     char firstname[20];
  226.     char lastname[20];
  227.     char newfirstname[20];
  228.     char newlastname[20];
  229.     char newaddress_street[30];
  230.     char newaddress_flatno[10];
  231.     char newaddress_city[10];
  232.     char newaddress_zipcode[10];
  233.     char newemail[30];
  234.     char newmobile_no[20];
  235.     char newhome_no[10];
  236.     int i,found_at;
  237.     printf("Enter the first name of the contact you want to edit:");
  238.     gets(firstname);
  239.     gets(firstname);
  240.     printf("Enter the last name of the contact you want to edit:");
  241.     gets(lastname);
  242.  
  243.     for(i=0; i<location; i++)
  244.     {
  245.         if(strcmp(contacts[i].first_name,firstname)==0&&strcmp(contacts[i].last_name,lastname)==0)
  246.         {
  247.             found_at=i;
  248.             break;
  249.         }
  250.     }
  251.     if(found_at==-1)
  252.     {
  253.  
  254.         printf("Not found");
  255.         return 0;
  256.  
  257.     }
  258.     else
  259.         display(found_at);
  260.     printf("the first name?\n");
  261.     gets(newfirstname);
  262.     if(strcmp(newfirstname,"\0")==0)
  263.     {
  264.  
  265.         printf("\n you didn't change it\n");
  266.         strcpy(contacts[found_at].first_name,contacts[found_at].first_name);
  267.     }
  268.     else strcpy(contacts[found_at].first_name,newfirstname);
  269.     printf("the last name?\n");
  270.     gets(newlastname);
  271.     if(strcmp(newlastname,"\0")==0)
  272.     {
  273.         printf("\n you didn't change it\n");
  274.  
  275.     }
  276.     else strcpy(contacts[found_at].last_name,newlastname);
  277.     printf("the address street ?\n");
  278.     gets(newaddress_street);
  279.     if(strcmp(newaddress_street,"\0")==0)
  280.         printf("\n you didn't change it\n");
  281.     else strcpy(contacts[found_at].adrs.street,newaddress_street);
  282.     printf("the new flat number?\n");
  283.     gets(newaddress_flatno);
  284.     if(strcmp(newaddress_flatno,"\0")==0)
  285.         printf("\n you didn't change it\n");
  286.     else strcpy(contacts[found_at].adrs.flat_no,newaddress_flatno);
  287.     printf("the new city?\n");
  288.     gets(newaddress_city);
  289.     if(strcmp(newaddress_city,"\0")==0)
  290.         printf("\n you didn't change it\n");
  291.     else strcpy(contacts[found_at].adrs.city,newaddress_city);
  292.     printf("the new zip code?\n");
  293.     gets(newaddress_zipcode);
  294.     if(strcmp(newaddress_zipcode,"\0")==0)
  295.         printf("\n you didn't change it\n");
  296.     else strcpy(contacts[found_at].adrs.zipcode,newaddress_zipcode);
  297.     printf("the new email?\n");
  298.     gets(newemail);
  299.     if(strcmp(newemail,"\0")==0)
  300.         printf("\n you didn't change it\n");
  301.     else strcpy(contacts[found_at].email,newemail);
  302.     printf("the new mobile number?\n");
  303.     gets(newmobile_no);
  304.     if(strcmp(newmobile_no,"\0")==0)
  305.         printf("\n you didn't change it\n");
  306.     else strcpy(contacts[found_at].num.mobile_num,newmobile_no);
  307.     printf("the new home number?\n");
  308.     gets(newhome_no);
  309.     if(strcmp(newhome_no,"\0")==0)
  310.         printf("\n you didn't change it\n");
  311.     else strcpy(contacts[found_at].num.home_num,newhome_no);
  312.     display(found_at);
  313.  
  314.  
  315. }
  316. /*char s[MAX_LINE];
  317.  
  318. fgets(s, sizeof(s), stdin);
  319. valid = TRUE;
  320. for (i = 0; i < strlen(s); ++i)
  321. {
  322.     if (!isdigit(s[i]))
  323.     {
  324.         valid = FALSE;
  325.         break;
  326.     }
  327. }*/
  328. void Delete()
  329. {
  330.     int i,found_at=-1;
  331.     char firstname[20];
  332.     char lastname[20];
  333.     /*for(i=0; i<location; i++)
  334.     {
  335.         contacts[i].validcontact=1;
  336.     }*/
  337.  
  338.  
  339.     printf("Enter the first name you want to delete:");
  340.     gets(firstname);
  341.     gets(firstname);
  342.     printf("Enter the last name:");
  343.     gets(lastname);
  344.     for(i=0; i<location; i++)
  345.     {
  346.         if(strcmp(contacts[i].first_name,firstname)==0&&strcmp(contacts[i].last_name,lastname)==0)
  347.         {
  348.             found_at=i;
  349.             break;
  350.         }
  351.     }
  352.  
  353.     if(found_at==-1)
  354.     {
  355.  
  356.         printf("Not found");
  357.         return 0;
  358.  
  359.     }
  360.     else
  361.     {
  362.         strcpy(contacts[found_at].first_name,contacts[location-1].first_name);
  363.         strcpy(contacts[found_at].last_name,contacts[location-1].last_name);
  364.         strcpy(contacts[found_at].adrs.street,contacts[location-1].adrs.street);
  365.         strcpy(contacts[found_at].adrs.flat_no,contacts[location-1].adrs.flat_no);
  366.         strcpy(contacts[found_at].adrs.city,contacts[location-1].adrs.city);
  367.         strcpy(contacts[found_at].adrs.zipcode,contacts[location-1].adrs.zipcode);
  368.         strcpy(contacts[found_at].email,contacts[location-1].email);
  369.         strcpy(contacts[found_at].num.home_num,contacts[location-1].num.home_num);
  370.         strcpy(contacts[found_at].num.mobile_num,contacts[location-1].num.mobile_num);
  371.         location--;
  372.  
  373.        // contacts[found_at].validcontact=0;
  374.  
  375.     }
  376.  
  377.     /* for(i=0;i<location;i++){
  378.        if(contacts[i].validcontact==0)
  379.        {
  380.            contacts[i].first_name="\0";
  381.            contacts[i].last_name="\0";
  382.            contacts[i].adrs.street="\0";
  383.            contacts[i].adrs.flat_no="\0";
  384.            contacts[i].adrs.city="\0";
  385.            contacts[i].adrs.zipcode="\0";
  386.            contacts[i].email="\0";
  387.            contacts[i].num.home_num="\0";
  388.            contacts[i].num.mobile_num="\0";
  389.            break;
  390.  
  391.        }*/
  392.    /* for(i=0; i<location; i++)
  393.     {
  394.         strcpy(contacts[found_at+i].first_name,contacts[found_at+i+1].first_name);
  395.         strcpy(contacts[found_at+i].last_name,contacts[found_at+i+1].last_name);
  396.         strcpy(contacts[found_at+i].adrs.street,contacts[found_at+i+1].adrs.street);
  397.         strcpy(contacts[found_at+i].adrs.flat_no,contacts[found_at+i+1].adrs.flat_no);
  398.         strcpy(contacts[found_at+i].adrs.city,contacts[found_at+i+1].adrs.city);
  399.         strcpy(contacts[found_at+i].adrs.zipcode,contacts[found_at+i+1].adrs.zipcode);
  400.         strcpy(contacts[found_at+i].email,contacts[found_at+i+1].email);
  401.         strcpy(contacts[found_at+i].num.home_num,contacts[found_at+i+1].num.home_num);
  402.         strcpy(contacts[found_at+i].num.mobile_num,contacts[found_at+i+1].num.mobile_num);
  403.     }*/
  404.     strcpy(contacts[found_at].first_name,contacts[location-1].first_name);
  405.         strcpy(contacts[found_at].last_name,contacts[location-1].last_name);
  406.         strcpy(contacts[found_at].adrs.street,contacts[location-1].adrs.street);
  407.         strcpy(contacts[found_at].adrs.flat_no,contacts[location-1].adrs.flat_no);
  408.         strcpy(contacts[found_at].adrs.city,contacts[location-1].adrs.city);
  409.         strcpy(contacts[found_at].adrs.zipcode,contacts[location-1].adrs.zipcode);
  410.         strcpy(contacts[found_at].email,contacts[location-1].email);
  411.         strcpy(contacts[found_at].num.home_num,contacts[location-1].num.home_num);
  412.         strcpy(contacts[found_at].num.mobile_num,contacts[location-1].num.mobile_num);
  413.     printf("contacts after deleting:\n");
  414.     show_all();
  415. }
  416.  
  417.  
  418. void print_sorted()
  419. {
  420.     int pass,i;
  421.     contact *temp;
  422.  
  423.     for(i=0; i<location; i++)
  424.     {
  425.  
  426.         for(pass=0; pass<location-1; pass++)
  427.         {
  428.             //printf("%d",i);
  429.             if(strcmp(contacts[pass].first_name,contacts[pass+1].first_name)>0)
  430.             {
  431.                 strcpy(temp[pass].first_name,contacts[pass].first_name);
  432.                 strcpy(contacts[pass].first_name,contacts[pass+1].first_name);
  433.                 strcpy(contacts[pass+1].first_name,temp[pass].first_name);
  434.                 strcpy(temp[pass].last_name,contacts[pass].last_name);
  435.                 strcpy(contacts[pass].last_name,contacts[pass+1].last_name);
  436.                 strcpy(contacts[pass+1].last_name,temp[pass].last_name);
  437.                 strcpy(temp[pass].adrs.street,contacts[pass].adrs.street);
  438.                 strcpy(contacts[pass].adrs.street,contacts[pass+1].adrs.street);
  439.                 strcpy(contacts[pass+1].adrs.street,temp[pass].adrs.street);
  440.                 strcpy(temp[pass].adrs.city,contacts[pass].adrs.city);
  441.                 strcpy(contacts[pass].adrs.city,contacts[pass+1].adrs.city);
  442.                 strcpy(contacts[pass+1].adrs.city,temp[pass].adrs.city);
  443.                 strcpy(temp[pass].adrs.flat_no,contacts[pass].adrs.flat_no);
  444.                 strcpy(contacts[pass].adrs.flat_no,contacts[pass+1].adrs.flat_no);
  445.                 strcpy(contacts[pass+1].adrs.flat_no,temp[pass].adrs.flat_no);
  446.                 strcpy(temp[pass].adrs.zipcode,contacts[pass].adrs.zipcode);
  447.                 strcpy(contacts[pass].adrs.zipcode,contacts[pass+1].adrs.zipcode);
  448.                 strcpy(contacts[pass+1].adrs.zipcode,temp[pass].adrs.zipcode);
  449.                 strcpy(temp[pass].email,contacts[pass].email);
  450.                 strcpy(contacts[pass].email,contacts[pass+1].email);
  451.                 strcpy(contacts[pass+1].email,temp[pass].email);
  452.                 strcpy(temp[pass].num.home_num,contacts[pass].num.home_num);
  453.                 strcpy(contacts[pass].num.home_num,contacts[pass+1].num.home_num);
  454.                 strcpy(contacts[pass+1].num.home_num,temp[pass].num.home_num);
  455.                 strcpy(temp[pass].num.mobile_num,contacts[pass].num.mobile_num);
  456.                 strcpy(contacts[pass].num.mobile_num,contacts[pass+1].num.mobile_num);
  457.                 strcpy(contacts[pass+1].num.mobile_num,temp[pass].num.mobile_num);
  458.             }
  459.             else if(strcmp(contacts[pass].first_name,contacts[pass+1].first_name)==0&&strcmp(contacts[pass].last_name,contacts[pass+1].last_name)==1)
  460.             {
  461.                 strcpy(temp[pass].first_name,contacts[pass].first_name);
  462.                 strcpy(contacts[pass].first_name,contacts[pass+1].first_name);
  463.                 strcpy(contacts[pass+1].first_name,temp[pass].first_name);
  464.                 strcpy(temp[pass].last_name,contacts[pass].last_name);
  465.                 strcpy(contacts[pass].last_name,contacts[pass+1].last_name);
  466.                 strcpy(contacts[pass+1].last_name,temp[pass].last_name);
  467.                 strcpy(temp[pass].adrs.street,contacts[pass].adrs.street);
  468.                 strcpy(contacts[pass].adrs.street,contacts[pass+1].adrs.street);
  469.                 strcpy(contacts[pass+1].adrs.street,temp[pass].adrs.street);
  470.                 strcpy(temp[pass].adrs.city,contacts[pass].adrs.city);
  471.                 strcpy(contacts[pass].adrs.city,contacts[pass+1].adrs.city);
  472.                 strcpy(contacts[pass+1].adrs.city,temp[pass].adrs.city);
  473.                 strcpy(temp[pass].adrs.flat_no,contacts[pass].adrs.flat_no);
  474.                 strcpy(contacts[pass].adrs.flat_no,contacts[pass+1].adrs.flat_no);
  475.                 strcpy(contacts[pass+1].adrs.flat_no,temp[pass].adrs.flat_no);
  476.                 strcpy(temp[pass].adrs.zipcode,contacts[pass].adrs.zipcode);
  477.                 strcpy(contacts[pass].adrs.zipcode,contacts[pass+1].adrs.zipcode);
  478.                 strcpy(contacts[pass+1].adrs.zipcode,temp[pass].adrs.zipcode);
  479.                 strcpy(temp[pass].email,contacts[pass].email);
  480.                 strcpy(contacts[pass].email,contacts[pass+1].email);
  481.                 strcpy(contacts[pass+1].email,temp[pass].email);
  482.                 strcpy(temp[pass].num.home_num,contacts[pass].num.home_num);
  483.                 strcpy(contacts[pass].num.home_num,contacts[pass+1].num.home_num);
  484.                 strcpy(contacts[pass+1].num.home_num,temp[pass].num.home_num);
  485.                 strcpy(temp[pass].num.mobile_num,contacts[pass].num.mobile_num);
  486.                 strcpy(contacts[pass].num.mobile_num,contacts[pass+1].num.mobile_num);
  487.                 strcpy(contacts[pass+1].num.mobile_num,temp[pass].num.mobile_num);
  488.  
  489.             }
  490.  
  491.         }
  492.     }
  493.  
  494.     for(i=0; i<location; i++)
  495.         display(i);
  496. }
  497. void save()
  498. {
  499.     int i;
  500.     char line[300];
  501.     FILE *f;
  502.     f=fopen("contact.txt","w");
  503.     for(i=0; i<location; i++)
  504.     {
  505.         fprintf(f,"%s",contacts[i].first_name);
  506.         fprintf(f,",%s",contacts[i].last_name);
  507.         fprintf(f,",%s",contacts[i].adrs.street);
  508.         fprintf(f,",%s",contacts[i].adrs.flat_no);
  509.         fprintf(f,",%s",contacts[i].adrs.city);
  510.         fprintf(f,",%s",contacts[i].adrs.zipcode);
  511.         fprintf(f,",%s",contacts[i].email);
  512.         fprintf(f,",%s",contacts[i].num.mobile_num);
  513.         fprintf(f,",%s\n",contacts[i].num.home_num);
  514.     }
  515.     printf("SAVED!");
  516.     fclose(f);
  517. }
  518.  
  519. void Quit()
  520.  
  521. {
  522.     char A[3];
  523.     char a2[3];
  524.     int i;
  525.     printf("All your changes will be discarded!\n do you want to save? yes or no?\n");
  526.  
  527.     //for(i=0; i<3; i++)
  528.     //{
  529.  
  530.         scanf("%s",A);
  531.         if(strcmp(A,"yes")==0)
  532.         {
  533.  
  534.             save();
  535.             exit(0);
  536.         }
  537.         else
  538.         {
  539.             printf("do you want to exit?");
  540.             scanf("%s",a2);
  541.             if(strcmp(a2,"yes")==0)
  542.  
  543.                 exit(0);
  544.             else
  545.                 return 0;
  546.         }
  547.     //}
  548. }
  549. void show_all()
  550. {
  551.     int i;
  552.     for(i=0;i<location;i++)
  553.     {
  554.         printf("%s - %s\n",contacts[i].first_name,contacts[i].last_name);
  555.     printf("%s - %s - %s - %s\n",contacts[i].adrs.street,contacts[i].adrs.flat_no,contacts[i].adrs.city,contacts[i].adrs.zipcode);
  556.     printf("%s - %s - %s\n\n",contacts[i].email,contacts[i].num.mobile_num,contacts[i].num.home_num);
  557.  
  558.     }
  559. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement