Sreekar_0125

Untitled

Sep 4th, 2022
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.05 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. struct node
  5. {
  6.     char number[50];
  7.     char gmail[40];
  8.     char name[30];
  9.     struct node *prev, *next;
  10. } *head = NULL;
  11.  
  12. void insert()
  13. {
  14.     char number[10];
  15.     char gmail[100];
  16.     char name[100];
  17.     char ans;
  18.     do
  19.     {
  20.         struct node *p;
  21.         p = (struct node *)malloc(sizeof(struct node));
  22.         printf("Enter The Name of The Contact: ");
  23.         fgets(name, 100, stdin);
  24.         fflush(stdin);
  25.         strcpy(p->name, name);
  26.         printf("Enter The Phone Number    :\t");
  27.         fgets(number, 10, stdin);
  28.         fflush(stdin);
  29.         strcpy(p->number, number);
  30.         while (strlen(number) != 9)
  31.         {
  32.             printf("ENTER A VALID 10 DIGIT NUMBER  :\t");
  33.             fgets(number, 10, stdin);
  34.         }
  35.         printf("Enter The G-Mail ID  :\t");
  36.         fgets(gmail, 100, stdin);
  37.         strcpy(p->gmail, gmail);
  38.         fflush(stdin);
  39.  
  40.         if (head == NULL)
  41.         {
  42.             p->next = NULL;
  43.             p->prev = NULL;
  44.             head = p;
  45.         }
  46.         else
  47.         {
  48.             struct node *tmp = head;
  49.             while (tmp->next != NULL)
  50.             {
  51.                 tmp = tmp->next;
  52.             }
  53.             p->next = NULL;
  54.             p->prev = tmp;
  55.             tmp->next = p;
  56.         }
  57.         printf("DO YOU WANT TO CONTINUE?????????\n");
  58.         scanf("%c", &ans);
  59.         fflush(stdin);
  60.     } while (ans == 'y');
  61. }
  62. void display()
  63. {
  64.     struct node *tmp = head;
  65.     while (tmp != NULL)
  66.     {
  67.         printf("\nNAME  ::  %s", tmp->name);
  68.         printf("\nNUMBER::  +91-%s", tmp->number);
  69.         printf("\nG-MAIL::  %s", tmp->gmail);
  70.         tmp = tmp->next;
  71.     }
  72. }
  73. void sort()
  74. {
  75.     struct node *i, *j;
  76.     int temp;
  77.     char a[100], b[100], c[100];
  78.     for (i = head; i->next != NULL; i = i->next)
  79.     {
  80.         for (j = i->next; j != NULL; j = j->next)
  81.         {
  82.             temp = strcmp(i->name, j->name);
  83.             if (temp > 0)
  84.             {
  85.                 strcpy(a, i->name);
  86.                 strcpy(i->name, j->name);
  87.                 strcpy(j->name, a);
  88.                 strcpy(b, i->number);
  89.                 strcpy(i->number, j->number);
  90.                 strcpy(j->number, b);
  91.                 strcpy(c, i->gmail);
  92.                 strcpy(i->gmail, j->gmail);
  93.                 strcpy(j->gmail, c);
  94.             }
  95.         }
  96.     }
  97. }
  98. void deletecontact(char *s)
  99. {
  100.     int c = 0;
  101.     struct node *tmp = head;
  102.     while (tmp != NULL)
  103.     {
  104.         if (strcmp(s, tmp->name) == 0)
  105.         {
  106.             c = 1;
  107.             break;
  108.         }
  109.         else
  110.         {
  111.             c = 2;
  112.         }
  113.         tmp = tmp->next;
  114.     }
  115.     if (c == 1 && tmp != head && tmp->next != NULL)
  116.     {
  117.         tmp->prev->next = tmp->next;
  118.         tmp->next->prev = tmp->prev;
  119.         free(tmp);
  120.         printf("YOUR CONTACT IS SUCCESSFULLY DELETED\n\n");
  121.     }
  122.     if (tmp == head)
  123.     {
  124.         head = head->next;
  125.         head->prev = NULL;
  126.         free(tmp);
  127.         printf("YOUR CONTACT IS SUCCESSFULLY DELETED\n\n");
  128.     }
  129.     if (tmp->next == NULL)
  130.     {
  131.         tmp->prev->next = NULL;
  132.         tmp->prev = NULL;
  133.         free(tmp);
  134.         printf("YOUR CONTACT IS SUCCESSFULLY DELETED\n\n");
  135.     }
  136.     if (c == 2)
  137.     {
  138.         printf("YOUR ENTERED NAME IS NOT IN THE LIST\n");
  139.     }
  140. }
  141. void deletesamename()
  142. {
  143.     struct node *tmp1 = head;
  144.     while (tmp1 != NULL && tmp1->next != NULL)
  145.     {
  146.         struct node *tmp2 = tmp1;
  147.         while (tmp2->next != NULL)
  148.         {
  149.             if (strcmp(tmp1->name, tmp2->next->name) == 0)
  150.             {
  151.                 struct node *dup = tmp2->next;
  152.                 tmp2->next = tmp2->next->next;
  153.                 free(dup);
  154.             }
  155.             else
  156.             {
  157.                 tmp2 = tmp2->next;
  158.             }
  159.         }
  160.         tmp1 = tmp1->next;
  161.     }
  162. }
  163. void deletesamegmail()
  164. {
  165.     struct node *tmp1 = head;
  166.     while (tmp1 != NULL && tmp1->next != NULL)
  167.     {
  168.         struct node *tmp2 = tmp1;
  169.         while (tmp2->next != NULL)
  170.         {
  171.             if (strcmp(tmp1->gmail, tmp2->next->gmail) == 0)
  172.             {
  173.                 struct node *dup = tmp2->next;
  174.                 tmp2->next = tmp2->next->next;
  175.                 free(dup);
  176.             }
  177.             else
  178.             {
  179.                 tmp2 = tmp2->next;
  180.             }
  181.         }
  182.         tmp1 = tmp1->next;
  183.     }
  184. }
  185. void deletesamenumber()
  186. {
  187.     struct node *tmp1 = head;
  188.     while (tmp1 != NULL && tmp1->next != NULL)
  189.     {
  190.         struct node *tmp2 = tmp1;
  191.         while (tmp2->next != NULL)
  192.         {
  193.             if (strcmp(tmp1->number, tmp2->number) == 0)
  194.             {
  195.                 struct node *dup = tmp2->next;
  196.                 tmp2->next = tmp2->next->next;
  197.                 free(dup);
  198.             }
  199.             else
  200.             {
  201.                 tmp2 = tmp2->next;
  202.             }
  203.         }
  204.         tmp1 = tmp1->next;
  205.     }
  206. }
  207. void searchbyname(char *na)
  208. {
  209.     struct node *tmp = head;
  210.     while (tmp != NULL)
  211.     {
  212.         if (strcmp(na, tmp->name) == 0)
  213.         {
  214.             printf("NAME FOUND\n");
  215.             printf("CONTACT DETAILS ARE BELOW:\n");
  216.             printf("\n\nNAME  ::\t%s", tmp->name);
  217.             printf("\nNUMBER::\t+91-%s", tmp->number);
  218.             printf("\nG-MAIL::\t%s", tmp->gmail);
  219.         }
  220.         tmp = tmp->next;
  221.     }
  222. }
  223. void searchbynumber(char *num)
  224. {
  225.     struct node *tmp = head;
  226.     while (tmp != NULL)
  227.     {
  228.         if (strcmp(num, tmp->number) == 0)
  229.         {
  230.             printf("NUMBER FOUND\n");
  231.             printf("CONTACT DETAILS ARE BELOW:\n");
  232.             printf("\n\nNAME  ::\t%s", tmp->name);
  233.             printf("\nNUMBER::\t+91-%s", tmp->number);
  234.             printf("\nG-MAIL::\t%s", tmp->gmail);
  235.         }
  236.         tmp = tmp->next;
  237.     }
  238. }
  239. void searchbygmail(char *gm)
  240. {
  241.     struct node *tmp = head;
  242.     while (tmp != NULL)
  243.     {
  244.         if (strcmp(gm, tmp->gmail) == 0)
  245.         {
  246.             printf("G-MAIL FOUND\n");
  247.             printf("CONTACT DETAILS ARE BELOW:\n");
  248.             printf("\n\nNAME  ::\t%s", tmp->name);
  249.             printf("\nNUMBER::\t+91-%s", tmp->number);
  250.             printf("\nG-MAIL::\t%s", tmp->gmail);
  251.         }
  252.         tmp = tmp->next;
  253.     }
  254. }
  255. int main()
  256. {
  257.     char n[100];
  258.     char nam[100];
  259.     char name[100];
  260.     char number[100];
  261.     char gmail[100];
  262.     char ans;
  263.     int ch, a;
  264.     printf("**************                                PHONE BOOK                          ********************\n");
  265.     printf("\n\nWHAT IS YOUR NAME?\n");
  266.     fgets(name, 100, stdin);
  267.     printf("\n\n!!!!!!!!!!!!!!!!!!!!!!!   Welcome  !!!!!!!!!!!!!!!!!!!!!!! \n");
  268.     printf("\n\n\nLET'S CREATE OUR PHONEBOOK \n\n");
  269.     insert();
  270.     sort();
  271.     fflush(stdin);
  272.     while (1)
  273.     {
  274.         printf("\n\n\n\n1) DISPLAY YOUR PHONE BOOK\n2) INSERT NEW CONTACT\n3) UPDATE DETAILS ON EXISTING CONTACT\n4) DELETE CONTACT\n5) DELETE SAME NAME IN PHONEBOOK\n6) DELETE SAME NUMBERS IN PHONEBOOK\n7) SEARCH\n");
  275.         scanf("%d", &ch);
  276.         fflush(stdin);
  277.         switch (ch)
  278.         {
  279.         case 1:
  280.             display();
  281.             break;
  282.  
  283.         case 2:
  284.             insert();
  285.             sort();
  286.             break;
  287.  
  288.         case 4:
  289.             printf("\nENTER THE NAME YOU WANT TO DELETE FROM PHONEBOOK\n");
  290.             fgets(name, 100, stdin);
  291.             deletecontact(name);
  292.             fflush(stdin);
  293.             break;
  294.  
  295.         case 5:
  296.             deletesamename();
  297.             display();
  298.             break;
  299.  
  300.         case 6:
  301.             deletesamenumber();
  302.             display();
  303.             break;
  304.         case 7:
  305.             do
  306.             {
  307.                 printf("1.SEARCH BY NAME\n2.SEARCH BY NUMBER\n3.SEARCH BY GMAIL\n");
  308.                 scanf("%d", &a);
  309.                 fflush(stdin);
  310.                 switch (a)
  311.                 {
  312.                 case 1:
  313.                     printf("\nENTER THE NAME TO BE SEARCHED\n");
  314.                     fgets(name, 100, stdin);
  315.                     fflush(stdin);
  316.                     searchbyname(name);
  317.                     break;
  318.                 case 2:
  319.                     printf("ENTER THE NUMBER TO BE SEARCHED\n");
  320.                     fgets(number, 100, stdin);
  321.                     fflush(stdin);
  322.                     searchbynumber(number);
  323.                     break;
  324.                 case 3:
  325.                     printf("ENTER THE GMAIL ID TO BE SEARCHED\n");
  326.                     fgets(gmail, 100, stdin);
  327.                     fflush(stdin);
  328.                     searchbygmail(gmail);
  329.                     break;
  330.                 default:
  331.                     printf("\nNO PROPER INPUT GIVEN.....\n");
  332.                 }
  333.                 printf("DO YOU WANT TO CONTINUE SEARCHING?????????");
  334.                 scanf("%c", &ans);
  335.                 fflush(stdin);
  336.             } while (ans == 'y');
  337.  
  338.             break;
  339.         }
  340.  
  341.         printf("\n\nDO YOU WANT TO CONTINUE OPERATIONS?????????\n");
  342.         scanf("%c", &ans);
  343.         if (ans != 'y')
  344.             break;
  345.         fflush(stdin);
  346.     }
  347. }
Advertisement
Add Comment
Please, Sign In to add comment