A Simple Database Using Linked List

A Simple Database Using Linked List :-
___________________________________________________________________________________________________________________
#include<stdio.h>
#include<conio.h>
#include<string.h>
struct table
 {
  char name[50];
  char add[50];
  int age;
  int salary;
  struct table *next;
 };
struct table *head;
void insert();
void sort();
void create();
void dis();
void search();
void del();
void main()
 {
  int i,choice;
  clrscr();
  head=NULL;
  printf("\n\n\n\n\n\n\n\n\n\n\n\n\n");
  for(i=0;i<80;i++)
   {
     printf("-");
   }
  printf("\n\n\n\n\t\t           WELCOME TO YOUR DATABASE\n\n\n\n");
  for(i=0;i<80;i++)
   {
     printf("-");
   }
  printf("\n\n\t\t\tEnter any key to continue......\n");
  getch();
  clrscr();
  printf("\n\n\n\n");
  while(1)
   {
    clrscr();
   for(i=0;i<80;i++)
   {
    printf("-");
   }
  printf("\n\n\n\n\n\t\t\t1-for create list\n\n");
  printf("\t\t\t2-for sort list\n\n");
  printf("\t\t\t3-search data item\n\n");
  printf("\t\t\t4-insert item\n\n");
  printf("\t\t\t5-delete item\n\n");
  printf("\t\t\t6-display list\n\n");
  printf("\t\t\t7-exit program\n\n\n\n\n");
  for(i=0;i<80;i++)
   {
    printf("-");
   }

  printf("\n\n\n\n\t\t\tenter your choice\n\t\t\t");
  scanf("%d",&choice);
  switch(choice)
   {
    case 1:
     clrscr();
     create();
     dis();
     break;
    case 2:
     //create();
     printf("before sorting\n\n\n");
     fflush(stdin);
     dis();
     fflush(stdin);
     sort();
     printf("\nafter sorting\n\n\n");
     fflush(stdin);
     dis();
     break;
    case 3:
     //create();
     dis();
     search();
     break;
    case 4:
     insert();
     //sort();
     dis();
     break;
    case 5:
     del();
     dis();
     break;
    case 6:
     dis();
     break;
    case 7:
     exit();
   default:
    printf("\n\n\t\t\twrong choice\n");
    getch();
    exit();
   }
  getch();
 }
}
void sort()
 {
  int choice,i,j,temp1,temp2,c=0;
  char s[50],q[50];
  struct table *p;
  p=head;
  while(p!=NULL)
   {
    c++;
    p=p->next;
   }
//  printf("c=%d",c);
  getch();
  clrscr();
 // do
  //{
  for(i=0;i<80;i++)
   printf("-");
  printf("\n\n\n\t\t\tpress 1-sort by age\n");
  printf("\t\t\tpress 2-sort by name\n");
  printf("\t\t\tpress 3-sort by add\n");
  printf("\t\t\tpress 4-sort by salary\n\n\n");

  for(i=0;i<80;i++)
   printf("-");

  printf("\n\n\n\t\t\tenter choice\n\t\t\t");
  fflush(stdin);
  scanf("%d",&choice);
  fflush(stdin);
  switch(choice)
   {

   case 1:
     for(i=1;i<=c;i++)
      {
       p=head;
       for(j=1;j<=c-i;j++)
    {
    if(p->next->age<p->age)
     {
      strcpy(s,p->next->name);
      strcpy(q,p->next->add);
      temp1=p->next->age;
      temp2=p->next->salary;
      strcpy(p->next->name,p->name);
      strcpy(p->next->add,p->add);
      p->next->age=p->age;
      p->next->salary=p->salary;
      strcpy(p->name,s);
      strcpy(p->add,q);
      p->age=temp1;
      p->salary=temp2;
     }
    p=p->next;
       }
    }
   break;
 case 2:
      //c=1;
      for(i=1;i<c;i++)
      {
       p=head;
       for(j=1;j<=c-i;j++)
    {
    if((strcmp(p->next->name,p->name))<=0)
     {
      strcpy(s,p->next->name);
      strcpy(q,p->next->add);
      temp1=p->next->age;
      temp2=p->next->salary;
      strcpy(p->next->name,p->name);
      strcpy(p->next->add,p->add);
      p->next->age=p->age;
      p->next->salary=p->salary;
      strcpy(p->name,s);
      strcpy(p->add,q);
      p->age=temp1;
      p->salary=temp2;
     }
    p=p->next;
       }
     }
      break;
  case 3:
     for(i=1;i<c;i++)
      {
       p=head;
       for(j=1;j<=c-i;j++)
    {
    if((strcmp(p->next->add,p->add))<0)
     {
      strcpy(s,p->next->name);
      strcpy(q,p->next->add);
      temp1=p->next->age;
      temp2=p->next->salary;
      strcpy(p->next->name,p->name);
      strcpy(p->next->add,p->add);
      p->next->age=p->age;
      p->next->salary=p->salary;
      strcpy(p->name,s);
      strcpy(p->add,q);
      p->age=temp1;
      p->salary=temp2;
     }
       p=p->next;
      }
    }
    break;
 case 4:
     {
      for(i=1;i<c;i++)
      {
       p=head;
       for(j=1;j<=c-i;j++)
    {
    if(p->next->salary<p->salary)
     {
      strcpy(s,p->next->name);
      strcpy(q,p->next->add);
      temp1=p->next->age;
      temp2=p->next->salary;
      strcpy(p->next->name,p->name);
      strcpy(p->next->add,p->add);
      p->next->age=p->age;
      p->next->salary=p->salary;
      strcpy(p->name,s);
      strcpy(p->add,q);
      p->age=temp1;
      p->salary=temp2;
     }
    p=p->next;
       }
      }
    }
    break;
    }
 }
void create()
 {
  FILE *j;
  struct table *k,*l;
  char ch;
  char p[50],q[50];
  int a,b,i;
    getch();
    clrscr();
    k=(struct table *)malloc(sizeof(struct table));
    head=k;
    for(i=0;i<80;i++)
    {
     printf("-");
    }
    printf("\n\n\t\t\tenter name\n\t\t\t");
    fflush(stdin);
    gets(p);
    printf("\n\t\t\tenter address\n\t\t\t");
    fflush(stdin);
    gets(q);
    printf("\n\t\t\tenter age\n\t\t\t");
    scanf("%d",&a);
    printf("\n\t\t\tenter salary\n\t\t\t");
    scanf("%d",&b);
    strcpy(k->name,p);
    strcpy(k->add,q);
    k->age=a;
    k->salary=b;
    k->next=NULL;

  do
   {
    clrscr();
    for(i=0;i<80;i++)
     {
      printf("-");
     }
    l= (struct table *)malloc(sizeof(struct table));
    k->next=l;
    k=l;
    printf("\n\t\t\tenter name\n\t\t\t");
    fflush(stdin);
    gets(p);
    printf("\n\t\t\tenter address\n\t\t\t");
    fflush(stdin);
    gets(q);
    printf("\n\t\t\tenter age\n\t\t\t");
    scanf("%d",&a);
    printf("\n\t\t\tenter salary\n\t\t\t");
    scanf("%d",&b);
    strcpy(l->name,p);
    strcpy(l->add,q);
    l->age=a;
    l->salary=b;
    l->next=NULL;
    printf("\n\n\t\t\tenter choice (y/n)\n\t\t\t");
    fflush(stdin);
    scanf("%c",&ch);
    }while (ch!='n');
  }
  void search()
   {
    char na[10];
    int i,c=0,ag,j,choice;
    struct table *l,*p,*q;
    getch();
    clrscr();
    p=head;
    while(p!=NULL)
     {
      c++;
      p=p->next;
     }
    l=(struct table *)malloc(sizeof(struct table));
    l->next=NULL;
    p->next=l;

    for(i=0;i<80;i++)
    {
     printf("-");
    }
    printf("\n\n\t\t\t1-search by name\n");
    printf("\t\t\t2-search by address\n");
    printf("\t\t\t3-search by age\n");
    printf("\t\t\t4-search by salary\n\n");
    for(i=0;i<80;i++)
     {
      printf("-");
     }
    printf("\n\n\tenter your choice\n\n\t");
    fflush(stdin);
    scanf("%d",&choice);
    switch(choice)
     {
      case 1:
      printf("\n\n\n\n");
      for(i=0;i<80;i++)
       {
     printf("-");
       }
      printf("\n\n\tenter the name u want to serach\n\n\n\t");
      fflush(stdin);
      gets(na);
      p=head;
      printf("\tsearch complete data found \n\n\n");
      while(p->next!=NULL)
       {
    if((strcmp(p->name,na))==0)
     {

       printf("\t%s\t%s\t%d\t%d\n\n",p->name,p->add,p->age,p->salary);
     }
    p=p->next;
    j++;
       }
    if(p==NULL)
     {
      getch();
      clrscr();
      printf("serach complete data not found\n");
     }
    break;
   case 2:
      printf("\n\n\n\n");
      for(i=0;i<80;i++)
       {
     printf("-");
       }
      printf("\n\n\tenter the address u want to serach\n\n\n\t");
      fflush(stdin);
      gets(na);
      p=head;

      printf("\tsearch complete data found \n\n\n");
      while(p->next!=NULL)
       {
    if((strcmp(p->add,na))==0)
     {

       printf("\t%s\t%s\t%d\t%d\n\n",p->name,p->add,p->age,p->salary);
       }
    p=p->next;
       }
    if(p==NULL)
     {
      getch();
      clrscr();
      printf("\n\n\n\n\t\tserach complete data not found\n");
     }
    break;
    case 3:
     printf("\n\n\n\n");
      for(i=0;i<80;i++)
       {
     printf("-");
       }
      printf("\n\n\tenter the age u want to serach\n\n\n\t");
      fflush(stdin);
      scanf("%d",&ag);
      p=head;
      printf("\tsearch complete data found \n\n\n");
      while(p->next!=NULL)
       {
    if(p->age==ag)
     {

       printf("\t%s\t%s\t%d\t%d\n\n",p->name,p->add,p->age,p->salary);
     }
    p=p->next;
       }
    if(p==NULL)
     {
      getch();
      clrscr();
      printf("serach complete data not found\n");
     }
    break;
   case 4:
    printf("\n\n\n\n");
      for(i=0;i<80;i++)
       {
     printf("-");
       }
      printf("\n\n\tenter the salary u want to serach\n\n\n\t");
      fflush(stdin);
      scanf("%d",&ag);
      p=head;
      while(p->next!=NULL)
       {
    if(p->salary==ag)
     {
       printf("\t\n\nsearch complete data found \n\n\n");
       printf("\t%s\t%s\t%d\t%d\n\n\n",p->name,p->add,p->age,p->salary);
       break;
     }
    p=p->next;
       }
      if(p==NULL)
     {
      getch();
      clrscr();
      printf("serach complete data not found\n");
     }
        break;
   }
  p=head;
  while(p!=NULL)
     {
      q=p;
      p=p->next;
     }
   q->next=NULL;
   free(p);
  }
  void dis()
   {
    struct table *q;
    int i;
    clrscr();
    printf("\t\t\tNAME\tADDRESS\tAGE\tSALRY\n\n");
    printf("\n\n");
    for(i=0;i<80;i++)
     {
      printf("-");
     }
    q=head;
    while(q!=NULL)
     {
      printf("\n\n\t\t\t%s\t%s\t%d\t%d\n",q->name,q->add,q->age,q->salary);
      q=q->next;
     }
    printf("\n\n");
    for(i=0;i<80;i++)
     {
      printf("-");
     }
     getch();
    }
  void insert()
   {
    int c=0,i,l,j,temp1,temp2;
    char s[50],p[50],q[50];
    struct table  *ph,*m,*t;
    clrscr();
    for(i=0;i<80;i++)
     {
      printf("-");
     }
    printf("\n\n\n\n\t\t\tenter name\n\t\t\t");
    fflush(stdin);
    gets(p);
    printf("\n\n\n\n\t\t\tenter add\n\t\t\t");
    fflush(stdin);
    gets(q);
    printf("\n\n\n\n\t\t\tenter age\n\t\t\t");
    fflush(stdin);
    scanf("%d",&l);
    printf("\n\n\n\n\t\t\tenter salary\n\t\t\t");
    fflush(stdin);
    scanf("%d",&j);
    m=(struct table *)malloc (sizeof(struct table));
    m->next=NULL;
    strcpy(m->name,p);
    strcpy(m->add,q);
    m->age=l;
    m->salary=j;

    t=head;
    while(t->next!=NULL)
     {
      t=t->next;
     }
    t->next=m;
  t=head;
  while(t!=NULL)
   {
    c++;
    t=t->next;
   }
   for(i=1;i<c;i++)
      {
       ph=head;
       for(j=1;j<=c-i;j++)
    {
    if((strcmp(ph->next->name,ph->name))<=0)
     {
      strcpy(s,ph->next->name);
      strcpy(q,ph->next->add);
      temp1=ph->next->age;
      temp2=ph->next->salary;
      strcpy(ph->next->name,ph->name);
      strcpy(ph->next->add,ph->add);
      ph->next->age=ph->age;
      ph->next->salary=ph->salary;
      strcpy(ph->name,s);
      strcpy(ph->add,q);
      ph->age=temp1;
      ph->salary=temp2;
     }
    ph=ph->next;
       }
     }
  }
  void del()
   {
      int i,choice,gh;
      char n[50];
      struct table *p,*q;
      clrscr();
      for(i=0;i<80;i++)
       printf("-");
      printf("\n\n\n\t\t\t1-del by name\n");
      printf("\n\t\t\t2-del by add\n");
      printf("\n\t\t\t3-del by age\n");
      printf("\n\t\t\t4-del by salary\n\n\n");
      for(i=0;i<80;i++)
       printf("-");
      printf("\n\t\t\tEnter your choice\n\t\t\t");
      fflush(stdin);
      scanf("%d",&choice);
      switch(choice)
       {
    case 1:
     for(i=0;i<80;i++)
      printf("-");
     printf("\n\n\n\t\t\tenter name to delete\n\t\t\t");
     fflush(stdin);
     gets(n);
     p=head;
     if((p==head)&&(strcmp(p->name,n)==0))
      {
       head=p->next;
       free(p);
      }
     else
     {
     while(p!=NULL)
      {
       if(strcmp(p->name,n)==0)
        {
          break;
        }
        q=p;
        p=p->next;
      }
      q->next=p->next;
      free(p);
     }
     if(p==NULL)
      {
       q->next=NULL;
       free(p);
      }
     break;
     case 2:
     for(i=0;i<80;i++)
      printf("-");
     printf("\n\n\n\t\t\tenter add to delete\n\t\t\t");
     fflush(stdin);
     gets(n);
     p=head;
     if((p==head)&&(strcmp(p->add,n)==0))
      {
       head=p->next;
       free(p);
      }
     else
     {
     while(p!=NULL)
      {
       if(strcmp(p->add,n)==0)
        {
          break;
        }
        q=p;
        p=p->next;
      }
      q->next=p->next;
      free(p);
     }
     if(p==NULL)
      {
       q->next=NULL;
       free(p);
      }

    break;
       case 3:
     for(i=0;i<80;i++)
      printf("-");
     printf("\n\n\n\t\t\tenter age to delete\n\t\t\t");
     fflush(stdin);
     scanf("%d",&gh);
     p=head;
     if((p==head)&&(p->age==gh))
      {
       head=p->next;
       free(p);
      }
     else
     {
     while(p!=NULL)
      {
       if((p->age==gh))
        {
          break;
        }
        q=p;
        p=p->next;
      }
      q->next=p->next;
      free(p);
     }
     if(p==NULL)
      {
       q->next=NULL;
       free(p);
      }

    break;
       case 4:
     for(i=0;i<80;i++)
      printf("-");
     printf("\n\n\n\t\t\tenter salary to delete\n\t\t\t");
     fflush(stdin);
     scanf("%d",&gh);
     p=head;
     if((p==head)&&((p->salary==gh)))
      {
       head=p->next;
       free(p);
      }
     else
     {
     while(p!=NULL)
      {
       if((p->salary==gh))
        {
          break;

        }
        q=p;
        p=p->next;
      }
      q->next=p->next;
      free(p);
     }
     if(p==NULL)
      {
       q->next=NULL;
       free(p);
      }
     break;
       }
      }
_____________________________________________________________________________________
JUST USE IT BY COPY PASTING THE CODE AND SAVE THE FILE AS anyname.c THEN COMPILE IT AND USE , ANY DOUBT CAN BE ASKED...
U CAN CATCHME AT http://www.facebook.com/salokr.
                                                            !!! HOPE U LIKE IT !!!
                                                   !!!  THANKS FOR READING !!!
                                                  !!!!!HAPPY PROGRAMMING !!!!!

Comments

Popular posts from this blog

QUEUE IMPLEMENTATION USING LINKED LIST

DATA STRUCTURES INTERVIEW QUESTIONS

Program To Evaluate Square Root Of A Number