Федеральное агентство связи Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования «Московский технический университет связи и информатики» Кафедра информатики ЛАБОРАТОРНАЯ РАБОТА № 6 по дисциплине “Языки программирования ” на тему «Создание приложений Windows Forms для работы с потоковыми файлам» Выполнил: Проверил: Москва 2020 г. Оглавление 1. Индивидуальное задание на разработку проект..………………..…………..3 2. Разработка графического интерфейса пользователя приложения……..…3 3. Разработка программного кода приложения…………………………..……3 4. Результаты выполнения приложения..…………………………………..…..7 5. Доказательство правильности результатов……............................................9 2 1. Индивидуальное задание на разработку проект Создать проект решения следующей задачи: Строка содержит дату в формате "mm-dd-yyyy", где mm – месяц, dd – день, yyyy – год. Проверьте корректность задания даты и получите строку с датой в формате "dd.mm.yy", где yy – две последние цифры года. 2. Разработка графического интерфейса пользователя приложения Рисунок 1 – Графический интерфейс проекта 3. Разработка программного кода приложения Программные коды заголовочных файлов #include "stdafx.h" using namespace System; using namespace System::Windows::Forms; 3 using namespace System::IO; #include <tchar.h> void FileProc(String^ InFile,String^ OutFile,String^ InBuffer,String^ OutBuffer ,ListBox^ lstInpFile, ListBox^ lstOutFile); String^ Find(String^ s); String^ DelSpace(String^ s); String^ NewString(String^ s); void Get(ListBox^ lstInpFile,String^ InBuffer); // stdafx.h: включаемый файл для стандартных системных включаемых файлов // или включаемых файлов для конкретного проекта, которые часто используются, но // не часто изменяются #pragma once // TODO: Установите здесь ссылки на дополнительные заголовки, требующиеся для программы #include "find.h" Программный код файла Find.cp #include "stdafx.h" #include <tchar.h> String^ Find(String^ s) { array <TCHAR>^ dlm={' '}; s=NewString(s); return s; } String^ NewString(String^ s) { String^ s2; String^ s3; String^ s4; s2=s->Substring(0,2); s3=s->Substring(3,2); s4=s->Substring(8,2); array <String^>^ words={s3,s2,s4}; String ^str=str->Join(".",words ) ; return str; } Программный код файла FilePro.cpp #include <tchar.h> #include "stdafx.h" void FileProc(String^ InFile,String^ OutFile,String^ InBuffer,String^ OutBuffer ,ListBox^ lstInpFile, ListBox^ lstOutFile) { StreamReader^ sr = nullptr; StreamWriter^ sw = nullptr; try { sr = gcnew StreamReader(InFile); sw = gcnew StreamWriter(OutFile,false); } catch(Exception^ ex) { 4 MessageBox::Show(ex>Message,"Ошибка",MessageBoxButtons::OK,MessageBoxIcon::Error); if(sr)sr->Close(); if(sw)sw->Close(); return; } try { while(InBuffer = sr->ReadLine()) { if(InBuffer->Length==0) continue; Get(lstInpFile,InBuffer); OutBuffer = Find(InBuffer); sw->WriteLine(OutBuffer); Get(lstOutFile,OutBuffer); } } catch (Exception^ ex) { MessageBox::Show(ex>Message,"Ошибка",MessageBoxButtons::OK,MessageBoxIcon::Error); } sr->Close(); sw->Close(); } Программный код файла Get.cpp void Get(ListBox^ lstInpFile,String^ InBuffer) { lstInpFile->Items->Add(InBuffer); } Программный код событийных процедур в файле Form1.h #pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { lstInpFile->Items->Clear(); lstOutFile->Items->Clear(); txtInpPath->Clear(); txtOutPath->Clear(); cmdExec->Enabled = false; } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { OpenFileDialog^ openFileDialog = gcnew OpenFileDialog; openFileDialog->Title= "Открытие входного файла"; openFileDialog->InitialDirectory = "d:\\"; openFileDialog->Filter = "Текстовые файлы (*.txt)| *.txt"; openFileDialog->FilterIndex = 1; openFileDialog->ShowReadOnly = true; openFileDialog->ReadOnlyChecked = true; openFileDialog->RestoreDirectory = true; 5 if(openFileDialog->ShowDialog() == System::Windows::Forms::DialogResult::OK) txtInpPath->Text = openFileDialog->FileName; else txtInpPath->Text = ""; cmdExec->Enabled = txtInpPath->Text->Length>0 && txtOutPath>Text->Length>0; } private: System::Void cmdOpenOutFile_Click(System::Object^ sender, System::EventArgs^ e) { SaveFileDialog^ saveFileDialog = gcnew SaveFileDialog; saveFileDialog->Title= "Открытие выходного файла"; saveFileDialog->Filter = "Текстовые файлы (*.txt)| *.txt"; saveFileDialog->FilterIndex = 1; saveFileDialog->OverwritePrompt = true; if(saveFileDialog->ShowDialog() == System::Windows::Forms::DialogResult::OK) txtOutPath->Text = saveFileDialog->FileName; else txtOutPath->Text = ""; cmdExec->Enabled = txtInpPath->Text->Length>0 && txtOutPath>Text->Length>0; } private: System::Void cmdExec_Click(System::Object^ { lstInpFile->Items->Clear(); lstOutFile->Items->Clear(); sender, System::EventArgs^ e) String^ InFile = txtInpPath->Text; String^ OutFile = txtOutPath->Text; String^ InBuffer = ""; String^ OutBuffer = ""; FileProc(InFile,OutFile,InBuffer,OutBuffer,lstInpFile,lstOutFile); } private: System::Void cmdExit_Click(System::Object^ sender, System::EventArgs^ e) { this->Close(); } }; } 6 4. Результаты выполнения приложения Рисунок 2 – Окно выбора входного файла Рисунок 3 – Окно установки пути к выходному файлу 7 Рисунок 4 – Результаты работы приложения 5. Доказательство правильности результатов Правильность работы приложения подтверждается приведенными выше результатами его выполнения. 8