Программа по обработке файла в оконном режиме

Содержание

Слайд 2

Написать программу по обработке файла, содержащего информацию о рей-тинге студентов. Каждая

Написать программу по обработке файла, содержащего информацию о рей-тинге студентов. Каждая

запись должна содержать ФИО студента и полученный балл рейтинга.
Вывести информацию, отсортирован-ную в порядке увеличения рейтинга.
Результаты выполнения программы сохранить в текстовом файле.
В программе должны быть выполнены следующие действия: создание нового файла, открытие и просмотр всех записей, добавление, сортировка, сохранение.
Слайд 3


Слайд 4

Кнопку «Создать» нажимаем только при первом запуске программы или, если захотим

Кнопку «Создать» нажимаем только при первом запуске программы или, если захотим

заменить прежнюю информацию на новую, в окне Memo1 отображается путь и имя созданного файла.
Заполнив оба поля информацией, нажимаем кнопку «Добавить», после чего введенная информация отображается в окне Memo1.
Для работы с уже созданным файлом нажимаем кнопку «Открыть» – в Memo1 выводятся все записи из файла, после чего можно добавлять новые данные в конец этого файла, не уничтожая предыдущие.
Слайд 5

«Сортировать» – в Memo1 выводят-ся отсортированные по рейтингу записи. «Сохранить результаты»

«Сортировать» – в Memo1 выводят-ся отсортированные по рейтингу записи.

«Сохранить результаты» – созда-ется текстовый файл, содержащий всю информацию Memo1 с помощью функции
SaveToFile(FileNameRez);
Которая выполняет запись информации из Memo1 в файл с указанным именем, который можно просмотреть в любом текстовым редакторе (блокноте, Word).
Функция void Out(TZap, TMemo*);
– для вывода в Memo1 одной записи.
Слайд 6

Текст программы может иметь следующий вид: . . . #include #include

Текст программы может иметь следующий вид:
. . .
#include
#include
struct TZap

{
char FIO[30];
double s_b;
} Zap;
int size = sizeof(TZap);
FILE *Fz;
AnsiString File_Zap;
void Out ( TZap, TMemo* );
Слайд 7

Кнопка «Создать» OpenDialog1->Title="Создать новый файл"; if (OpenDialog1->Execute() ) { // OK

Кнопка «Создать»
OpenDialog1->Title="Создать новый файл";
if (OpenDialog1->Execute() ) { // OK

File_Zap = OpenDialog1->FileName;
if ((Fz = fopen(File_Zap.c_str(),"wb")) == NULL) {
ShowMessage("Ошибка создания ФАЙЛА!");
return;
}
}
Memo1->Lines->Add("Создали новый файл: "
+AnsiString(File_Zap));
fclose(Fz);
Слайд 8

Кнопка «Добавить» Fz = fopen(File_Zap.c_str(),"ab"); strcpy ( Zap.FIO, Edit1 -> Text.c_str());

Кнопка «Добавить»
Fz = fopen(File_Zap.c_str(),"ab");
strcpy ( Zap.FIO, Edit1 -> Text.c_str());

Zap.s_b = StrToFloat(Edit2->Text);
Out ( Zap, Memo1 );
fwrite(&Zap, size, 1, Fz);
Edit1->Text = ""; Edit2->Text = "";
fclose(Fz);
Слайд 9

Кнопка «Сортировать» TZap st, *mas_Z; Fz = fopen(File_Zap.c_str(), "rb"); int D_f

Кнопка «Сортировать»
TZap st, *mas_Z;
Fz = fopen(File_Zap.c_str(), "rb");
int D_f =

fileno(Fz); - Дескриптор файла
int len = filelength(D_f); - Размер файла
int i, j, kol;
kol = len/size; - Количество записей
mas_Z = new TZap[kol];
Слайд 10

fread(mas_Z, size, kol, Fz); fclose(Fz); Memo1->Lines->Add("Сортированные данные"); for (i=0; i for

fread(mas_Z, size, kol, Fz);
fclose(Fz);
Memo1->Lines->Add("Сортированные данные");
for (i=0; i

< kol-1; i++)
for (j=i+1; j < kol; j++)
if (mas_Z[i].s_b > mas_Z[j].s_b) {
st = mas_Z[i];
mas_Z[i] = mas_Z[j];
mas_Z[j] = st;
}
for (i=0; i delete []mas_Z;
Слайд 11

Кнопка «Сохранить» SaveDialog1->Title = "Сохранить файл результатов"; if (SaveDialog1->Execute()) { AnsiString

Кнопка «Сохранить»
SaveDialog1->Title = "Сохранить файл
результатов";
if (SaveDialog1->Execute()) {
AnsiString FileNameRez =
SaveDialog1->FileName;

Memo1->Lines->SaveToFile ( FileNameRez );
}
Слайд 12

Кнопка «Открыть» OpenDialog1->Title="Открыть файл"; if (OpenDialog1->Execute()) { File_Zap = OpenDialog1->FileName; if

Кнопка «Открыть»
OpenDialog1->Title="Открыть файл";
if (OpenDialog1->Execute()) {
File_Zap = OpenDialog1->FileName;
if ((Fz=fopen(File_Zap.c_str(),"rb"))==NULL)

{
ShowMessage("Ошибка открытия Файла!");
return;
}
}
Слайд 13

Memo1->Lines->Add("----- Все сведения -----"); while(1) { if ( ! fread(&Zap,size,1,Fz )

Memo1->Lines->Add("----- Все сведения -----");
while(1) {
if ( ! fread(&Zap,size,1,Fz )

) break;
- Выходим из цикла после чтения из файла последней записи
Out(Zap, Memo1);
}
fclose(Fz);