Основы алгоритмизации и языки программирования: Практикум на С++ (Система программирования С++. Процедурное программирование. Объектно-ориентированное программирование), страница 7

  {

  if (k==0)

    textattr(0+(2<<4));

  else

    textattr(0+(7<<4));

  pos[k]=wherex();

  cputs(m[k]);

  }

  k=0;

  for (;;)

  {

    ch=getch();

    if (ch==13) break;

    if (ch==0 && kbhit())

    {

      ch=getch();

      switch (ch)

      {

        case 77: if (k==4) continue;

        gotoxy(pos[k],1);

        textattr(0+(7<<4));

        cputs(m[k]);

        k++;

        gotoxy(pos[k],1);

        textattr(0+(2<<4));

        cputs(m[k]);

        textattr(7+(0<<4));

        break;

        case 75: if (k==0) continue;

        gotoxy(pos[k],1);

        textattr(0+(7<<4));

        cputs(m[k]);

        k--;

        gotoxy(pos[k],1);

        textattr(0+(2<<4));

        cputs(m[k]);

        textattr(7+(0<<4));

        break;

      }

    }

  }

  textattr(7+(0<<4));

  _setcursortype(_NORMALCURSOR);

  switch (k)

  {

    case 0:  sozd_kart();

                  break;

    case 1:  prosm_kart();

                  break;

    case 2:  poisk_kart();

                  break;

    case 3:  podmenu(pos[k]);

                  break;

    case 4:  break;

  }

  if (k!=4) menu();

  return;

}

main()

{

  clrscr();

  init_kart();

  menu();

}

Лабораторная работа №3

Отладить и  выполнить  первую  версию  программы,  используя пункты лабораторной работы №1.

2.2. Программирование  создания, просмотра и поиска базы     данных

Пример практического занятия №6

//вторая версия программы

//файл заголовков ind.hpp без изменений

//файл кодов ind.cpp (пока только с функциями dob_ind и sort)

#include "ind.hpp"

int dob_ind(char kl[max_pole],int &kol,tip_index index[])

{

  int nom;

  for (int i=0;i<kol;i++)

  if (index[i].kluch[0]=='\0')

  {

    strcpy(index[i].kluch,kl);

    return(index[i].nomer);

  }

  strcpy(index[kol].kluch,kl);

  index[kol].nomer=kol;

  nom=kol;

  kol++;

  return(nom);

}

void sort(int kol,tip_index index[])

{

  int k=kol-1;

  int p=1;

  while((k>0) && (p))

  {

    p=0;

    for (int i=0;i<k;i++)

    if (strcmp(index[i].kluch,index[i+1].kluch)>0)

    {

      tip_index b=index[i];

      index[i]=index[i+1];

      index[i+1]=b;

      p=1;

    }

    k--;

  }

  return;

}

int poisk_ind(char kl[max_pole],int nomer,int kol,

              tip_index index[])

{

  while (nomer<kol)

  {

    if (index[nomer].kluch[0]!='\0')

    {

      if (!strcmp(kl,index[nomer].kluch))

      return(nomer);

    }     

    nomer++;

  }

  return(-1);

}

//файл заголовков fkart.hpp без изменений

//файл кодов fkart.cpp с новыми функциями init_kart,form_kart,

//vvod_kart,vyvod_kart,sozd_kart,prosm_kart,poisk_kart

#include "fkart.hpp"

static struct t_k zap;

static struct t_k zap_null={"","","",0};

tip_index index_k[100];

int kol_k;

void init_kart()

{

  fstream f;

  clrscr();

  f.open(imf_k,ios::in|ios::out|ios::nocreate|ios::binary);

  if (!f)

  {

    f.open(imf_k,ios::in|ios::out|ios::binary);

    if (!f)

    {

      gotoxy(2,23);

      clreol();

      cerr<<"Ошибка открытия файла "<<imf_k<<",нажмите <Enter>";

      getch();

      exit(-1);

    }

    zap=zap_null;

    f.seekp((long) 0,ios::beg);

    f.write((char *)&zap_null,sizeof(zap_null));

    if (!f.good())

    {

      cout<<'\a';

      gotoxy(2,23);

      cerr<<"Ошибка записи в файл "<<imf_k<<",нажмите <Enter>\n";

      getch();

      exit(-1);

    }

  }

  int pr=0;

  int i=0;

  f.seekg((long)(i*sizeof(zap)),ios::beg);

  f.read((char *)&zap,sizeof(zap));

  if (!f.good() && !f.eof())

  {

    cout<<'\a';

    gotoxy(2,23);

    cerr<<"Ошибка чтения файла "<<imf_k<<",нажмите <Enter>\n";

    getch();

    exit(-1);

  }

  while(!f.eof())

  {

    if (zap.tabn[0]=='\0')

      index_k[i].kluch[0]='\0';

    else

    {

      strcpy(index_k[i].kluch,zap.tabn);

      pr=1;

    }

    index_k[i].nomer=i;

    i++;

    f.seekg((long)(i*sizeof(zap)),ios::beg);

    f.read((char *)&zap,sizeof(zap));

    if (!f.good() && !f.eof())

    {

      cout<<'\a';

      gotoxy(2,23);

      cerr<<"Ошибка чтения файла "<<imf_k<<",нажмите <Enter>\n";

      getch();

      exit(-1);

    }

  }

  f.clear(0);

  kol_k=i;

  sort(kol_k,index_k);

  if (!pr)

  {

    cout<<'\a';

    gotoxy(2,23);

    clreol();

    cout<<"Файл "<<imf_k

            <<" пустой,нажмите <Enter> и <Создание>\n";

    getch();

  }

  f.close();

  return;

}

void form_kart(char* option)

{

  const int col=4;

  window(10,3,70,16);

  textattr(15+(1<<4));

  clrscr();

  gotoxy(10,2);

  cputs("КАРТОТЕКА СЛУЖАЩИХ");

  gotoxy(40,2);

  cputs(option);

  textattr(0+(7<<4));

  gotoxy(col,6);

  cputs(" Таб.номер :   ");

  gotoxy(col,8);

  cputs(" Фио       :                              ");

  gotoxy(col,10);

  cputs(" Должность :                              ");

  gotoxy(col,12);

  cputs(" Оклад     :                              ");

  window(1,1,80,25);

  textattr(15+(0<<4));

  return;

}  

void vvod_kart()

{

  const int col=25;

  gotoxy(col,8);

  cin>>zap.tabn;

  cin.seekg(0,ios::end);

  gotoxy(col,10);

  cin.get(zap.fio,sizeof(zap.fio));

  //cin>>zap.fio;

  gotoxy(col,12);

  cin>>zap.doljn;

  do

  {

    gotoxy(col,14);

    cout<<"               ";

    gotoxy(col,14);

    cin.clear(0);

    cin.seekg(0,ios::end);

    cin>>zap.oklad;

  }

  while(!cin);

  return;

}

void vyvod_kart()

{

  const int col=25;

  gotoxy(col,8);

  cout<<zap.tabn;

  gotoxy(col,10);

  cout<<zap.fio;

  gotoxy(col,12);

  cout<<zap.doljn;