Алгоритмы сортировки и поиска

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Министерство образования и науки РФ

Федеральное агентство по образованию

ГОУ ВПО Череповецкий Государственный Университет

Институт информационных технологий

Кафедра ПО ЭВМ

Алгоритмы сортировки и поиска

Расчетно-пояснительная записка к курсовой работе

Исполнитель: студентка гр. 1ПО-31

Сатюкова Д.А.

Руководитель: Селивановских В. В.

2009 г.

Введение

Данный программный продукт представляет собой программу «Текстовый редактор». Она предназначена для широкого круга пользователей и не требует особых знаний, кроме базовых навыков работы на компьютере. Эта программа позволяет загружать текст из файла и сохранять текст в файл, а также имеет своей возможностью осуществление поиска слова в тексте методом Кнута-Морриса-Пратта.

1. Общие сведения

Delphi — универсальная среда разработки, позволяющая создавать программы любого типа:

— программы для дома (например, мультимедийные с использованием графики, анимации);

— программы для офисов (базы данных, в том числе клиент-серверные приложения);

— программы для работы в Интернете и т. д.

Для написания нашей курсовой работы как раз и была использована среда Delphi7, как самая простая и удобная среда программирования. Преимущества Delphi — комбинация нескольких важнейших технологий:

· высокопроизводительный компилятор в машинный код;

· объектно-ориентированная модель компонент;

· Delphi — одна из наиболее мощных систем визуальной разработки программ;

· возможность обнаружения ошибок на этапе компиляции;

· простой и ясный синтаксис.

Программа работает под управлением операционной системы семейства Windows корпорации Microsoft.

2. Функциональное назначение

Данная программа обеспечивает выполнение следующих задач:

1) Загрузка текста из файла (с расширением. txt);

2) Сохранение в файл;

3) Некоторые возможности редактирования текста (Вырезать/Копировать/Вставить/Очистить/Выделить всё/Шрифт/Выравнивание);

4) Поиск и замена слов в тексте методом Кнута-Морриса-Пратта.

Элементы входных данных представляют собой текстовые файлы (с расширением. txt), и если необходим поиск, то слово для поиска и замены.

Элементы выходных данных представляют собой также текстовые файлы с расширением. txt. При поиске без замены, если слово найдено, оно выделяется в тексте; при поиске с заменой найденное слово заменяется на новое слово, введенное пользователем.

3. Описание логической структуры программы

Алгоритм Кнута -- Морриса -- Пратта (КМП-алгоритм) -- алгоритм поиска образца (подстроки) в строке. Алгоритм был открыт Д. Кнутом и В. Праттом и, независимо от них, Д. Моррисом. Результаты своей работы они опубликовали совместно в 1977 году. Этот алгоритм основывается на том соображении, что после частичного совпадения начальной части слова с соответствующими символами текста фактически известна пройденная часть текста и можно «вычислить» некоторые сведения (на основе самого слова), с помощью которых затем быстро продвинуться по тексту. Основным отличием КМП-алгоритма от алгоритма прямого поиска является выполнение сдвига слова не на один символ на каждом шаге алгоритма, а на некоторое переменно количество символов. Таким образом, перед тем как осуществлять очередной сдвиг, необходимо определить величину сдвига. Для повышения эффективности алгоритма необходимо, чтобы сдвиг на каждом шаге был бы как можно большим.

Перед началом фактического поиска можно вычислить вспомогательную таблицу Shift; эти вычисления сводятся к некоторой предтрансляции слова. Если j определяет позицию в слове, содержащую первый несовпадающий символ (как в алгоритме прямого поиска), то величина сдвига определяется:

Shift[j] = j — LenSuff — 1. Значение LenSuff определяется как размер самой длинной последовательности символов слова, непосредственно предшествующих позиции j (суффикс), которая полностью совпадает с началом слова. LenSuff зависит только от слова и не зависит от текста.

Рис. 1. Пример работы КМП-алгоритма

Приведенный на рис. 1 пример поиска слова ABCABD показывает принцип работы такого алгоритма. Символы, подтвергшиеся сравнению, здесь подчеркнуты.

Рис. 2. Обобщенный алгоритм работы программы

4. Спецификация программных модулей

Таблица 1

Название процедуры или функции

параметры

Действие

UNIT1

procedure OPEN1;

нет

Открытие файлов

procedure Create1;

нет

Создание нового файла

procedure SAVE1;

нет

Сохранение в файл

procedure TForm1. N2Click

(Sender: TObject)

Вызов процедуры Create1

procedure TForm1. N4Click

(Sender: TObject)

Вызов процедуры SAVE1

procedure TForm1. N3Click

(Sender: TObject)

Вызов процедуры OPEN1

procedure TForm1. N13Click

(Sender: TObject)

Выход из программы

procedure TForm1. N7Click

(Sender: TObject)

Вырезание выделенного текста в буфер обмена

procedure TForm1. N10Click

(Sender: TObject)

Копирование текста в буфер обмена

procedure TForm1. N11Click

(Sender: TObject)

Вставка текста из буфера обмена

procedure TForm1. N12Click

(Sender: TObject)

Выделение всего текста

procedure TForm1. ApplicationEventsHint

(Sender: TObject)

Осуществление всплывающих подсказок

procedure TForm1. N15Click

(Sender: TObject)

Спрятать/Показать панель инструментов

procedure TForm1. N16Click

(Sender: TObject)

Спрятать/Показать строку состояния

procedure TForm1. N17Click

(Sender: TObject)

Очистка рабочего поля

procedure TForm1. ToolButton8Click

(Sender: TObject)

Вызов процедуры Create1

procedure TForm1. ToolButton1Click

(Sender: TObject)

Вызов процедуры OPEN1

procedure TForm1. ToolButton2Click

(Sender: TObject)

Вызов процедуры SAVE1

procedure TForm1. ToolButton3Click

(Sender: TObject)

Вырезание выделенного текста в буфер обмена

procedure TForm1. ToolButton4Click

(Sender: TObject)

Копирование текста в буфер обмена

procedure TForm1. ToolButton5Click

(Sender: TObject)

Вставка текста из буфера обмена

procedure TForm1. ToolButton6Click

(Sender: TObject)

Выделение всего текста

procedure TForm1. ToolButton7Click

(Sender: TObject)

Очистка рабочего поля

procedure TForm1. Memo1MouseDown

(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer)

Вывод позиции курсора в Memo

procedure TForm1. N20Click (Sender: TObject);

нет

Запуск диалога выбора шрифта

procedure TForm1. N23Click (Sender: TObject);

нет

Осуществление выравнивания по центру

procedure TForm1. N24Click (Sender: TObject);

нет

Осуществление выравнивания по левому краю

procedure TForm1. N25Click (Sender: TObject);

нет

Осуществление выравнивания по правому краю

procedure TForm1. N26Click (Sender: TObject);

нет

Осуществление перехода на 3-ю форму, содержащую справку

procedure TForm1. Timer1Timer (Sender: TObject);

нет

Вывод текущего времени

procedure TForm1. ToolButton9Click (Sender: TObject);

нет

Вызов диалогового окна выбора цвета

procedure TForm1. FormCreate (Sender: TObject);

нет

Заполнение ComboBox1 и ComboBox2

procedure TForm1. ComboBox1Change

(Sender: TObject)

Установление значения размера шрифта

procedure TForm1. ComboBox1KeyPress

(Sender: TObject; var Key: Char)

Осуществление блокировки на ввод текстовой информации (допустимы только цифры)

procedure TForm1. ComboBox2Change

(Sender: TObject)

Установление стиля шрифта

procedure TForm1. ComboBox2KeyPress

(Sender: TObject; var Key: Char)

Осуществление блокировки на изменение ComboBox2 (список шрифтов)

UNIT3

procedure TForm3. BitBtn1Click

(Sender: TObject)

Закрытие справки, возврат на главную форму

UNIT4

procedure TForm4. BitBtn1Click

(Sender: TObject)

Осуществление поиска слова в тексте

procedure TForm4. BitBtn2Click

(Sender: TObject)

Отмена поиска, возврат на главную форму

UNIT5

procedure TForm5. Button1Click

(Sender: TObject)

Возврат к поиску

procedure TForm5. BitBtn1Click

(Sender: TObject)

Переход на главную форму

5. Используемые технические средства

Для нормальной работы программы необходим персональный компьютер со следующими требованиями:

1. Тип процессора — Intel Pentium III/Intel Pentium IV;

2. Операционная система Windows 96/2000/XP/Vista;

3. Минимальный объем памяти — 20 Мб.

Также необходимы внешние устройства: клавиатура, мышь.

6. Проектирование интерфейса

В программе используется интерфейс со свободной навигацией и интерфейс-меню.

Используемые компоненты Таблица 2

TImage

используется при оформлении форм

TPanel

используется при оформлении форм

TLabel

используется для вывода различной текстовой информации, пояснений

TEdit

используется для ввода различной информации (слова для поиска, слова для замены)

TMemo

используется для вывода текстовой информации

TButton

используется для осуществления переходов, подтверждения ввода

TBitBtn

TOpenDialog

используется для вызова диалогового окна выбора и открытия файлов

TSaveDialog

используется для вызова диалогового окна сохранения файла

TMainMenu

используется для обслуживания меню (выбор действия)

TComboBox

используется для выпадающего списка (смена размера шрифта, смена стиля)

TTimer

используется для вывода текущего времени

TStatusBar

используется для отображения подсказок, вывода текущего времени и отображения позиции курсора в тексте

TImageList

используется для хранения изображений (иконок)

TApplicationEvents

используется для осуществления вывода всплывающих подсказок

TFontDialog

используется для вызова диалогового окна выбора атрибутов шрифта

TToolBar

используется для создания панели инструментов

TColorDialog

используется для вызова диалогового окна выбора цвета

TSskinManager

используется для оформления

TSskinProvider

Рис. 3. Главная форма

Рис. 4. Третья форма «Справка»

Рис. 5. Четвертая форма «Поиск слова»

Рис. 6. Пятая форма «Результаты поиска»

7. Вызов и загрузка

Загрузка программы осуществляется запуском файла Project1. exe, находящегося в каталоге TextEditor.

Заключение

В результате проделанной работы был закреплен материал, изученный в курсе дисциплины «Cтруктуры и алгоритмы обработки данных», а именно:

· Алгоритм поиска подстроки в строке (метод Кнута-Морриса-Пратта);

Кроме этого, был закреплен материал, изученный в курсе других дисциплин, например «Создание и обработка динамических массивов».

Также, были приобретены навыки программирования в среде Delphi.

Поставленная цель достигнута: программа позволяет получить желаемый результат.

Список используемой литературы

1. Интернет-ресурс http: //www. edelphi. ru/ - Электронная книга 100 компонентов Delphi.

2. Интернет-ресурс http: //www. helloworld. ru/ - Документация и книги по программированию.

3. Интернет-ресурс http: //www. delphisources. ru/.

4. Фаронов В. В. Delphi. Программирование на языке высокого уровня: Учебник для вузов — СПб.: Питер, 2006.

5. Альфред В. Ахо, Джон Э. Хопкрофт, Джеффри Д. Ульман. Структуры данных и алгоритмы: Пер. с англ.: М.: Издательский дом «Вильямс», 2001.

Приложение 1

Обобщенный алгоритм

Рис. 1. Блок-схема обобщенного алгоритма

Рис. 2. Блок-схема поиска слова в тексте. Составление таблицы сдвигов (procedure TForm4. BitBtn1Click (Sender: TObject);)

Рис. 3. Блок-схема поиска слова в тексте. Осуществление поиска слова в тексте (procedure TForm4. BitBtn1Click (Sender: TObject)

Приложение 2

Листинг программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, StdCtrls, ImgList, ComCtrls, AppEvnts, ToolWin, ActnList,

ExtCtrls, sSkinProvider, sSkinManager, sDialogs;

type

TForm1 = class (TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

OpenDialog1: TOpenDialog;

Memo1: TMemo;

SaveDialog1: TSaveDialog;

N7: TMenuItem;

N8: TMenuItem;

N10: TMenuItem;

N11: TMenuItem;

N12: TMenuItem;

N13: TMenuItem;

ImageList1: TImageList;

StatusBar: TStatusBar;

ApplicationEvents: TApplicationEvents;

FontDialog1: TFontDialog;

N14: TMenuItem;

N15: TMenuItem;

N16: TMenuItem;

ToolBar: TToolBar;

N17: TMenuItem;

N18: TMenuItem;

N19: TMenuItem;

N20: TMenuItem;

N21: TMenuItem;

N22: TMenuItem;

N23: TMenuItem;

N24: TMenuItem;

N25: TMenuItem;

N26: TMenuItem;

Timer1: TTimer;

ComboBox1: TComboBox;

ComboBox2: TComboBox;

ToolButton1: TToolButton;

ToolButton2: TToolButton;

ToolButton3: TToolButton;

ToolButton4: TToolButton;

ToolButton5: TToolButton;

ToolButton6: TToolButton;

ToolButton7: TToolButton;

ToolButton8: TToolButton;

ToolButton9: TToolButton;

ToolButton10: TToolButton;

ToolButton11: TToolButton;

ToolButton12: TToolButton;

sSkinManager1: TsSkinManager;

sSkinProvider1: TsSkinProvider;

sColorDialog1: TsColorDialog;

ToolButton13: TToolButton;

ToolButton14: TToolButton;

ToolButton15: TToolButton;

ToolButton16: TToolButton;

procedure N2Click (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure N3Click (Sender: TObject);

procedure N7Click (Sender: TObject);

procedure N10Click (Sender: TObject);

procedure N11Click (Sender: TObject);

procedure N12Click (Sender: TObject);

procedure N13Click (Sender: TObject);

procedure ApplicationEventsHint (Sender: TObject);

procedure N15Click (Sender: TObject);

procedure N16Click (Sender: TObject);

procedure N17Click (Sender: TObject);

procedure ToolButton2Click (Sender: TObject);

procedure ToolButton1Click (Sender: TObject);

procedure ToolButton3Click (Sender: TObject);

procedure ToolButton4Click (Sender: TObject);

procedure ToolButton5Click (Sender: TObject);

procedure N9Click (Sender: TObject);

procedure ToolButton6Click (Sender: TObject);

procedure ToolButton7Click (Sender: TObject);

procedure Memo1Change (Sender: TObject);

procedure Memo1MouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure N20Click (Sender: TObject);

procedure N23Click (Sender: TObject);

procedure N24Click (Sender: TObject);

procedure N25Click (Sender: TObject);

procedure N26Click (Sender: TObject);

procedure ToolButton9Click (Sender: TObject);

procedure FormCreate (Sender: TObject);

procedure ComboBox1Change (Sender: TObject);

procedure ComboBox1KeyPress (Sender: TObject; var Key: Char);

procedure ComboBox2Change (Sender: TObject);

procedure ComboBox2KeyPress (Sender: TObject; var Key: Char);

procedure ToolButton8Click (Sender: TObject);

procedure Memo1KeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure Timer1Timer (Sender: TObject);

procedure FormShow (Sender: TObject);

procedure Memo1KeyDown (Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure ToolButton13Click (Sender: TObject);

procedure FormCloseQuery (Sender: TObject; var CanClose: Boolean);

procedure N19Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Implementation

{$R *. dfm}

uses Unit3, Unit4;

procedure OPEN1;

begin

Form1. Memo1. Lines. Clear; // Очищаем строки Memo

Form1. Caption:=('Text Editor'); // Востанавливаем заголовок формы

If Form1. OpenDialog1. Execute Then // Открываем диалоговое окно

If form1. OpenDialog1. Filename<>'' Then

Begin

form1. Memo1. Lines. LoadFromFile (form1. OpenDialog1. Filename);// Загружаем файл в Memo

Form1. Caption:=(form1. OpenDialog1. Filename+' - Text Editor'); // Добавляем имя файла в заголовок.

End;

end;

procedure Create1;

begin

form1. Memo1. Lines. Clear; // Очищаем строки Memo

Form1. Caption:=('Text Editor'); // Востанавливаем заголовок формы

end;

procedure SAVE1;

begin

IF form1. SaveDialog1. Execute then // Открываем диалоговое окно

IF form1. SaveDialog1. Filename<>'' then

Begin

form1. Memo1. Lines. SaveToFile (form1. SaveDialog1. Filename);

// Добавляем имя файла в заголовок.

Form1. Caption:=(form1. SaveDialog1. Filename+' - Text Editor');

End;

end;

{создать}

procedure TForm1. N2Click (Sender: TObject);

begin

Create1;

end;

{Сохранение}

procedure TForm1. N4Click (Sender: TObject);

begin

SAVE1;

end;

{открыть}

procedure TForm1. N3Click (Sender: TObject);

begin

OPEN1;

if memo1. Text='' then

begin

N19. Enabled:=false;

N7. Enabled:=false;

N10. Enabled:=false;

N11. Enabled:=false;

N12. Enabled:=false;

N17. Enabled:=false;

ToolButton3. Enabled:=false;

ToolButton4. Enabled:=false;

ToolButton5. Enabled:=false;

ToolButton6. Enabled:=false;

ToolButton7. Enabled:=false;

ToolButton9. Enabled:=false;

end

else

begin

N19. Enabled:=true;

ToolButton3. Enabled:=true;

ToolButton4. Enabled:=true;

ToolButton6. Enabled:=true;

ToolButton7. Enabled:=true;

ToolButton9. Enabled:=true;

N7. Enabled:=true;

N10. Enabled:=true;

N12. Enabled:=true;

N17. Enabled:=true;

end;

end;

{Выход}

procedure TForm1. N13Click (Sender: TObject);

begin

memo1. Clear;

Form1. Close;

end;

{Вырезать}

procedure TForm1. N7Click (Sender: TObject);

begin

Memo1. CutToClipBoard; //Вырезаем выделенный текст в буфер обмена

end;

{Копировать}

procedure TForm1. N10Click (Sender: TObject);

begin

Memo1. CopyToClipBoard; // Копируем текст в буфер обмена

N11. Enabled:=true;

end;

{Вставить}

procedure TForm1. N11Click (Sender: TObject);

begin

Memo1. PasteFromClipBoard; // Вставляем текст из буфера обмена

end;

{Выделить всё}

procedure TForm1. N12Click (Sender: TObject);

begin

Memo1. SelectAll; // Выделяем весь текст

end;

procedure TForm1. ApplicationEventsHint (Sender: TObject);

begin

with StatusBar do

begin

Panels[0]. Text:= Application. Hint;

{============}

SimplePanel := SimpleText < > '';

end;

end;

procedure TForm1. N15Click (Sender: TObject);

begin

// Спрятать или показать панель инструментов

ToolBar. Visible := not ToolBar. Visible;

N15. Checked := not N15. Checked;

end;

procedure TForm1. N16Click (Sender: TObject);

begin

// Спрятать или показать строку состояния

StatusBar. Visible := not StatusBar. Visible;

N16. Checked := not N16. Checked;

end;

{Очистить}

procedure TForm1. N17Click (Sender: TObject);

begin

Memo1. Lines. Clear;

end;

{создать}

procedure TForm1. ToolButton1Click (Sender: TObject);

begin

OPEN1;

end;

{открыть}

procedure TForm1. ToolButton2Click (Sender: TObject);

begin

SAVE1;

end;

{сохранить}

procedure TForm1. ToolButton3Click (Sender: TObject);

begin

Memo1. CutToClipBoard; //Вырезаем выделенный текст в буфер обмена

end;

{вырезать}

procedure TForm1. ToolButton4Click (Sender: TObject);

begin

Memo1. CopyToClipBoard; // Копируем текст в буфер обмена

ToolButton5. Enabled:=true;

N11. Enabled:=true;

end;

{копировать}

procedure TForm1. ToolButton5Click (Sender: TObject);

begin

Memo1. PasteFromClipBoard; // Вставляем текст из буфера обмена

end;

{вставить}

procedure TForm1. ToolButton6Click (Sender: TObject);

begin

Memo1. SelectAll; // Выделяем весь текст

end;

{очистить}

procedure TForm1. ToolButton7Click (Sender: TObject);

begin

Memo1. Lines. Clear; //очистить

end;

procedure TForm1. Memo1Change (Sender: TObject);

begin

ToolButton3. enabled:=true;

ToolButton4. enabled:=true;

ToolButton6. enabled:=true;

ToolButton7. enabled:=true;

Form1. StatusBar. Panels[1]. Text:='стр '+IntToStr (Memo1. CaretPos. Y)+' столб '+IntToStr (Memo1. CaretPos. X);

end;

procedure TForm1. Memo1MouseDown (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

Form1. StatusBar. Panels[1]. Text:='стр '+IntToStr (Memo1. CaretPos. Y)+' столб '+IntToStr (Memo1. CaretPos. X);

end;

procedure TForm1. N20Click (Sender: TObject);

begin

FontDialog1. Font:=Memo1. Font;// установить шрифт в диалоге

If FontDialog1. Execute Then

begin // Запускаем диалог выбора шрифта

Memo1. Font:=FontDialog1. Font; // Применяем выбранный шрифт

Combobox1. Text:=intToStr (Memo1. font. Size);

ComboBox2. Text:=Memo1. Font. Name;

end;

end;

procedure TForm1. N23Click (Sender: TObject);

begin

N23. Checked:=true;

Memo1. Alignment:=tacenter;

end;

procedure TForm1. N24Click (Sender: TObject);

begin

N24. Checked:=true;

memo1. Alignment:=taleftjustify;

end;

procedure TForm1. N25Click (Sender: TObject);

begin

N25. Checked:=true;

Memo1. Alignment:=tarightjustify;

end;

procedure TForm1. N26Click (Sender: TObject);

begin

Form3. Visible:=true;

end;

procedure TForm1. ToolButton9Click (Sender: TObject);

begin

Form1. Memo1. SelStart:=0;

Form4. Visible:=true;

end;

procedure TForm1. FormCreate (Sender: TObject);

begin

Combobox1. Items. Add ('8');

Combobox1. Items. Add ('9');

Combobox1. Items. Add ('10');

Combobox1. Items. Add ('11');

Combobox1. Items. Add ('12');

Combobox1. Items. Add ('14');

Combobox1. Items. Add ('16');

Combobox1. Items. Add ('18');

Combobox1. Items. Add ('20');

Combobox1. Items. Add ('22');

Combobox1. Items. Add ('24');

Combobox1. Items. Add ('26');

Combobox1. Items. Add ('28');

Combobox1. Items. Add ('36');

Combobox1. Items. Add ('48');

Combobox2. Items. Add ('Arial');

Combobox2. Items. Add ('Arial Black');

Combobox2. Items. Add ('Comic Sans MS');

Combobox2. Items. Add ('Courier New');

Combobox2. Items. Add ('Tahoma');

Combobox2. Items. Add ('Times New Roman');

Combobox2. Items. Add ('Verdana');

Memo1. Font. Name:='Times New Roman';

Memo1. Font. Size:=8;

end;

procedure TForm1. ComboBox1Change (Sender: TObject);

begin

Memo1. Font. Size:=StrToInt (Combobox1. Text);

end;

procedure TForm1. ComboBox1KeyPress (Sender: TObject; var Key: Char);

begin

if not (Key in ['0'. '9']) then Key := #0;

end;

procedure TForm1. ComboBox2Change (Sender: TObject);

begin

Memo1. Font. Name:=Combobox2. Text;

end;

procedure TForm1. ComboBox2KeyPress (Sender: TObject; var Key: Char);

begin

if (Key in ['0'. '9','a'. 'z', 'а'. 'я','А'. 'Я','A'. 'Z', '!', '"', '@', '#', '№', ';', '$', '%', '^', '&', '?', ':', '*',

'(', ')', '-', '_', '+', '=', '|', '', '/', ',', '.' ,'<', '>', '{', '}', '[', ']']) then Key := #0;

end;

procedure TForm1. ToolButton8Click (Sender: TObject);

begin

Create1;

end;

procedure TForm1. Memo1KeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if memo1. Text='' then

begin

N19. Enabled:=false;

N7. Enabled:=false;

N10. Enabled:=false;

N11. Enabled:=false;

N12. Enabled:=false;

N17. Enabled:=false;

ToolButton3. Enabled:=false;

ToolButton4. Enabled:=false;

ToolButton5. Enabled:=false;

ToolButton6. Enabled:=false;

ToolButton7. Enabled:=false;

ToolButton9. Enabled:=false;

end

else

begin

N19. Enabled:=true;

ToolButton3. Enabled:=true;

ToolButton4. Enabled:=true;

ToolButton6. Enabled:=true;

ToolButton7. Enabled:=true;

ToolButton9. Enabled:=true;

N7. Enabled:=true;

N10. Enabled:=true;

N12. Enabled:=true;

N17. Enabled:=true;

end;

end;

procedure TForm1. Timer1Timer (Sender: TObject);

var Time: Tdatetime;

begin

Time: =now ();

statusBar. Panels[2]. Text:='Время'+TimeToStr (time);

end;

procedure TForm1. FormShow (Sender: TObject);

begin

Timer1. Enabled:=true;

end;

procedure TForm1. Memo1KeyDown (Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if memo1. Text<>'' then N19. Enabled:=true;

end;

procedure TForm1. ToolButton13Click (Sender: TObject);

begin

if sColorDialog1. Execute then

Memo1. Font. color := sColorDialog1. Color;

end;

procedure TForm1. FormCloseQuery (Sender: TObject; var CanClose: Boolean);

var res: integer;

begin

Res := MessageBox (

Self. Handle

, PChar ('Хотите сохраниться перед выходом?')

, PChar ('Text Editor')

, MB_YESNOCANCEL + MB_ICONINFORMATION //+ MB_APPLMODAL

);

case Res of

IDYES: begin

Save1;

//Вызов диалогового окна для сохранения, когда пользователь нажал кнопку «Да».

end;

IDNO: begin

canclose: =true;

//Закрытие без сохранения в случае, когда пользователь нажал кнопку «Нет».

end;

IDCANCEL: begin

canclose: =false;

//Возврат на главную форму в случае, когда пользователь нажал кнопку «Отмена».

end;

end;

end;

procedure TForm1. N19Click (Sender: TObject);

begin

Form1. Memo1. SelStart:=0;

Form4. Visible:=true;

end;

end.

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, jpeg;

type

TForm3 = class (TForm)

BitBtn1: TBitBtn;

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

Memo2: TMemo;

Image1: TImage;

Image2: TImage;

procedure BitBtn1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

{$R *. dfm}

procedure TForm3. BitBtn1Click (Sender: TObject);

begin

Form3. Visible:=false;

end;

end.

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, XPMan, StdCtrls, Buttons, ExtCtrls;

type

TForm4 = class (TForm)

Edit1: TEdit;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

XPManifest1: TXPManifest;

RadioGroup1: TRadioGroup;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

Panel1: TPanel;

Label1: TLabel;

Edit2: TEdit;

Label2: TLabel;

procedure BitBtn1Click (Sender: TObject);

procedure BitBtn2Click (Sender: TObject);

procedure RadioButton1Click (Sender: TObject);

procedure RadioButton2Click (Sender: TObject);

procedure FormShow (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

txt, wrd: string;

i, j, k, x, u, lensuff, m, n, position1: integer;

equal, KMP: boolean;

shift: array of integer;

implementation

uses Unit1, Unit5;

{$R *. dfm}

procedure TForm4. BitBtn1Click (Sender: TObject);

begin

if Edit1. Text='' then ShowMessage ('Введите слово для поиска либо выберите «ОТМЕНА"') else

BEGIN {1}

KMP: =false;

txt: =Form1. Memo1. Lines. GetText;

wrd: =Form4. Edit1. Text;

m: =length (wrd);

setlength (shift, m);

n: =length (txt);

form1. Memo1. SelStart:=Position1;

shift[0]: =1;

if m>1 then

begin{5}

shift[1]: =1;

for j: =2 to m-1 do

BEGIN {4}

shift[j]: =1;

for lensuff: =1 to j-2 do

Begin{3}

equal: =true;

{ m: =j;}

for k: =1 to lensuff do

begin {2}

if wrd[k]< >wrd[j-lensuff+k]

then equal: =false;

end; {2}

if equal then

shift[j]: =j-lensuff;

End; {3}

END; {4}

end; {5}

{========================}

i: =form1. Memo1. SelStart;

j: =1;

repeat

i: =i+shift[j-1];

j: =1;

while (j< =m)and (txt[i+j-1]=wrd[j]) do j: =j+1;

until (j=m+1)or (i> =n-m+1);

if j=m+1 then

begin

kmp: =true;

position1: =i

end

else

begin

kmp: =false;

Position1: =0

end;

if KMP=true then

begin

Form1. Memo1. SelStart:=Position1−1;

Form1. Memo1. SelLength:=length (wrd);

if Radiobutton2. Checked=true then

begin

Form1. Memo1. CutToClipBoard;

if Edit2. Text<>'' then

begin

Edit2. SelectAll;

Edit2. CopyToClipboard;

Form1. Memo1. PasteFromClipboard;

end;

end;

BitBtn1. Caption:='Найти далее';

end

{==========================}

else begin

Form4. Visible:=false;

Form5. Visible:=true

end;

shift: =NIL;

END; {1}

end;

procedure TForm4. BitBtn2Click (Sender: TObject);

begin

form4. Visible:=false;

end;

procedure TForm4. RadioButton1Click (Sender: TObject);

begin

Label2. Visible:=false;

Edit2. Visible:=false;

Edit1. Top:=192;

Label1. Top:=32;

end;

procedure TForm4. RadioButton2Click (Sender: TObject);

begin

Label2. Visible:=true;

Edit2. Visible:=true;

Label1. Top:=8;

Label1. Left:=8;

Edit1. Top:=168;

Edit1. left:=16;

Label2. Top:=80;

Label2. Left:=8;

Edit2. Top:=104;

Edit2. left:=8;

end;

procedure TForm4. FormShow (Sender: TObject);

begin

Edit1. Clear;

edit2. Clear;

BitBtn1. Caption:='ОК';

RadioButton1. Checked:=true;

Edit1. Top:=192;

Label1. Top:=32;

Position1: =0;

end;

end.

unit Unit5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Buttons, StdCtrls;

type

TForm5 = class (TForm)

Label1: TLabel;

Button1: TButton;

BitBtn1: TBitBtn;

procedure Button1Click (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses Unit4;

{$R *. dfm}

procedure TForm5. Button1Click (Sender: TObject);

begin

Form5. Visible:=false;

Form4. Visible:=true;

end;

procedure TForm5. BitBtn1Click (Sender: TObject);

begin

Form5. Visible:=false;

end;

end.

загрузка текст файл редактирование

Приложение 3

Руководство пользователя

1. Общие сведенья о программе

Данный программный продукт представляет собой программу «Текстовый редактор». Эта программа может быть использована любым пользователем ПК и не требует особых знаний. Она обеспечивает выполнение следующих задач:

1) Загрузка текста из файла (с расширением. txt);

2) Сохранение текста в файл;

3) Редактирование текста (шрифт, выравнивание; возможности Вырезать/Копировать/вставить/Выделить всё…)

4) Поиск и замена слов в тексте.

2. Описание установки

Перед запуском программы необходимо скопировать папку TextEditor к себе на компьютер.

3. Описание запуска

Загрузка программы осуществляется запуском файла Project1. exe, находящегося в каталоге TextEditor.

Рис. 1. Запуск программы

4. Инструкции по работе

Поле запуска программы появляется главная форма.

Рис. 2. Главная форма

При выборе пункта меню «Файл» появится выпадающий список

Рис. 3. Пункт меню «Файл»

При выборе пункта «Создать» будет очищен документ и восстановлен заголовок окна «Text Editor». При выборе пункта «Открыть…» появится диалоговое окно выбора файла для открытия (файл с расширением. txt)

Рис. 4. Пункт меню «Правка»

При выборе пункта «Сохранить…» появится диалоговое окно сохранения текстового документа:

Рис. 5. Пункт меню «Правка»

Рис. 6. Пункт меню «Правка»

При выборе пункта меню «Правка» предоставляются возможности Вырезать/Копировать/Вставить/Выделить всё/Очистить, а также «Найти» — поиск слова в тексте. При выборе этого пункта появится окно

Рис. 4. Поиск слова

Возможен выбор параметров:

— поиск без замены (по умолчанию). Здесь необходим только ввод слова для поиска;

— поиск с заменой. При установлении этого параметра на форме появится еще дополнительное поле ввода слова для замены

Рис. 7. Поиск слова

При осуществлении поиска можно найти все вхождения слова в тексте, при этом на форме будет кнопка «Найти далее».

Рис. 8. Осуществление поиска слова Снег в тексте

В случае если слово не найдено или достигнут конец текста появится следующее окно

Рис. 9. Результаты поиска

При выборе в меню пункта «Вид» предоставляется возможность Скрыть/Показать панель инструментов и Скрыть/Показать строку состояния

Рис. 10. Пункт меню «Вид»

В пункте меню «Формат» возможен выбор 2-х действий:

1) Шрифт. При этом откроется диалоговое окно выбора атрибутов шрифта

Рис. 11. Пункт меню «Формат»

2) Выравнивание (по левому краю, по центру, по правому краю).

Рис. 9. Пункт меню «Формат»

Для вызова справки необходимо в меню выбрать пункт Справка либо нажать F1.

Рис. 12. «Справка»

При выходе из программы появится предупреждение

Рис. 13. Выход из программы

При нажатии кнопки «Да» появится диалоговое окно сохранения текстового документа. При нажатии кнопки «Нет» будет осуществлен выход из программы без сохранения. Для возврата в программу необходимо нажать «Отмена».

ПоказатьСвернуть
Заполнить форму текущей работой