Содержание
Введение …………………………………………………………………………………………
Глава 1. Описание программы………………………………………………………….
1.1 Основные характеристики…………………………………………………………..
1.2 Руководство для пользователя…………………………………………………….
Глава 2.
2.1
2.2
Заключение………………………………………………………………………………………
Список используемой литературы……………………………………………………
Введение
Актуальность данной работы заключается в разработке простейшего текстового редактора, так как практически каждый человек сталкивается с текстом на компьютере. Разработка программы была подробно описана, а также изучены её функциональности, такие как: создание и сохранение текстового документа, отмена последнего действия, поиск и замена текста, создание маркированного списка, смена принтера и изменение параметров печати.
Революция в автоматизации делопроизводства в офисе в 80-е голы прошлого века стала реально возможна в связи с созданием и широким распространением персональных компьютеров. Персональные компьютеры в первую очередь вытеснили из обращения печатающие машинки, составляющие основу технических средств подготовки печатных документов. Преимущества компьютера, оснащенного специальным текстовым редактором. перед печатающей машинкой были явными и заключались в том что обеспечивали значительное повышение удобства, производительности выполнения работ и, самое главное, повышение качества получаемых при этом документов. Разделение во времени этапов подготовки документа, таких, как ввод, редактирование, оформление, подготовка к печати и собственно сама печать сделали процесс создания документа более простым и технологичным.
Несколько лет назад исследователи заметили, что программисты в течение определенного времени пишут и отлаживают приблизительно одинаковый по объему код, независимо от используемого языка программирования. Объем работы примерно тот же, но результаты разные. Написание 100 строк на С требует столько же затрат, сколько и 100 строк кода на ассемблере, но возможности кода на С гораздо шире. Поняв это, исследователи начали разрабатывать языки высокого уровня, которые увеличивали бы потенциал отдельного программиста, сокращая тем самым строки и стоимость разработки проектов.
В 70-х годах среди создателей языков программирования приобрела популярность концепция объекта. Объект является совокупностью кода и данных, созданной для воспроизведения свойств физических объектов или абстрактных понятий.
Объектно-ориентированное программирование – это методология, которая концентрируется больше на связях между объектами, чем на деталях реализации. Данные связи обычно развиваются по принципу деревьев, при этом новые типы объектов образуются уже из существующих. Сокрытие реализации объекта ведет к тому, что пользователя больше волнует связь с остальными объектами, чем поведение объекта. Данное отличие очень важно, поскольку оно означает принципиальный отказ от “императивных” языков (таких как С), в которых функции и вызовы функций составляют основу деятельности.
В С++ некоторые объекты являются частью самого языка. Но в целом задача создания новых объектов ложится на пользователя. В C++Builder имеется множество типов объектов, но реальное использование языка требует создания новых типов. Эффективность объектно-ориентированное программирование проявляется только при создании и применении групп связанных между собой объектов. Такие группы называют иерархиями классов. Развитие этих иерархий классов является основой деятельности в объектно-ориентированное программирование.
C++Builder является объектно-ориентированным языком программирования и на примере создания текстового редактора я хочу продемонстрировать всю мощь и быстроту визуального, объектно-ориентированного программирования.
цель курсовой работы
Описать программу
Разработать текстовый редактор с помощью языка программирования
задачи курсовой работы
описать о текстовой редакторе
Глава 1. Описание программы
Текстовый редактор — это самостоятельная компьютерная программа предназначенная для создания и изменения текстовых данных.
Текстовые редакторы предназначены для работы с текстовыми файлами в интерактивном режиме. Они позволяют просматривать содержимое текстовых файлов и производить над ними различные действия — вставку, удаление и копирование текста, контекстный поиск и замену, сортировку строк, просмотр кодов символов и конвертацию кодировок, печать и т. п.
Часто интерактивные текстовые редакторы содержат дополнительную функциональность, призванную автоматизировать действия по редактированию или отображают текстовые данные специальным образом.
Многие текстовые редакторы являются редакторами исходного кода, то есть они ориентированы на работу с текстами программ на тех или иных компьютерных языках.
1.1 Основные характеристики
Рассматриваемая программа имеет возможность редактирования текстовых файлов типа TXT и RTF, а также им подобные.
Программа представляет собой EXE файл; программа умеет открывать и сохранять текстовые файлы, редактировать их, изменять шрифт и размер текста, имеет поиск и замену текста.
1.2 Руководство для пользователя
Выполняемый файл называется WORD.EXE. После его запуска на экране появляется окно. После того как программа запустится ее можно использовать.
• Кнопки панели управления:
— создание нового документа.
— открытие документа
— сохранение документа
— вырезание выделенного текста
— копирование выделенного текста
— вставка текста из буфера обмена
— отмена последнего действия
— поиск в тексте
— замена в тексте
— печать документа
— выбор шрифта для выделенного текста
— изменение размера выбранного текста
— полужирный шрифт
— курсивный шрифт
— подчеркнутый шрифт
— равнение текста по левому краю
— равнение текста по центру
— равнение текста по правому краю
— маркировка выделенного абзаца.
• Работа с документами:
Создание нового документа.
В меню «Файл» выберите команду «Новый».
Начните ввод текста.
Чтобы сохранить новый файл, выберите в меню «Файл» команду «Сохранить как» и введите имя в поле «Имя файла».
Сохранение изменённого документа.
В меню Файл выберите команду Сохранить.
Примечание:
Чтобы сохранить существующий документ под другим именем, выберите команду «Сохранить как» и введите новое имя в поле «Имя файла».
Открытие документа.
В меню «Файл» выберите команду «Открыть».
В открывшемся окне, в поле со списком «Папка» выберите диск, содержащий документ, который следует открыть.
Дважды щелкните папку, содержащую нужный документ.
Выберите документ и нажмите кнопку «Открыть».
Примечания:
Если вы не видите нужный документ, попробуйте выбрать другой тип документов в поле со списком «Тип файлов».
Чтобы открыть один из недавно открывавшихся документов, выберите его имя в меню «Файл».
• Настройка окна MAGWord
Вывод на экран или скрытие линейки.
В меню «Вид» выберите команду «Линейка».
Если слева от этой команды в меню стоит метка, линейка находится на экране.
• Вывод на экран или скрытие панели инструментов
В меню «Вид» выберите команду «Панель инструментов».
Если слева от этой команды в меню стоит метка, панель инструментов находится на экране.
Примечания:
Панель форматирования содержит кнопки, ускоряющие форматирование текста, например, изменяющие начертание текста или стиль абзаца. Чтобы отформатировать текст, выделите его, а затем нажмите соответствующую кнопку на панели форматирования.
• Работа с текстом
Отмена последнего действия
В меню «Правка» выберите команду «Отменить».
Удаление текста
Выделите текст, который следует удалить.
Чтобы переместить текст в другую часть документа, выберите в меню «Правка» команду «Вырезать».
Чтобы просто удалить текст из документа, нажмите клавишу «DELETE».
Примечания:
Чтобы снять выделение, щелкните на любое место в документе.
Чтобы отменить удаление, выберите в меню «Правка» команду «Отменить».
Чтобы выделить для удаления весь текст в документе нажмите Ctrl+A.
• Поиск текста
В документе щелкните место, с которого следует начать поиск текста.
В меню «Правка» выберите команду «Поиск». В появившемся окне установить параметры поиска.
В поле «Образец» введите образец текста для поиска и нажмите кнопку «Найти далее».
Чтобы найти следующие вхождения искомого текста, нажимайте кнопку «Найти далее».
Примечания:
Для поиска и замены текста выберите в меню «Правка» команду «Заменить».
• Поиск и замена текста
В меню «Правка» выберите команду «Заменить».
В поле «Образец» введите образец текста для поиска и замены.
В поле «Заменить» на введите новый текст.
Примечания:
Чтобы заменить все вхождения искомого текста, нажмите кнопку «Заменить все».
Чтобы заменять каждое вхождение образца по отдельности, нажимайте кнопку «Найти далее», а затем кнопку «Заменить».
Форматирование текста
• Создание маркированного списка
Щелкните место в документе, с которого следует начать маркированный список.
В меню «Формат» выберите команду «Маркер», а затем начинайте ввод текста. При каждом нажатии клавиши «ENTER» на следующей строке будет появляться новый маркер.
Чтобы завершить маркированный список, выберите команду «Маркер» еще раз.
Изменение шрифта, начертания и размера символов
Выделите текст, формат которого следует изменить.
В меню «Правка» выберите команду «Шрифт». Откроется диалоговое окно.
Выберите нужные параметры и нажмите кнопку «Применить».
Примечания:
Чтобы задать шрифт для оформления нового текста, измените его до начала ввода текста.
Чтобы изменить шрифт всего документа, нажмите «Ctrl+A», а затем в меню «Правка» выберите «Шрифт».
• Форматирование абзаца
Щелкните любое место внутри абзаца, который требуется отформатировать.
На панели инструментов щелкните по одной из кнопок выравнивания текста и задайте параметры отступа с помощью линейки.
• Печать
Смена принтера и изменение параметров печати
Чтобы сменить принтер, нажмите кнопку «Печать». Откроется диалоговое окно показанное. Выберите имя принтера в поле со списком «Имя».
Чтобы начать печать щелкните по кнопке «OK».
1. Подключение кабельной системы ПК и переферийного оборудования
2. Настройка параметров функционирования ПК, переферийного оборудования и компьютерной орг техники
3. настройка и использование основных компонентов графического интерфейса ОС
4. организация доступа и использование информационных ресурсов локальных и глобальных компьютерных сетей
5. диагностика прострейших неисправностей пк перефирийного оборудования и компьютерной орг техники
6. Настройка интерфейса ОС
7. набор алфавитно-цифровой информации на клавиатуре ПК 10ти-пальцевым методом
8. управление файлами данных на локальных, съемных запоминающих устройствах , а также на дисках локальной компьютерной сети и в интернете
9.подключение переферийных устройств и компьютерной орг техники к пк и настройка режимов её работы
10. установка и замена расходных материалов для переферийных устройств и компьютерной орг техники
11.распечатка,копирование и тиражирование документов на принтере и другие переферийные устройства вывода
12. использование мультимедиа проектора для демонстрации содержимого экранных форм с ПК
13. сканирование прозрачных и не прозрачных оригиналов
14.съёмка и передача цифровых изображений с фото и видео камеры на ПК
15. резервное копирование и восстановление данных
16. диагностика простейших неисправностей ПК , переферийного оборудования и компьютерной орг техники
17.введение отчетной и технической документации
Разработка программы ‘Текстовый редактор’
ВВЕДЕНИЕ
В данной пояснительной записке рассматривается
описание программы «Текстовый редактор».
Программа очень проста в использовании и имеет
простой и интуитивно-понятный интерфейс.
В качестве основного инструмента разработки
применяется Microsoft Visual Studio 2010 Professional. Язык программирования
C#.
1. ВНЕШНЕЕ ОПИСАНИЕ
.1 Определение требований к
программному средству
программный обеспечение архитектура
руководство
Программа должна создавать и открывать текстовые
документы, форматировать и редактировать текст, производить поиск по документу
и выполнять автозамену. Также должна быть предусмотрена возможность сохранения
текста в файл.
1.2 Спецификация качества
программного обеспечения
Функциональность: программа должна являться полностью
завершенным программным продуктом, не требующим каких-либо дополнительных
специальных компонентов.
Надёжность: программа должна быть автономной.
Эффективность: программа должна предъявлять
минимальные требования к аппаратному обеспечению, требования к аппаратным
ресурсам должны быть намного ниже, чем для самой ОС. Программа должна иметь
интуитивно понятный пользовательский графический интерфейс.
1.3 Функциональная спецификация
Минимальные технические характеристики
компьютера, на котором гарантируется стабильная работа программы:
компьютер/процессор: компьютер с процессором
класса Pentium II 450 МГц;
память: 64 МБ ОЗУ;
монитор: монитор Super VGA с разрешением 800×600
точек или более высоким, поддерживающий 256 цветов;
операционная система: операционная система
Windows XP Service Pack 3, необходимо наличие Microsoft .NET Framework Runtime
v4.0;
наличие свободного дискового пространства на
жёстком.
Внешние функции:
открытие и сохранение текстовых документов;
поиск по документу;
форматирование и редактирование текста;
программа должна выполнять все функции за
конечное количество времени.
2. ТЕХНИЧЕСКОЕ ЗАДАНИЕ
.1 Основание для разработки
Углубление знаний в C#. Создание текстового
редактора, работа с текстом.
2.2 Назначение разработки
Создание программного средства для работы с
текстом.
2.3 Требования к программному
средству
Программа должна создавать и открывать текстовые
документы, форматировать и редактировать текст, производить поиск по документу
и выполнять автозамену. Также должна быть предусмотрена возможность сохранения
текста в файл.
2.4 Требования к программной
документации (документы)
Документация прилагается
2.5 Требования к эргономике и
технической эстетики
Программа легко осваиваемая и проста в
эксплуатации.
2.6 Стадии и этапы разработки
Разработка технического задания.
Проектирование.
Разработка классов.
Дизайн главного меню и интерфейса.
Написание кода, исправление ошибок,
корректировка дизайна.
2.7 Порядок контроля и приемки
Автоматические тесты, документация приложена
2.8 Диаграмма классов (Рисунок 1)
Описание классов и методов рассмотрено в пункте
4.
Рис. 1 — Диаграмма классов
3. ПРОЕКТИРОВАНИЕ
.1 Проектирование архитектуры
приложения
Данное программное средство можно разбить на
подсистемы, взаимодействующие друг с другом в соответствии с рисунком 2.
Рисунок 2 — Структура программы
Подсистема управления текстом представляет собой
операции над текстом. Возможны операции: добавление, удаление, редактирование,
форматирование, поиск, автозамена. Подсистема интерфейса реализует
пользовательский интерфейс программы.
3.2 Проектирование пользовательского
интерфейса
Главная форма содержит основные элементы
интерфейса и даёт доступ к большинству функциям (рисунок 3).
Рисунок 3 — Главная форма программы
Форма содержит панель с ниспадающими списками,
при помощи которых осуществляется доступ к основным функциям программы.
Главное меню содержит следующие вкладки:
«Файл»: подменю включает в себя кнопки
выполнения создания, открытия, сохранения файла и закрытие данной программы
(Рисунок 4);
Рисунок 4 — Подменю «Файл»
«Правка»: подменю включает в себя возможность
отменить последнее действие, а так же вырезать, скопировать, выставить и
удалить выделенный текст. Присутствует возможность поиска по тексту и
автозамены. Вывод текущей даты и времени (Рисунок 5);
Рисунок 5 — Подменю «Правка»
«Формат»: подменю включает в себя возможность
включения / выключения режима «Перенос по словам» а так же возможность изменить
цвет и шрифт выделенного текста (Рисунок 6);
Рисунок 6 — Подменю «Формат»
Форма dialogPoisk предоставляет пользователю
удобный интерфейс для поиска подстроки в тексте (Рисунок 7):
Форма dialogZamena предоставляет пользователю
удобный интерфейс для быстрого поиска и замены необходимых подстрок в тексте.
(Рисунок 8):
Рисунок 8 — Форма замены
4. РЕАЛИЗАЦИЯ
.1 Спецификация классов
Подсистема интерфейса — объединяет все остальные
подсистемы. Здесь реализован весь пользовательский интерфейс. Основные методы,
реализованные в классе Редактор, в котором находятся все важные функции, класс
Поиск, в котором находятся методы поиска, и класс Form2, в котором находится
метод замены, все находится ниже:void Заменить(object sender, EventArgs e) —
метод, вызывающий форму замены;void Найти(object sender, EventArgs e) — метод,
вызывающий форму поиска;void Удалить(object sender, EventArgs e) — метод,
позволяющий удалить выделенный текст;void ВыборЦвета(object sender, EventArgs
e) — метод, вызывающий форму изменения цвета выделенного текста;void
ВыборШрифта(object sender, EventArgs e) — метод, вызывающий форму изменения
шрифта выделенного текста;void ВставкаВремениИДаты(object sender, EventArgs e)
— метод, позволяющий вставить в текст текущую дату и время;void ВыделитьВсе(object
sender, EventArgs e) — метод, позволяющий выделить весть текст в редакторе;void
Вставить(object sender, EventArgs e) — метод, позволяющий вставить подстроку
хранящуюся в буфере обмена;void Копировать(object sender, EventArgs e) — метод,
позволяющий скопировать выделенную подстроку в буфер обмена;void
Вырезать(object sender, EventArgs e) — метод позволяющий вырезать выделенный
текст;void Отменить(object sender, EventArgs e) — метод, позволяющий отменить
последнее изменение в тексте;void Вернуть(object sender, EventArgs e) — метод,
позволяющий вернуть состояние текста до отмены последнего изменения;void
СохранитьФайл(object sender, EventArgs e) — метод, позволяющий сохранить текст
в текстовый документ;void СохранитьКак(object sender, EventArgs e) — метод, позволяющий
сохранить текст предварительно предложив выбрать каталог и имя файла куда будет
сохранен текст;void СоздатьНовыйФайл(object sender, EventArgs e) — метод
позволяющий отчистить окно редактора для создания нового документа;void
ОткрытьФайл(object sender, EventArgs e) — метод, вызывающий диалоговое окно с
проводником для поиска и открытия нужного документа;void
ВыходИзПрограммы(object sender, EventArgs e) — метод, завершающий работу
программы.
4.2 Описание алгоритма на
естественном языке
Сразу после загрузки Текстовый редактор
автоматически создает пустой текстовый документ, имеющий по умолчанию название
Untitled. Создание текстового документа происходит с помощью отчистки области
набора текста.
5. ТЕСТИРОВАНИЕ
.1 Разработка тестов
Для тестирования программы искусственно
создавались критическая ситуации. Цель тестирования: убедится что программа
обрабатывает все критические ситуации и не завершает работу.
Тест 1. Пустая строка поиска.
Проверим поведение программы при нажатии кнопки
«Найти далее», предварительно не введя строку поиска
Программа выводит текстовое сообщение,
предоставленное на рисунке 9, с предупреждением о том, что не введена строка
для поиска.
Рисунок 9 — Ошибка отсутствия строки поиска
Аналогичные ситуации наблюдается при нажатии
кнопки «Найти» если строка поиска не введена. А так же при пустых строках в
окне автозамены.
6. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
.1 Назначение программного средства
Данное программное средство позволяет решать
прикладные задачи по работе с текстовыми документами.
6.2 Порядок установки программного
средства
Программное средство не требует сложной
процедуры установки. Установка происходит путем копирования файлов программы в
любой раздел жесткого диска компьютера. Важным условием является сохранность
целостности компонентов программы.
6.3 Руководство пользователя
Программа проста в использовании и имеет
достаточно необходимых функций. Основное пространство рабочего окна редактора
занимает область набора текста, в которой отображается мигающий курсор. Сразу
после загрузки Текстовый редактор автоматически создает пустой текстовый
документ, имеющий по умолчанию название Untitled. Вы можете открыть для
редактирования уже существующий текстовый файл, воспользовавшись пунктом Открыть
в меню Файл. Все функции программы можно вызвать посредством ниспадающего меню
в верхней части программы, а так же горячими клавишами.
ЗАКЛЮЧЕНИЕ
В рамках курсовой работы была разработана
программа для создания и редактирования текстовых документов. В процессе
проектирования использовались методологии модульного и
объектно-ориентированного программирования.
Для разработки данной программы нужно было
грамотно спроектировать внутреннюю архитектуру программы и реализацию
необходимых классов.
При разработке данного программного средства
применялся язык программирования С# как один из наиболее современных и
перспективных языков программирования.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Веретнов
М.Ю. Гусаков Л.В., Комаров В.И. Работы студентов. Общие требования и правила
оформления [Книга] — Архангельск: «Архангельский государственный
технический университет», 2006. — стр. 104.
2. Дж.
Рихтер CLR via C#. Программирование на платформе Microsoft .NET [Книга] — СПб :
«Питер», «Русская Редакция». — стр. 656. — ISBN
978-5-91180-303-2.
. Е.А.
Жоголев «Технология программирования» [Книга] — М., Научный мир, 2004, 216 с.
. Начните
разрабатывать вместе с Microsoft [В Интернете] — MSDN, 2011 г.. —
http://msdn.microsoft.com/ru-ru/.
. Т.А.
Павловская С#. Программирование на языке высокого уровня [Книга] — СПб :
«Питер», 2007. — стр. 432. — ISBN 978-5-91180-174-8.
ПРИЛОЖЕНИЕ А
Листинг класса Редактор
System;System.ComponentModel;System.Drawing;System.Resources;System.Windows.Forms;Editor
{class Редактор : Form
{Container components;ColorDialog
ДиалогВыбораЦвета;FontDialog ДиалогВыборШрифта;SaveFileDialog
ДиалогСохранить;OpenFileDialog ДиалогОткрытьФайл;MainMenu ГлавноеМеню;MenuItem
ПунктМенюПереносСлов;public RichTextBox Текст;string _filename =
«»;string filename
{{ return _filename; }
{
_filename = value;= value;
}
}Редактор()
{();
}void InitializeComponent()
{resources = new
ResourceManager(typeof(Редактор));= new Container();
ДиалогВыборШрифта = new FontDialog();
Текст = new RichTextBox();
ДиалогОткрытьФайл = new OpenFileDialog();ПунктМенюФормат
= new MenuItem();ПунктМенюПомощь = new MenuItem();
ГлавноеМеню = new MainMenu();
ДиалогВыбораЦвета = new ColorDialog();
ДиалогСохранить = new SaveFileDialog();
Текст.AutoWordSelection = true;
Текст.Size = new Size(600, 300);
Текст.TabIndex = 1;
Текст.ScrollBars =
RichTextBoxScrollBars.ForcedBoth;
Текст.Font = new Font(«Comic Sans MS»,
10, FontStyle.Regular);
ДиалогОткрытьФайл.Filter = «Текстовый
файл|*.txt»;
ДиалогОткрытьФайл.ReadOnlyChecked = true;
ДиалогОткрытьФайл.DefaultExt = «txt»;
ДиалогОткрытьФайл.Multiselect = true;
ПунктМенюПереносСлов = new
MenuItem(«Перенос по словам», new EventHandler(ПереносСлов));
ПунктМенюПомощь = new
MenuItem(«Помощь», new MenuItem[]
{MenuItem(«О программе», new
EventHandler(ОПрограмме))
});
ГлавноеМеню.MenuItems.AddRange(new MenuItem[]
{MenuItem(«&Файл»,new MenuItem[]
{MenuItem(«Создать», new
EventHandler(СоздатьНовыйФайл),
Shortcut.CtrlN),MenuItem(«Открыть…», new EventHandler(ОткрытьФайл),
Shortcut.CtrlO), MenuItem(«Сохранить», new EventHandler(СохранитьФайл),
Shortcut.CtrlS),MenuItem(«Сохранить как…», new
EventHandler(СохранитьКак)), MenuItem(«-«),
MenuItem(«Выход», new EventHandler(ВыходИзПрограммы) )
} ),MenuItem(«&Правка»,new
MenuItem[]
} ), MenuItem(«Формат»,new MenuItem[]
{
ПунктМенюПереносСлов,
MenuItem(«Шрифт», new EventHandler(ВыборШрифта)
),MenuItem(«Цвет», new EventHandler(ВыборЦвета) )
}),ПунктМенюПомощь});
ДиалогСохранить.Filter = «Текстовый
файл|*.txt»;
ДиалогСохранить.InitialDirectory =
System.IO.Directory.GetCurrentDirectory(); //
System.IO.Path.GetDirectoryName(«»);
ДиалогСохранить.DefaultExt = «txt»;
ДиалогСохранить.FileName = «Untitled»;
ДиалогСохранить.CheckFileExists = true;=
«NotePad»;= new Size(5, 15);= ГлавноеМеню;= new Size(600, 300);+= new
EventHandler(rs);.Add(Текст);
}void Перейти(object sender, EventArgs e)
{.Show(«Не сделано(«, «Не
сделано(«, MessageBoxButtons.OK,.Information);
}void Заменить(object sender, EventArgs e)
{Заменить = new Replace.Form2();
Заменить.Show();
}void Найти(object sender, EventArgs e)
{find = new NotePad.find();.Show();
}void Удалить(object sender, EventArgs e)
{(Текст.SelectedText.Equals(«»))
return;
Текст.SelectedText = «»;
}void ОПрограмме(object sender, EventArgs e)
{.Show(«Жжж», «О программе»,
MessageBoxButtons.OK,.Information);
}void ПереносСлов(object sender, EventArgs e)
{
ПунктМенюПереносСлов.Checked =
!ПунктМенюПереносСлов.Checked;
Текст.WordWrap = ПунктМенюПереносСлов.Checked;
}void ВыборЦвета(object sender, EventArgs e)
{
ДиалогВыбораЦвета.ShowDialog();
Текст.SelectionColor = ДиалогВыбораЦвета.Color;
}void ВыборШрифта(object sender, EventArgs e)
{
ДиалогВыборШрифта.ShowDialog();
Текст.SelectionFont = ДиалогВыборШрифта.Font;
}void ВставкаВремениИДаты(object sender,
EventArgs e)
{
Текст.SelectedText = DateTime.Now.ToString();
}void ВыделитьВсе(object sender, EventArgs e)
{
Текст.SelectAll();
}void Вставить(object sender, EventArgs e)
{Data = (DataObject)Clipboard.GetDataObject();
Текст.SelectedText =
(string)Data.GetData(DataFormats.Text);
}void Копировать(object sender, EventArgs e)
{(Текст.SelectedText.Equals(«»))
return;.SetDataObject(Текст.SelectedText, true);
}void Вырезать(object sender, EventArgs e)
{(Текст.SelectedText.Equals(«»))
return;.SetDataObject(Текст.SelectedText, true);
Текст.SelectedText = «»;
}void Вернуть(object sender, EventArgs e)
{
Текст.Redo();
}void Отменить(object sender, EventArgs e)
{
Текст.Undo();
}void СохранитьФайл(object sender, EventArgs e)
{(filename.Equals(«»))
{
ДиалогСохранить.ShowDialog();(!ДиалогСохранить.FileName.Equals(«»))
{= ДиалогСохранить.FileName;
}
}
Текст.SaveFile(filename,
RichTextBoxStreamType.PlainText);= filename;
}void СохранитьКак(object sender, EventArgs e)
{
ДиалогСохранить.ShowDialog();(!ДиалогСохранить.FileName.Equals(«»))
{= ДиалогСохранить.FileName;
Текст.SaveFile(filename,
RichTextBoxStreamType.PlainText);= filename;
}
}void СоздатьНовыйФайл(object sender, EventArgs
e)
{
Текст.Clear();
{
ДиалогОткрытьФайл.ShowDialog();=
ДиалогОткрытьФайл.FileName;(!filename.Equals(«»))
{
Текст.LoadFile(filename,
RichTextBoxStreamType.PlainText);= filename;
}
}void rs(object sender, EventArgs e)
{
Текст.Size = Size;
}void ВыходИзПрограммы(object sender, EventArgs
e)
{();
}
[STAThreadAttribute]static void Main(string[]
args)
{.Run(new Редактор());
}
}
ПРИЛОЖЕНИЕ Б
Листинг класса Find
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.Text.RegularExpressions;NotePad
{partial class find : Form
{find()
{();
}match;void button1_Click(object sender,
EventArgs e)
{f = text.Text;pattern = @»b» + f +
@»b»;input = Editor.Редактор.Текст.Text;= Regex.Match(input,
pattern);(match.Success == true)
{.Редактор.Текст.Select(match.Index,
f.Length);.Редактор.Текст.Focus();.Enabled = false;
}.Show(«Строчка не найдена»,
«Найти», MessageBoxButtons.OK, MessageBoxIcon.Information);
}void button2_Click(object sender, EventArgs
e)();void button3_Click(object sender, EventArgs e)
{f = text.Text;= match.NextMatch();(match.Success
== true)
{.Редактор.Текст.Select(match.Index,
f.Length);.Редактор.Текст.Focus();
}.Show(«Строчка не найдена»,
«Найти», MessageBoxButtons.OK, MessageBoxIcon.Information);
}void text_TextChanged(object sender, EventArgs
e)
{.Enabled = true;
}
}
Курсовая работа: Разработка текстового редактора
Министерство образования Украины
Харьковский государственный технический
университет радиоэлектроники
Кафедра ПО ЭВМ
Курсовой проект по дисциплине:
«Основы программирования и алгоритмические языки »
Тема:
«Разработка текстового редактора»
Работу выполнил: Ст. гр. ИСПР-99-2 Морашко Алексей |
Руководитель: |
Работа защищена с оценкой: |
|
Комиссия: |
Харьков, 2000 г.
ХГТУРЭ
Кафедра ПО ЭВМ
Задание
на курсовую работу по дисциплине «ОП и АЯ»
ст. гр. ИСПР-99-2 Морашко А.Г.
Тема: «Разработка текстового редактора в Borland C ++ Builder »
І Разработать текстовый редактор, который имел бы такие возможности:
· Открывать и сохранять текстовые файлы типа TXT или RTF
· Возможности редактирования текста
· Простой и удобный интерфейс
ІІ Константы. Их синтаксис и применение .
Дата выдачи задания: Дата защиты:
Студент: Морашко А.Г.
Руководитель:
Реферат
Данная работа содержит 30 страниц, включая приложение; 5 иллюстраций.
Цель работы: создать, используя систему программирования C ++ Builder, текстовый редактор.
Объект исследования: текстовый редактор, разработанный в C ++ Builder, умеющий редактировать файлы типа TXT и RTF. В перспективе планируется редактирование формата документов типа DOC .
Ключевые слова:
C ++ BUILDER, ТЕКСТОВЫЙ РЕДАКТОР, КОНСТАНЫ, ФОРМАТ ТЕКСТОВЫХ ФАЙЛОВ, ХАРАКТЕРИСТИКИ
Содержание
Реферат. 3
Содержание. 4
Введение. 5
1 Описание программы… 6
1.1 Основные характеристики. 6
1.2 Руководство для пользователя. 6
2.1 Константы… 14
2.1.1 Целые Константы… 14
2.1.2 Константы с Плавающей Точкой. 15
2.1.3 Символьные Константы… 15
2.1.4 Строки. 16
2.1.5 Ноль. 17
2.1.6 Const 18
2.1.7 Перечисления. 19
Перечень ссылок. 21
Приложение А… 22
Введение
Несколько лет назад исследователи заметили, что программисты в течение определенного времени пишут и отлаживают приблизительно одинаковый по объему код, независимо от используемого языка программирования. Объем работы примерно тот же, но результаты разные. Написание 100 строк на С требует столько же затрат, сколько и 100 строк кода на ассемблере, но возможности кода на С гораздо шире. Поняв это, исследователи начали разрабатывать языки высокого уровня, которые увеличивали бы потенциал отдельного программиста, сокращая тем самым строки и стоимость разработки проектов.
В 70-х годах среди создателей языков программирования приобрела популярность концепция объекта. Объект является совокупностью кода и данных, созданной для воспроизведения свойств физических объектов или абстрактных понятий.
Объектно-ориентированное программирование – это методология, которая концентрируется больше на связях между объектами, чем на деталях реализации. Данные связи обычно развиваются по принципу деревьев, при этом новые типы объектов образуются уже из существующих. Сокрытие реализации объекта ведет к тому, что пользователя больше волнует связь с остальными объектами, чем поведение объекта. Данное отличие очень важно, поскольку оно означает принципиальный отказ от «императивных» языков (таких как С), в которых функции и вызовы функций составляют основу деятельности.
В С++ некоторые объекты являются частью самого языка. Но в целом задача создания новых объектов ложится на пользователя. В C ++ Builder имеется множество типов объектов, но реальное использование языка требует создания новых типов. Эффективность ООП проявляется только при создании и применении групп связанных между собой объектов. Такие группы называют иерархиями классов. Развитие этих иерархий классов является основой деятельности в ООП.
C ++ Builder является объектно-ориентированным языком программирования и на примере создания текстового редактора я хочу продемонстрировать всю мощь и быстроту визуального, объектно-ориентированного программирования.
1 Описание программы
1.1 Основные характеристики
Рассматриваемая программа имеет возможность редактирования текстовых файлов типа TXT и RTF, а также им подобные.
Программа представляет собой EXE файл; программа умеет открывать и сохранять текстовые файлы, редактировать их, изменять шрифт и размер текста, имеет поиск и замену текста. Описание функций и клавиш будет приведено ниже.
1.2 Руководство для пользователя
Выполняемый файл называется WORD. EXE. После его запуска на экране появляется окно, показанное на Рисунок 1. 1
Рисунок 1. 1 – Окно программы, возникающее после запуска
После того как программа запустится ее можно использовать.
Кнопки панели управления
-создание нового документа.
— открытие документа
— сохранение документа
— вырезание выделенного текста
— копирование выделенного текста
— вставка текста из буфера обмена
— отмена последнего действия
— поиск в тексте
— замена в тексте
— печать документа
— выбор шрифта для выделенного текста
— изменение размера выбранного текста
— полужирный шрифт
— курсивный шрифт
— подчеркнутый шрифт
— равнение текста по левому краю
— равнение текста по центру
— равнение текста по правому краю
— маркировка выделенного абзаца
Работа с документами
Создание нового документа
1. В меню Файл выберите команду Новый.
2. Начните ввод текста.
- Чтобы сохранить новый файл, выберите в меню Файл команду Сохранить как и введите имя в поле Имя файла.
Сохранение измененного документа
В меню Файл выберите команду Сохранить .
Примечание
- Чтобы сохранить существующий документ под другим именем, выберите команду Сохранить как и введите новое имя в поле Имя файла.
Открытие документа
1. В меню Файл выберите команду Открыть.
Рисунок 1.2 – Окно открытия файла.
2. В открывшемся окне (рис 1.2), в поле со списком Папка выберите диск, содержащий документ, который следует открыть.
3. Дважды щелкните папку, содержащую нужный документ.
4. Выберите документ и нажмите кнопку Открыть.
Примечания
- Если вы не видите нужный документ, попробуйте выбрать другой тип документов в поле со списком Тип файлов.
- Чтобы открыть один из недавно открывавшихся документов, выберите его имя в меню Файл.
Настройка окна MAGWord
Вывод на экран или скрытие линейки
В меню Вид выберите команду Линейка .
Если слева от этой команды в меню стоит метка, линейка находится на экране.
Вывод на экран или скрытие панели инструментов
В меню Вид выберите команду Панель инструментов .
Если слева от этой команды в меню стоит метка, панель инструментов находится на экране.
Примечания
- Панель форматирования содержит кнопки, ускоряющие форматирование текста, например, изменяющие начертание текста или стиль абзаца. Чтобы отформатировать текст, выделите его, а затем нажмите соответствующую кнопку на панели форматирования.
Работа с текстом
Отмена последнего действия
В меню Правка выберите команду Отменить .
Удаление текста
1. Выделите текст, который следует удалить.
2. Чтобы переместить текст в другую часть документа, выберите в меню Правка команду Вырезать.
Чтобы просто удалить текст из документа, нажмите клавишу DELETE.
Примечания
- Чтобы снять выделение, щелкните любое место в документе.
- Чтобы отменить удаление, выберите в меню Правка команду Отменить.
- Чтобы выделить для удаления весь текст в документе нажмите Ctrl + A .
Поиск текста
1. В документе щелкните место, с которого следует начать поиск текста.
2. В меню Правка выберите команду Поиск. В появившемся окне (Рисунок 1.3) установить параметры поиска.
3. В поле Образец введите образец текста для поиска и нажмите кнопку Найти далее .
Рисунок 1.3 – Окно поиска текста
4. Чтобы найти следующие вхождения искомого текста, нажимайте кнопку Найти далее.
Примечания
· Для поиска и замены текста выберите в меню Правка команду Заменить.
Поиск и замена текста
1. В меню Правка выберите команду Заменить.
2. В поле Образец введите образец текста для поиска и замены.
3. В поле Заменить на введите новый текст.
Примечания
- Чтобы заменить все вхождения искомого текста, нажмите кнопку Заменить все.
- Чтобы заменять каждое вхождение образца по отдельности, нажимайте кнопку Найти далее, а затем кнопку Заменить.
Форматирование текста
Создание маркированного списка
1. Щелкните место в документе, с которого следует начать маркированный список.
2. В меню Формат выберите команду Маркер, а затем начинайте ввод текста. При каждом нажатии клавиши ENTER на следующей строке будет появляться новый маркер.
3. Чтобы завершить маркированный список, выберите команду Маркер еще раз.
Изменение шрифта, начертания и размера символов
1. Выделите текст, формат которого следует изменить.
2. В меню Правка выберите команду Шрифт. Откроется диалоговое окно показанное на рисунке 1.4.
Рисунок 1.4 – Окно выбора шрифта .
3. Выберите нужные параметры и нажмите кнопку применить.
Примечания
- Чтобы задать шрифт для оформления нового текста, измените его до начала ввода текста.
- Чтобы изменить шрифт всего документа, нажмите Ctrl + A, а затем в меню Правка выберите Шрифт.
Форматирование абзаца
1. Щелкните любое место внутри абзаца, который требуется отформатировать.
2. На панели инструментов щелкните по одной из кнопок выравнивания текста и задайте параметры отступа с помощью линейки.
Печать
Смена принтера и изменение параметров печати
1. Чтобы сменить принтер, нажмите кнопку Печать. Откроется диалоговое окно показанное на рисунке 1.5. Выберите имя принтера в поле со списком Имя.
Рисунок 1.5 — Диалоговое окно печати документа .
2. Чтобы начать печать щелкните по кнопке OK .
2.1 Константы
C++ дает возможность записи значений основных типов: символьных констант, целых констант и констант с плавающей точкой. Кроме того, ноль (0) может использоваться как константа любого указательного типа, и символьные строки являются константами типа char[]. Можно также задавать символические константы. Символическая константа — это имя, значение которого не может быть изменено в его области видимости. В C++ имеется три вида символических констант: (1) любому значению любого типа можно дать имя и использовать его как константу, добавив к его описанию ключевое слово const; (2) множество целых констант может быть определено как перечисление; и (3) любое имя вектора или функции является константой.
2.1.1 Целые Константы
Целые константы предстают в четырех обличьях: десятичные, восьмеричные, шестнадцатеричные и символьные константы. Десятичные используются чаще всего и выглядят так, как можно было бы ожидать:
0 1234 976 12345678901234567890
Десятичная константа имеет тип int, при условии, что она влезает в int, в противном случае ее тип long. Компилятор должен предупреждать о константах, которые слишком длинны для представления в машине. Константа, которая начинается нулем за которым идет x (0x), является шестнадцатеричным числом (с основанием 16), а константа, которая начинается нулем за которым идет цифра, является восьмеричным числом (с основанием 8). Вот примеры восьмеричных констант:
0 02 077 0123 0x0 0x2 0x3f 0x53
2.1.2 Константы с Плавающей Точкой
Константы с плавающей точкой имеют тип double. Как и в предыдущем случае, компилятор должен предупреждать о константах с плавающей точкой, которые слишком велики, чтобы их можно было представить. Вот некоторые константы с плавающей точкой:
1.23 .23 0.23 1. 1.0 1.2e10 1.23e-15
Заметьте, что в середине константы с плавающей точкой не может встречаться пробел. Например, 65.43 e-21 является не константой с плавающей точкой, а четырьмя отдельными лексическими символами (лексемами):
65.43 e — 21
Если вы хотите иметь константу с плавающей точкой типа float, вы можете определить ее так:
const float pi = 3.14159265;
2.1.3 Символьные Константы
Хотя в C++ и нет отдельного символьного типа данных, точнее, символ может храниться в целом типе, в нем для символов имеется специальная и удобная запись. Символьная константа — это символ, заключенный в одинарные кавычки; например, ‘a’ или ‘0’. Такие символьные константы в действительности являются символическими константами для целого значения символов в наборе символов той машины, на которой будет выполняться программа (который не обязательно совпадает с набором символов, применяемом на том компьютере, где программа компилируется). Поэтому, если вы выполняетесь на машине, использующей набор символов ASCII, то значением ‘0’ будет 48, но если ваша машина использует EBCDIC, то оно будет 240. Употребление символьных констант вместо десятичной записи делает программу более переносимой. Несколько символов также имеют стандартные имена, в которых обратная косая используется как escape-символ:
‘b’ | возврат назад |
‘f’ | перевод формата |
‘n’ | новая строка |
‘r’ | возврат каретки |
‘t’ | горизонтальная табуляция |
‘v’ | вертикальная табуляция |
‘\’ | обратная косая (обратный слэш) |
»’ | одинарная кавычка |
‘»‘ | двойная кавычка |
» | null, пустой символ, целое значение 0 |
‘6’ ‘x6′ 6 ASCII ack ’60’ ‘x30’ 48 ASCII ‘0’ ‘137’ ‘x05f’ 95 ASCII ‘_’
2.1.4 Строки
Строковая константа — это последовательность символов, заключенная в двойные кавычки:
«это строка» sizeof(«asdf»)==5; cout << «гудок в конце сообщения07n» «это не строка, а синтаксическая ошибка» cout << «здесь все ok» здесь все ok
Вставляя численную константу в строку с помощью восьмеричной или шестнадцатеричной записи благоразумно всегда использовать число из трех цифр. Читать запись достаточно трудно и без необходимости беспокоиться о том, является ли символ после константы цифрой или нет. Разберите эти примеры:
char v1[] = «ax0fah129»; // ‘a’ ‘xfa’ ‘h’ ’12’ ‘9’ char v2[] = «axfah129»; // ‘a’ ‘xfa’ ‘h’ ’12’ ‘9’ char v3[] = «axfad127»; // ‘a’ ‘xfad’ ‘127’
2.1.5 Ноль
Ноль (0) можно употреблять как константу любого целого, плавающего или указательного типа. Никакой объект не размещается по адресу 0. Тип нуля определяется контекстом. Обычно (но не обязательно) он представляется набором битов все-нули соответствующей длины.
2.1.6 Const
Ключевое слово const может добавляться к описанию объекта, чтобы сделать этот объект константой, а не переменной. Например:
const int model = 145; const int v[] = { 1, 2, 3, 4 }; model = 145; // ошибка model++; // ошибка const char* peek(int i) { return private[i]; } const char* pc = «asdf»; // указатель на константу pc[3] = ‘a’; // ошибка pc = «ghjk»; // ok char *const cp = «asdf»; // константный указатель cp[3] = ‘a’; // ok cp = «ghjk»; // ошибка const char *const cpc = «asdf»; // const указатель на const cpc[3] = ‘a’; // ошибка cpc = «ghjk»; // ошибка char* strcpy(char* p, const char* q); // не может изменить q int a = 1; const c = 2; const* p1 = &c; // ok const* p2 = &a; // ok int* p3 = &c; // ошибка *p3 = 7; // меняет значение c
2.1.7 Перечисления
Есть другой метод определения целых констант, который иногда более удобен, чем применение const. Например:
enum { ASM, AUTO, BREAK }; const ASM = 0; const AUTO = 1; const BREAK = 2; enum keyword { ASM, AUTO, BREAK }; keyword key; switch (key) { case ASM: // что-то делает break; case BREAK: // что-то делает break; } enum int16 { sign=0100000, // знак most_significant=040000, // самый значимый least_significant=1 // наименее значимый };
Перечень ссылок
1. Герберт Шилдт, Самоучитель С++, 3-е издание: BHV – Санкт-Петербург, 1998. – 688 с.
2. Рубенкинг Н. Программирование в Delphi для «чайников». 2-е издание – К.: «Диалектика», 1996. – 368 с.
3. Фаронов В.В. Delphi 4. Учебный курс.-М.: «Нолидж», 1999.-464 с.
Приложение А
#include <vcl.h>
#pragma hdrstop
#include «About.h»
#include «AlexWord.h»
#include «LogoStrs.h»
const float RulerAdj = 4.0/3.0;
const int GutterWid = 6;
#pragma link «CGRID»
#pragma resource «*.dfm»
TForm1 *Form1;
__fastcall TForm1::TForm1(TComponent *Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::RichEdit1SelectionChange(TObject *Sender)
{
char sizebuf[6];
try {
FUpdating = True;
ComboBox1->Text = RichEdit1->SelAttributes->Name;
FirstInd->Left = int(RichEdit1->Paragraph->FirstIndent*RulerAdj)-4+GutterWid;
LeftInd->Left = int((RichEdit1->Paragraph->LeftIndent+
RichEdit1->Paragraph->FirstIndent)*RulerAdj)-4+GutterWid;
RightInd->Left = Ruler->ClientWidth-6-int(
(RichEdit1->Paragraph->RightIndent+GutterWid)*RulerAdj);
if (CurrText()->Style==CurrText()->Style >> fsItalic)
ToolButton17->Down=false;
else ToolButton17->Down=true;
if (CurrText()->Style==CurrText()->Style >> fsBold)
ToolButton15->Down=false;
else ToolButton15->Down=true;
if (CurrText()->Style==CurrText()->Style >> fsUnderline)
ToolButton3->Down=false;
else ToolButton3->Down=true;
Edit2->Text = itoa(RichEdit1->SelAttributes->Size, sizebuf, 10);
if (RichEdit1->Paragraph->Alignment == taLeftJustify)
LeftAlign->Down=true;
else LeftAlign->Down=false;
if (RichEdit1->Paragraph->Alignment == taCenter)
CenterAlign->Down=true;
else CenterAlign->Down=false;
if (RichEdit1->Paragraph->Alignment == taRightJustify)
RightAlign->Down=true;
else RightAlign->Down=false;
if(RichEdit1->Paragraph->Numbering == TNumberingStyle(nsBullet))
ToolButton14->Down=true;
else ToolButton14->Down=false;
}
catch (…) {
FUpdating = False;
}
FUpdating = False;
}
TTextAttributes *__fastcall TForm1::CurrText(void)
{
return RichEdit1->SelAttributes;
}
void __fastcall TForm1::FileNew1Execute(TObject *Sender)
{
FFileName = LoadStr(sUntitled);
RichEdit1->Lines->Clear();
RichEdit1->Modified = false;
}
void __fastcall TForm1::FileOpen1Execute(TObject *Sender)
{
if (OpenDialog->Execute())
{
RichEdit1->Lines->LoadFromFile(OpenDialog->FileName);
FFileName = OpenDialog->FileName;
RichEdit1->SetFocus();
RichEdit1->Modified = false;
RichEdit1->ReadOnly = OpenDialog->Options.Contains(ofReadOnly);
Form1->Caption = OpenDialog->FileName;
}
}
void __fastcall TForm1::FileSave1Execute(TObject *Sender)
{
if (FFileName == LoadStr(sUntitled))
{
FileSaveAs1Execute(Sender);
Form1->Caption = SaveDialog->FileName; }
else
{
RichEdit1->Lines->SaveToFile(FFileName);
RichEdit1->Modified = false; }
}
void __fastcall TForm1::FileSaveAs1Execute(TObject *Sender)
{
String str;
TVarRec vrs[1];
if (SaveDialog->Execute())
{
if (FileExists(SaveDialog->FileName))
{
str = FmtLoadStr(sOverwrite, OPENARRAY(TVarRec, (SaveDialog->FileName)));
if (MessageDlg(str, mtConfirmation, TMsgDlgButtons() << mbYes << mbNo <<
mbCancel, 0) != IDYES)
return;
}
RichEdit1->Lines->SaveToFile(SaveDialog->FileName);
FFileName = SaveDialog->FileName;
RichEdit1->Modified = false;
}
}
void __fastcall TForm1::CheckFileSave(void)
{
if ( RichEdit1->Modified ) {
switch(MessageBox(Handle, «Save Changes?»,
«Confirmation»,MB_YESNOCANCEL | MB_ICONQUESTION))
{ case ID_YES: FileSave1Execute(this);
case ID_CANCEL: Abort();
}
}
}
void __fastcall TForm1::FileExit1Execute(TObject *Sender)
{
Close();
}
void __fastcall TForm1::HelpAbout1Execute(TObject *Sender)
{
AboutBox->ShowModal();
}
void __fastcall TForm1::UndoClick(TObject *Sender)
{
if ( RichEdit1->HandleAllocated() )
SendMessage(RichEdit1->Handle, EM_UNDO, 0, 0);
}
void __fastcall TForm1::PrintClick(TObject *Sender)
{
if (PrintDialog1->Execute()) RichEdit1->Print(OpenDialog->FileName);
}
void __fastcall TForm1::Print_SetupClick(TObject *Sender)
{
PrinterSetupDialog1->Execute();
}
void __fastcall TForm1::FindClick(TObject *Sender)
{
FindDialog1->FindText = RichEdit1->SelText;
FindDialog1->Execute();
}
void __fastcall TForm1::FindDialog1Find(TObject *Sender)
{
int FoundAt, StartPos, ToEnd;
if (RichEdit1->SelLength)
StartPos = RichEdit1->SelStart + RichEdit1->SelLength;
else
StartPos = 0;
ToEnd = RichEdit1->Text.Length() — StartPos;
FoundAt = RichEdit1->FindText(FindDialog1->FindText, StartPos, ToEnd, TSearchTypes()<< stMatchCase);
if (FoundAt != -1)
{
RichEdit1->SetFocus();
RichEdit1->SelStart = FoundAt;
RichEdit1->SelLength = FindDialog1->FindText.Length();
}
}
void __fastcall TForm1::ReplaceDialog1Replace(TObject *Sender)
{
if (RichEdit1->SelLength == 0)
FindDialog1Find(Sender);
else
{
RichEdit1->SelText = ReplaceDialog1->ReplaceText;
FindDialog1Find(Sender);
}
if (ReplaceDialog1->Options.Contains(frReplaceAll))
while (RichEdit1->SelLength !=0)
ReplaceDialog1Replace(Sender);
}
void __fastcall TForm1::ReplaceClick(TObject *Sender)
{
ReplaceDialog1->Execute();
}
void __fastcall TForm1::N5Click(TObject *Sender)
{
FontDialog1->Options << fdApplyButton;
FontDialog1->Execute();
}
void __fastcall TForm1::FontDialog1Apply(TObject *Sender, HWND Wnd)
{
if (ActiveControl->ClassNameIs(«TEdit»))
((TEdit *)ActiveControl)->Font->Assign(FontDialog1->Font);
else if (ActiveControl->ClassNameIs(«TRichEdit»))
((TRichEdit *)ActiveControl)->SelAttributes->Assign(FontDialog1->Font);
else
MessageBeep(0);
}
void __fastcall TForm1::prClick(TObject *Sender)
{
ToolButton8->Visible=false;
}
void __fastcall TForm1::rp1Click(TObject *Sender)
{
ToolButton8->Visible=true;
}
void __fastcall TForm1::CenterAlignClick(TObject *Sender)
{
RichEdit1->Paragraph->Alignment = taCenter;
}
void __fastcall TForm1::LeftAlignClick(TObject *Sender)
{
RichEdit1->Paragraph->Alignment = taLeftJustify;
}
void __fastcall TForm1::RightAlignClick(TObject *Sender)
{
RichEdit1->Paragraph->Alignment = taRightJustify;
}
void __fastcall TForm1::SetupRuler(void)
{ int iCtr = 1;
char sTmp[201];
while (iCtr < 200) {
sTmp[iCtr] = 9;
iCtr++;
sTmp[iCtr] = ‘|’;
iCtr++;
}
Ruler->Caption = (AnsiString)sTmp;
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
OpenDialog->InitialDir = ExtractFilePath(ParamStr(0));
SaveDialog->InitialDir = OpenDialog->InitialDir;
SetupRuler();
for (int i = 0; i < Screen->Fonts->Count; i++)
ComboBox1->Items->Add(Screen->Fonts->Strings[i]);
RichEdit1->SelStart = 0;
}
void __fastcall TForm1::ToolButton14Click(TObject *Sender)
{
if(RichEdit1->Paragraph->Numbering == TNumberingStyle(nsBullet))
RichEdit1->Paragraph->Numbering = TNumberingStyle(nsNone);
else
RichEdit1->Paragraph->Numbering = TNumberingStyle(nsBullet);
}
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
TCharsetObject* ChasrsetObject;
if ( !FUpdating ){
ChasrsetObject = (TCharsetObject*)ComboBox1->Items->Objects[ComboBox1->ItemIndex];
CurrText()->Name = ComboBox1->Items->Strings[ComboBox1->ItemIndex];
}
}
void __fastcall TForm1::ToolButton15Click(TObject *Sender)
{
if (CurrText()->Style == CurrText()->Style >> fsBold)
CurrText()->Style = CurrText()->Style << fsBold;
else
CurrText()->Style = CurrText()->Style >> fsBold;
}
void __fastcall TForm1::ToolButton17Click(TObject *Sender)
{
if (CurrText()->Style ==CurrText()->Style >> fsItalic)
CurrText()->Style = CurrText()->Style << fsItalic;
else
CurrText()->Style = CurrText()->Style >> fsItalic;
}
void __fastcall TForm1::Edit2Change(TObject *Sender)
{
int fontsize = atoi(Edit2->Text.c_str());
if ((!FUpdating) && (fontsize))
{
CurrText()->Size = atoi(Edit2->Text.c_str());
}
}
void __fastcall TForm1::ToolButton3Click(TObject *Sender)
{
if (CurrText()->Style ==CurrText()->Style >> fsUnderline)
CurrText()->Style = CurrText()->Style << fsUnderline;
else
CurrText()->Style = CurrText()->Style >> fsUnderline;
}
void __fastcall TForm1::FirstIndMouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
TLabel * oTmpLabel = (TLabel *)Sender;
FDragOfs = oTmpLabel->Width / 2;
oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs;
FDragging = True;
}
void __fastcall TForm1::FirstIndMouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
FDragging = False;
RichEdit1->Paragraph->FirstIndent = int((FirstInd->Left+FDragOfs-GutterWid) / RulerAdj);
LeftIndMouseUp(Sender, Button, Shift, X, Y);
}
void __fastcall TForm1::LeftIndMouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
FDragging = False;
RichEdit1->Paragraph->LeftIndent = int((LeftInd->Left+FDragOfs-GutterWid)/
RulerAdj)-RichEdit1->Paragraph->FirstIndent;
RichEdit1SelectionChange(Sender);
}
void __fastcall TForm1::FirstIndMouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
if (FDragging) {
TLabel * oTmpLabel = (TLabel *)Sender;
oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs;
}
}
void __fastcall TForm1::RightIndMouseUp(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
FDragging = False;
RichEdit1->Paragraph->RightIndent =
int((Ruler->ClientWidth-RightInd->Left+FDragOfs-2) /
RulerAdj)-2*GutterWid;
RichEdit1SelectionChange(Sender);
}
void __fastcall TForm1::RulerResize(TObject *Sender)
{
RulerLine->Width = (int)Ruler->ClientWidth — (RulerLine->Left*2);
}
void __fastcall TForm1::FormPaint(TObject *Sender)
{
TRect Rct = Rect(GutterWid, 0, RichEdit1->ClientWidth-GutterWid,
ClientHeight);
SendMessage(RichEdit1->Handle, EM_SETRECT, 0, long(&Rct));;
}
void __fastcall TForm1::FormResize(TObject *Sender)
{
RichEdit1SelectionChange(Sender);
}
void __fastcall TForm1::FormActivate(TObject *Sender)
{
FileNew1Execute(Sender);
RichEdit1->SetFocus();
}
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
try{
CheckFileSave();
}
catch (…) {
CanClose = False;
}
}
void __fastcall TForm1::NRulerClick(TObject *Sender)
{
if (Ruler->Visible==false)
{
Ruler->Visible=true;
NRuler->Checked=true;}
else {Ruler->Visible=false; NRuler->Checked=false;
}
}
void __fastcall TForm1::NPanelClick(TObject *Sender)
{
if (Panel1->Visible==false)
{
Panel1->Visible=true;
NPanel->Checked=true;
}
else {Panel1->Visible=false;
NPanel->Checked=false;
}
}
void __fastcall TForm1::NBarClick(TObject *Sender)
{
if (StatusBar->Visible==false)
{StatusBar->Visible=true;
NBar->Checked=true;}
else { StatusBar->Visible=false;
NBar->Checked=false;
}
}
* Данная работа не является научным трудом, не является выпускной квалификационной работой и представляет собой результат обработки, структурирования и форматирования собранной информации, предназначенной для использования в качестве источника материала при самостоятельной подготовки учебных работ.
Министерство
энергетики РФ
Уфимский
Энергетический Колледж
Курсовая
работа
по
Основам алгоритмизации и программирования
на
тему “Создание
текстового редактора”
Выполнил:
студент группы 2 – АС – 3 ____________
Тимофеев Т.П.
Проверил:
____________
Ганиев А.Э.
Уфа
– 2001г.
Содержание
Задание
……………………………………………………… стр.
3
Описание
программы ……………………………………….
стр. 4
Листинг
……………………………………………………… стр.
5
Исходный
текст программы .…………………………. стр.
5
Текст
модуля ……………….…………………………..
стр.10
Заключение
………………………………………………….. стр.18
Список
использованной литературы ………………………
стр.19
Задание.
Создать
программу, обеспечивающую:
Cоздание
файлов.
Переименование
файлов.
Удаление
файлов.
Копирование
файла в другой файл.
Открытие
файла для просмотра.
Программа
должна быть написана на Turbo Pascal в текстовом
режиме с использованием любых модулей,
которые необходимы для её реализации
(допускаются также модули пользователя).
Описание
программы.
Timofeev
Word v.1.0
– это программа для работы с текстом.
С её помощью можно создавать, удалять,
переименовывать, открывать, копировать
файлы друг в друга. Конечно, всё это
можно проделать и в MS-DOS, но преимущество
этой программы в том, что все эти команды
тщательно спрятаны под красивым
и дружественным
интерфейсом моей программы.
Так
как в программе Timofeev
Word v.1.0
много процедур, я создал собственный
модуль Tim.tpu,
куда их (процедуры) и отправил.
Процедуры:
Table
– рисует оболочку программы.
Enter_Sandman
– происходит проигрывание музыки на
песню группы Metallica
— “Enter Sandman”. Я не стал делать так, чтобы
при нажатии какой-либо клавиши она
прекращала играть, потому что для меня
(не знаю как для других) это свято.
Menu
–
эта процедура вызывает меню, где
содержится информация о программе и
помощь (если её так можно назвать).
Keys
–
процедура, считывающая код нажатой
клавиши.
В
этой программе, конечно много недоработок,
но я надеюсь, что вскоре появятся
дополненные версии 1.2, 1.3, 2.0,2.1,……, n.m.
Эта
программа может использоваться в
о-о-о-о-о-очень маленьких офисах, которые
не имеют возможности приобрести
качественный лицензионный продукт, к
примеру Microsoft Office’9x, ’2000 (если кто-то
имеет на примете такой офис, я с
удовольствием продам, за символическую
цену, свой программный продукт). Также
программа может использоваться для
обучения детей в детских садах работе
на персональных компьютерах. И, наконец,
ей могут воспользоваться студенты I
курса для сдачи её как Курсовой работы
на следующем курсе.
Листинг.
Исходный
текст программы.
Program
Redaktor;
Uses
Crt,Tim; {использовать модули Crt и Tim}
Label
b; {метка}
Var
{тело}
Programname,Cmdline:string;
nn,i,x,y:integer;
f1,f1_new:text;
Name,New_name:string[12];
txt,text:string;
ch:char;
begin
i:=1;
textbackground(red);
clrscr;
textcolor(yellow);
gotoxy(22,10);
writeln(‘Текстовый
процессор
Timofeev Word’);
gotoxy(22,11);
writeln(‘
Версия 1.0 (2001 год)’);
gotoxy(40,15);
writeln(‘Составил
Тимофеев Тимур (2-АС-3)’);
textcolor(green);
gotoxy(40,16);
writeln(‘Все
права
защищены.’);
gotoxy(40,17);
writeln(‘Незаконное
копирование’);
gotoxy(40,18);
writeln(‘или
подделка без согласия автора’);
gotoxy(40,19);
writeln(‘преследуется
по понятиям !!!’);
delay(5000);
textcolor(yellow);
table;
gotoxy(2,21);
write(‘Введите
имя:’);
readln(name);
assign(f1,name);
rewrite(f1);
gotoxy(2,21);
write(‘Вводите
текст !!! ‘);
gotoxy(1,2);
repeat
write(chr(179),’:>’);
readln(txt);
writeln(f1,txt);
until
txt=»;
close(f1);
gotoxy(2,21);
writeln(‘Ввод
окончен, нажмите чего-нибудь …’);
repeat
readkey;
keys(nn);
case
nn of {определяет нажатие функциональных
клавиш}
59:menu;
{F1}
60:begin
{F2}
table;
gotoxy(2,21);
write(‘
‘);
gotoxy(2,21);
write(‘Введите
имя:’);
readln(name);
assign(f1,name);
rewrite(f1);
gotoxy(2,21);
write(‘Вводите
текст !!! ‘);
gotoxy(1,2);
repeat
write(chr(179),’:>’);
readln(txt);
writeln(f1,txt);
until
txt=»;
close(f1);
gotoxy(2,21);
writeln(‘Ввод
окончен, нажмите чего-нибудь …’);
end;
61:begin
{F3}
gotoxy(2,21);
write(‘Введите
имя файла, в который копир-я файл
‘,name,’->’);
readln(new_name);
reset(f1);
assign(f1_new,new_name);
append(f1_new);
while
not eof(f1) do
begin
readln(f1,txt);
writeln(f1_new,txt);
end;
close(f1);
close(f1_new);
gotoxy(2,21);
writeln(‘Файл
‘,name,’ скопирован
в
‘,new_name,’ нажмите
чего-нибудь
…’);
end;
62:begin
{F4}
gotoxy(2,21);
write(‘
‘);
gotoxy(2,21);
write(‘Введите
новое имя файла:’);
readln(new_name);
assign(f1,name);
rename(f1,new_name);
gotoxy(2,21);
writeln(‘Файл
‘,name,’ перименован
в
‘,new_name,’ нажмите
чего-нибудь
… ‘);
end;
63:begin
{F5}
erase(f1);
gotoxy(2,21);
writeln(‘Файл
‘,name,’ удалён с диска, нажмите чего-нибудь
…’);
end;
64:begin
{F6}
{$I-}
repeat
gotoxy(2,21);
write(‘Введите
имя файла для считывания текста ->’);
readln(name);
assign(f1,name);
reset(f1);
if
ioresult<>0 then
begin
gotoxy(2,21);
writeln(‘Файл
не найден … ‘);
close(f1);
end;
until
ioresult=0;
{$I+}
table;
gotoxy(1,2);
while
not eof(f1) do
begin
readln(f1,txt);
writeln(chr(179),txt);
end;
close(f1);
gotoxy(2,21);
write(‘Файл
считан,
нажмите
чего-нибудь
… ‘);
end;
68:goto
b; {F10} {Происходит выход на метку}
end;
until
i<0; {считывай функциональные клавиши
пока i<0,
а
т.к. i=1 и не изменяется, то этот процесс
бесконечен}
b:end.
Текст
модуля.
Unit
Tim;
Interface
Uses
Crt,Dos;
Procedure
keys(var n:integer);
Procedure
table;
Procedure
Enter_sandman;
Procedure
menu;
Implementation
Procedure
keys(var n:integer);{процедура
нажатия
клавиши}
var
c:char;
begin
if
keypressed then
begin
c:=readkey;
if
c=#0 then c:=readkey;
n:=ord(c);
end;
end;
Procedure
Enter_sandman; {музыка}
Const
m:array
[1..6] of integer=(165,330,392,233,220,330);
t:array
[1..6] of integer=(1100,600,600,600,1100,600);
e:array
[1..7] of integer=(165,165,165,165,165,165,170);
r:array
[1..7] of integer=(600,600,600,600,600,600,1100);
w:array
[1..5] of integer=(167,167,167,294,233);
q:array
[1..5] of integer=(1100,600,600,600,1100);
o:array
[1..9] of integer=(165,182,165,182,165,196,165,182,165);
b:array
[1..9] of integer=(600,1100,600,600,600,600,600,600,3000);
var
a,u,z,x:integer; i:byte;
begin
for
a:=1 to 4 do
begin
for
i:=1 to 6 do
begin
sound(m[i]);
delay(t[i]);
nosound;
end;
end;
for
u:=1 to 3 do
begin
for
i:=1 to 7 do
begin
sound(e[i]);
delay(r[i]);
nosound;
end;
end;
for
z:=1 to 3 do
begin
for
i:=1 to 5 do
begin
sound(w[i]);
delay(q[i]);
nosound;
end;
end;
for
i:=1 to 9 do
begin
sound(o[i]);
delay(b[i]);
nosound;
end;
end;
Procedure
table; {рисует
таблицу}
var
w,h:integer;
c1,c2,c3,c4,c7,c5,c6,c8,c9,c10:char;
begin
textbackground(blue);
clrscr;
textcolor(yellow);
w:=1;
h:=1;
c1:=chr(218);
c2:=chr(196);
c3:=chr(191);
c4:=chr(179);
c5:=chr(192);
c6:=chr(217);
c7:=chr(195);
c8:=chr(180);
c9:=chr(193);
c10:=chr(194);
for
h:=2 to 25 do
begin
gotoxy(w,h);
write(c4);
end;
gotoxy(w,h);
write(c5);
for
w:=2 to 79 do
begin
gotoxy(w,h);
write(c2);
end;
gotoxy(w,h);
write(c6);
for
h:=24 downto 1 do
begin
gotoxy(w,h);
write(c4);
end;
gotoxy(w,h);
write(c3);
for
w:=78 downto 1 do
begin
gotoxy(w,h);
write(c2);
end;
gotoxy(w,h);
write(c1);
gotoxy(1,20);
write(c7);
for
w:=2 to 59 do
begin
gotoxy(w,20);
write(c2);
end;
gotoxy(w,1);
write(c10);
for
h:=2 to 24 do
begin
gotoxy(w,h);
write(chr(179));
end;
gotoxy(w,20);
write(c8);
gotoxy(59,25);
write(c9);
gotoxy(62,4);
writeln(‘F1-Помошь’);
gotoxy(62,5);
writeln(‘F2-Новый’);
gotoxy(62,6);
writeln(‘F3-Копировать’);
gotoxy(62,7);
writeln(‘F4-Переименовать’);
gotoxy(62,8);
writeln(‘F5-Удалить’);
gotoxy(62,9);
writeln(‘F6-Просмотреть’);
gotoxy(62,10);
writeln(‘F10-Выход’);
end;
Procedure
menu;
Const
NORM=$17;{
цвет невыделеного пункта }
SEL=$70;{
цвет выделенного пункта }
N=3;
var
menu:array[1..N]
of string[12];{ названия пунктов меню }
punkt:integer;{
номер выделенного пункта }
ch:char;{
введенный символ }
x,y,i:integer;{
координаты первой строки меню }
Procedure
punkt1;
begin
ClrScr;
writeln(‘Выполнил
студент гр. 2-АС-3 Тимофеев Т.П. (2001 г.)’);
writeln(‘Курсовая
работа-а-а-а-а-а-а-а !!!!!!!!!!!!!!!!!’);
readln;
end;
Procedure
punkt2;
begin
ClrScr;
writeln(‘Тута
всё понятно даже ребёнку.’);
readln;
end;
Procedure
MenuToScr;{ вывод меню на экран }
var
i:integer;
begin
ClrScr;
for
i:=1 to N do begin
GoToXY(x,y+i-1);
write(menu[i]);
end;
TextAttr:=SEL;
GoToXY(x,y+punkt-1);
write(menu[punkt]);{
выделим строку меню }
TextAttr:=NORM;
end;
begin
menu[1]:=’
О программе ‘;
menu[2]:=’
Помощь ‘;
menu[3]:=’
Выход ‘;
punkt:=1;
x:=5;
y:=5;
TextAttr:=NORM;
MenuToScr;
repeat
ch:=ReadKey;
if
ch=char(0) then begin
ch:=ReadKey;
case
ch of
chr(80):{
стрелка вниз }
if
punkt
GoToXY(x,y+punkt-1);
write(menu[punkt]);
punkt:=punkt+1;
TextAttr:=SEl;
GoToXY(x,y+punkt-1);
write(menu[punkt]);
TextAttr:=NORM;
end;
chr(72):{
стрелка вверх }
if
punkt>1 then begin
GoToXY(x,y+punkt-1);
write(menu[punkt]);
punkt:=punkt-1;
TextAttr:=SEl;
GoToXY(x,y+punkt-1);
write(menu[punkt]);
TextAttr:=NORM;
end;
end;
end
else
if
ch=chr(13) then begin { нажата клавиша }
case
punkt of
1:punkt1;
2:punkt2;
3:i:=2;{
выход }
end;
MenuToScr;
end;
until
i=2;
end;
end.
Заключение.
В
результате проделанной работы я написал
прекрасную программу за 4 часа свободного
от учёбы времени практически без помощи
литературы и других источников.
Программа
основана на стандартных процедурах и
функциях модуля Crt:
Rename, Erase, Append, Rewrite, Reset, Assign и
др.
Список
использованной литературы.
Попов
В.Б.
“Turbo Pascal для школьников”:
Учеб.пособие.
– 3-е доп. изд. – М.: Финансы и статистика,
2001г.
Вирт
Н.
“Алгоритмы и структуры данных”:
Пер.
с англ. – М.: Мир, 1989г.
Прайс
Д.
“Программирование на языке Паскаль:
Практическое руководство”.
Пер.
с англ. – М.: Мир, 1987г.
С этим файлом связано 10 файл(ов). Среди них: 13_аддиктивное.doc, Пологи.doc, ЛК №1 09.04.docx, Задание к лекцеи 13 Ратушнюк.docx, Лекция_11._Приливные_и_волновые_электростанции.pdf, 16.pdf, День 16.docx, Котко А. О. Англ яз.docx, титул.docx, промежуточная аттестация по физике 10 класс.docx.
Показать все связанные файлы
Подборка по базе: Цыденов проект.docx, представление проекта.docx, Курсовой проект.docx, курсовой работы 2020-16649524711228360211633d28979e467.pdf, Индивидуальный проект.docx, Ибрагимова А.А. МУ к выполнению курсовой работы по дисциплине Эк, курсовой проект.docx, 21-РУП Графика и проектирование ОГН-72.doc, Титульный лист курсовой работы.docx, Протокол проекты 9 кл.docx
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ ЧЕЧЕНСКОЙ РЕСПУБЛИКИ
ГБПОУ «ГУДЕРМЕССКИЙ ЖЕЛЕЗНОДОРОЖНЫЙ ТЕХНИКУМ»
Специальность 09.02.05 Прикладная информатика (по отраслям)
КУРСОВОЙ ПРОЕКТ
по МДК 02.01. Разработка, внедрение и адаптация программного обеспечения отраслевой направленности
Тема Разработка приложения Windows «Текстовый редактор»
Разработчик: студент (ка) гр. 5П-17
Магамадов Т.А
Руководитель: Яхахажиев И. Б.
Результат защиты: ______________
Дата защиты: «__» _________ 2019 г.
г. Гудермес 2019
СОДЕРЖАНИЕ
Введение 3
Постановка задачи 5
1. Внешнее описание 6
1.1 Определение требований к программному средству 6
1.2 Спецификация качества программного обеспечения 6
1.3 Техническое Задание 6
2. Теоретические основы программирования с использованием
технологий Microsoft.NET 8
2.1.Создание приложения Windows Forms в среде Microsoft
Visual Studio 2015 8
3. Проектирование пользовательского интерфейса 9
3.1 Реализация 9
4. Руководство пользователя 11
4.1 Назначение программного средства 11
4.2 Порядок установки программного средства 11
4.3 Руководство пользователя 11
5. Разработка приложения Windows «Текстовый редактор» 12
Заключение 14
Список использованных источников 15
Приложение
ВВЕДЕНИЕ
Текстовый редактор — самостоятельная компьютерная программа или компонент программного комплекса (например, редактор исходного кода интегрированной среды разработки или окно ввода в браузере), предназначенная для создания и изменения текстовых данных в общем и текстовых файлов, в частности.
Текстовые редакторы предназначены для работы с текстовыми файлами в интерактивном режиме. Они позволяют просматривать содержимое текстовых файлов и производить над ними различные действия — вставку, удаление и копирование текста, контекстный поиск и замену, сортировку строк, просмотр кодов символов и конвертацию кодировок, печать и т. п.
Часто интерактивные текстовые редакторы содержат дополнительную функциональность, призванную автоматизировать действия по редактированию (от записываемых последовательностей нажатий клавиш до полноценных встроенных языков программирования), или отображают текстовые данные специальным образом (например, с подсветкой синтаксиса).
Многие текстовые редакторы являются редакторами исходного кода, то есть они ориентированы на работу с текстами программ.
В данной пояснительной записке рассматривается описание программы «Текстовый редактор».
Программа очень проста в использовании и имеет простой и интуитивно-понятный интерфейс.
В качестве основного инструмента разработки применяется Microsoft Visual Studio 2015 Professional. Язык программирования C#.
Цель данного курсового проекта – является систематизация, углубление и активное применение знаний по программированию, закрепление знаний,
полученных в лекционном курсе, а также га практических занятиях.
Одной из подзадач является создание описание алгоритма программы
И составление математической модели.
Задачи курсового проекта: написать программу, позволяющую редактировать, сохранять и открывать текстовые документы.
АКТУАЛЬНОСТЬ ТЕКСТОВОГО РЕДАКТОРА
Практически каждый пользователь компьютера встречается с необходимостью подготовки тех или иных документов — писем, статей, служебных записок, отчетов, рекламных материалов и т.д. Разумеется, эти документы можно подготавливать и без компьютера, например, на пишущей машинке. Однако с появлением персональных компьютеров стало значительно проще и удобнее, а, следовательно, и выгоднее подготавливать документы с помощью компьютеров.
ПОСТАНОВКА ЗАДАЧИ
В данном курсовом проекте описана программа, написанная на языке Visual C# с использованием технологий Microsoft.NET.
В пояснительной записке содержится теоретическая информация о значение Microsoft .NET. Отдельное внимание уделено аспектам программирования приложений с использованием технологий доступа к данным ADO .NET.
1. ВНЕШНЕЕ ОПИСАНИЕ
1.1 Определение требований к программному средству
программный обеспечение архитектура руководство.
Программа должна создавать и открывать текстовые документы, форматировать и редактировать текст. Также должна быть предусмотрена возможность сохранения текста в файл.
1.2 Спецификация качества программного обеспечения
Функциональность: программа должна являться полностью завершенным программным продуктом, не требующим каких-либо дополнительных специальных компонентов.
Надёжность: программа должна быть автономной.
Эффективность: программа должна предъявлять минимальные требования к аппаратному обеспечению, требования к аппаратным ресурсам должны быть намного ниже, чем для самой ОС. Программа должна иметь интуитивно понятный пользовательский графический интерфейс.
1.3 Техническое задание
Основание для разработки
Углубление знаний в C#. Создание текстового редактора, работа с текстом.
Назначение разработки
Создание программного средства для работы с текстом.
Требования к программному средству
Программа должна создавать и открывать текстовые документы, форматировать и редактировать текст. Также должна быть предусмотрена возможность сохранения текста в файл.
Стадии и этапы разработки
Разработка технического задания.
Проектирование.
Разработка классов.
Дизайн главного меню и интерфейса.
Написание кода, исправление ошибок, корректировка дизайна.
2. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ПРОГРАММИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИЙ MICROSOFT.NET
Платформа NET Framework по большей части состоит из гигантской библиотеки кода, который можно использовать из клиентских языков путем применения различных приемов объектно-ориентированного программирования. Эта библиотека поделена на модули, которые применяются в зависимости от того, какие результаты требуется получить.
Для разработки клиентских приложений под Windows используются две технологии.NET: Windows Forms (WinForms) и Windows Presentation Foundation (WPF). Обе эти технологии — по сути, набор классов и элементов управления пользовательского интерфейса (предоставляемых.NET Framework), позволяющих разработчикам быстро создавать приложения, которые инсталлируются и работают под управлением операционной системы Microsoft Windows.
2.1. Создание приложения Windows Forms в среде Microsoft Visual Studio 2015
Под написанием приложения с помощью NET Framework подразумевается просто написание кода с использованием одного из языков, поддерживающих NET Framework, и библиотеки кода.NET.
Для выполнения курсового проекта было использовано средство Microsoft Visual Studio 2015 – продукт компании Майкрософт, включающий интегрированную среду разработки программного обеспечения и ряд других инструментальных средств.
Одной из основных целей Visual Studio является обеспечение быстрого создания форм Windows Forms. При помощи визуального конструктора Windows Forms, панели инструментов Controls и различных элементов управления общего назначения.
Процесс создания приложения Windows Forms начинается точно так же, как и проекты всех других типов в Visual Studio: выбирается шаблон проекта Windows Application в диалоговом окне New Project и указывается местоположение исходных кодов приложения. Проекты типа Windows Forms Application состоят по умолчанию из класса формы и (в случае языка С#) из статического класса Program. После создания проекта мы получаем пустую форму, открытую в визуальном конструкторе Windows Forms.
Внутри визуального конструктора находится макет реальной формы – холст для интерфейса пользователя. При помощи этого холста можно добавлять на форму элементы управления и визуальные элементы, подстраивать внешний вид самой формы и переходить непосредственно к коду, который связан с формой.
Visual Studio выполняет за нас огромный объем работы, существенно упрощая создание функциональных оконных приложений и экономя наши усилия. Созданное приложение ведет себя так же, как и другие окна: его можно перемещать, закрывать, минимизировать и т. п.
Нам не требуется писать для этого никакого кода – все и так работает. То же самое справедливо и для кнопок, помещённых в окно. Достаточно два раза щелкнуть по ней мышью, чтобы Visual Studio понял: мы желаем иметь код, который должен выполняться при нажатии на эту кнопку. Все, что от нас требуется – это предоставить необходимый код.
Оконные приложения, естественно, не ограничиваются простыми формами с кнопками. Если посмотреть на панель с инструментами, то можно обнаружить большое количество самых разнообразных блоков, с помощью которых можно строить пользовательский интерфейс.
3. ПРОЕКТИРОВАНИЕ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА
Главная форма содержит основные элементы интерфейса и даёт доступ к большинству функциям
Форма содержит панель с ниспадающими списками, при помощи которых осуществляется доступ к основным функциям программы.
Главное меню содержит следующие вкладки:
«Файл»: подменю включает в себя кнопки выполнения создания, открытия, сохранения файла и закрытие данной программы.
«Вид»: подменю включает в себя возможность включения / выключения режима «Перенос по словам» а также возможность изменить цвет и шрифт выделенного текста.
3.1. Реализация
Описание алгоритма на естественном языке
Сразу после загрузки Текстовый редактор автоматически создает пустой текстовый документ. Создание текстового документа происходит с помощью отчистки области набора текста.
4. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
4.1 Назначение программного средства
Данное программное средство позволяет решать прикладные задачи по работе с текстовыми документами.
4.2 Порядок установки программного средства
Программное средство не требует сложной процедуры установки. Установка происходит путем копирования файлов программы в любой раздел жесткого диска компьютера. Важным условием является сохранность целостности компонентов программы.
4.3 Руководство пользователя
Программа проста в использовании и имеет достаточно необходимых функций. Основное пространство рабочего окна редактора занимает область набора текста, в которой отображается мигающий курсор. Сразу после загрузки Текстовый редактор автоматически создает пустой текстовый документ. Вы можете открыть для редактирования уже существующий текстовый файл, воспользовавшись пунктом “Открыть” в меню Файл. Все функции программы можно вызвать посредством ниспадающего меню в верхней части программы, а также горячими клавишами.
5. РАЗРАБОТКА ПРИЛОЖЕНИЯ WINDOWS «ТЕКСТОВЫЙ РЕДАКТОР»
Форма приложения (рис.1)
Открыта вкладка «Файл» (Рис.2)
Открыта вкладка «Вид» (Рис.3)
Лента инструментов, «Жирный текст». «Курсив». «Подчеркнутый текст», «Зачёркнутый текст», «Размер текста + 2», «Размер текста — 2»,
«Изменить шрифт», «Выбрать размер шрифта», «Выравнивание по левому краю»,
«Выравнивание по центру», «Выравнивание по правому краю».
(Рис.4)
ЗАКЛЮЧЕНИЕ
В рамках курсового проекта была разработана программа для создания и редактирования текстовых документов. В процессе проектирования использовались методологии модульного и объектно-ориентированного программирования.
Для разработки данной программы нужно было грамотно спроектировать внутреннюю архитектуру программы и реализацию необходимых классов.
При разработке данного программного средства применялся язык программирования С# как один из наиболее современных и перспективных языков программирования.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- 1.Веретнов М.Ю. Гусаков Л.В., Комаров В.И. Работы студентов. Общие требования и правила оформления [Книга] — Архангельск: «Архангельский государственный технический университет», 2009. — стр. 104.
- 2.Дж. Рихтер CLR via C#. Программирование на платформе Microsoft .NET [Книга] — СПб : «Питер», «Русская Редакция». — стр. 656. — ISBN 978-5-91180-303-2.
- .Е.А. Жоголев «Технология программирования» [Книга] — М., Научный мир, 2009, 216 с.
- Сайт: www.thecodingguys.net
- Сайт: http://www.frolov-lib.ru
- Сайт: http://www.cyberforum.ru/
- Сайт: http://studlearn.com
ПРИЛОЖЕНИЕ
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Text;
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
private int TabCount = 0;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//toolStripComboBox1_Fonts_names_Load();
GetFontCollection();
PopulateFontSizes();
}
public System.Drawing.Font SelectionFont { get; set; }
public void AddTab()
{
RichTextBox richTextBox1 = new RichTextBox();
richTextBox1.Name = «Body»;
richTextBox1.Dock = DockStyle.Fill;
richTextBox1.ContextMenuStrip = contextMenuStrip1;
TabPage NewPage = new TabPage();
TabCount += 1;
string DocumentText = «Document » + TabCount;
NewPage.Name = DocumentText;
NewPage.Text = DocumentText;
NewPage.Controls.Add(richTextBox1);
tabControl1.TabPages.Add(NewPage);
}
private void RemoveTab()
{
if (tabControl1.TabPages.Count != 1)
{
tabControl1.TabPages.Remove(tabControl1.SelectedTab);
}
else
{
tabControl1.TabPages.Remove(tabControl1.SelectedTab);
AddTab();
}
}
private void RemoveAllTabs()
{
foreach (TabPage Page in tabControl1.TabPages)
{
tabControl1.TabPages.Remove(Page);
}
AddTab();
}
private void RemoveAllTabsButThis()
{
foreach (TabPage Page in tabControl1.TabPages)
{
if (Page.Name != tabControl1.SelectedTab.Name)
{
tabControl1.TabPages.Remove(Page);
}
}
}
RichTextBox GetCurrentDocument
{
get { return (RichTextBox)tabControl1.SelectedTab.Controls[«richTextBox1»]; }
}
private void открытьToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
richTextBox1.Text = File.ReadAllText(openFileDialog.FileName);
}
}
private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog saveFile1 = new SaveFileDialog();
saveFile1.DefaultExt = «*.txt»;
saveFile1.Filter = «Test files|*.txt»;
if (saveFile1.ShowDialog() == System.Windows.Forms.DialogResult.OK && saveFile1.FileName.Length > 0)
{
using (StreamWriter sw = new StreamWriter(saveFile1.FileName, true))
{
sw.WriteLine(richTextBox1.Text);
sw.Close();
}
}
}
private void закрытьToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void очиститьToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.Text = «»;
}
private void текстВСерединеToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.SelectionAlignment = HorizontalAlignment.Center;
}
private void текстСправаToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.SelectionAlignment = HorizontalAlignment.Right;
}
private void выбратьЦветТекстаToolStripMenuItem_Click_1(object sender, EventArgs e)
{
ColorDialog color1 = new ColorDialog();
if (color1.ShowDialog() == DialogResult.OK)
{
richTextBox1.SelectionColor = color1.Color;
}
}
private void выбратьШрифтToolStripMenuItem_Click_1(object sender, EventArgs e)
{
FontDialog Font1 = new FontDialog();
if (Font1.ShowDialog() == DialogResult.OK)
{
richTextBox1.SelectionFont = Font1.Font;
}
}
private void текстСлеваToolStripMenuItem_Click_1(object sender, EventArgs e)
{
richTextBox1.SelectionAlignment = HorizontalAlignment.Left;
}
private void текстВСерединеToolStripMenuItem_Click_1(object sender, EventArgs e)
{
richTextBox1.SelectionAlignment = HorizontalAlignment.Center;
}
private void текстСправаToolStripMenuItem_Click_1(object sender, EventArgs e)
{
richTextBox1.SelectionAlignment = HorizontalAlignment.Right;
}
private void переносToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void даToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.WordWrap = true;
}
private void нетToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.WordWrap = false;
}
private void SetBold()
{
if (richTextBox1.SelectionFont != null)
{
System.Drawing.Font currentFont = richTextBox1.SelectionFont;
System.Drawing.FontStyle newFontStyle;
if (richTextBox1.SelectionFont.Bold == true)
{
newFontStyle = FontStyle.Regular;
}
else
{
newFontStyle = FontStyle.Bold;
}
richTextBox1.SelectionFont = new Font(
currentFont.FontFamily, currentFont.Size, newFontStyle);
}
}
private void SetItalic()
{
if (richTextBox1.SelectionFont != null)
{
System.Drawing.Font currentFont = richTextBox1.SelectionFont;
System.Drawing.FontStyle newFontStyle;
if (richTextBox1.SelectionFont.Bold == true)
{
newFontStyle = FontStyle.Regular;
}
else
{
newFontStyle = FontStyle.Italic;
}
richTextBox1.SelectionFont = new Font(
currentFont.FontFamily, currentFont.Size, newFontStyle);
}
}
private void SetUnderline()
{
if (richTextBox1.SelectionFont != null)
{
System.Drawing.Font currentFont = richTextBox1.SelectionFont;
System.Drawing.FontStyle newFontStyle;
if (richTextBox1.SelectionFont.Bold == true)
{
newFontStyle = FontStyle.Regular;
}
else
{
newFontStyle = FontStyle.Underline;
}
richTextBox1.SelectionFont = new Font(
currentFont.FontFamily, currentFont.Size, newFontStyle);
}
}
private void SetStrikeout()
{
if (richTextBox1.SelectionFont != null)
{
System.Drawing.Font currentFont = richTextBox1.SelectionFont;
System.Drawing.FontStyle newFontStyle;
if (richTextBox1.SelectionFont.Bold == true)
{
newFontStyle = FontStyle.Regular;
}
else
{
newFontStyle = FontStyle.Strikeout;
}
richTextBox1.SelectionFont = new Font(
currentFont.FontFamily, currentFont.Size, newFontStyle);
}
}
public void GetFontCollection()
{
InstalledFontCollection InsFonts = new InstalledFontCollection();
foreach (FontFamily item in InsFonts.Families)
{
toolStripComboBox1.Items.Add(item.Name);
}
toolStripComboBox1.SelectedIndex = 0;
}
private void PopulateFontSizes()
{
for (int i = 1; i <= 75; i++)
{
toolStripComboBox2.Items.Add(i);
}
toolStripComboBox2.SelectedIndex = 11;
}
private void toolStripButton1_Click_1(object sender, EventArgs e)
{
SetBold();
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
SetItalic();
}
private void toolStripButton3_Click(object sender, EventArgs e)
{
SetUnderline();
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
SetStrikeout();
}
private void toolStripButton6_Click(object sender, EventArgs e)
{
float NewFontSize = richTextBox1.SelectionFont.SizeInPoints + 2;
Font NewSize = new Font(richTextBox1.SelectionFont.Name, NewFontSize, richTextBox1.SelectionFont.Style);
richTextBox1.SelectionFont = NewSize;
}
private void toolStripButton5_Click(object sender, EventArgs e)
{
float NewFontSize = richTextBox1.SelectionFont.SizeInPoints — 2;
Font NewSize = new Font(richTextBox1.SelectionFont.Name, NewFontSize, richTextBox1.SelectionFont.Style);
richTextBox1.SelectionFont = NewSize;
}
private void toolStripComboBox1_Fonts_names_Load()
{
InstalledFontCollection InsFonts = new InstalledFontCollection();
foreach (FontFamily item in InsFonts.Families)
{
toolStripComboBox1.Items.Add(item.Name);
}
toolStripComboBox1.SelectedIndex = 0;
}
// private void toolStripComboBox1_TextChanged(object sender, EventArgs e)
// {
// try
// {
// richTextBox1.Font = new Font(toolStripComboBox1.SelectedItem.ToString(), richTextBox1.SelectionFont.Size, richTextBox1.SelectionFont.Style);
// richTextBox1.SelectionFont = richTextBox1.Font;
// }
// catch { }
// }
private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Font NewFont = new Font(toolStripComboBox1.SelectedItem.ToString(),richTextBox1.SelectionFont.Size, richTextBox1.SelectionFont.Style);
richTextBox1.SelectionFont = NewFont;
// try
// {
// richTextBox1.Font = new Font(toolStripComboBox1.SelectedItem.ToString(), richTextBox1.SelectionFont.Size, richTextBox1.SelectionFont.Style);
// }
// catch { }
}
private void toolStripComboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
float NewSize;
float.TryParse(toolStripComboBox2.SelectedItem.ToString(), out NewSize);
Font NewFont = new Font(richTextBox1.SelectionFont.Name, NewSize, richTextBox1.SelectionFont.Style);
richTextBox1.SelectionFont = NewFont;
}
private void timer1_Tick(object sender, EventArgs e)
{
if (richTextBox1.Text.Length > 0)
{
toolStripLabel1.Text = richTextBox1.Text.Length.ToString();
}
}
private void toolStripButton7_Click(object sender, EventArgs e)
{
richTextBox1.SelectionAlignment = HorizontalAlignment.Left;
}
private void toolStripButton8_Click(object sender, EventArgs e)
{
richTextBox1.SelectionAlignment = HorizontalAlignment.Center;
}
private void toolStripButton9_Click(object sender, EventArgs e)
{
richTextBox1.SelectionAlignment = HorizontalAlignment.Right;
}
private void toolStripButton7_Click_1(object sender, EventArgs e)
{
}