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

Program To Evaluate Square Root Of A Number

TIC-TAC-TOE THROUGH C

LINKED LIST IMPLEMENTATION FOR GAME BATTLESHIP THROUGH C