
- •Задание №3. Программа содержит оператор while, вычисляет сумму чисел, которые кратны 5 - в диапазоне от а до b
- •Задание № 4. Составить программу, в которой организовать ввод строки текста, подсчитать количество слов в тексте, длину каждого слова и количество букв "а" в тексте.
- •Задание № 5. Составить программу, в которой описывается структура
- •Задание № 6. Составить программу, в которой описывается структура
- •Задание № 9. Создать приложение для записи информации в файл произвольного доступа
- •Задание № 10. Создать программу для работы с файлом произвольного доступа "записная книжка"
Задание № 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;
}
//---------------------------------------------------------------------------