Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задание ООП.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
201.76 Кб
Скачать

Задание № 9. Создать приложение для записи информации в файл произвольного доступа

создать приложение для записи информации в файл произвольного доступа,

изучить способы проверки входных данных с использованием компонентов

MaskEdit, OpenDialog, SaveDialog..

Текст файла .cpp:

//---------------- Unit1.cpp ----------------------------------

#include <vcl.h>

#include <fstream.h>

#pragma hdrstop

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

struct Notes

{

char Name[60]; // Фамилия, имя, отчество

char Pol; // Пол

char Dat[9]; // Дата рождения

char Phone[9]; // Телефон

char Adr[60]; // Адрес

int Kod; // Код

};

char * fn="";

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::btnOpenClick(TObject *Sender)

{

OD1->Execute(); // Активизировать диалог "Открыть файл"

fn=OD1->FileName.c_str(); // в fn записать указатель на имя файла

Label6->Caption= "Открыт: " +OD1->FileName;

// вывести имя файла в компоненте

// Label6

// Сделать кнопки "Считать", "Добавить" активными, а "Сохранить в файле"

// неактивной

btnRead->Enabled=true;

btnAdd->Enabled=true;

btnSave->Enabled=false;

}

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

void __fastcall TForm1::btnReadClick(TObject *Sender)

{

Memo1->Clear(); // Очистить Мемо

Notes Note1;

// открыть файл для чтения и записи, в двоичном режиме

fstream file(fn, ios::binary | ios::in | ios::out);

char str[80];

// установить указатель на начало файла

file.seekg(0);

// пока не конец файла, читать запись в переменную Note1

while (!file.read((char*)&Note1, sizeof(Notes)).eof())

{

// Сформировать строку str из переменной Note1

sprintf(str,"Имя: %s\t Дата рождения:%s\t Пол:%c\t Тел.:%s\t Адрес:%s\tКод:%d",

Note1.Name,Note1.Dat,Note1.Pol,Note1.Phone,Note1.Adr,Note1.Kod);

// Добавить строку str в Memo1

Memo1->Lines->Add(str);

}

file.close(); // Закрыть файл

}

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

void __fastcall TForm1::btnAddClick(TObject *Sender)

{

Notes Note1;

// Записать значения введенные пользователем в Note1

strcpy(Note1.Name,edFio->Text.c_str());

if (RadioGroup1->ItemIndex==1)

Note1.Pol='М';

else

Note1.Pol='Ж';

strcpy(Note1.Dat,MaskEdit1->Text.c_str());

strcpy(Note1.Phone,MaskEdit2->Text.c_str());

strcpy(Note1.Adr,edAdres->Text.c_str());

Note1.Kod=edKod->Text.ToInt();

// открыть файл в двоичном режиме для добавления

ofstream ofile(fn,ios::app | ios::binary);

ofile.write((char*)&Note1, sizeof(Notes));

ofile.close(); // закрыть файл

}

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

void __fastcall TForm1::btnSaveClick(TObject *Sender)

{

SD1->Execute(); // Активизировать диалог "Сохранить файл"

fn=SD1->FileName.c_str();

// в fn записать указатель на имя файла

Label6->Caption= "Сохраняю в файле: "+SD1->FileName;

// Вывести имя файла при помощи метки Label6

Notes Note1;

// Записать значения введенные пользователем в Note1

strcpy(Note1.Name,edFio->Text.c_str());

if (RadioGroup1->ItemIndex==1)

Note1.Pol='М';

else

Note1.Pol='Ж';

strcpy(Note1.Dat,MaskEdit1->Text.c_str());

strcpy(Note1.Phone,MaskEdit2->Text.c_str());

strcpy(Note1.Adr,edAdres->Text.c_str());

Note1.Kod=edKod->Text.ToInt();

// открыть файл

ofstream ofile(fn,ios::binary);

// записать Note1 в файл

ofile.write((char*)&Note1, sizeof(Notes));

ofile.close(); // закрыть файл

// Сделать кнопки "Считать", "Добавить" активными, а "Сохранить в файле"

// неактивной

btnRead->Enabled=true;

btnAdd->Enabled=true;

btnSave->Enabled=false;

}

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