Алгоритмы сортировки и поиска
Организация возможности просмотра текстовых файлов и осуществления поиска нужных слов в тексте. Редактирование текста (шрифт, размер). Алгоритм поиска подстроки в строке (метод Кнута-Морриса-Пратта). Загрузка текста из файла (с расширением .txt).
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 29.05.2013 |
Размер файла | 2,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Министерство образования и науки РФ
Федеральное агентство по образованию
ГОУ ВПО Череповецкий Государственный Университет
Институт информационных технологий
Кафедра ПО ЭВМ
Алгоритмы сортировки и поиска
Расчетно-пояснительная записка к курсовой работе
Исполнитель: студентка гр.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. Выход из программы
При нажатии кнопки «Да» появится диалоговое окно сохранения текстового документа. При нажатии кнопки «Нет» будет осуществлен выход из программы без сохранения. Для возврата в программу необходимо нажать «Отмена».
Размещено на Allbest.ru
Подобные документы
Теоретические сведения. Основные понятия. Строка, её длина, подстрока. Понятие о сложности алгоритма. Алгоритмы основанные на методе последовательного поиска. Алгоритмы Рабина, Кнута - Морриса - Пратта, Бойера – Мура.
курсовая работа [138,3 K], добавлен 13.06.2007Основные определения поиска подстроки в строке. Простейшие алгоритмы поиска подстроки в строке. Алгоритмы последовательного поиска и Рабина-Карпа, создание и описание программы, реализующей их. Порядок работы с приложением. Тестирование алгоритмов.
курсовая работа [2,7 M], добавлен 24.05.2012Реализация комплекса программ поиска подстроки в тексте алгоритмом прямого поиска и алгоритмом Кнута-Морриса-Пратта. Сравнительный анализ теоретических и экспериментальных оценок эффективности алгоритмов. Разработка структуры программы, ее листинг.
курсовая работа [2,8 M], добавлен 22.01.2015Теоретические сведения об алгоритмах поиска подстроки в строке. Глобализация информации в сети Internet. Интеллектуальный поиск. Алгоритм последовательного (прямого) поиска, Рабина и их применение. Анализ алгоритмов. Реализация программного кода.
курсовая работа [230,8 K], добавлен 12.02.2009Структура заданного исходного файла и структуры данных, соответствующие данным файла. Подпрограмма проверки принадлежности текста к одной из шести кодовых таблиц. Алгоритмы перекодировки файла в cp1251. Алгоритм сортировки записей исходного файла.
курсовая работа [63,7 K], добавлен 12.12.2010Методы реализации алгоритмов сортировки и алгоритмов поиска на языках программирования высокого уровня. Программирование алгоритмов сортировки и поиска в рамках создаваемого программного средства на языке Delphi. Создание руководства пользователя.
курсовая работа [1,7 M], добавлен 16.04.2012Описание алгоритма сортировки с двоичным включением, выбор структур данных. Пример сортировки массива, отсортированного случайным образом. Алгоритм покрытия по методу "Построение одного кратчайшего покрытия". Волновой алгоритм поиска длиннейшего пути.
курсовая работа [78,2 K], добавлен 24.09.2010Работа с текстом в программе Inkscape. Предложение с иероглифами, редактирование и применение атрибутов текста, выделение символов в строке. Редактирование текста и проверка орфографии, подбор цвета и шрифта в тексте, логотипы и их значение в программе.
отчет по практике [2,8 M], добавлен 29.05.2012Задача об оптимальном графе для децентрализованного поиска. Жадный алгоритм. Модель Клайнберга. Математическая модель. Алгоритмы решения. Алгоритм локального поиска. Табу алгоритм. Метод ветвей и границ. Выбор между одинаковыми соседями. Стартовый граф.
дипломная работа [4,1 M], добавлен 23.10.2016Программа последовательного поиска в последовательном неотсортированном массиве реквизитов единственного значения. Алгоритм сортировки простым выбором. Программа индексирования основного файла по одному реквизиту. Индексные файлы по реквизитам.
лабораторная работа [896,4 K], добавлен 15.02.2009