5.   OHJELMAN KOODI

                                 Edellinen                                                         Hakemisto


       void  lue_kentta (char *str, maxlen)

      void  haku (void) 

       int hakea_tiedot (char)

       int etsi(int)

       void  lisays (void) 

       void  muutos (void) 

        void  poisto (void )

 


 
 
void lue_kentta (char *str, int maxlen)
{
 char *p;
 int i;

 for(i=1;i<maxlen;i++)  putch('Û');
 gotoxy(wherex()-maxlen+1,wherey());

  p=str;

 for(i=0; ; )
 {
  *str = getch();
  if(str==p)
  {  if(*str>=97 && *str<=122)  *str-=32;
   if(*str=='')      *str='';
   if(*str=='')      *str='';
   if(*str=='')      *str='';
  }
  if(*str=='\r')
  {  *str = '\0';
   return;
  }
  else
  {  if(*str=='\b')
   {
    if(str>p)
    {  str--; i--;
     putch('\b');
     putch('Û');
     putch('\b');
    }
   }
   else if(i<maxlen-1)
   {  putch(*str);
    str++; i++;
   }
  }
 }
}//end lue_kentta

alkuun                                                        Hakemisto


void haku (void)
{
 char val;
 do
 {
        do
  {
            ikkuna(4);
   cprintf("\n\r                      Haku \r\n\n");
   cprintf("      Valitse hakutieto :\r\n\n");
   cprintf("      1   Etunimi\r\n\n");
   cprintf("      2   Sukunimi\r\n\n");
   cprintf("      3   Osoite\r\n\n");
   cprintf("      4   Puhelinnumero\r\n\n");
   cprintf("      5   Lista\r\n\n");
   cprintf("      0   Paluu pvalikkoon\r\n");

   val = getch();
   if(val<MIN || val>MAX)
          {
     ikkuna(5);
    val = getch();
           }
      if(val=='5')
   {
    lista();

    ikkuna(2);
            ikkuna(3);
   }
   else if(val>MIN || val<MAX) hakea_tiedot(val);
      }
  while(val<MIN || val>MAX);
 }
 while(val!='0');
}//end haku

alkuun                                                        Hakemisto

int hakea_tiedot(char key)
{
  int x=0;
      
     ikkuna(6);
  cprintf("\r\n\n");
      cprintf("\n\n\         Anna hakutieto.\n\n\n\r");
  switch(key)
    {
   case '1':
    cprintf("        Etunimi   : ");
    lue_kentta(record[0].etunimi,Etunimpitus);
    if(strcmp(record[0].etunimi,"")==0) break;
    x = etsi(1);
    break;
    case '2':
    cprintf("        Sukunimi  : ");
    lue_kentta(record[0].sukunimi,Sukunimpitus);
    if(strcmp(record[0].sukunimi,"")==0) break;
    x = etsi(2);
    break;
   case '3':
    cprintf("        Osoitteen : ");
    lue_kentta(record[0].osoite,Osoitepitus);
    if(strcmp(record[0].osoite,"")==0) break;
    x = etsi(3);
    break;
   case '4':
    cprintf("\r\n\n        Puhelinnumero : ");
    lue_kentta(record[0].puhelin,Puhelinpitus);
    if(strcmp(record[0].puhelin,"")==0) break;
    x = etsi(4);
    break;
    }//end switch
  return(x);
}//end hakea_tiedot

alkuun                                                        Hakemisto


int etsi(int t)
{
char key;
int i=1;

clrscr();
do
 {
 for(;i<=rvt;i++)
 {
  if(t==1)
  {
   if(strcmp(record[i].etunimi,record[0].etunimi)
   ==0) break;
  }
  if(t==2)
  {
   if(strcmp(record[i].sukunimi,record[0].sukunimi)
   ==0) break;
  }
  if(t==3)
  {
   if(strcmp(record[i].osoite,record[0].osoite)
   ==0) break;
  }
  if(t==4)
  {
   if(strcmp(record[i].puhelin,record[0].puhelin)
   ==0) break;
  }
 }
 if(i==rvt+1)
 {
    ikkuna(8);
  getch();
  return(0);
 }
 clrscr();
 cprintf("\r\n\   Num:   %d",i);
 cprintf("\r\n\n\   %s    %s", record[i].etunimi,record[i].sukunimi);
 cprintf("\r\n\n   Puh: %-12s Osoite: %s\r\n\n",
 record[i].puhelin,record[i].osoite);

 cprintf("\r\n    Jos painaa <K> jatkaa haku");
   cprintf("\r\n    Jos painaa <E> toimi valikoima");
 key = getch();
 if(key=='k') i++;
 }while(key!='e');
return(i);
}//end etsi

alkuun                                                        Hakemisto

void lisays (void)
{
  char kentta, val;

 do
 {
  do
  {
      ikkuna(4);
   cprintf("\n\r                      Lisys \r\n\n");
   cprintf("\n\r      Valitse tieto :\r\n\n");
   cprintf("      1   Lisys\r\n\n");
   cprintf("      5   Lista\r\n\n");
   cprintf("      0   Paluu pvalikkoon\r\n");
   val = getch();
   if(val<MIN || val>MAX)
          {
       ikkuna(10);
            val = getch();
          }
      if(val=='5')
       {
    lista();
    ikkuna(2);
            ikkuna(3);
       }
   else if(val=='1')
                {
      ikkuna(4);
  cprintf("\r\n                      Lisys \r\n\n");
  cprintf("\r\n\n        Etunimi  : ");
  lue_kentta(record[0].etunimi,Etunimpitus);
      if(strcmp(record[0].etunimi,"")==0)
      break;
      cprintf("\r\n\n        Sukunimi : ");
  lue_kentta(record[0].sukunimi,Sukunimpitus);
      if(strcmp(record[0].sukunimi,"")==0)
      break;
  cprintf("\r\n\n        Osoite   : ");
  lue_kentta(record[0].osoite,Osoitepitus);
      if(strcmp(record[0].osoite,"")==0)
      break;
  cprintf("\r\n\n        Puhelin  : ");
  lue_kentta(record[0].puhelin,Puhelinpitus);
      if(strcmp(record[0].puhelin,"")==0)
      break;
  cprintf("\r\n\n\n        Listnk tiedot ");
  cprintf("luetteloon <K/E>?");
                         do
                          {
   kentta = getch();
    if(kentta=='k')
  {
   rvt++;
   if(rvt>1)
   {
    aakkosta();
   }
     else
   {
    record[1] = record[0];
   }
       }
                           }while(kentta!='k' && kentta!='e');
                 }//end if val = 1
  }while(val<MIN || val>MAX);
 }while(val!='0');
}//end lisaus
 

alkuun                                                        Hakemisto

void muutos (void)
{
 char val;
 int x;

 do
  {
     ikkuna(4);
  cprintf("\n\r                     Muutos \r\n\n");
  cprintf("      Mill perusteella haluat hakea :\r\n\n");
  cprintf("      1   Etunimi\r\n\n");
  cprintf("      2   Sukunimi\r\n\n");
  cprintf("      3   Osoite\r\n\n");
  cprintf("      4   Puhelinnumero\r\n\n");
  cprintf("      5   Lista\r\n\n");
  cprintf("      0   Paluu pvalikkoon\r\n");
  do
   {
   val = getch();
   if(val<MIN || val>MAX)
           {
       ikkuna(5);
            val = getch();
           }
   } while(val<MIN || val>MAX);
  if(val=='5')
  {
   lista();
   ikkuna(2);
         ikkuna(3);
  }
  else
  {
   x = hakea_tiedot(val);
   if(x!=0)
   {
            ikkuna(6);
    muuttaa_tiedot(x);
            ikkuna(2);
            ikkuna(3);
   }
  }
  }while(val!='0');
}//end muutos

alkuun                                                        Hakemisto

void poisto (void)
{
 char rivi[81],vas;
 int key,val,tark,i;
  do
 {
   do
    {
      ikkuna(4);
   cprintf("\n\r                      Poisto \r\n\n");
   cprintf("\n\r      Valitse tieto :\r\n\n");
   cprintf("      1   Poisto rivi\r\n\n");
   cprintf("      5   Lista\r\n\n");
   cprintf("      0   Paluu pvalikkoon\r\n");
   val = getch();
   if(val<MIN || val>MAX)
           {
       ikkuna(10);
            val = getch();
           }
   if(val=='5')
   {
    lista();
            ikkuna(2);
            ikkuna(3);
   }
   else if(val=='1')
               {
   cprintf(" \n\n\n\r          Anna poistettavan rivin numero: ");
   getch();
   gets(rivi);
 tark = sscanf(rivi,"%d",&key);
 if(tark==1 && key<=rvt && key>0)
  {
     ikkuna(4);
 cprintf("\r\n\   Num:   %d",key);
 cprintf("\r\n\n\n\n   %s %s",record[key].sukunimi,
          record[key].etunimi);
 cprintf("\r\n\n   Puh: %-12s Osoite: %s\r\n\n",
          record[key].puhelin,record[key].osoite);
  cprintf("\n\n   Poistetaanko <K/E>?");
                            do
                              {
  vas = getch();
  if(vas=='k')
  {
   for(i=key;i<rvt;i++)
   {
    record[i] = record[i+1];
   }
   rvt--;
  }
                               }while(vas!='k' && vas!='e');
  }
               }//end if val = 1
    }while(val<MIN || val>MAX);
  }while(val!='0');
}//end poisto
 

alkuun                                                        Hakemisto

Hosted by uCoz