home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / mslang / isam / tut3 / deptmnt.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-08  |  2.7 KB  |  158 lines

  1.  
  2. #include <fscreen.h>
  3. #include <attrdefs.h>
  4.  
  5. #include "DEPT.H"
  6.  
  7. dfDEPT dept;
  8.  
  9. void draw_screen(void)
  10.     {
  11.     FSputs("dept_code", attrLEGEND, 3, 1);
  12.     FSputs("dept_name", attrLEGEND, 4, 1);
  13.     FSputs("payrise", attrLEGEND, 5, 3);
  14.     }
  15.  
  16. void display_all(void)
  17.     {
  18.     FSclrbox(3, 11, 5, 79, attrSCREEN);
  19.     FSputs(dept.dept_code, attrINPUT, 3, 11);
  20.     FSputs(dept.dept_name, attrINPUT, 4, 11);
  21.     FSputi(dept.payrise, attrINPUT, 5, 11);
  22.     }
  23.  
  24. int input_data(int is_index = 0)
  25.     {
  26.     for (int x = 0; x < 3 && x >= 0;)
  27.         {
  28.         int FSerror = 0;
  29.         switch(x)
  30.             {
  31.             case 0:
  32.                 FSerror = FSinputs(dept.dept_code, attrINPUT, 3, 11, 1);
  33.                 break;
  34.  
  35.             case 1:
  36.                 if (is_index)
  37.                     {
  38.                     x++;
  39.                     break;
  40.                     }
  41.                 FSerror = FSinputs(dept.dept_name, attrINPUT, 4, 11, 40);
  42.                 break;
  43.  
  44.             case 2:
  45.                 if (is_index)
  46.                     {
  47.                     x++;
  48.                     break;
  49.                     }
  50.                 FSerror = FSinputi(dept.payrise, attrINPUT, 5, 11);
  51.                 break;
  52.             }
  53.  
  54.         switch (FSerror)
  55.             {
  56.             case FS_ENTER:
  57.             case FS_CURSORDOWN:
  58.                 x++;
  59.                 break;
  60.  
  61.             case FS_CURSORUP:
  62.             case FS_BACKSPACE:
  63.                 x--;
  64.                 break;
  65.  
  66.             case FS_PGDN:
  67.                 x = 999;
  68.                 break;
  69.  
  70.             case FS_ESCAPE:
  71.             case FS_PGUP:
  72.                 x = -1;
  73.                 break;
  74.             }
  75.         }
  76.     if (x < 0)
  77.         return IM_ERROR;
  78.     return IM_OK;
  79.     }
  80.  
  81. int main(void)
  82.     {
  83.     static char *menopts[] = { "^Insert", "^Amend", "^Delete", "^Find",
  84.         "^Next", "^Prev", "E^xit", NULL };
  85.     FSinit();
  86.     FSclrscr(attrSCREEN);
  87.     draw_screen();
  88.     dept.rew();
  89.     dept.clear_buf();
  90.     display_all();
  91.     FStitle("DEPT FILE MAINTENANCE", attrTITLE, 0);
  92.     for (;;)
  93.         {
  94.         switch (FSbarmenu(22, FS_CENTRE, 2, menopts, attrBMNORM, attrBMHIGH, attrBMHOTK))
  95.             {
  96.             case 0: // Insert
  97.                 dept.clear_buf();
  98.                 display_all();
  99.                 if (input_data() == IM_OK)
  100.                     dept.insert();
  101.                 else
  102.                     dept.rew();
  103.                 break;
  104.  
  105.             case 1: // Amend
  106.                 if (dept.retrieve() == IM_ERROR)
  107.                     break;
  108.                 display_all();
  109.                 if (input_data() == IM_OK)
  110.                     dept.amend();
  111.                 break;
  112.  
  113.             case 2: // Delete
  114.                 dept.erase();
  115.                 dept.clear_buf();
  116.                 display_all();
  117.                 break;
  118.  
  119.             case 3: // Find
  120.                 dept.clear_buf();
  121.                 display_all();
  122.                 if (input_data(1) == IM_OK)
  123.                     {
  124.                     if (dept.find() == IM_ERROR)
  125.                         if (dept.retrieve() == IM_ERROR)
  126.                             if (dept.prev() == IM_ERROR)
  127.                                 dept.clear_buf();
  128.                     display_all();
  129.                     }
  130.                 else
  131.                     {
  132.                     dept.clear_buf();
  133.                     display_all();
  134.                     }
  135.                 break;
  136.  
  137.             case 4: // Next
  138.                 if (dept.next() == IM_ERROR)
  139.                     dept.prev();
  140.                 display_all();
  141.                 break;
  142.  
  143.             case 5: // Prev
  144.                 if (dept.prev() == IM_ERROR)
  145.                     dept.next();
  146.                 display_all();
  147.                 break;
  148.  
  149.             case  6: // Exit
  150.             case -1: // <ESCAPE> Pressed
  151.                 return 0;
  152.  
  153.             }
  154.         }
  155.     return 0;
  156.     }
  157.  
  158.