Лабораторная работа №19 по VisualC++ 2005
"Ввод/вывод записей при работе с файлами с использованием MFC"
Составил доц. Авраменко В.В.
1 Постановка задачи
Необходимо создать две диалоговые программы для обработки записей. В первой из них предусмотреть инициализацию четырех строк длиной не более 80 символов. В диалоговом окне разместить помимо OK и Cancel две кнопки: «Занесення в файл» и «Виведення із файлу». Кроме того, разместить одно текстовое окно и один список. При нажатии первой кнопки в текстовом окне должно появиться сообщение «Занесення відбулося». Нажатие второй кнопки должно привести к появлению в окне списка четырех строк после их прочтения из файла.
Во второй программе вместо инициализации предусмотреть сначала занесение отдельной строки символов в текстовое окно, а затем её запись в файл путем нажатия кнопки «Занесення в файл». Количество записываемых строк предварительно заносить в специально предназначенное для этого текстовое окно. При записи в файл предусмотреть вывод в другое текстовое окно номера записи.
При нажатии кнопки «Виведення із файлу» все записи должны быть выведены в окно списка.
2 Последовательность действий при создании первой программы
1)
Start Page.
Create:Project.
Выбрать тип проекта (Project Types) MFC, шаблон- MFC Application,
Name-rabfile1.
2) В окне Application Type выбрать Dialog based. Снять флажок Use Unicode Libraries. Щёлкнуть на Finish.
3) Выбрать вкладку Resource View (Просмотр ресурсов). Раскрыть папку Dialog . Дважды щелкнуть на IDD_RABFILE1_DIALOG. Появится диалоговое окно. Вытереть в нем текст TODO…….
4) Для вывода только одного сообщения достаточно использовать текстовое окно. Однако для вывода четырех строк требуется уже окно списка. Поэтому в диалоговом окне из Toolbox следует разместить управляющие элементы: текстовое окно (ab| Edit Control), окно списка (List Box ) и две кнопки («Занесення в файл» и «Виведення із файлу»).
5) В класс Crabfile1Dlg добавить элементы данных, соответствующие списку и текстовому окну. Как обычно, надо в диалоговом окне выделить окно списка, вызвать контекстное меню, выбрать в нем Add Variable. В появившемся окне установить доступ private, тип по умолчанию- CListBox, имя дать m_list1. Для текстового окна ввести private CEdit m_edit1.
6) Кроме указанных в класс Crabfile1Dlg нужно ещё добавить элементы данных:
char OutString[4][80] (строки, заносимые в файл) и char InString[80] (строка, в которую будет последовательно осуществляться считывание из файла). Эти массивы не являются управляющими элементами. Поэтому их добавление осуществляется как обычно: во вкладке ClassView выделяется Crabfile1Dlg, вызывается контекстное меню, а в нем- Add/ Add Variable. Размерность массивов задавать в окошке Variable type, например, char[4][80]. Доступ к этим массивам- private.
7) Инициализация данных диалогового окна выполняется в методе OnInitDialog() класса Crabfile1Dlg. После занесения в массив OutString четырех произвольных символьных строк фрагмент этого метода имеет вид
BOOL Crabfile1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
strcpy_s(OutString[0],"Тихо було за столом.");
strcpy_s(OutString[1],"Гості марно намагалися проковтнути все і відразу. ");
strcpy_s(OutString[2],"Інколи чути було якесь булькотіння.");
strcpy_s(OutString[3],"У вікна заглядали знервовані коти.");
// Add "About..." menu item to system menu.
…………………………………………………………………………………………………………………………………………..
……………………………………………………………………………………………………………………………
// IDM_ABOUTBOX must be in the system command range
}
return TRUE; // return TRUE unless you set the focus to a control
}
Следует обратить внимание, что для копирования строк символов используется более современная функция strcpy_s()хотя допускается применение и strcpy().
А ещё нужно вспомнить о том, что строки списка по умолчанию сортируются в алфавитном порядке.Чтобы выводимые из файла записи размещались в окне списка в той же последовательности, в какой заносились, сортировку следует отключить. Для этого надо выделить окно списка,вызвать контекстное меню, выбрать команду properties, перейти на вкладку Sort и в открывшемся окне вместо true установить false.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.