Анотация.
Данный документ является пояснительной запиской к курсовому проекту на тему «Поиск и замена подстроки в тексте с откатом изменений». Разработанный продукт предназначен для поиска и исправления орфографических ошибок в тексте, замены подстрок и символов с сохранением пред идущего изменения.
Программный продукт «Orfo-M-pro» разработан для Красноярского Колледжа Радиоэлектроники и Информационных технологий. Отладка программных модулей проводилась на IRU Patriot 502 под управлением операционных систем Windows 7, Linux Rosa Fresh R7 в кроссплатформенной интегрированной среде разработки Qt creator.
Введение.
Целью курсового проекта является написание самого курсового проекта.
Задачами курсового проекта является:
- Научиться создавать качественные и надёжные программные продукты,
соответствующие требованиям заказчика и допускающие последующие сопровождения, а также получения рабочих навыков при создании программных продуктов;
-Ознакомится с принципами отладки и тестирования;
-Разработать техническую документацию к разработанному программному продукту.
Подстрока.
Подстрока — это связная не пустая часть строки.
Строка.
Строка — ряд знаков, написанных или напечатанных в одну линию. Строка может также означать: Строковый тип — тип данных в программировании.
Регулярное выражение.
Регулярные выражения (англ. regular expressions) — формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеров, англ. wildcard characters). По сути это строка-образец (англ. pattern, по-русски её часто называют «шаблоном», «маской»), состоящая из символов и метасимволов и задающая правило поиска.
Примитивный алгоритм поиска подстрок.
В задачах поиска традиционно принято обозначать шаблон поиска как needle (англ. «иголка»), а строку, в которой ведётся поиск — как haystack (англ. «стог сена»). Также обозначим через Σ алфавит, на котором проводится поиск.
Если считать, что строки нумеруются с 1, простейший алгоритм (англ. naive algorithm ) выглядит так.
for i=0...|haystack|-|needle|
for j=1...|needle|
if haystack[i+j]<>needle[j]
then goto 1
output("Найдено: ", i+1)
Графическое представление данного алгоритма таблица 1.
Haystack — ABCBCDE
needle — BC
Таблица 1.
A |
B |
C |
B |
C |
D |
E |
B |
C |
|||||
B |
C |
|||||
B |
C |
|||||
B |
C |
|||||
B |
C |
|||||
B |
C |
|||||
B |
Таким образом скорость работы алгоритма сводится к O(Haystack*needle+1).
Примечание.
Поиск подстрок в на сегодняшний день широко применяется в различных структурах информационных технологий — от текстовых редакторов до поисковых систем. Так же поиск подстрок применяется в научных биологических центрах: к примеру поиск участка кода ДНК. Применение алгоритмов поиска широко используются в СУБД.
Чем быстрей работа алгоритма тем больший объём информации можно обработать.
Для увеличения производительности алгоритма в С++ были разработаны методы позволяющие ускорить процесс поиска подстрок введя регулярные выражения и функции работы с подстроками.
I Расчетная часть.
1.1 Постановка задачи.
В рамках данного курсового проекта необходимо разработать программное обеспечение, позволяющее заменить подстроку в тексте с откатом к пред идущему состоянию текста.
Интерфейс программы должен быть разработан с использованием языка программирования C++ .
Задачей данной программы является поиск и замена подстрок, проверка орфографических опечаток, возврат к пред идущему состоянию, просмотр и редактирование текста с сохранением на локальный диск.
Программа должна иметь удобный графический интерфейс и выполнять следующие функции:
· Ввод и обработка данных.
· Проверку орфографии по словарю.
· Поиск и замену всех вхождений подстрок.
· Открытие локальных текстовых файлов.
· Сохранение файлов на локальном диске.
· Создание текстового файла.
· Откат изменений к пред идущему.
Программное средство «Поиск и замена подстроки в тексте с откатом изменений» должно осуществлять поставленную задачу пользователя.
Пользователь должен ввести текст в текстовое поле либо открыть фай с готовым текстом. Программное средство после выполнения операций должно вывести результат. С учетом всех этих параметров была выбрана среда разработки Qt creator C++.
1.2 Требование к программному коду.
Требование к программному коду:
· Код программы должен быть выполнен на языке C++.
1.2.1 Требование к функциональным характеристикам.
На процесс восприятия пользователем, существенно влияет её внешний интерфейс. Он должен соответствовать современным стандартам оформления приложений, быть понятным и гибким в настройках.
1.2.2 Требования к надёжности.
Программа должна быть корректной, то есть безошибочно выполнять требуемые функции и должна быть пригодной к эксплуатации.
Программа
должна быть устойчивой, то есть должна выполнять все требуемые действия не
смотря на незначительные отклонения в работе аппаратуры, операционной системе и
в самой программе.
1.2.3 Требования к условиям эксплуатации.
Программное средство «Поиск и замена подстроки в тексте с откатом изменений» предназначен для работы одного пользователя на одном компьютере, который должен обладать минимальными навыками работы с ПК, минимальными навыками работы в ос Wndows либо Linux.
1.3 Требования к составу и параметрам технических средств.
Для бесперебойного использования программного средства «Поиск и замена подстроки в тексте с откатом изменений» необходимо наличие следующих технических средств:
· Компьютер IBM PC-совместимый.
· Процессор: Intel Pentium, AMD, Intel Celeron, Intel Core, Clarion с тактовой частотой 300 МГц или выше.
· ОЗУ 128МБ или выше.
· 30МБ свободного дискового пространства.
· Видеокарта SVGA – совместимый, с памятью 3МБ или выше.
· Монитор, поддерживающий разрешение 800*600 при 256 цветах;
· Манипулятор типа мышь.
· Клавиатура стандартная 101/102 Microsoft.
Дополнительных требований к составу и параметрам технических средств не предъявляется, все устройства должны находиться в своей базовой параметрической настройке.
1.4 Информационное обеспечение задачи
1.4.1 Описание входной информации
Входными данными являются:
· Текстовый документ.
· Текст.
Входные данные могут вводится непосредственно в текстовое поле текстового редактора либо считаны с текстового файла либо при выборе через диалоговое окно или заданы как аргумент через командную строку к исполняемому файлу программы.
1.4.2
Описание выходной информации
Выходными данными являются:
· Текст.
· Файл с изменённой информацией.
Выходные данные выводятся в текстовое поле текстового редактора, созданные изменения можно сохранить в текстовый файл.
II. ОПИСАТЕЛЬНАЯ ЧАСТЬ
2.1 В процессе курсового проектирования было разработано программное обеспечение, средство для «Поиск и замена подстроки в тексте с откатом изменений» которое выполняет проверку орфографических опечаток, а так же поиск и замну всех вхождений подстрок. Программа имеет удобный графический интерфейс, гибкую настройку и выполняет следующие функции:
- Редактирование текста.
- Проверка орфографии.
- Поиск и замена вхождения подстрок.
- Чтение информации с текстового файла.
- Откат к пред идущему изменению.
- Сохранение текста в текстовый файл.
2.2 Программа может быть перенесена с одного компьютера на другой без потери информации и работоспособности. При создании данного программного средства была использована среда программирования Qt creator с использованием языка программирования C++, под управлением операционной системы Windows 7 и Linux Rosa Fresh 7.
2.3 Программный продукт состоит из следующих файлов:
· *.exe – исполняемый файл программы (для ос Windows).
· *.cpp – исходный код программы и классов.
· *.h – заголовочные файлы программы и классов.
· *.pro – файл проекта.
· *.ico – файлы иконок.
· *.png – файлы изображений для элемнтов программы.
· *.qrc – ресурсы программы.
· *.rc – файл ресурсов программы.
· *.ui – файлы пользовательского интерфейса.
· *.txt – файл стандартного словаря программы.
· Orfo-M-pro – исполняемый файл (для ос Linux).
2.4 Контрольный пример работы программного модуля.
1) Для первого контрольного примера была взята фраза с орфографической ошибкой в текстовом файле «превет мир» рис.1.
Рис.1. Загрузка текста из файла.2) По выбору в панели меню «Правка» - «Проверить» текст заменяется на исправленный Рис.2, Рис. 3.
Рис. 2. Выбор пункта меню.
Рис. 3. Результат проверки орфографии.3) Отмена действий производится по вызову пункта меню «Правка» - «Отмена» рис. 4. рис. 5.
Рис. 4. Вызов пункта Отмена.
Рис. 5. Результат выполнения отмены.4) Замена вхождений подстроки производится по вызову пункта меню «Правка» - «Замена» рис. 6., рис. 7.
Рис. 6. Вызов пункта меню замены текста.
Рис. 7. Окно замены текста.5) Для замены текста выберем существующую подстроку — слово «мир» и заменим на слово «Человек» рис. 8., рис. 9.
Рис. 8. Ввод значений для замены.
Рис. 9. Результат выполнения замены текста.2.5 Руководство пользователя по работе с программным модулем.
Руководство пользователя по работе с программным модулем «Поиск и замена подстроки в тексте с откатом изменений» программой «Orfo-M-pro» представлено в виде таблицы, см., таблицу 2.
Таблица
2.
Операция |
Действия пользователя |
Ответ программы |
Запуск программы. |
Двойной клик по исполняемому файлу программы Orfo-M-pro.exe (Windows), Orfo-M-pro (Linux). |
Запуск окна текстового редактора. |
Открытие файла. |
Выбор пункта меню «Файл» - «Открыть», далее непосредственно выбор файла в диалоговом окне. |
Загрузка текстовой информации с файла, вывод текста в текстовый файл. |
Проверка текста на содержание орфографических ошибок. |
Выбор пункта меню «Правка» - «Проверить» |
Замена слов содержащих одну орфографическую ошибку с выводом обработанной информации в текстовый редактор. |
Замена текста |
Выбор пункта меню «Правка» - «Замена» |
Вызов диалогового окна для замены текста. |
Ввод в текстовые поля данных и нажатие кнопки «Заменить» |
Замена текста в текстовом поле. |
|
Отмена |
Выбор пункта меню «Правка» - «Отмена» |
Отмена к пред идущему изменению |
Сохранение |
Выбор пункта меню «Файл» - «Сохранить» |
Сохранение текущего изменения в файл. |
Сохранить как |
Выбор пункта меню «Файл» - «Сохранить как» |
Сохранение текущего файла в новый текстовый документ либо замена существующего. |
Открыть словарь |
Выбор пункта меню «Сервис» - «Открыть словарь» |
Открытие пользовательского словаря для проверки. |
Настройки |
Выбор пункта меню «Сервис» - «Настройки» |
Открытие диалогового окна настройки. |
Выбор размера символов (для пользователей со слабым зрением) |
Изменение размера символов в текстовом редакторе. |
|
Выбор пункта «Включить тулбар» |
Включение или отключение панели быстрого доступа. |
|
Нажатие кнопки «Применить» |
Применение изменений |
|
Нажатие кнопки «Отменить» |
Отмена не сохраненных изменений. |
|
Справка |
Выбор пункта меню «Сервис» - «Справка» |
Вывод окна информации о версии, лицензии и информации о разработчике. |
Закрыть |
Выбор пункта меню «Файл» - «Закрыть» |
Закрытие приложения. |
Заключение.
В процессе разработки программного кода программы «Поиск и замена подстроки в тексте с откатом изменений» самостоятельно были изучены строковые массивы, работа со строками, работа с потоками приложения, работа с реестром ос «Windows», а так же некоторые функциональные возможности кросплатформенной интегрированной среды разработки Qt creator.
Разработка программного продукта «Поиск и замена подстроки в тексте с откатом изменений» способствовала систематизации, закреплению и расширению знаний, полученных при изучении предметов: МДК 01.01 «Системное программирование» и МДК 01.02 «Прикладное программирование». Закрепление теоретического материала происходило в ходе решения поставленной задачи – разработки алгоритма, компиляции кода и исправления появившихся во время решения ошибок.
Во время решения задачи предоставляется возможность воспользоваться необходимыми алгоритмами решения задачи.
Научился создавать качественные и надёжные программные продукты, соответствующие требованиям заказчика и допускающие последующие сопровождения, а также получил рабочие навыки при создании программных продуктов.
Ознакомился с принципами отладки и тестирования.
Разработать техническую документацию к разработанному программному продукту.
Список литературы.
1. Ian Joyner. A Critique of C++ and Programming and Language Trends of the 1990s - 3rd Edition. — 1996.
Список
использованных источников.
1. https://gcc.gnu.org/onlinedocs/
2. http://yosefk.com/c++fqa/index.html
3. http://doc.crossplatform.ru/qt/4.7.x/qstring.html
4. http://www.cplusplus.com/doc/tutorial/
5. https://en.wikipedia.org/wiki/Substring
Приложение А.
Блок-схема алгоритма проверки орфографии.
Приложение Б.
Листинг функции проверки орфографии.
#include "orfostart.h"
OrfoStart::OrfoStart(QObject *parent) : QObject(parent)
{
}
void OrfoStart::OrfoMStart(QString sText, QString tText)
{
QString text = tText;
QStringList slov = sText.split(QRegExp("W+"), QString::SkipEmptyParts);
QStringList textl=text.split(QRegExp("W+"), QString::SkipEmptyParts);// разбиваю на подстроки
int skiplist[textl.length()];//масив скип листа совподений
for(int i=0; i //все совподения будут представлены как 1, не совпадения как 0 for(int i=0; i { for(int j=0; j { if(textl.at(i)==slov.at(j))// создаю скип лист { skiplist[i]=1;//записываю 1 в элемент массива } } } for(int i=0; i { for(int j=0; j { if(skiplist[i]!=1)// если равно 0 { QString textl1=textl.at(i);// переводим в строку QString slov1 = slov.at(j);// переводим в строку if(textl1.length()>1)// если больше одной буквы { if(textl1.length()==slov1.length())// если длина совподает { QStringList textl2 = textl1.split(QRegExp(""), QString::SkipEmptyParts);// разбиваю на буквы QStringList slov2 = slov1.split(QRegExp(""), QString::SkipEmptyParts);// разбиваю на буквы int iter=0;// задаю итераторы проверки for(int l = 0; l { if(textl2.at(l)==slov2.at(l))// если есть совпадения по буквам {
iter=iter+1;//считаем количество совпадений } if(iter == textl2.length()-1)//если совпадений меньше чем длина подстроки на 1 символ { text.replace(textl.at(i),slov.at(j));//замена подстроки в тексте } } }textl1.remove(text.at(i)); slov1.remove(slov.at(j));//очищаю переменные } } } emit returnText(text);//отправляю сигнат содержащий текст } }