лабки / еще какието лабки разных вариантов / ЛР_22
.docxВаріант 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
символів. У другій програмі замість ініціалізації передбачено спочатку занесення окремого рядка символів до текстового вікна, а потім його запис у файл шляхом натиснення кнопки «Занесення до файла». Кількість записуваних рядків попередньо заноситься в спеціально призначене для цього текстове вікно.