Manisha Vashishta Believe In Ability>>Motivation>>Attitude
  Mobile Customer Database
 

/***********************MOBILINK CUSTOMER DATABASE PROJECT*******************/
/***********************BY Manisha Vashishta******************************/


/*HEADER FILES ARE INCLUDED*/

#include <dos.h>
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include<graphics.h>

/*MACROS ARE DEFINED*/

#define NUM 5
#define PH 12
#define MIN 30
#define MAX 61

/*FUNCTION DECLARATION*/

void add();  // Ask user for input.
void view();            // Diplay all the record.
void search();          // Search for a record.
void c_name();          // Changes the name in a record.
void c_add();           // Changes the address in a record.
void c_ct();            // Changes the connection type in a record.
void c_ph();            // Changes the phone in a record.
void del();             // Deletes a record.
int date(void);         // This fucntion is for displaying System Date.


/*VALIDATION FUNCTIONS*/

void check_id(char *,int); //Checks for the length and validity of SIM ID
void check_name(char *,int);    //Checks for the length and validity of NAME
void check_add(char *,int);     //Checks for the length and validity of ADDRESS
void check_phone(char *,int);   //Checks for the length and validity of PHONE NUMBER
void check_ct(int *);           //Checks for the CONNECTION TYPE
int duplicate(char idno[]); //Checks for the Duplication of the SIM ID

/*MISC FUNCTION*/

void empty();

/*STRUCTURE DECLARATION*/

struct customer
{
 char id[NUM];  /* ID of Length 5*/
 char name[MIN];  /* Name of Length 30*/
 char address[MAX];  /* Address of Length 61*/
 char phone[PH];  /* Phone Number of Length 12*/
 int  connection; /* Connection Type of length 2*/
 int  day;               /* It is used to display the day of length 2*/
 int  month;             /* It is used to display the month of length 2*/
 int  year;              /* it is used to display the year*/
}rec;

/***************************MAIN FUNCTION STARTS*****************************/
main()
{
 int c;

do{
 int i;
 window(1,1,80,25);
 textbackground(LIGHTRED);
 textcolor(LIGHTGRAY);

 clrscr();

 gotoxy(24,2);
 printf("<< MOBILINK CUSTOMER DATABASE >>");
 gotoxy(24,3);
 cprintf("<< BY-Manisha Vashishta    >>");


 for(i=10;i<=70;i++)  //This 'FOR' loop will print a combination of
 {                       //asteriks '*' and dash '-' horizontally till
  gotoxy(i,4);    //the 70th column is reached.
  printf("Ü");
  gotoxy(71,4);    //the 70th column is reached.
  printf("Ü");
  gotoxy(i,7);
  printf("-");
  gotoxy(i,9);
  printf("-");
  gotoxy(i,11);
  printf("-");
  gotoxy(i,13);
  printf("-");
  gotoxy(69,16);
  printf("ß");
  gotoxy(71,16);
  printf("ß");
  gotoxy(i,16);
  printf("ß");
 }

 for(i=5;i<=15;i++)      //This 'FOR' loop will print asteriks '*'
 {                       //vertically till the 15th row is reached.
  gotoxy(10,i);
  printf("ÝÞ");
  gotoxy(70,i);
  printf("ÝÞ");
 }

 for(i=6;i<=12;i++)      //This 'FOR' loop will print '|' sign
 {                       //vertically till the 12th row is reached.
  gotoxy(40,i);
  printf("|");
 }

 gotoxy(15,6);
 printf("[1] ENTER A RECORD");
 gotoxy(15,8);
 printf("[2] VIEW RECORDS");
 gotoxy(15,10);
 printf("[3] SEARCH RECORD");
 gotoxy(15,12);
 printf("[4] DELETE RECORD");
 gotoxy(43,6);
 printf("[5] CHANGE NAME");
 gotoxy(43,8);
 printf("[6] CHANGE ADDRESS");
 gotoxy(43,10);
 printf("[7] CHANGE CONNECTION TYPE");
 gotoxy(43,12);
 printf("[8] CHANGE PHONE NUMBER");
 gotoxy(37,14);
 printf("[9] EXIT");
 gotoxy(10,20);
 textcolor(LIGHTGRAY);
 cprintf("PLEASE SELECT A CHOICE: ");

 c = (getche());

  switch (c)      //This 'SWITCH' structure will ask the user for input from [1] to [9] and will display error on Invalid Entry.
   {
    case '1': add();    break;   //It will call the add() funtion to allow user to add and save record.
    case '2': view();   break;   //It will call the view() funtion to allow user to view the saved record.
    case '3': search(); break;   //It will call the search() funtion to allow user to search records.
    case '4': del();    break;   //It will call the delete() funtion to allow user to delete a saved record.
    case '5': c_name(); break;   //It will call the c_name() funtion to allow user to modify name of a saved record.
    case '6': c_add();  break;   //It will call the c_add() funtion to allow user to modify address of a saved record.
    case '7': c_ct();   break;   //It will call the c_ct() funtion to allow user to modify  connection type & date of a saved record.
    case '8': c_ph();   break;   //It will call the c_ph() funtion to allow user to modify phone number of a saved record.
    case '9': gotoxy(30,24);printf("<<<<--THANK YOU-->>>>");getch();exit(0);  //It will terminate the program.
    default:
    sound(500);delay(200);nosound();  //sound turns the PC speaker on at the specified frequency, nosound turns the PC speaker off.
    gotoxy(26,24);
    puts("<<--ENTER FROM 1-9 PLEASE-->>"); //This message will only print on INVALID ENTRY and Will ask again for input.
    getch();
   }

}while(c != '9');  //This 'WHILE' loop will continue till the Exit option [9] is entered.

 return 0;
}
/**************************END OF MAIN FUNCTION******************************/
void add()
{
 FILE *fp;
 char ch;
 char temp[NUM];

 

 if(fp!=NULL)
 {
   do{
    fp=fopen("customer.rec","ab");

    clrscr();

    gotoxy(25,2);
    printf("<<==--ADDING RECORD--==>>");
    do{
       gotoxy(1,4);
       printf("Enter [UNIQUE] SIM ID: ");
       check_id(temp, NUM);

    }while(duplicate(temp));    //This Condition Will keep on executng till a non duplicate ID is entered.

    strcpy(rec.id, temp);       //After verifying, ID in 'temp' will copy to 'rec.id'

    gotoxy(1,6);
    printf("Enter NAME: ");
    check_name(rec.name,MIN);       //It will verify that no neumerical input is given & the name input should not exceed the length limit
    gotoxy(1,8);
    printf("Enter ADDRESS: ");
    check_add(rec.address,MAX);     //It will verify that only alpha neumeric input is entered & should not exceed the length limit
    gotoxy(1,10);
    printf("Enter PHONE Number: ");
    check_phone(rec.phone, PH);     //It will verify phone number of a particular length
    gotoxy(1,12);
    printf("Enter CONNECTION TYPE: ");
    check_ct(&rec.connection);      //It will allow user to select between 'STAR' & 'JAZZ' only

    {
       struct date d;

       getdate(&d);
       gotoxy(1,12);
       printf("DATE OF PURCHASE: %d %d %d ",d.da_day,d.da_mon,d.da_year);
       rec.day   = d.da_day;
       rec.month = d.da_mon;
       rec.year  = d.da_year;
    }

    window(1,1,80,25);
    gotoxy(1,12);

    fwrite(&rec, sizeof(rec), 1, fp); //Record will be written to file.

    fclose(fp);
     textbackground(LIGHTRED);
    gotoxy(20,24);

    printf("DO YOU WISH TO CONTINUE..[Y]/[N]: ");
    ch=toupper(getche());

  }while(ch =='Y'); //Repeat loop while user inputs 'Y'
 }
 else
 {
  gotoxy(20,24);
  printf("Unable To Open File...");
 }
}

/**************************************************************************
| Function: view()                                                   |
|                                                                         |
| Purpose : To Display all the records in the file in a                   |
|           formatted output.                                             |
|                                                                         |
| Local Variables:                                                        |
|           |
| >FILE *fp: Decalres file pointer.                                       |
***************************************************************************/

void view()
{
 FILE *fp;


 fp=fopen("customer.rec","rb");

 if(fp!=NULL)
 {
  clrscr();

  while( fread(&rec, sizeof(rec), 1, fp))
   if(strcmp(rec.id," ")!=0)
   {

     clrscr();
     gotoxy(28,2);
     printf("<<==--VIEWING RECORDS--==>>");
     gotoxy(3,5);
     printf(" SIM ID: %s",rec.id);
     gotoxy(3,7);
     printf(" NAME: %s",rec.name);
     gotoxy(3,9);
     printf(" ADDRESS: %s",rec.address);
     gotoxy(3,11);
     printf(" PHONE Number: %s",rec.phone);
     gotoxy(3,13);
     printf(" CONNECTION TYPE: %s",rec.connection);
     if(rec.connection==1)
     {
      gotoxy(21,13);
      printf("STAR");
     }
     else
     if(rec.connection==2)
     {
      gotoxy(21,13);
      printf("JAZZ");
     }
     gotoxy(3,15);
     printf(" DATE Of PURCHASE: %d-%d-%d",rec.day,rec.month,rec.year);

     getch();
   }

   if(strcmp(rec.id," ")==NULL)
   {
    clrscr();
    gotoxy(20,13);
    sound(500);delay(200);nosound();
    printf("<<==--THERE ARE NO RECORDS TO VIEW--==>>");
    getch();
   }
  fclose(fp);
 }
 else
 {
  gotoxy(20,24);
  printf("Unable To Open File...");
 }
}
/*************************END OF VIEW FUNCTION*******************************/


void search()
{
 int ch;
 FILE *fp;
 char sno[NUM];
 clrscr();

 fp=fopen("customer.rec","rb");

 gotoxy(20,13);
 printf("PLEASE ENTER SIM ID ==->>>> ");
 check_id(sno,NUM);

  while ( fread(&rec, sizeof(rec), 1, fp) && strcmp(sno,rec.id) );


   ch=strcmp(sno,rec.id);
    if(ch!=0)
    {
     clrscr();
     sound(500);delay(200);nosound();
     gotoxy(28,13);
     printf("<<--RECORD NOT FOUND-->>");
     getch();
    }
    else

    {
     clrscr();
     gotoxy(28,2);
     printf("<<==SEARCH SUCCESSFUL==>>");
     gotoxy(3,5);
     printf(" SIM ID: %s",rec.id);

     gotoxy(3,7);
     printf(" NAME: %s",rec.name);

     gotoxy(3,9);
     printf(" ADDRESS: %s",rec.address);

     gotoxy(3,11);
     printf(" PHONE Number: %s",rec.phone);

     gotoxy(3,13);
     printf(" CONNECTION TYPE: %s",rec.connection);
     if(rec.connection==1)
     {
      gotoxy(21,13);
      printf("STAR");
     }
     else
     if(rec.connection==2)
     {
      gotoxy(21,13);
      printf("JAZZ");
     }
     gotoxy(3,15);
     printf(" DATE Of PURCHASE: %d-%d-%d",rec.day,rec.month,rec.year);

     getch();
    }
  fclose(fp);
}

/*************************END OF SEARCH FUNCTION*****************************/

 

void c_name()
{
 int ch;
 FILE *fp;
 char sno[NUM];
 clrscr();

 fp=fopen("customer.rec","rb+");

 gotoxy(20,13);
 printf("PLEASE ENTER SIM ID ==->>>> ");
 check_id(sno,NUM);

  while ( fread(&rec, sizeof(rec), 1, fp) && strcmp(sno,rec.id) );

   ch=strcmp(sno,rec.id);
    if(ch!=0)
    {
     clrscr();
     sound(500);delay(200);nosound();
     gotoxy(28,13);
     printf("<<--RECORD NOT FOUND-->>");
     getch();
    }
    else
    {
     clrscr();
     gotoxy(28,4);
     printf("<<<--==RECORD FOUND==-->>>");

     gotoxy(3,8);
     printf("OLD NAME: %s",rec.name);   // This will print the old name already stored.
     gotoxy(3,12);
     printf("ENTER NAME: ");            // This will allow the user to change the old name and input a new name.
     check_name(rec.name,MIN);          // The check will validate each character entered turn by turn.

     fseek(fp, ftell(fp) - sizeof(rec),0);
       fwrite(&rec, sizeof(rec), 1, fp);  //The new name will be added to the record.

     gotoxy(34,24);
     printf("RECORD SAVED !!!");

     getch();
    }
  fclose(fp);
}

/*************************END OF CHANGE NAME FUNCTION************************/


void c_add()
{
 int ch;
 FILE *fp;
 char sno[NUM];
 clrscr();

 fp=fopen("customer.rec","rb+");

 gotoxy(20,13);
 printf("PLEASE ENTER SIM ID ==->>>> ");
 check_id(sno,NUM);

  while ( fread(&rec, sizeof(rec), 1, fp) && strcmp(sno,rec.id) );

   ch=strcmp(sno,rec.id);  // Here the result after comparing the values of the two strings by using the 'strcmp' function is assigned to 'ch'.
    if(ch!=0)       // This loop will execute if the SIM ID's dont compare.
    {
     clrscr();
     sound(500);delay(200);nosound();
     gotoxy(28,13);
     printf("<<--RECORD NOT FOUND-->>");
     getch();
    }
    else            // If the ID's match, then this block will be executed.
    {
     clrscr();
     gotoxy(28,4);
     printf("<<<--==RECORD FOUND==-->>>");

     gotoxy(3,8);
     printf("OLD ADDRESS: %s",rec.address);
     gotoxy(3,12);
     printf("ENTER NEW ADDRESS: ");
     check_add(rec.address,MAX);

     fseek(fp, ftell(fp) - sizeof(rec),0); //fseek sets the file pointer associated with a stream to a new position.
       fwrite(&rec, sizeof(rec), 1, fp); //fwrite appends a specified number of equal-sized data items to an output file.

     gotoxy(34,24);
     printf("RECORD SAVED !!!");

     getch();
    }
  fclose(fp);
}

/*************************END OF CHANGE ADDRESS FUNCTION*********************/

 

void c_ct()
{
 int ch;
 FILE *fp;
 char sno[NUM];
 clrscr();

 fp=fopen("customer.rec","rb+");

 gotoxy(20,13);
 printf("PLEASE ENTER SIM ID ==->>>> ");
 check_id(sno,NUM);

  while ( fread(&rec, sizeof(rec), 1, fp) && strcmp(sno,rec.id) );

   ch=strcmp(sno,rec.id);
    if(ch!=0)
    {
     clrscr();
     sound(500);delay(200);nosound();
     gotoxy(28,13);
     printf("<<--RECORD NOT FOUND-->>");
     getch();
    }
    else
    {
     clrscr();
     gotoxy(28,2);
     printf("<<<--==RECORD FOUND==-->>>");

     gotoxy(3,6);
     printf("OLD DATE OF PURCHASE: %d %d %d",rec.day,rec.month,rec.year); //Old Date Of purchase is displayed.
     {
      struct date d;

      getdate(&d);
      gotoxy(3,8);
      printf("NEW DATE OF PURCHASE: %d %d %d ",d.da_day,d.da_mon,d.da_year); //New Date Of Purchase is stored.
      rec.day = d.da_day;
      rec.month = d.da_mon;
      rec.year= d.da_year;
     }

     gotoxy(3,10);
     printf("OLD CONNECTION TYPE: %s",rec.connection); //Old Connection type is displayed
     if(rec.connection==1)
     {
      gotoxy(24,10);
      printf("STAR");  //If option stored in record is '1' Then "STAR" will be displayed on screen.
     }
     else
     if(rec.connection==2)
     {
      gotoxy(24,10);
      printf("JAZZ");  //If option stored in record is '2' Then "JAZZ" will be displayed on screen.
     }
     gotoxy(3,12);
     printf("NEW CONNECTION TYPE: "); //New Connection Type is asked for Input.
     check_ct(&rec.connection);       //This check provides choices to the user to select b/w "STAR" or "JAZZ".

     fseek(fp, ftell(fp) - sizeof(rec),0);
       fwrite(&rec, sizeof(rec), 1, fp);

     window(1,1,80,25);
     gotoxy(1,12);
     gotoxy(35,24);
     printf("RECORD SAVED !!!");

     getch();
    }
  fclose(fp);
}

/*******************END OF CHANGE CONNECTION TYPE FUNCTION*******************/

 

void c_ph()
{
 int ch;
 FILE *fp;
 char sno[NUM];
 clrscr();

 fp=fopen("customer.rec","rb+");

 gotoxy(20,13);
 printf("PLEASE ENTER SIM ID ==->>>> ");
 check_id(sno,NUM);

  while ( fread(&rec, sizeof(rec), 1, fp) && strcmp(sno,rec.id) );

   ch=strcmp(sno,rec.id);
    if(ch!=0)
    {
     clrscr();
     sound(500);delay(200);nosound();
     gotoxy(28,13);
     printf("<<--RECORD NOT FOUND-->>");
     getch();
    }
    else
    {
     clrscr();
     gotoxy(28,4);
     printf("<<<--==RECORD FOUND==-->>>");

     gotoxy(3,8);
     printf("OLD PHONE NUMBER: %s",rec.phone); //Old phone number is displayed.
     gotoxy(3,12);
     printf("ENTER NEW PHONE NUMBER: ");       //New phone number is asked by the user.
     check_phone(rec.phone,PH);

     fseek(fp, ftell(fp) - sizeof(rec),0);
       fwrite(&rec, sizeof(rec), 1, fp);

     gotoxy(34,24);
     printf("RECORD SAVED !!!");

     getch();
    }
  fclose(fp);
}

/*********************END OF CHANGE PHONE NUMBER FUNCTION********************/


void del()
{
 int ch;
 FILE *fp;
 char sno[NUM];
 clrscr();

 fp=fopen("customer.rec","rb+");

 gotoxy(20,13);
 printf("PLEASE ENTER SIM ID ==->>>> ");
 check_id(sno,NUM);

  while ( fread(&rec, sizeof(rec), 1, fp) && strcmp(sno,rec.id) );

   ch=strcmp(sno,rec.id);
    if(ch!=0)
    {
     clrscr();
     sound(500);delay(200);nosound();
     gotoxy(28,13);
     printf("<<--RECORD NOT FOUND-->>");
     getch();
    }
    else     //Here the saved record is displayed.
    {
     clrscr();
     gotoxy(28,2);
     printf("<<==SEARCH SUCCESSFUL==>>");
     gotoxy(3,5);
     printf(" SIM ID: %s",rec.id);

     gotoxy(3,7);
     printf(" NAME: %s",rec.name);

     gotoxy(3,9);
     printf(" ADDRESS: %s",rec.address);

     gotoxy(3,11);
     printf(" PHONE Number: %s",rec.phone);

     gotoxy(3,13);
     printf(" CONNECTION TYPE: %s",rec.connection);
     if(rec.connection==1)
     {
      gotoxy(21,13);
      printf("STAR");
     }
     else
     if(rec.connection==2)
     {
      gotoxy(21,13);
      printf("JAZZ");
     }
     gotoxy(3,15);
     printf(" DATE Of PURCHASE: %d-%d-%d",rec.day,rec.month,rec.year);

     gotoxy(26,24);
     printf("PRESS ANY KEY TO DELETE RECORD.....");
     getch();
     empty(); //this is a Function which will erase the record in memory & NOT physically.

     fseek(fp, ftell(fp) - sizeof(rec), 0);
       fwrite(&rec, sizeof(rec), 1, fp);

     clrscr();
     sound(500);delay(200);nosound();
     gotoxy(33,13);
     printf("RECORD DELETED !!!");
     getch();
    }

  fclose(fp);
}

/***************************END OF DELETE FUNCTION***************************/


void check_id(char *p, int size)
{
 int i=0;
 char ch;

 do
 {
  ch=getch();

  if( (ch>='0' && ch<='9') && (i<size-1) )
  {
    *p=ch;         //The value is assigned to the pointer.
    p++;           //Pointer is incremented.
    i++;           //Length counter is incremented.
    printf("%c",ch); //Validated character is printed.
  }
  else      //This block of commands controls backspace.
  if(ch==8 && i>0)
  {
   printf("%c%c%c",8,32,8);
   i--;              //Length counter is decremented.
   p--;              //Pointer is decremented.
  }

 }while(ch!=13 || i<size-1);       //this loop will continue till the total given length is reached or 'ENTER' is pressed.

 *p='';

}


void check_phone(char *ph, int size)
{
 int p=0;
 char s[20],ch;

 do
 {
  ch=getch();

  if( ((ch>='0' && ch<='9')||(ch=='-')) && (p<size-1) )
  {
   *ph=ch;
    ph++;
    p++;
    printf("%c",ch);
  }

  else

  if( (ch==8)&&(p>0) )
  {
   printf("%c%c%c",8,32,8);
   p--;
   ph--;
  }

 }while(ch!=13 || p<size-1);

 s[p]='';
 *ph='';

}

void check_name(char *p, int size)
{
 int j=0;
 char x[40],cj;

 do
 {

  cj=toupper(getch());

  if(((cj>='a' && cj<='z')||(cj>='A' && cj<='Z')||(cj==' ')) && (j<size-1))
  {
   *p++=cj;
   j++;
   printf("%c",cj);
  }

  else

  if(cj==8 && j>0)
  {
   printf("%c%c%c",8,32,8);
   j--; p--;
  }

 }while(cj!=13);

 x[j]='';
 *p='';
}

void check_add(char *p, int size)
{
 int l=0;
 char a[50],ad;

 do
 {

  ad=toupper(getch());

  if(((ad>='a' && ad<='z')||(ad>='A' && ad<='Z')||(ad==' ')||(ad==',')||(ad=='.')||(ad>='0' && ad<='9')) && (l<size-1))
  {
   *p++=ad;
   l++;
   printf("%c",ad);
  }

  else

  if( (ad==8)&&(l>0) )
  {
   printf("%c%c%c",8,32,8);
   l--; p--;
  }

 }while(ad!=13);

 a[l]='';   *p='';
}
void check_ct(int *p)
{
 int ab=1;
 char ch;
 int aa;

 window(24,18,51,24);
 textbackground(BLACK);
 clrscr();

 window(25,19,50,23);
 textbackground(WHITE);
 textcolor(BLACK);
 clrscr();

 gotoxy(11,2);
 printf("STAR");
 gotoxy(11,4);
 printf("JAZZ");

      do{
   ch = getch();

   if(ch==0)
   {
    ch = getch();

    if(ch==72)
    {
     ab=ab-1;
    }
   else
    if(ch==80)
    {
     ab=ab+1;
    }
   }

   if(ab<1)
   {
    ab=1;

   }
   else

   if(ab==1)
   {
    window(1,1,80,25);
    window(35,22,40,22);
    textbackground(WHITE);
    textcolor(BLACK);
    clrscr();
    printf("JAZZ");
    window(1,1,80,25);
    window(35,20,41,20);
    textcolor(RED);
    clrscr();
    printf("STAR");
    aa=1;
    window(1,1,80,25);
   }

   else

   if(ab==2)
   {
    window(1,1,80,25);
    window(35,20,41,20);
    textbackground(WHITE);
    textcolor(BLACK);
    clrscr();
    printf("STAR");
    window(1,1,80,25);
    window(35,22,40,22);
    textcolor(RED);
    clrscr();
    aa=2;
    printf("JAZZ");
    window(1,1,80,25);
   }

   if(ab>2)
   {
    ab=2;
   }
      }while(ch != 13);

 if (aa==1)
 {
  gotoxy(24,12);
  printf("STAR");
  *p=1;
 }
 else

 if (aa==2)
 {
  gotoxy(24,12);
  printf("JAZZ");
  *p=2;
 }


 getch();
 window(24,18,51,24);
 textbackground(LIGHTRED);
 textcolor(LIGHTGRAY);
 clrscr();

}

void empty()
{
     strcpy(rec.id," ");
     strcpy(rec.name," ");
     strcpy(rec.address," ");
     strcpy(rec.phone," ");
     rec.connection=0;
     rec.day=0;
     rec.month=0;
     rec.year=0;
}


int duplicate(char idno[])
{
    FILE *fp;

    fp=fopen("customer.rec","rb");

    while(fread(&rec, sizeof(rec), 1, fp) && strcmp(rec.id, idno));
    fclose(fp);

    if(strcmp(rec.id, idno)==0)
       return 1;
    else
       return 0;
}


/*²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²
²****************************|         |*****************************²
²****************************| END OF PROJECT |*****************************²
²****************************|         |*****************************²
²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²*/

       /* Manisha Vashishta*/
 

 
  Today, there have been 3704 visitors (6573 hits) on this page!  
 
=> Do you also want a homepage for free? Then click here! <=