|
|||
Варианты задания к лабораторной работе № 10
Лабораторная работа № 10 Цель работы:Получить практические навыки разработки проектов с использованием компонента текстовый редактор для чтения и обработки текстового файла. Ход работы: 1.Создайте дополнительный класс, в который поместите методы обработки текстового файла: ü открытие файла; ü сохранение файла; ü вывод файла на принтер; ü подсчёт количества слов в тексте; ü метод (или несколько методов) для обработки файла по своему варианту. 2.Разработайте основной модуль (проект, включающий форму). Пользовательский интерфейс должен включать: систему меню, панель инструментов, строку состояния. Например, интерфейс может выглядеть так: Рис. 1 Вид формы на этапе выполнения проекта
3.Создайте метод обработки события выбора пункта меню «Открыть файл». При выборе этого пункта пользователю предлагается выбрать файл для открытия при помощи диалогового окна, а затем вызывается ранее созданный метод открытия файла из класса. 4.Сохраните и откомпилируйте проект. Исправьте синтаксические ошибки. 5.Запустите проект на выполнение. Протестируйте метод выбора пункта меню «Открыть файл». Произведите отладку проекта. 6.Создайте метод выбора пункта меню «Сохранить файл» и «Сохранить как». Эти функции будут похожи. При обычном сохранении файла используем тоже имя, которое было задано в переменной при открытии файла. При выборе пункта меню «Сохранить как» происходит вызов диалогового окна сохранения файла. Если пользователь вводил текст вручную, не открывая файл, или редактировал открытый ранее файл, то при закрытии формы нужно предложить ему сохранить его. 7.Создайте метод выбора пункта меню «Печать». При нажатии на кнопку вызывается соответствующий метод дополнительного класса. Произведите отладку проекта. 8.Назначьте соответствующим кнопкам на панели инструментов методы обработки событий выбора нужных пунктов меню. Дважды писать один и тот же код в программе не нужно. 9.Создайте методы обработки события выбора остальных пунктов меню: «Параметры», «Поиск слов», «Справка». Пункт меню «Параметры» должен предоставлять возможности скрыть/показать панель инструментов, настроить параметры шрифта выделенного текста в редакторе richTextBox с помощью диалогового окна «Шрифт», настроить цвет шрифта и фона выделенного текста с помощью диалогового окна выбора цвета. Расположить кнопки с иконками для оформления текста на панели инструментов. 10.Скопируйте в отчёт тексты всех модулей. Внесите подробные комментарии. 11.Составьте тестовый сценарий (план тестирования). Занесите его в отчёт. 12.Протестируйте приложение в соответствие с тестовым сценарием. Вставьте в отчёт скриншоты проекта на этапе выполнения (результаты тестирования). 13.Продемонстрируйте работу проекта и отчёт преподавателю и получите оценку. Указания: Приведём пример метода открытия файла (выбора пункта меню «Открыть»). Тот же код должен быть назначен кнопке «Открыть» на панели инструментов.
private void openToolStripMenuItem_Click(object sender, EventArgs e) { toolStripStatusLabel3.Text = "Состояние: Открытие файла"; openFileDialog1.FileName = String.Empty; if (openFileDialog1.ShowDialog() == DialogResult.OK) // вызов диалогового окна открытия файла { fn = openFileDialog1.FileName; this.Text = fn; // выведем имя файла в заголовок формы txfl = new TextFile(fn); // создание экземпляра класса richTextBox1.Text = txfl.OpenFile(fn); //вызов метода класса TextFile if (txfl.Error) { MessageBox.Show("Ошибка доступа к файлу!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
// в классе TextFile
public string OpenFile(string filename) { string s = ""; try { System.IO.StreamReader sr = new System.IO.StreamReader(filename, System.Text.Encoding.GetEncoding(1251)); // создание нового входного потока, установка кодировки s = sr.ReadToEnd(); sr.Close(); // закрытие входного потока } catch { error = true; // поле ошибки } return s; }
В классе TextFile необходимо разработать методы для вывода текста на принтер. Приведем примерный код таких методов:
StreamReader streamToPrint; //поток для принтера Font printFont; // Метод печати файла // Входные параметры: передаются параметры шрифта // Результат: переданный текст выводится на печать, // если нет ошибки, передается результат true
public bool PrintResult(Font pF) { try { streamToPrint = new System.IO.StreamReader(filename, System.Text.Encoding.GetEncoding(1251)); try { printFont = pF; PrintDocument pd = new PrintDocument(); pd.PrintPage += new PrintPageEventHandler (this.pd_PrintPage); pd.Print(); return true; } finally { streamToPrint.Close(); } } catch { return false; } }
// Событие PrintPage вызывается для каждой страницы, которая будет напечатана private void pd_PrintPage(object sender, PrintPageEventArgs ev) { float linesPerPage = 0; float yPos = 0; int count = 0; float leftMargin = ev.MarginBounds.Left; float topMargin = ev.MarginBounds.Top; string line = null;
// Чтобы вычислить количество строк на странице linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics);
// Печатаем каждую строку файла while (count < linesPerPage && ((line = streamToPrint.ReadLine()) != null)) { yPos = topMargin + (count * printFont.GetHeight(ev.Graphics)); ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, new StringFormat()); count++; }
// если строки не закончились, распечатаем еще одну страницу if (line != null) ev.HasMorePages = true; else ev.HasMorePages = false; }
Подведение итогов лабораторной работы: Результатом выполнения лабораторной работы должен быть проект, сохранённый в отдельной папке, и отчёт. Отчёт должен содержать: ü название лабораторной работы, цель работы; ü текст вашего задания с указанием номера варианта; ü скриншоты форм с надписанными компонентами; ü тексты модулей с комментариями; ü тестовый сценарий в виде таблицы; ü скриншоты проекта на этапе выполнения; ü колонтитулы с вашей фамилией и номером группы. Контрольные вопросы: 1. Какие свойства компонента текстовый редактор вы изменяли при конструировании интерфейса или в коде программы? Поясните назначение этих свойств. 2. Какие свойства компонента openFileDialog необходимо предварительно настроить для удобства работы пользователя? 3. Какие диалоговые компоненты можно использовать для организации работы пользователя с файлом? 4. Перечислите свойства диалоговых компонентов для работы с файлами. 5. Как разбить текст на отдельные слова с использованием метода Split? Приведите фрагмент кода. Варианты задания к лабораторной работе № 10 Вариант 1. Вариант 2. Вариант 3. Вариант 4. Вариант 5. Вариант 6. Вариант 7. Вариант 8.
Вариант 9. Вариант 10. Вариант 11. Вариант 12. Вариант 13. Вариант 14. Вариант 15.
Вариант 16. Вариант 17. Вариант 18. Вариант 19. Вариант 20.
|
|||
|