Требования к программе
1)Требования к функциональным характеристикам
Программа должна выполнять следующие функции:
- вывод текста в окно программы из выбранного файла
- тексты формата .rtf, .txt
- поиск строки по шаблону;
- выделение найденной строки в тексте;
2) Требования к надежности
- Существование указанного файла;
- Файл должен быть с расширением *.txt, *.rtf;
- Верный ввод пути к файлу;
3) Требования к составу и параметрам технических средств
Минимальные требования: 250 MB RAM, процессор 2.2 GHz, мышь, клавиатура, монитор.
4) Требования к информационной и программной совместимости
Программа должна поддерживаться любой операционной системой семейства Windows.
Требования к программной документации
Программная документация должна содержать расчетно-пояснительную записку, руководство пользователя, текст программы, блок-схема алгоритмов, техническое задание.
Стадии и этапы разработки
Этап | Дата | Результат выполнения | Отметка о выполнении |
Техническое задание | до 30 октября | Техническое задание | |
Выбор языка и среды программирования | до 30 октября | Delphi, Object Pascal | |
Теоретическое изучение реализуемых алгоритмов | до 10 ноября | Алгоритм Рабина-Карпа | |
Описание логической структуры программы | до 20 октября | Алгоритм Рабина-Карпа | |
Проектирование интерфейса пользователя | до 20 октября | Пользовательский интерфейс | |
Первая версия программы | до 1 декабря | 50 % | |
Тестирование | до 15 декабря | ||
Окончательная версия программы | до 15 декабря | ||
РПЗ | до 20 декабря |
Порядок контроля и приемки
Этап | Дата | Отметка о выполнении |
Техническое задание | до 30 октября | |
Выбор языка и среды программирования | до 30 октября | |
Теоретическое изучение реализуемых алгоритмов | до 10 ноября | |
Описание логической структуры программы | до 20 октября | |
Проектирование интерфейса пользователя | до 20 октября | |
Первая версия программы | до 1 декабря | |
Тестирование | до 15 декабря | |
Окончательная версия программы | до 15 декабря | |
РПЗ | до 20 декабря |
Приложение 2
Общая схема
Приожение 2
Алгоритм Рабина-Карпа
Приложение 3
type
TForm1 = class(TForm)
RichEdit1: TRichEdit;
Edit1: TEdit;
Button1: TButton;
OpenDialog1: TOpenDialog;
Label1: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
Timer1: TTimer;
N7: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure N7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var DATA: TextFile;
Form1: TForm1;
implementation
uses Unit2, Unit3;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var dlina_poiska, dlina_text, hashpoisk, hashtext, i, vid_text : integer;
str_poiska, str_text, bufer_text: string;
begin
RichEdit1.SelStart := 0;
RichEdit1.SelLength := length(RichEdit1.Text); // => очистка цвета
RichEdit1.SelAttributes.Color := clblack;
str_poiska := Edit1.Text;
dlina_poiska := length(str_poiska);
hashpoisk := 0;
str_text := RichEdit1.Text;
dlina_text := length(str_text);
for i := 1 to dlina_poiska do
begin
if ((str_poiska[i] = #184) or (str_poiska[i] = #168)) then
str_poiska[i] := 'е';
end;
for i := 1 to dlina_text do
begin
if ((str_text[i] = #184) or (str_text[i] = #168)) then
str_text[i] := 'е';
end;
str_text := AnsiUpperCase(str_text);
str_poiska := AnsiUpperCase(str_poiska);
for i := 1 to dlina_poiska do
begin
hashpoisk := hashpoisk + ord(str_poiska[i]);
end;
for vid_text := 0 to dlina_text - 1 do
begin
bufer_text := copy(str_text, vid_text + 1, dlina_poiska);
hashtext := 0;
for i := 1 to dlina_poiska do
hashtext := hashtext + ord(bufer_text[i]);
if hashpoisk = hashtext then
begin
if str_poiska = bufer_text then
begin
RichEdit1.SelStart := vid_text;
RichEdit1.SelLength := dlina_poiska;
RichEdit1.SelAttributes.Color := clRed;
end;
end;
end;
if RichEdit1.SelAttributes.Color = clblack then
ShowMessage('Такой строки нет');
end;
procedure TForm1.N5Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
If (opendialog1.Execute) then
Begin
AssignFile(DATA,OpenDialog1.FileName);
RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
End;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
RichEdit1.Clear;
Edit1.Clear;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
Form1.Visible := False;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
RichEdit1.SelStart := 0; //
RichEdit1.SelLength := length(RichEdit1.Text); // => очистка цвета
RichEdit1.SelAttributes.Color := clblack; //
end;
end.
Unit 2:
type
TForm2 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
Memo1.Lines.Add ( '1) Если вы хотите вывести текст из файла, то нажмите файл -> открыть');
Memo1.Lines.Add ( 'и выбирете нужный вам файл ( расширения .txt , .rtf )');
Memo1.Lines.Add ( 'если же нужно просто ввести текст вручную, то набирайте его в соответствующее поле');
Memo1.Lines.Add ( '2) Введите подстроку, которую нужно найти в тексте ( без учёта регистра и без учёта "е" и "ё")');
Memo1.Lines.Add ( '3) Нажмите кнопку "Найти" ');
Memo1.Lines.Add ( '4) Если нужно всё очистить, то нажмите файл -> очистить, если же нужно очистить выделение, то нажмите файл -> очистить выделение');
Memo1.Lines.Add ( '5)Для закрытия программы нажмите файл -> закрыть');
end;
end.
Unit 3:
type
TForm3 = class(TForm)
Timer1: TTimer;
Image1: TImage;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm3.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled := False;
Form1.Show;
Form3.Visible := False;
end;
end.
Приложение 4
Руководство пользователя
Общие сведения
Программа «Поиск подстроки в строке» предназначена для поиска строки по заданному пользователем шаблону в тексте.
Описание запуска
Для запуска программы необходимо воспользоваться файлом Search.exe.
Инструкция по работе
1. Открываем программу
2. В диалоговом окне выбираем текстовый файл, после выбора которого, текст выведется в окне
3. В строку под текстом вводим строку для поиска
4. Нажимаем кнопку «Найти»
4.1 Если такая строка есть, то она выделится красным цветом
4.2 Если строки нет, то будет выведено сообщение «Такой строки нет»
5. Для очистки окна с текстом выберете «очистить»
5.1 Для очистки выделения текста выберете «очистить выделение»
6. Для вывода справки по работе нажмите Справка -> Руководство к работе
7. Для завершения работы нажмите крестик в правом верхнем углу или нажмите Файл -> Закрыть