Поиск и замена подстроки в тексте с откатом изменений

Описание:
Доступные действия
Введите защитный код для скачивания файла и нажмите "Скачать файл"
Защитный код
Введите защитный код

Нажмите на изображение для генерации защитного кода

Текст:

Анотация.

            Данный документ является пояснительной запиской к курсовому проекту на тему «Поиск и замена подстроки в тексте с откатом изменений». Разработанный продукт предназначен для поиска и исправления орфографических ошибок в тексте, замены подстрок и символов с сохранением пред идущего изменения.

            Программный продукт «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);//отправляю сигнат содержащий текст

}

Информация о файле
Название файла Поиск и замена подстроки в тексте с откатом изменений от пользователя bebuci
Дата добавления 10.5.2020, 19:38
Дата обновления 10.5.2020, 19:38
Тип файла Тип файла (zip - application/zip)
Скриншот Не доступно
Статистика
Размер файла 305.86 килобайт (Примерное время скачивания)
Просмотров 463
Скачиваний 134
Оценить файл