Minggu, 13 November 2011

login (c++)

#include "conio.h"
#include "dos.h"
#include "string.h"
#include "stdlib.h"
#include "screen.cpp"

#define KEY_INT 0x16
#define KEY_BACKSPACE 0x08
#define KEY_RETURN 0x0d
#define KEY_TAB 0x09
#define KEY_SPACE 0x20

#define NULL 0x00
#define TRUE 1

UCHAR *getString(Screen *scr, UCHAR *str, UCHAR max);
UCHAR *getPwdString(Screen *scr, UCHAR *pwd, UCHAR max);

int main(void)
{
Screen *layar = new Screen();
   UCHAR *nama, nama2[21], *sandi=0, *login, login2[21];
   UCHAR i, re;
   unsigned short int cocok;



   awal:
   layar->cls();
   layar->setMode(0x03);
   layar->setCursorPos(5,9);
   layar->writeString("username :  ");
   layar->setCursorPos(5,21);

   nama = getString(layar, nama2, 20);

   layar->setCursorPos(6,9);
   layar->writeString("password : ");
   layar->setCursorPos(6,21);

   strcpy(sandi, "13101277");
   login = getPwdString(layar, login2, 20);
cocok = strcmp(sandi, login);

    if (cocok == 0)
  {
         for (i=9; i<=29; i++)
         {
layar->setCursorPos( 8,i);layar->writeChar(0xc4);
            layar->setCursorPos(10,i);layar->writeChar(0xc4);
         }
         layar->setCursorPos( 8, 9);layar->writeChar(0xda);
         layar->setCursorPos( 8,29);layar->writeChar(0xbf);
         layar->setCursorPos(10, 9);layar->writeChar(0xc0);
         layar->setCursorPos(10,29);layar->writeChar(0xd9);
         layar->setCursorPos( 9, 9);layar->writeChar(0xb3);
         layar->setCursorPos( 9,29);layar->writeChar(0xb3);
         for (i=10; i<=28; i++)
         {
            layar->setAttribute(0x0e);
layar->setCursorPos( 9,i);layar->writeChar(0xdb);
            delay(500);
         }
         layar->cls();
         layar->setAttribute(0x07);
         layar->setCursorPos(5,9);layar->writeString("Selamat Datang, ");
         layar->setAttribute(0x0e);layar->writeString(nama);
  }
    else
  {
         layar->setAttribute(0x0e);
      layar->setCursorPos(8,9);layar->writeString("password salah");
         layar->setAttribute(0x07);
         layar->setCursorPos(10,9);layar->writeString("re-type password [Y/T] : ");
         layar->setCursorPos(10,45);

         re = getch();
         if (re == 'Y' || re == 'y')
     {
          goto awal;
         }
         else
         {
          return EXIT_SUCCESS;
         }
  }

   asm mov ah, 0x00;
   asm int KEY_INT;

   delete layar;
   return EXIT_SUCCESS;
}

UCHAR *getString(Screen *scr, UCHAR *str, UCHAR max)
{
UCHAR key, i, x, y;

   key = i = 0;

while (TRUE)
   {
    asm mov ah, 0x00;
      asm int KEY_INT;
      asm mov key, al;

if ((key == KEY_BACKSPACE) && (i > 0))
      {
      scr->getCursorPos(&y, &x);
         scr->setCursorPos(y, --x);
         scr->writeChar(KEY_SPACE);

         *(str + i) = NULL; i--;
      }
    if ((key >= 32) && (key <= 126) && (i < max))
  {
      scr->getCursorPos(&y, &x);
         scr->writeChar(key);
         scr->setCursorPos(y, ++x);

*(str + i) = key; i++;
      }
      if ((key == KEY_TAB) && (i < max))
      {
      scr->getCursorPos(&y, &x);
         scr->writeChar(KEY_SPACE);
         scr->setCursorPos(y, ++x);

         *(str + i) = KEY_SPACE; i++;
      }
      if (key == KEY_RETURN)
      {
      *(str + i) = NULL;
         break;
      }
      if (i == max) *(str + i) = NULL;
   }
   return str;
}

UCHAR *getPwdString(Screen *scr, UCHAR *pwd, UCHAR max)
{
UCHAR key, i, x, y;

   key = i = 0;

   while (TRUE)
   {
    asm mov ah, 0x00;
      asm int KEY_INT;
      asm mov key, al;

      if ((key == KEY_BACKSPACE) && (i > 0))
      {
      scr->getCursorPos(&y, &x);
         scr->setCursorPos(y, --x);
         scr->writeChar(KEY_SPACE);

         *(pwd + i) = NULL; i--;
      }
      if ((key >= 32) && (key <= 126) && (i < max))
      {
      scr->getCursorPos(&y, &x);
         scr->writeChar('*');
         scr->setCursorPos(y, ++x);

         *(pwd + i) = key; i++;
      }
      if ((key == KEY_TAB) && (i < max))
      {
      scr->getCursorPos(&y, &x);
         scr->writeChar('*');
scr->setCursorPos(y, ++x);

         *(pwd + i) = KEY_TAB; i++;
      }
      if (key == KEY_RETURN)
      {
      *(pwd + i) = NULL;
         break;
      }
      if (i == max) *(pwd + i) = NULL;
   }
   return pwd;
}

created by Tauvick22@gmail.com

Tidak ada komentar:

Posting Komentar