gotoxy(45,23);
cout<<"Начало файла";
delay(1000);
i++;
}
break;
}
}
}
return;
}
void post::correct(int x) //функция поиска, замены и удаления документов
{ // х==1 – поиск, х==2 – замена, х==3 - удаление
char kizd[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>>kizd;
for(int ind=0;(ind=poisk_ind(kizd,ind,nomer))!=-1;ind++) // цикл поиска и
//вывода записей по kizd; прямой доступ к файлу
{ // класса ind, поиск в индексом массиве и возврат номера искомой записи
//или -1
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
{
naim[0]='\0';
izd[0]='\0';
mosh=0;
}
zapis_zap(nomer);
cor_ind(ind,kizd);
}
formecran(cor);
do
{
gotoxy(1,23);
cout<<"Продолжить "<<cor<<"?:<Enter> Да, <Esc> Нет\n";
ch=getch();
}
while(ch!=13&&ch!=27);
}
while(ch==13);
}
Документ «Справочник потребностей» имеет вид:
СПРАВОЧНИК ПОТРЕБНОСТЕЙ Поиск Код изделия :########## Наименование :####################### Потребность :########### |
potr.hpp
#ifndef potr_hpp
#define potr_hpp
#include <fstream.h>
#include <stdlib.h>
#include <dos.h>
#include "index.hpp"
class potr: public ind
{
protected:
char izd[5];
char nizd[30];
float potreb;
public:
potr(char*im):ind(im)
{
izd[0]='\0';
nizd[0]='\0';
potreb='\0';
}
void init();
void sozdanie();
void prosmotr();
void correct(int);
protected:
void zapis_zap(int);
void chtenie_zap(int);
private:
void formecran(char*podmenu);
void vvod();
void vyvod();
};
#endif
potr.cpp
#include "potr.hpp"
fstream p_potr;
static int razm_zap;
void potr::zapis_zap(int nomer)
{
p_potr.seekg((long)(nomer*razm_zap),ios::beg);
p_potr.write((char*)&izd,razm_zap);
if(!p_potr.good())
{
cout<<'\a';
gotoxy(1,23);
cerr<<"Ошибка записи файла "<<imf<<", нажмите <Enter>\n";
getch();
exit(-1);
}
}
void potr::chtenie_zap(int nomer)
{
p_potr.seekg((long)(nomer*razm_zap),ios::beg);
p_potr.read((char*)&izd,razm_zap);
if(!p_potr.good()&&!p_potr.eof())
{
cout<<'\a';
gotoxy(1,23);
cerr<<"Ошибка чтения файла " <<imf<<", нажмите <Enter>\n";
getch();
exit(-1);}
}
void potr::init()
{
clrscr();
razm_zap=(sizeof izd)+(sizeof nizd)+(sizeof potreb);
p_potr.open(imf,ios::in|ios::out|ios::nocreate|ios::binary);
if(!p_potr)
{
p_potr.open(imf,ios::in|ios::out|ios::binary);
if (!p_potr)
{
gotoxy(1,23);
clreol();
cerr<<"Ошибка открытия файла "<<imf<<", нажмите <Enter>\n";
getch();
exit(-1);
}
izd[0]='\0';
nizd[0]='\0';
potreb=0;
zapis_zap(0);
}
int pr=0;
int i=0;
chtenie_zap(i);
while(!p_potr.eof())
{
init_ind(i,izd);
if(izd[0]!='\0')pr=1;
i++;
chtenie_zap(i);
}
init_kol(i);
p_potr.clear(0);
if(!pr)
{ cout<<'\a';
gotoxy(1,23);
clreol();
cout<<"Файл "<<imf<<" пустой, нажмите <Enter> и <Создание>\n";
getch();}
}
void potr::formecran(char*podmenu)
{
const int col=4;
window(10,3,70,16);
textattr(15+(1<<4));
clrscr();
gotoxy(10,2);
cputs(“СПРАВОЧНИК ПОТРЕБНОСТЕЙ”);
gotoxy(40,2);
cputs(podmenu);
textattr(0+(7<<4));
gotoxy(col,6);
cputs("Код изделия: ");
gotoxy(col,8);
cputs("Наименование: ");
gotoxy(col,10);
cputs("Потребность: ");
window(1,1,80,25);
textattr(15+(0<<4));
gotoxy(1,23);
clreol();
}
void potr::vvod()
{
const int col=37;
gotoxy(col,8);
cin>>izd;
gotoxy(col,10);
cin.seekg(0,ios::end);
cin.get(nizd,sizeof(izd));
do
{
gotoxy(col,12);
cout<<" ";
gotoxy(col,12);
cin.clear(0);
cin.seekg(0,ios::end);
cin>>potreb;
}
while(!cin);
}
void potr::vyvod()
{
const int col=37;
gotoxy(col,8);
cout<<izd;
gotoxy(col,10);
cout<<nizd;
gotoxy(col,12);
cout<<potreb;
}
void potr::sozdanie()
{
char ch;
int nomer;
do
{
formecran("Создание/Добавление");
vvod();
nomer=dob_ind(izd);
zapis_zap(nomer);
do
{
gotoxy(1,23);
cout<<"Продолжить добавление?: <Enter> Да, <Esc> Нет";
ch=getch();
}
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.