Advertisement
yoyo106

23/12/2018

Dec 22nd, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.22 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. FILE *fw,*fr;
  5. int position=0;
  6. int arr[10]; //array for results of search
  7. int i=0;
  8. char c;
  9. int n;
  10. int count=0;
  11. typedef struct birth //defining birthday date
  12. {
  13.     int day;
  14.     int month;
  15.     int year;
  16. }birth;
  17. birth readbirthday() //function for reading birthday from file (used in readcontact() function)
  18. {
  19.     birth birthday;
  20.     fscanf(fr,",%d",&birthday.day);
  21.     fscanf(fr,"/%d",&birthday.month);
  22.     fscanf(fr,"/%d",&birthday.year);
  23.     return birthday;
  24. }
  25.  
  26. typedef struct contact //defining contacts and its fields
  27. {
  28.     char firstname[20];
  29.     char lastname[20];
  30.     birth birthday;
  31.     char address[50];
  32.     char email[50];
  33.     int phonenumber;
  34. }contact;
  35. contact contacts[100];
  36. void loadcontacts()
  37. {
  38.     FILE * fr = fopen("book.txt","r");
  39.     fseek(fr,position,0);
  40.     fscanf(fr,"%[^,]",contacts[i].firstname);
  41.     fscanf(fr,",%[^,]",contacts[i].lastname);
  42.     fscanf(fr,",%d",&contacts[i].birthday.day);
  43.     fscanf(fr,"/%d",&contacts[i].birthday.month);
  44.     fscanf(fr,"/%d",&contacts[i].birthday.year);
  45.     fscanf(fr,",%[^,]",contacts[i].address);
  46.     fscanf(fr,",%[^,]",contacts[i].email);
  47.     fscanf(fr,",%d\n",&contacts[i].phonenumber);
  48.     position = ftell(fr);
  49.     fclose(fr);
  50. }
  51. int count_contacts()
  52. {
  53.     int x = 0;  // x is a local counter
  54.     fr = fopen("book.txt","r");
  55.     while(!feof(fr))
  56.     {
  57.         if((c=fgetc(fr))=='\n')
  58.             x++;
  59.     }
  60.     fclose(fr);
  61.     return x;
  62. }
  63. void printcontact(contact contacts)
  64. {
  65.     printf("\nFirst name is: %s\n",contacts.firstname);
  66.     printf("Last name is: %s\n",contacts.lastname);
  67.     printf("Birthday: %d/%d/%d\n",contacts.birthday.day,contacts.birthday.month,contacts.birthday.year);
  68.     printf("Address: %s\n", contacts.address);
  69.     printf("E-mail: %s\n",contacts.email);
  70.     printf("Phone number: 0%d\n",contacts.phonenumber);
  71.  
  72. }
  73. void add_contact()
  74. {
  75.     printf("Enter the contact's first name\t:");
  76.     scanf("%s",contacts[count].firstname);
  77.     printf("Enter the contact's last name\t:");
  78.     scanf("%s",contacts[count].lastname);
  79.     printf("Enter the birth date\n");
  80.     printf("enter the day:\t");
  81.     scanf("%d",&contacts[count].birthday.day);
  82.     printf("enter the month\t:");
  83.     scanf("%d",&contacts[count].birthday.month);
  84.     printf("enter the year\t:");
  85.     scanf("%d",&contacts[count].birthday.year);
  86.     printf("Enter the address: ");
  87.     scanf(" %199[^\n]",contacts[count].address);
  88.     printf("Enter the E-mail: ");
  89.     scanf("%s",contacts[count].email);
  90.     printf("Enter phone number\t:");
  91.     scanf("%d",&contacts[count].phonenumber);
  92.     count++;
  93. }
  94. void save()
  95. {
  96.     fw = fopen("book.txt","w");
  97.     int x;
  98.     for (x=0;x<count;x++)
  99.     {
  100.     fprintf(fw,"%s,",contacts[x].firstname);
  101.     fprintf(fw,"%s,",contacts[x].lastname);
  102.     fprintf(fw,"%d/",contacts[x].birthday.day);
  103.     fprintf(fw,"%d/",contacts[x].birthday.month);
  104.     fprintf(fw,"%d,",contacts[x].birthday.year);
  105.     fprintf(fw,"%s,",contacts[x].address);
  106.     fprintf(fw,"%s,",contacts[x].email);
  107.     fprintf(fw,"%d\n",contacts[x].phonenumber);
  108.     }
  109.  
  110.     fclose(fw);
  111. }
  112. int* searchlastname()
  113. {
  114.     int x,j=0;
  115.     char key[30];
  116.     int *p=arr;
  117.  
  118.     printf("Enter the search key: ");
  119.     scanf("%s",key);
  120.     for(x=0;x<count;x++)
  121.     {
  122.         if(substring(contacts[x].lastname,key)==1)
  123.            {
  124.                 *(p+j)=x;
  125.                 j++;
  126.                 n=j;
  127.            }
  128.     }
  129.     if(j==0)
  130.         {
  131.             printf("Search not found\n");
  132.             printf("Do you want to search again? (Yes or No)");
  133.             char confirm [5];
  134.             scanf("%s", confirm);
  135.             if (confirm=="yes"||confirm=="Yes")
  136.                 searchlastname();
  137.             else
  138.             display_menu();
  139.         }
  140.     if(j!=0)
  141.     {   //for(j=0;j<n;j++)
  142.         //printcontact(contacts[arr[j]]);
  143.         return p;
  144.     }
  145. }
  146. int* searchfirstname()
  147. {
  148.     int x,j=0;
  149.     char key[30];
  150.     int *p=arr;
  151.  
  152.     printf("Enter the search key: ");
  153.     scanf("%s",key);
  154.     for(x=0;x<count;x++)
  155.     {
  156.         if(substring(contacts[x].firstname,key)==1)
  157.            {
  158.                 *(p+j)=x;
  159.                 j++;
  160.                 n=j;
  161.            }
  162.     }
  163.     if(j==0)
  164.         {
  165.             printf("Search not found\n");
  166.             printf("Do you want to search again? (Yes or No)");
  167.             char confirm [5];
  168.             scanf("%s", confirm);
  169.             if (confirm=="yes"||confirm=="Yes")
  170.                 searchfirstname();
  171.             else
  172.             display_menu();
  173.         }
  174.     if(j!=0)
  175.     {   //for(j=0;j<n;j++)
  176.         //printcontact(contacts[arr[j]]);
  177.         return p;
  178.     }
  179. }
  180. int* searchphonenumber()
  181. {
  182.     int x,j=0;
  183.     char key[30];
  184.     int *p=arr;
  185.  
  186.     printf("Enter the search key: ");
  187.     scanf("%s",key);
  188.     for(x=0;x<count;x++)
  189.     {
  190.         if(substring((char)contacts[x].phonenumber,key)==1)
  191.            {
  192.                 *(p+j)=x;
  193.                 j++;
  194.                 n=j;
  195.            }
  196.     }
  197.     if(j==0)
  198.         {
  199.             printf("Search not found\n");
  200.             printf("Do you want to search again? (Yes or No)");
  201.             char confirm [5];
  202.             scanf("%s", confirm);
  203.             if (confirm=="yes"||confirm=="Yes")
  204.                 searchphonenumber();
  205.             else
  206.             display_menu();
  207.         }
  208.     if(j!=0)
  209.     {   //for(j=0;j<n;j++)
  210.         //printcontact(contacts[arr[j]]);
  211.         return p;
  212.     }
  213. }
  214. int substring(char name[],char key[])
  215. {
  216.     int x,j,flag;
  217.     if(strlen(key)>strlen(name)){
  218.         flag = 0;
  219.         return flag;
  220.     }
  221.     for(x=0;x<=strlen(name)-strlen(key);x++)
  222.     {
  223.  
  224.         for(j=0;j<strlen(key);j++)
  225.         {
  226.  
  227.             flag = 1;
  228.         if(key[j] != name[j+x])
  229.         {
  230.             flag = 0;
  231.             break;
  232.         }
  233.  
  234.         }
  235.         if (flag ==1)
  236.             break;
  237.  
  238.  
  239.  
  240.     }
  241.     return flag;
  242. }
  243. void search_menu()
  244. {
  245.     printf("Search by: \n1 - First name.\n2 - Last name.\n3 - Phone number.");
  246.     int y;
  247.     scanf("%d",&y);
  248.     switch (y)
  249.     {
  250.         case (1): searchfirstname(); break;
  251.         case (2): searchlastname(); break;
  252.         case (3): searchphonenumber(); break;
  253.         default: printf("Invalid input!");search_menu();break;
  254.     }
  255. }
  256. void quit()
  257. {
  258.     printf("Are you sure you want to exit?: (Yes or No)");
  259.     char confirm [10];
  260.     scanf("%s", &confirm);
  261.     if (confirm=="yes"||confirm=="Yes")
  262.         exit(0);
  263.     else
  264.         {
  265.             display_menu();
  266.             switch_function();
  267.         }
  268. }
  269. void display_menu()
  270. {
  271.     printf("***********\n*Phonebook*\n***********\n\nChoose an option:\n1-Add contact\n2-Delete\n3-Modify\n4-Search\n5-Print\n6-Save\n7-Quit\n");
  272. }
  273. void switch_function()
  274. {
  275.     int x; //action
  276.     printf("Please choose a number: ");
  277.     scanf("%d",&x);
  278.     switch (x)
  279.     {
  280.         case(1): add_contact();break;
  281.         case(2): printf("add");break;
  282.         case(3): printf("add");break;
  283.         case(4): search_menu();break;
  284.         case(5): printf("add");break;
  285.         case(6): save();break;
  286.         case(7): quit();break;
  287.         default: printf("Invalid input!");switch_function();//break;
  288.     }
  289. }
  290. int main ()
  291. {
  292.     count = count_contacts();
  293.     return 0;
  294. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement