к выполнению лабораторной работы №4.

 

Тема: «Разработка классов и создание ООП обработки текстовых и двоичных файлов».

Задание на ЛР4совпадает с заданием на ЛР3, но дополнительно

 

1) спроектировать выполнение пунктова) и б)индивидуального задания так,чтобыисходные данные могли считываться из файлов любого типа (текстового или двоичного), а также вводиться с клавиатуры;

2) предусмотреть возможность записи исходных данных и результатов обработки в виде htm – файлов, связанных между собой (должны быть созданы отдельные функции).

 

Создание htm - файлов – это один из способов представления и просмотра исходных данных и результата обработки через браузер.

 

Указания по оформлению программного кода

 

1). Добавить новые методыв класс STUD:

 

//Создание htm-файлов и связей между ними:

void Print_htm(FILE* ft,int vid,char *Ref=NULL);

//параметр vid – совпадает с номером таблицы:

void Table1_htm(FILE *); // <-- таблица исходных данных

void Table2_htm(FILE *); // <-- таблица результатов

 

2). Изменить функцию Save(), добавив в нее пункт создания htm-файлов:

//-----------------------------------------

int STUD::Save(){FILE* ft; int L; char NF[15];

//-----------------------------------------

cout<<"\n Save in File: 1 - txt, 2 - bin, 3 -htm, 0 - Exit: "; cin>>L;

if(L>0&&L<3){cout<<"\n Input File Name: ";cin>>NF;}

switch(L){

case 1:ft=fopen(NF,"wt"); Print_table(ft);fclose(ft);break;

case 2:ft=fopen(NF,"wb"); Write_bin(ft); fclose(ft); break;

case 3:ft=fopen("Ish.htm","wt"); Print_htm(ft,1,"Rez.htm"); fclose(ft);

ft=fopen("Rez.htm","wt"); Print_htm(ft,2,"Ish.htm"); fclose(ft);

}

return L; }

 

3). Описать новые методы:

 

//Создание htm-файла:

 

//-------------------------------------------------

void STUD::Print_htm(FILE* ft,int vid, char *Ref){

//-------------------------------------------------

fprintf(ft,"\n <HTML>");

fprintf(ft,"\n <BODY bgcolor=BLUE>"); // цвет фона

switch(vid){

case 1:Table1_htm(ft);break; // <-- таблица исходных данных

case 2:Table2_htm(ft);break; // <-- таблица результатов

}

fprintf(ft,"\n <P align='center'>"); // центрирование текста

if(Ref){

fprintf(ft,"\n <A href=%s>",Ref); // <-- запись ссылки

fprintf(ft,"<FONT size=5 color=RED><B> Переход -> %s </B></FONT> </A>",Ref);

}

fprintf(ft,"\n </P>");

fprintf(ft,"\n </BODY>");

fprintf(ft,"\n </HTML>");

 

cout<<"\n File_"<<vid<<" *.htm is ready! "; getch();

}

// Таблица исходных данных:

 

//-----------------------------------------

void STUD::Table1_htm(FILE* ft){int i,j;

//-----------------------------------------

fprintf(ft,"\n <TABLE bgcolor=YELLOW width=700 border=1 align='center'>");

fprintf(ft,"\n <Caption><FONT size=5 color=YELLOW><b> Исходные данные </b></FONT></Caption>");

fprintf(ft,"\n <TR><TH> N </TH><TH> Фамилия </TH><TH> Балл _1 </TH><TH> Балл_2 </TH><TH> Балл _3 </TH></TR>");

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

fprintf(ft,"\n <TR bgcolor=WHITE><TD>%2d </TD>",i+1);

fprintf(ft,"<TD> %10s </TD>",Mas[i].Fam);

for(j=0;j<3;j++)fprintf(ft,"<TD> %5d </TD>",Mas[i].Bal[j]);

}

fprintf(ft,"</TR>");

fprintf(ft,"\n </TABLE>"); }

// Таблица результатов:

 

//-----------------------------------------

void STUD::Table2_htm(FILE* ft){int i,j;

//-----------------------------------------

fprintf(ft,"\n <TABLE bgcolor=YELLOW width=700 border=1 align='center'>");

fprintf(ft,"\n <Caption><FONT size=5 color=YELLOW><b> Результат обработки </b></FONT></Caption>");

fprintf(ft,"\n <TR><TH> N </TH><TH> Фамилия</TH><TH> Балл_1 </TH><TH> Балл_2 </TH><TH> Балл_3 </TH>");

fprintf(ft,"\n <TH> Сред.балл </TH></TR>");

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

fprintf(ft,"\n <TR bgcolor=WHITE><TD>%2d </TD>",i+1);

fprintf(ft,"<TD> %10s </TD>",Mas[i].Fam);

for(j=0;j<3;j++)fprintf(ft,"<TD> %5d </TD>",Mas[i].Bal[j]);

fprintf(ft,"<TH> %8.2f</TH>",Mas[i].SRED);

}

float SR[]={0,0,0,0};

for(i=0;i<kol;i++){ for(j=0;j<3;j++)SR[j]+=Mas[i].Bal[j];

SR[3]+=Mas[i].SRED;

}

if(kol)for(j=0;j<4;j++)SR[j]/=kol;

fprintf(ft,"\n <TR bgcolor=RED><TH>Итог!</TH><TH> Среднее: </TH> ");

for(j=0;j<4;j++){fprintf(ft,"<TH> %6.2f </TH>",SR[j]);}

fprintf(ft,"</TR>");

fprintf(ft,"\n </TABLE>"); }

 

В результате будут созданы два файла: "Ish.htm" (файл с исходными данными) и "Rez.htm" (файл с результатами обработки),связанные между собой ссылками, позволяющими при их просмотре через браузер переходить от одного файла к другому.