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

  if (!f)

  {

    gotoxy(2,23);

    clreol();

    cerr<<"Ошибка открытия файла "<<imf_k

    <<" на запись и чтение,нажмите <Enter>\n";

    getch();

    return;

  }

  do

  {

    gotoxy(2,23);

    clreol();

    cout<<"Введите таб.номер удаляемой записи:";

    cin>>tab;

    for (int ind=0;

    (ind=poisk_ind(tab,ind,kol_k,index_k))!=-1;

     ind++)

    {

  f.seekg((long)(index_k[ind].nomer*sizeof(zap)),ios::beg);

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

      form_kart("Удаление");

      vyvod_kart();

      do

      {

            gotoxy(2,23);

            clreol();

            cout<<"Удалить запись?:<Enter> Да,<Esc> Нет и "

                <<"поиск еще записи с таб.номером "<<tab<<'\n';

            ch=getch();

      }

      while (ch!=13 && ch!=27);

      if (ch==13) break;

    }

    form_kart("");

    if (ind==-1)

    {

      gotoxy(2,23);

      clreol();

      cout<<"Запись не найдена,нажмите <Enter>\n";

      getch();

      return;

    }

  f.seekp((long)(index_k[ind].nomer*sizeof(zap_null)),ios::beg);

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

     ud_ind(ind,index_k);

     do

     {

       gotoxy(2,23);

       clreol();

       cout<<"Продолжить удаление?:<Enter> Да,<Esc> Нет\n";

       ch=getch();

      }

      while (ch!=13 && ch!=27);

  }

  while (ch==13);

  sort(kol_k,index_k);

  f.close();

  return;

}

void zam_kart()

{

  char tab[10];

  int ch;

  const int col=25;

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

  if (!f)

  {

    gotoxy(2,23);

    clreol();

    cerr<<"Ошибка открытия файла "<<imf_k

    <<" на запись и чтение,нажмите <Enter>\n";

    getch();

    return;

  }

  do

  {

    gotoxy(2,23);

    clreol();

    cout<<"Введите таб.номер заменяемой записи:";

    cin>>tab;

    for (int ind=0;

    (ind=poisk_ind(tab,ind,kol_k,index_k))!=-1;

     ind++)

    {

  f.seekg((long)(index_k[ind].nomer*sizeof(zap)),ios::beg);

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

      form_kart("Замена");

      vyvod_kart();

      do

      {

      gotoxy(2,23);

      clreol();

      cout<<"Заменить запись?:<Enter> Да,<Esc> Нет и "

              <<"поиск еще записи с таб.номером "<<tab<<'\n';

      ch=getch();

      }

      while (ch!=13 && ch!=27);

      if (ch==13) break;

    }

    form_kart("Замена");

    if (ind==-1)

    {

      gotoxy(2,23);

      clreol();

      cout<<"Запись не найдена,нажмите <Enter>\n";

      getch();

      return;

    }

    gotoxy(2,23);

    clreol();

    vvod_kart();

  f.seekp((long)(index_k[ind].nomer*sizeof(zap)),ios::beg);

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

    zam_ind(ind,zap.tabn,index_k);

    form_kart("");

    do

    {

      gotoxy(2,23);

      clreol();

      cout<<"Продолжить замену?:<Enter> Да, <Esc> Нет\n";

      ch=getch();

    }

    while (ch!=13 && ch!=27);

  }

  while (ch==13);

  sort(kol_k,index_k);

  f.close();

  return;

}

//файл кодов mainkart без изменений

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

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

Глава 3

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

Метод объектно-ориентированного программирования основан  намодели построения программы как иерархии классов. Основными понятиями метода являются инкапсуляция, наследование и полиморфизм. Изучение метода построено на разработке программы  мини-системы управления и содержит практические занятия №7,8 и лабораторные работы №6,7,8, соответствующие последовательности этапов разработки программ.  Работа студента заключается в последовательном программировании, отладке и выполнении классов согласно их иерархии.

Пример задания

Разработать систему  учета и отчетности выполнения работ рабочими предприятия.  Учет выполнения работы рабочим фиксируется в "Акте":  таб.номер,  фио, код работы, объем(в натур.ед). Расценки работ содержатся в "Справочнике расценок": код работы, наименование, расценка. Отчет о всех выполненных работах рабочим и в целом за месяц определяется в стоимостной "Ведомости":  таб.номер, фио, наименование работы, объем, стоимость работы, итого за месяц. Исходные документы ("Акты",  "Справочник расценок") хранить в  базе данных с индексной организацией;  "Ведомость стоимости работ" выводить сразу на экран.

3.1. Проектирование структуры программы и интерфейсов

       классов.  Программирование  файла управления

Класс - это совокупность элементов-данных различных типов  и элементов-функций для их обработки с атрибутами доступа к ним. Атрибуты (спецификаторы   доступа)  осуществляют  управление доступом к элементам класса:

private - закрытые элементы,  доступны только для элементов-функций данного класса и друзей класса;

public - открытые элементы, доступны для любых функций;

protected -  защищенные  элементы,  доступны   для   элементов-функций данного класса и производных классов.

Наследование - это порождение новых абстрактных типов данных (производных  классов)  от  существующих абстрактных типов данных (базовых классов),  причем производный класс  наследует  элементы базовых классов и имеет собственные элементы.

Атрибут наследования осуществляет управление доступом к элементам базового класса (наследуемым элементам) внутри производного класса и влияет на дальнейшее наследование.

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