Списки в оперативній пам'яті, операції над списками. Керування програмами. Керування таймером. Системні керуючі блоки. Управління пам’яттю: таблиця векторів переривань, страница 4

  fclose (file);

}

void  WDisk::Restore()//читання бази данних з файла

{

  FILE *file = fopen (File_Name,"r");

  if (file)

  {

    CRecord buf_record;

    char   *buf_str = new char [200];

    int    ch(1);

    int  i(0);

    while (ch)

    {

      ReadWord (file,ch,buf_str,i);

      *(buf_str + i - 1) = '\0';

      buf_record.record.CS_Surname = buf_str;

      i = 0;

      if (ch)

        ch = 1;

      ReadWord (file,ch,buf_str,i);

      *(buf_str + i - 1) = '\0';

      buf_record.record.CS_Name = buf_str;

      i = 0;

      if (ch)

        ch = 1;

      ReadWord (file,ch,buf_str,i);

      *(buf_str + i - 1) = '\0';

      buf_record.record.CS_Patronymic = buf_str;

      i = 0;

      if (ch)

        ch = 1;

      ReadWord (file,ch,buf_str,i);

      *(buf_str + i - 1) = '\0';

      buf_record.record.CS_Post = buf_str;

      i = 0;

      if (ch)

        ch = 1;

      ReadWord (file,ch,buf_str,i);

      *(buf_str + i - 1) = '\0';

      buf_record.record.i_LengthOfService = atoi (buf_str);

      i = 0;

      if (ch)

        ch = 1;

      ReadWord (file,ch,buf_str,i);

      *(buf_str + i - 1) = '\0';

      buf_record.record.i_RateOfPay = atoi (buf_str);

      i = 0;

      if (ch)

        ch = 1;

      if (!ch)

        break;

      AddRecord (buf_record);

    }

    fclose (file);

    delete []buf_str;

  }

  else

  {

    cout << "Can't open file";

  }

}

void  WDisk::ReadWord(FILE *file,int &ch,char *buf_str,int &index)//читання слова з файла

{

     while (ch != '\n' && ch)

     {

  ch = getc(file);

  if (feof(file))

    ch = 0;

  *(buf_str + index) =(char) ch;

  index++;

     }

}

//основна програма

int main(int argc, char* argv[])

{

  Display f;

  int ch (0);

  ch = getch ();

  while ( ch != 'q')

  {

    switch (ch)

    {

      case '1':

      {

        f.OutData();

        break;

      }

      case '2':

      {

        cout << "Enter field of new record";

        f.AddNRecord();

        f.OutData();

        break;

      }

      case '3':

      {

        cout << "Enter number of field - ";

        f.DelNRecord((getch() - 48));

        f.OutData();

        break;

      }

      case '4':

      {

        f.sort();

        f.OutData();

        break;

      }

      case '5':

      {

        f.Save();

        break;

      }

      case '6':

      {

        f.DelAll();

        f.Restore();

        f.OutData();

        break;

      }

      case '7':

      {

        f.DelAll();

        f.OutData();

        break;

      }

      case '8':

      {

        int num(0);

        cout << "Enter a Number" << endl;

        cin >> num;

        gotoxy (wherex(),(wherey() - 1));

        f.Insert(--num);

        f.OutData();

        break;

      }

      case '9':

      {

        int num(0);

        cout << "Enter a Number" << endl;

        cin >> num;

        gotoxy (wherex(),(wherey() - 1));

        f.Edit(num);

        f.OutData();

        break;

      }

      default:    break;

    }

    ch = getch();

  }

      return 0;

}


Результат  роботи програми:

>4

Surname   Name    Patronimyc  Post      LengthOfService  RateOfPay

Lyh       Vit     xxx         lk        1                1

Epan      Max     xxx         w         2                4

Kosenko   MaX     SD          Z         5                1

Bezr      Les     xxx         w         52               4

Storoz    Serg    xxx         df        4                1

Pant      Lex     xxx         hg        3                4

1-print  2-AddNRecord  3-DeleteNRecord  4-Sort  5-Save  6-Restor 7-DelAll

8-Insert 9-Edit        q-exit

>7

Surname   Name    Patronimyc  Post      LengthOfService  RateOfPay

Bezr      Les     xxx         w         52               4

Epan      Max     xxx         w         2                4

Kosenko   MaX     SD          Z         5                1

Lyh       Vit     xxx         lk        1                1

Pant      Lex     xxx         hg        3                4

Storoz    Serg    xxx         df        4                1