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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.