while (ch!=13&&ch!=27);
}
while(ch==13);
}
void potr::prosmotr()
{
char ch;
int pr=-1;
int i=0;
chtenie_zap(i);
formecran("Просмотр");
vyvod();
for(;;)
{
gotoxy(1,23);
clreol();
cout<<"<- Предыдущая, -> Следующая, <Esc> Выход";
ch=getch();
if(ch==27) break;
if (ch==0&& kbhit())
{
ch=getch();
switch(ch)
{
case 77: i++;
chtenie_zap(i);
if (!p_potr.eof())
{
formecran("Просмотр");
vyvod();
}
else
{
cout<<'\a';
gotoxy(45,23);
cout<<"Конец файла";
delay(1000);
i--;
p_potr.clear(0);
}
break;
case 75: i--;
if (i>=pr)
{
chtenie_zap(i);
formecran("Просмотр");
vyvod();
}
else
{
cout<<'\a';
gotoxy(45,23);
cout<<"Начало файла";
delay (1000);
i++;
}
break;
}
}
}
return;
}
void potr::correct(int x)
{
char kodizd[10];
char ch;
int nomer;
const int col=37;
char*cor;
switch(x)
{
case 1:cor="Поиск";
break;
case 2:cor="Замена";
break;
case 3:cor="Удаление";
break;
}
do
{
formecran(cor);
gotoxy(1,23);
cout<<"Введите Код изделия записи: ";
cin>>kodizd;
for(int ind=0;(ind=poisk_ind(kodizd,ind,nomer))!=-1;ind++)
{
chtenie_zap(nomer);
formecran(cor);
vyvod();
do
{
gotoxy(1,23);
if(x==1)
cout<<"Запись найдена?: <Enter> Да, <Esc> Нет\n";
else
cout<<cor<<" записи?: <Enter> Да, <Esc> Нет\n";
ch=getch();
}
while (ch!=13&&ch!=27);
if(ch==13) break;
}
if (ind==-1)
{
gotoxy(1,23);
clreol();
cout<<"Запись не найдена, нажмите <Enter>\n";
getch();
return;
}
if (x==2||x==3)
{
if (x==2)
{
formecran(cor);
vvod();
}
else
{
izd[0]='\0';
nizd[0]='\0';
potreb=0;
}
zapis_zap(nomer);
cor_ind(ind,kodizd);
}
formecran(cor);
do
{
gotoxy(1,23);
cout<<"Продолжить "<<cor<<"?:<Enter> Да, <Esc> Нет\n";
ch=getch();
}
while(ch!=13&&ch!=27);
}
while(ch==13);
}
Рассмотрим производный класс itog, имеющий несколько базовых классов: index, post, potr.
ВЕДОМОСТЬ ПОТРЕБНОСТЕЙ Расчет Код изделия :############ Наименование Наименование Превышение изделия поставщика ############# ########### ######### ############# ########### ######### |
itog.hpp
#ifndef itog_hpp
#define itog_hpp
#include <fstream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <dos.h>
#include "post.hpp"
#include "potr.hpp"
class itog: public post,public potr // определение производного класса itog,
{ // множественное наследование
private:
float itog;
public:
itog(char*im1,char*im2):post(im1),potr(im2) ) // конструктор
{ // вызывает конструкторы базовых классов
mosh=potreb=itog=0; // post и potr инициализируют собственные элементы
} // прототипы элементов-функций
void sozdanie();
private:
void formecran(char*);
};
#endif
itog.cpp
#include "itog.hpp"
void itog::formecran(char*podmenu)
{
window(10,3,70,20);
textattr(15+(1<<4));
clrscr();
gotoxy(10,2);
cputs("ВЕДОМОСТЬ ПОТРЕБНОСТЕЙ");
gotoxy(40,2);
cputs(podmenu);
gotoxy(4,4);
cputs("Код изделия: Наим.изделия \r\n");
cputs("-------------------------------------------------------------------\r\n");
cputs("Наим.поставщика: Превышение: \r\n");
cputs(" -------------------------------------------------------------------\r\n");
window(1,1,80,25);
textattr(15+(0<<4));
gotoxy(1,23);
clreol();
}
void itog::sozdanie()
{
char ch;
char tab[max_pole];
int nomer;
do
{
formecran("Расчет");
gotoxy(1,23);
cout<<"Введите Код изделия:";
cin>>tab;
int pr=0,k=0;
for (int nomer1=0;(nomer1=post::poisk_ind(tab,nomer1,nomer))!=-1;nomer1++)
{
post::chtenie_zap(nomer);
gotoxy(25,6);
cout<<tab;
gotoxy(54,6);
cout<<nizd;
int nomer2=0;
if ((nomer2=potr::poisk_ind(post::izd,nomer2,nomer))!=-1)
{
potr::chtenie_zap(nomer);
pr=1;
if(mosh<potreb)
{
itog=potreb-mosh;
}
k++;
gotoxy(27,k+9);
cout<<naim;
if(k==10)
{
gotoxy(1,23);
clreol();
cout<<"Нажмите <Enter>";
getch();
k=0;
formecran("Расчет");}
}
else
{
gotoxy(1,23);
clreol();
cout<<"Код изделия "<<post::izd<<" не найден в файле "<<potr::imf;
gotoxy(1,24);
cout<<"Расчет остановлен, нажмите <Enter>";
getch();
return;}
}
if ((nomer1==-1)&&!pr)
{
gotoxy(1,23);
clreol();
cout<<"Код изделия "<<tab<<" не найден в файле "<<post::imf<<", нажмите <Enter>\n";
getch();
return;
}
gotoxy(55,10);
cout<<itog;
gotoxy(1,23);
cout<<"Конец вывода, нажмите <Enter>";
getch();
do
{
gotoxy(1,23);
clreol();
cout<<"Продолжить расчет для следующего Кода изделия?:""<Enter> Да, <Esc> Нет";
ch=getch();
}
while(ch!=13&&ch!=27);
}
while(ch==13);
}
Для функционирования нашей системы надо создать файл управления, содержащий главную функцию и меню, которое имеет вид:
Справочник поставщиков Справочник потребности Расчет Выход
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.