Разработка системы анализа схожести текстов
Изучение методов работы и взаимодействия с базами данных. Рассмотрение алгоритма Рабина–Карпа для определения плагиата. Разработка программы для оценки схожести текстов, методика ее использования. Тестирование программы с помощью набора тест-кейсов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 10.12.2016 |
Размер файла | 1,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
- Введение
- 1. Анализ предметной области
- 1.1 Анализ существующих аналогов
- 1.2 Постановка задачи
- 2. Математические модели и методы, положенные в основу программного средства и теоретические исследования
- 3. Разработка программного средства
- 3.1 Разработка спецификаций требований
- 3.2 Разработка архитектуры программного средства
- 3.3 Обоснование выбора языка программирования
- 3.4 Разработка модели базы данных
- 3.5 Разработка схемы алгоритма построения гистограммы
- 4. Тестирование программного средства
- 5. Методика использования программного средства
- Заключение
- Список использованных источников
- Приложение А
Введение
- Плагиат - умышленное присвоение авторства чужого произведения искусства или достижения науки, технических решений или изобретений. Плагиат может быть нарушением авторско-правового законодательства и патентного законодательства и в качестве таковых может повлечь за собой юридическую ответственность. С другой стороны, плагиат возможен и в областях, на которые не распространяется действие каких-либо видов интеллектуальной собственности, например, в математике и других фундаментальных научных дисциплинах.
- Плагиат выражается в публикации под своим именем чужого произведения, а также в заимствовании фрагментов чужих произведений без указания источника заимствования. Обязательным признаком плагиата является присвоение авторства, так как неправомерное использование, опубликование, копирование и т. п. произведения, охраняемого авторским правом, само по себе является не плагиатом, а другим видом нарушения авторского права, часто называемым «пиратством». «Пиратство» становится плагиатом при неправомерном использовании результатов интеллектуального труда и присвоении публикующим лицом авторства.
- Подражание, пародия, заимствование идей (без копирования конкретных технических решений или фрагментов произведения, поскольку сами идеи не могут являться объектом авторского права), эмуляция и цитирование плагиатом не являются. Так же от плагиата следует отличать соблюдение канонов и традиций, работу в рамках стилистических стандартов и использование шаблонов. С плагиатом не следует путать идейную, художественную или научную преемственность, развитие или интерпретацию произведений творчества или интеллектуальной деятельности. Следует понимать, что все произведения науки и искусства в той или иной степени основаны на ранее созданных произведениях
- Огромные информационные ресурсы Интернета существенно изменили возможности обучения. В идеале цель обучения в вузе - получение не только диплома, но и знаний. Тогда студенты должны «по максимуму» использовать возможности Интернета для подготовки качественных работ. Однако такие работы требуют много времени. В случае «нерадивых» студентов ресурсы могут использоваться, и действительно, используются для ускоренной подготовки - для «скачивания» рефератов, контрольных и курсовых работ. Во многих таких случаях меняется только фамилия автора. То есть, имеет место плагиат «в чистом виде». Однако следует критически подходить к материалам, представленным в сети Интернет, особенно в части, касающейся «готовых рефератов», «готовых курсовых работ». Авторы их не несут никакой ответственности за уровень и качество представленных материалов, так что все претензии преподаватель будет предъявлять «нерадивому студенту». То есть, даже если факт плагиата и не выявится, работа может оказаться неудовлетворительной сама по себе. В настоящее время системы анализа схожести текстов получают все более широкое распространение. Существуют несколько различных алгоритмов и методик процесса сравнения.
1. Анализ предметной области
1.1 Анализ существующих аналогов
В настоящее время существует достаточно большое количество сервисов и программ, позволяющих каким-либо образом проверить схожесть двух текстов. В числе таковых можно назвать: www.diffchecker.com, WinMerge, TextDiff, программные средства MS Word и др.
Сервис www.diffchecker.com позволяет осуществлять онлайн проверку двух текстов, пример работы представлен на рисунке 1.1.
Недостатки:
- Так как это веб-сайт, то обязательно нужен интернет.
Рисунок 1.1 - Пример работы www.diffchecker.com
Программа WinMerge - это бесплатная кроссплатформенная утилита для сравнения файлов, ее можно использовать на различных операционных систем, начиная с Windows 98. Последняя версия - WinMerge 2.14. У программы есть множество настроек, так что несложно подсветить слова каким-нибудь другим цветом. Дальше можно переходить на каждое измененное слово или на следующий абзац с изменениями, копировать изменения из одного окна в другое и проводить другую редакторскую работу. Пример интерфейса программы предоставлен на рисунке 1.2.
Недостатки:
- может сравнивать только обычные текстовые файлы.
Рисунок 1.2 - Интерфейс WinMerge
TextDiff - бесплатная программа для сравнения файлов. Кроме сравнения содержимого файлов программа TextDiff может сделать сравнивать два каталога, выделяя цветами одинаковые и различающиеся папки и файлы сравниваемых директорий.
Главное окно программы TextDiff разделено по вертикали (можно и по горизонтали) на два смежных окна. В них отображается содержимое сравниваемых файлов. Скроллинг строк в области просмотра одного файла одновременно ведёт к автоматическому скроллингу строчек другого файла, и пользователь видит в какой строке между файлами есть различия. Различающиеся, удалённые и добавленные строки сравниваемых файлов утилита выделяет другим цветом. TextDiff не требует установки (портабельная), полностью поддерживающий юникод, умеет сравнивать каталоги, также маркируя разными цветами различия в их содержимом. Результаты сравнения файлов можно сохранить в текстовый файл.
Недостатки:
- может сравнивать только обычные текстовые файлы.
Рисунок 1.3 - Интерфейс программы TextDiff
В программе Microsoft Office начиная с версии 2007 можно сравнить два файла. Для этого в пункте меню Рецензирование - Сравнить - Сравнить… (сравнение двух версий документа). Указываем два файла, жмем кнопку «Больше» и отмечаем параметры, по которым нужно сравнить текст, а также выбираем, где просматривать изменения: в первом файле, во втором или в новом. Удаленный текст программа выделяет красным зачеркнутым текстом, вставленный текст - красным подчеркнутым, перемещенные абзацы зеленым.
Недостатки:
- MS Office Word платный программный продукт.
Рисунок 1.4 - Пример работы MS Word
1.2 Постановка задачи
Анализ литературы и предметной области показали, что по теме курсового проекта уже было проведено большое количество научных исследований и разработок. Однако следует отметить, что практичных, простых и действенных программных средств по оценке похожести текстов очень мало.
В связи с этим на курсовое проектирование поставлена задача:
- Изучить алгоритма Рабина-Карпа для сравнения текстов;
- Разработать схему реализации наиболее подходящего метода сравнения текстов;
- Разработать программное средство для анализа похожести текстов, реализующее определенный алгоритм.
2. Математические модели и методы, положенные в основу программного средства и теоретические исследования
Алгоритм Рабина-Карпа - это алгоритм поиска строки, который ищет шаблон, то есть подстроку, в тексте, используя хеширование. Он был разработан в 1987 году Майклом Рабином и Ричардом Карпом.
Алгоритм редко используется для поиска одиночного шаблона, но имеет значительную теоретическую важность и очень эффективен в поиске совпадений множественных шаблонов. Для текста длины n и шаблона длины m его среднее и лучшее время исполнения равно O(n), но в худшем случае он имеет эффективность O(nm), что является одной из причин того, почему он не слишком широко используется. Однако алгоритм имеет уникальную особенность находить любую из k строк в среднем менее чем за время O(n) независимо от размера k.
Пусть алфавит D={0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, то есть каждый символ в алфавите есть d-ичная цифра, где d=¦D¦.
Пример. Пусть образец имеет вид W = 3 1 4 1 5
Вычисляем значения чисел из окна длины |W|=5 по mod q, q - простое число.
23590(mod 13)=8, 35902(mod 13)=9, 59023(mod 13)=9, …
k1=314157(mod 13) - вхождение образца,
k2=673997(mod 13) - холостое срабатывание.
Из равенства ki= kj (mod q) не следует, что ki= kj (например, 31415=67399(mod 13), но это не значит, что 31415=67399). Если ki= kj (mod q), то ещё надо проверить, совпадают ли строки W[1…m] и T[s+1…s+m] на самом деле.
Если простое число q достаточно велико, то дополнительные затраты на анализ холостых срабатываний будут невелики.
В худшем случае время работы алгоритма РК - И((N-M+1)*M), в среднем же он работает достаточно быстро - за время О(N+M).
Пример: Сколько холостых срабатываний k сделает алгоритм РК, если
q= 11, 13, 17. Пусть W={2 6}
26 mod 11=4 > k =3 холостых срабатывания,
26 mod 13=0 > k =1 холостое срабатывание,
26 mod 17=9 > k =0 холостых срабатываний.
Очевидно, что количество холостых срабатываний k является функцией от величины простого числа q (если функция обработки образца mod q) и, в общем случае, от вида функции для обработки образца W и текста Т.
Одно из простейших практических применений алгоритма Рабина - Карпа состоит в определении плагиата. Для устранения чувствительности алгоритма к небольшим различиям можно игнорировать детали, такие как регистр или пунктуация, при помощи их удаления. Поскольку количество строк, которые мы ищем, k, очень большое, обычные алгоритмы поиска одиночных строк становятся неэффективными.
3. Разработка программного средства
3.1 Разработка спецификаций требований
Программное средство предназначено для осуществления оценки похожести текстов. Оценка похожести будет производиться по алгоритму Рабина-Карпа.
Программное средство должно обеспечивать выполнение следующих функций:
- сравнение текстов;
- выдачу результата сравнения, процент совпадения текстов;
- возможность ввода текста непосредственно с клавиатуры;
- возможность загрузки текста из текстового файла с жесткого диска;
- возможность сохранять проверяемы тексты;
- вывод отладочной информации.
Предоставление краткой справочной информации по приложению.
Программное средство должно иметь приятный и интуитивно-понятный пользователю интерфейс.
Предполагается создание графического пользовательского интерфейса. Консольный интерфейс не предусмотрен.
Входными данными является текст, который может быть введен как с клавиатуры, так и загружен из текстового файла с жесткого диска.
На выходе, исходя из анализа текстов, должна быть оценка их похожести в процентах. Графически подсказки на участки повторяющегося текста.
Программное средство не должно допускать повреждения текстовых файлов пользователя при загрузке текста с жесткого диска.
Быстродействие программного средства должно соответствовать быстродействию алгоритма, который оно реализует, исходя из размера подаваемого текста.
Программное средство должно быть простым в сопровождении, легко расширяемым и модифицируемым.
3.2 Разработка архитектуры программного средства
Программное средство представляет собой приложение из одной формы, которая содержит главную вкладку с интерфейсом для сравнения текстов и несколько вспомогательных вкладок с различной информацией. Структура и модули, используемые в приложении, представлены на рисунке 3.1.
Рисунок 3.1 - Структура программного средства
Главная форма приложения содержит несколько вкладок. На главной вкладке присутствует два текстовых поля. Пользователь может вводить текст вручную или воспользоваться кнопками, чтобы открытия файлов. На вкладке логов выводиться информация о скорости работы алгоритма и размерности вводных данных. На вкладке информация сохраняются все последние сравнения текстов с дополнительной информацией.
Модуль алгоритма Рабина-Карпа, реализует основную логику поиска в тексте. Для улучшения производительности и скорости обработки поиска решено исключить слова короче трех символов.
В качестве базы данных используется реляционная бд MS Access. Подключение к которой осуществляется с помощью при помощи встроенных компонентов ADO. ADO -- интерфейс программирования приложений для доступа к данным, разработанный компанией Microsoft (MS Access, MS SQL Server) и основанный на технологии компонентов ActiveX.
3.3 Обоснование выбора языка программирования
C++ - это компилируемый статически - типизированный язык общего назначения. В сравнении с его предшественником - языком C, - наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Название «C++» происходит от названия языка C, в котором унарный оператор ++ обозначает инкремент переменной.
C++ широко используется для разработки программного обеспечения, являясь одним из самых популярных языков программирования. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (игр).
Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры). Существует несколько реализаций языка C++ - как бесплатных, так и коммерческих.
Среда разработки C++Builder представляет собой SDI-приложение, главное окно которого содержит настраиваемую инструментальную панель (слева) и палитру компонентов (справа). Кроме этого, по умолчанию, при запуске C++Builder окно инспектора объектов (слева) и форма нового приложения (справа). Под окном формы приложения находится окно редактора кода.
Формы являются основой приложений C++Builder. Создание пользовательского интерфейса заключается в добавлении в окно формы элементов объектов C++Builder называемых компонентами. Компоненты C++Builder располагаются на палитре компонентов, выполненной в виде многостраничного блокнота. Важная особенность C++Builder состоит в том, что позволяет создавать собственные компоненты и настраивать палитру компонентов, а также создавать различные версии палитр компонентов для разных проектов.
Компоненты C++Builder разделяются на видимые (визуальные) и не видимые (не визуальные). Визуальные компоненты появляются вовремя точно так же, как и во время проектирования.
3.4 Разработка модели базы данных
Для хранения информации о последних сравнения текстов используется одна таблица. На рисунке 3.2 представлена обобщенная схема алгоритма базы данных.
Рисунок 3.2 - Схема БД
Тип данных таблицы Отчет предоставленные в таблице ниже.
Таблица 3.1 - Структура таблицы «Отчет»
Название поля |
Тип |
|
Код |
Счетчик |
|
Дата |
Дата Время |
|
Скорость |
Строка |
|
Файл 1 |
Длинный текст |
|
Файл 2 |
Длинный текст |
3.5 Разработка схемы алгоритма построения гистограммы
Общий алгоритм работы программы представлен на рисунке 3.3.
Рисунок 3.3 - Схема алгоритма работы программы
При запуске программы, происходит подключение к базе данных, после чего перед пользователем открывается главная форма приложения в активной вкладке «Главная».
Далее производиться проверка наполненности полей, если хотя бы одно из текстовых полей пусто, то выведется звуковое предупреждение, и управление передается обратно пользователю, в противном случает начнётся поиск.
Перебираются все строки из второго и сравниваются совпадения в первом. Ограничение на размер входящей строки, не менее 3 символов. Высчитывается хэш-код очередной строки, и затем ищется совпадение по второму тексту. Если совпадение есть, наращивается общая строка совпадений, подкрашивается красным цветом совравший текст, и берется следующая строка, если же нет, то сразу берется следующая строка. После обхода всех строк второго текста будет рассчитан процент уникальности текста и скорость выполнения алгоритма. Все результаты выведены на экран пользователю.
По завершению поиска пользователь может просмотреть дополнительную информацию в таких в кладках как «Логи» и «Информация».
плагиат рабин схожесть текст
4. Тестирование программного средства
Для проведения тестирования разработанного в рамках курсового проекта программного средства были написаны тест-кейсы, тестирующие корректность работы графического интерфейса и приложения в целом.
В таблице 4.1 приведен набор тест-кейсов, на основе которых производилось тестирование.
Таблица 4.1 - Набор тест кейсов
№ |
Тест |
Условия |
Действие |
Ожидаемый результат |
Итог |
|
1 |
База данных |
Присутствует файл базы данных и программные средства для работы с ним. |
Запуск приложения. |
Приложение выполняет открытие файла базы данных. Открывается главная форма. |
пройден |
|
2 |
Поиск |
Введен текст в первое текстовое поле и заполнена искомая строка текста. |
В главном меню добавить текст в первое поле, ввести разыскиваемый текст. Нажать кнопку «Искать». |
В первом текстовом поле должны подкраситься красным цветом найденные строки. На вкладке «Логи» добавленная новая строка с информацией о поиске. |
пройден |
|
3 |
Сравнение |
В оба тестовые поля введены тексты. |
Нажата кнопка «Сравнить» |
В первом текстовом поле должны подкраситься красным цветом найденные строки. На вкладке «Логи» добавленная новая строка с информацией о поиске.Выводиться процент уникальности текста |
пройден |
|
4 |
Очистка |
Нажата кнопка «Очистить». |
Клик по соответствующей кнопке. |
Очищены два текстовых поля. |
пройден |
5. Методика использования программного средства
После запуска приложения на экране появляется главное окно программы, представленное на рисунке 5.1. Вверху окна находится три вкладки «Главная», «Логи», «Информация».
Рисунок 5.1 - Главное окно программы
На главной вкладке расположены два текстовых поля. Пользователь может вводить текст самостоятельно или открыть текстовый файл с помощью соответствующих кнопок. У каждого текстового поля отдельная кнопка открытия и сохранения файла.
Кнопка «Очистить» отчищает два текстовых поля.
Кнопа «Сравнить» запускает алгоритм сравнения текстов. Пример работы можете наблюдать на рисунке 5.2.
Рисунок 5.2 - Пример работы сравнение текстов.
Кнопка «Очистить» отчищает два текстовых поля.
Скорость выполнения поиска можно отследить на вкладке «Логи». Выводиться скорость выполнения в секунда и длина текстов. Пример можно наблюдать на рисунке 5.3.
Рисунок 5.3 - Вид логов приложения.
На вкладке «Информация» отображаться все результаты последних информаций сравнений текстов. Все данный сохраняются в базе данных, файл которой находиться в том же каталоге где и приложение. С помощью навигационных кнопок пользователь может удалять старые записи. Внешний вид этой вкладки представлен на рисунке 5.4.
Рисунок 5.4 - Информация об операциях сравнения.
Заключение
Программа получилась небольшой, но функциональной. В полной степени справляется с поставленными задачами: быстрого поиска в тексте, сравнивания двух файлов. Присутствует возможность быстрой загрузки и сохранения текста. В дальнейшем её можно будет улучшать в плане производительности и дополнительных фильтров при поиске совпадении. Доработать возможности базы данных и легирования. Были изучены методы работы и взаимодействия с базами данных. Также были закреплены знания о проектировании баз данных. Изучены методы взаимодействия форм, как друг с другом, так и с компонентами. Более глубоко исследованы возможности языка программирования C++. Испытания созданного приложения позволили исключить большое количество возникающих ошибок. В целом создание данного программного продукта привело к более детальному пониманию основ алгоритмизации и программирования.
Список использованных источников
1. Культин Н.Б. Самоучитель С++ Builder. - СПб.: БХВ-Петербург,2005. - 320с.: ил.
2. Культин Н.Б. С/С++ в задачах и примерах. - СПб.: БХВ-Петербург, 2006. - 288с.: ил.
3. Borland Builder C++. Освой самостоятельно. - СПб.: Питер, 2005. - 702с.: ил.
4. Холзнер С. Visual C++ 6. Учебный курс. - СПб.: Питер, 2006. - 570с.: ил.
5. Красиков И.В., Красикова И.Е. Алгоритмы. Просто как дважды два. - М.: Эксмо,2006. - 256с.: ил.
6. Карпов Б., Баранова Т. С++. Специальный справочник (2-е издание). - СПб.: Питер, 2005. - 381с.: ил.
7. Франка П. С++: Учебный курс. - СПб.: Питер, 2005. - 522с.: ил.
Приложение А
Исходный код приложения
//---------------------------------------------------------------------------
#pragma hdrstop
#include "algorithm.h"
#include<stdio.h>
#include<string.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#define cirillicFix(c) (c >= 'A' && c <= 'Z' ? c - 'A' : c - 'a' + 26)
int mod(int a,int p,int m)
{
if (p == 0)
return 1;
int sqr = mod(a,p/2,m) % m;
if (p & 1)
return ((a % m) * sqr) % m;
else
return sqr;
}
const int q = 101;
const int d = 1;
TStringList* search(System::AnsiString Pattern, System::AnsiString Text)
{
int LenPattern = Pattern.Length();
int LenText = Text.Length();
if (LenPattern > LenText) {
return NULL;
}
char *PatternChar = Pattern.c_str();
Text = StringReplace(Text, "\r\n", "\n", TReplaceFlags() << rfReplaceAll);
char *TextChar = Text.c_str();
bool ifFound;
int i,j,PatternHash,TextHash;
int h = mod(d,LenPattern-1,q);
PatternHash = TextHash = 0;
for (i=0; i<LenPattern; i++){
PatternHash = (d*PatternHash + cirillicFix(PatternChar[i])) % q;
TextHash = (d*TextHash + cirillicFix(TextChar[i])) % q;
}
int count = 0;
TStringList* arrIndex = new TStringList;
for(i=0; i<=LenText; i++){
if (PatternHash == TextHash){
ifFound = true;
ащк(о=0ж оБДутЗфееуктж о++)Х
if(PatternChar[j] != TextChar[i+j]){
ifFound = false;
break;
}
}
if(ifFound){
arrIndex->Add(i);
}
}
else
{
TextHash = (d*(TextHash - ((cirillicFix(TextChar[i])*h) % q)) + cirillicFix(TextChar[i+LenPattern])) % q;
}
}
return arrIndex->Count==0?NULL:arrIndex;
}
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "algorithm.h"
#include <time.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
clock_t start;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void log(AnsiString pattert,AnsiString text){
Form1->Memo1->Lines->Add("Поиск строки(\""+pattert+"\" "+IntToStr(pattert.Length())+" vs "+text.Length()+" ) time:" + FloatToStr((clock() - start) / CLK_TCK)+" s.");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
if (LabeledEdit1->Text == "") {
Beep();
return;
}
start = clock();
TStringList* result = search( LabeledEdit1->Text, RichEdit1->Lines->Text);
RichEdit1->SelStart = 0 ;
RichEdit1->SelLength = RichEdit1->Lines->Text.Length();
RichEdit1->SelAttributes->Color = clDefault;
if (result == NULL) {
Beep();
Label2->Caption = "Фраза не найдена!";
}else{
Label2->Caption = "Совпадений :" + IntToStr(result->Count);
for(int i=0; i < result->Count ; i++){
RichEdit1->SelStart = StrToInt(result[0][i]);
RichEdit1->SelLength = LabeledEdit1->Text.Length();
RichEdit1->SelAttributes->Color = clRed;
}
}
log( LabeledEdit1->Text, RichEdit1->Lines->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
if (RichEdit2->Text.Trim() == "" || RichEdit1->Text.Trim() == "") {
Beep();
return;
}
start = clock();
TStringList* tmpList = new TStringList;
tmpList->Assign(RichEdit2->Lines);
AnsiString procent = "";
for(int i=0; i < tmpList->Count ; i++){
AnsiString test = tmpList->operator [](i).Trim();
if (test.Length() < 3 ) {
continue;
}
TStringList* result = search(test, RichEdit1->Lines->Text);
if (result != NULL) {
AppendStr(procent,tmpList->operator [](i));
for(int i=0; i < result->Count ; i++){
// Form1->Memo1->Lines->Add(test);
RichEdit1->SelStart = StrToInt(result->operator [](i));
RichEdit1->SelLength = test.Length();
RichEdit1->SelAttributes->Color = clRed;
}
}
test = tmpList->operator [](i);
AnsiString noop = AnsiString::StringOfChar('ђ',test.Length());
tmpList->Text = StringReplace(tmpList->Text, test, noop, TReplaceFlags() << rfReplaceAll);
}
clock_t tmpl = clock();
Label4->Caption = "Текст уникален на " + FloatToStr(100.0 - (procent.Length() / (RichEdit1->Text.Length() / 100))) + "%";
log( "", "");
ADOTable1->Insert();
ADOTable1->Fields->operator [](2)->AsDateTime = Time();
ADOTable1->Fields->operator [](2)->AsString =FloatToStr((tmpl - start) / CLK_TCK)+" s.";
ADOTable1->Fields->operator [](3)->AsWideString = RichEdit2->Text.Trim();
ADOTable1->Fields->operator [](4)->AsWideString = RichEdit2->Text.Trim();
ADOTable1->Post();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
RichEdit1->Lines->Clear();
RichEdit2->Lines->Clear();
LabeledEdit1->Text = "";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
if (!OpenTextFileDialog1->Execute()) return;
RichEdit1->Lines->LoadFromFile(OpenTextFileDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
if (!OpenTextFileDialog1->Execute()) return;
RichEdit2->Lines->LoadFromFile(OpenTextFileDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
if (!SaveTextFileDialog1->Execute()) return;
RichEdit1->Lines->SaveToFile(SaveTextFileDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton4Click(TObject *Sender)
{
if (!SaveTextFileDialog1->Execute()) return;
RichEdit2->Lines->SaveToFile(SaveTextFileDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ADOConnection1->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=database.mdb;Persist Security Info=False;";
ADOConnection1->Connected = true;
ADOTable1->Active = true;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
try
{
Application->Initialize();
Application->MainFormOnTaskBar = true;
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//---------------------------------------------------------------------------
Размещено на Allbest.ru
...Подобные документы
Графическая схема алгоритма выполнения программы определения запасов сырья. Решение задачи с помощью программы MS Excel. Разработка макроса для построения диаграммы. Использование интерфейса программы для работы с таблицей. Разработка базы данных.
курсовая работа [1,2 M], добавлен 24.04.2014Этапы процедуры принятия решений. Разработка математического алгоритма. Блок-схема алгоритма работы программы. Разработка программы на языке программирования С++ в среде разработки MFC. Текст программы определения технического состояния станка с ЧПУ.
курсовая работа [823,0 K], добавлен 18.12.2011Разработка и тестирование программы класса Точка. Спецификация программы. Сценарий диалога с пользователем. Разработка структур данных и алгоритмов. Таблица параметров функций программы. Текст программы на языке C++. Особенности тестирования программы.
лабораторная работа [43,1 K], добавлен 21.07.2012Формальная постановка задачи и спецификация программы. Сценарий диалога с пользователем. Разработка структур данных и алгоритмов. Таблица параметров и текст программы на языке C++. Тестирование программы с целью определения корректности ее работы.
контрольная работа [27,5 K], добавлен 07.07.2012Корпус текстов школьников в контексте корпусной лингвистики, его содержание и пополнение. Пунктуационная разметка текстов, классификация ошибок. Использование языка разметки TEI для кодировки пунктуации. Обработка корпуса с помощью программы Интерробанг.
дипломная работа [1,9 M], добавлен 08.11.2015Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.
курсовая работа [867,9 K], добавлен 16.07.2013Разработка программы совместной обработки данных о проданных билетах на одну дату отправления авиарейсов и общее количество для формирования выходного документа; исходные данные и особенности алгоритма; ограничения. Тестирование функций программы.
курсовая работа [4,1 M], добавлен 07.04.2012Разработка технологии обработки информации, а также структуры и формы представления данных. Подбор алгоритма и программы решения задачи. Определение конфигурации технических средств. Специфика процесса тестирования и оценки надежности программы.
курсовая работа [959,1 K], добавлен 12.12.2011Понятие семантики; обзор и анализ существующих средств семантического разбора естественно-языковых текстов. Разработка алгоритма работы системы на основе семантического анализа, его реализация на языке программирования; проектирование интерфейса системы.
дипломная работа [1,7 M], добавлен 18.03.2012Выполнение операций, хранения, редактирования, систематизации данных. Рассмотрение подсистем разрабатываемой системы управления базами данных продуктового магазина. Разработка алгоритма функционирования системы и приложения для работы с базой данных.
курсовая работа [399,1 K], добавлен 26.08.2019Разработка эскизного и технического проектов программы "Шифр Цезаря": назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка, тест и внедрение программы.
курсовая работа [563,7 K], добавлен 15.07.2012Описание алгоритма решения задачи графическим способом. Вывод элементов массива. Описание блоков укрупненной схемы алгоритма на языке Pascal. Листинг программы, а также ее тестирование. Результат выполнения c помощью ввода различных входных данных.
контрольная работа [150,4 K], добавлен 03.05.2014Преобразование матрицы по заданным правилам. Методика работы с массивами, основанная на классических алгоритмах. Разработка и описание блок-схемы алгоритма. Листинг программы, экраны работы и отладки программы. Инструкция для пользователей программы.
контрольная работа [338,4 K], добавлен 29.01.2013Анализ задания и разработка алгоритма. Основные принципы создания программы. Схема взаимодействия процессов Process 1 и Process 4, в режиме задачи и в режиме ядра. Листинг программы и ее тестирование. Результат работы и выполнения программы в консоли.
контрольная работа [395,9 K], добавлен 18.09.2010Классификация систем управления базами данных. Выбор операционной системы, языка программирования, среды разработки (IDE) и дополнительных компонент. Разработка интерфейса и функций программы по управлению складом, её тестирование и исходный код файлов.
курсовая работа [487,3 K], добавлен 25.12.2015Разработка программного обеспечения, моделирующего работу банкомата. Особенности области применения терминала и выделение главных функциональных частей. Разработка алгоритма работы программы и реализация системы. Ее тестирование и анализ результатов.
курсовая работа [5,5 M], добавлен 12.10.2011Основные определения поиска подстроки в строке. Простейшие алгоритмы поиска подстроки в строке. Алгоритмы последовательного поиска и Рабина-Карпа, создание и описание программы, реализующей их. Порядок работы с приложением. Тестирование алгоритмов.
курсовая работа [2,7 M], добавлен 24.05.2012Разработка собственного алгоритма сжатия и восстановления данных с использованием возможностей языка C++ в рамках программного продукта "Архиватор". Разработка алгоритма программы, ее первый запуск и тестирование. Проверка работы архивации файлов.
курсовая работа [325,7 K], добавлен 13.10.2015Разработка эскизного и технического проектов программы, ее назначение и область применения, технические характеристики. Организация входных и выходных данных, выбор состава технических и программных средств. Текст программы, ее описание и тестирование.
курсовая работа [1,3 M], добавлен 15.11.2009Проблема скрытия и защиты информации от несанкционированного использования. История создания шифра. Решения задачи шифрования текста и кодирования данных. Тестирование полученного приложения и анализ работы программы с точки зрения пользователя.
курсовая работа [3,0 M], добавлен 24.11.2013