Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
27.01.2024
Размер:
438.87 Кб
Скачать

Варіант 7

Лабораторна робота 20

СЕРІАЛІЗАЦІЯ НЕСТАНДАРТНИХ ОБ’ЄКТІВ ПІД ЧАС РОБОТИ З ФАЙЛАМИ

Постановка завдання

Необхідно створити дві діалогові програми для обробки записів. У першій із

них передбачити ініціалізацію чотирьох рядків довжиною не більше 80

символів. У діалоговому вікні розмістити, крім OK і Cancel, дві кнопки:

«Занесення до файла» і «Виведення із файла». Крім того, розмістити одне

текстове вікно й один список. При натисканні першої кнопки в текстовому вікні повинне з'явитися повідомлення «Занесення відбулося». Натиснення другої кнопки повинне викликати появу у вікні списку чотирьох рядків після їх прочитання з файла.

Код та блок-схеми:

BOOL Crabfile1Dlg::OnInitDialog()

{

CDialogEx::OnInitDialog();

strcpy_s(OutString[0],"Тихо було за столом.");

strcpy_s(OutString[1],"Гості марно

намагалися проковтнути все і відразу.");

strcpy_s(OutString[2],"Інколи чути було

якесь булькотіння.");

strcpy_s(OutString[3],"У вікна заглядали

знервовані коти.");

}

return TRUE;

}

void Crabfile1Dlg::OnBnClickedButton1()

{

CFile to_file("f1.dat",

CFile::modeCreate|CFile::modeWrite);

for(int i=0; i<4; i++)

{ to_file.Seek(i*80,CFile::begin);

to_file.Write(OutString[i],80);

} m_edit1.SetWindowTextA("Занесення

відбулося");

// TODO: добавьте свой код обработчика уведомлений

to_file.Close();

// Необов’язково

}

void Crabfile1Dlg::OnBnClickedButton2()

{

CFile from_file("f1.dat",CFile::modeRead);

for(int i=0; i<4; i++)

{

from_file.Seek(i*80, CFile::begin);

from_file.Read(InString, 80);

m_list1.AddString(InString);

}

// TODO: добавьте свой код обработчика уведомлений

}

Скріншот программи:

Постановка завдання

У другій програмі замість ініціалізації передбачити спочатку занесення

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

шляхом натиснення кнопки «Занесення до файла». Кількість записуваних

рядків попередньо заносити в спеціально призначене для цього текстове

вікно. При записі у файл передбачити виведення в інше текстове вікно номера запису. При натисненні кнопки «Виведення із файла» всі записи повинні бути виведені у вікно списку.

Код та блок-схеми:

void Crabfile2Dlg:: OnBnClickedButton1()

{

to_file.Open("f1.dat",CFile::modeCreate|CFile::modeWrite);

nomer=0; CString s;

m_edit1.GetWindowTextA(s);

kil_poliv=atoi(s);

// TODO: добавьте свой код обработчика уведомлений

}

void Crabfile2Dlg:: OnBnClickedButton2()

{

CString s; m_edit2.GetWindowTextA(s);

strcpy_s(OutString[nomer],s);

to_file.Seek(nomer*80,CFile::begin);

to_file.Write(OutString[nomer],80);

char str[10]; _gcvt(nomer+1,3,str);

m_edit3.SetWindowTextA(str);

m_edit2.SetWindowTextA(""); nomer++;

if(nomer>=kil_poliv)

{

nomer=0;

m_edit2.SetWindowTextA("Занесення закінчилося");

to_file.Close();

}

// TODO: добавьте свой код обработчика уведомлений

}

void Crabfile2Dlg::OnBnClickedButton3()

{

from_file.Open("f1.dat",CFile::modeRead);

CString s;

for(int i=0;i<kil_poliv;i++)

{

from_file.Seek(i*80,CFile:: begin);

from_file.Read(InString,80);

//strcpy(s,InString);

m_list1.AddString(InString);

}

// TODO: добавьте свой код обработчика уведомлений

}

Скріншот программи:

Висновки

Створено дві діалогові програми для обробки записів. У першій із

них передбачено ініціалізацію чотирьох рядків довжиною не більше 80

символів. У другій програмі замість ініціалізації передбачено спочатку занесення окремого рядка символів до текстового вікна, а потім його запис у файл шляхом натиснення кнопки «Занесення до файла». Кількість записуваних рядків попередньо заноситься в спеціально призначене для цього текстове вікно.

Соседние файлы в папке еще какието лабки разных вариантов