Автоматизация проверки на плагиат в ИС "Курсовые работы"

01.08.18

Задачи пользователя - Разное

Разработка обеспечивает коммуникацию между студентом и преподавателем во время выполнения курсовой работы, хранение всех курсовых работ и данных о них в единой информационной базе, а также проверку текстов работ на уникальность. Платформа 8.3.10.2639

Скачать исходный код

Наименование Файл Версия Размер
Рабочее место преподавателя
.cf 143,92Kb
1
.cf 143,92Kb 1 Скачать
Рабочее место студента
.cf 2,70Mb
1
.cf 2,70Mb 1 Скачать

Мы постоянно используем почтовые сервисы для обмена сообщениями, документами, файлами. Выполнение курсовой работы чаще всего затрагивает использование таких сервисов, но их использование не несет упорядоченности. У каждого наверняка уже есть множество аккаунтов электронной почты, социальных сетей, которые переполнены разного рода информацией, в которых легко упустить что-то важное. В том числе, на кафедре осуществляется хранение работ до некоторого срока, но какой либо специальной информационной базы для этого, как правило, не существует, необходимые документы легко могут быть утеряны.

Все это говорит о том, что образовательный процесс нуждается в своих специализированных программных инструментах. Так наличие соответствующего прикладного решения могло бы не только решить данные проблемы, но также предоставить новые функциональные возможности, упрощающие деятельность преподавателей и студентов. Именно разработке такого программного средства посвящена данная работа.

Благодаря широкой структуре объекта документа «Курсовая работа» в созданном программном средстве доступна вся необходимая функциональность по учету и мониторингу работ, а также проверке и хранению данных о них.

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

В больших потоках информации возникает необходимость обеспечить хранение отдельной информации с удобным доступом к ней. Программное средство реализует хранение и обмен файлами различных форматов, которые связаны с курсовыми работами. Файлы могут открываться непосредственно из приложений. Для проверки на плагиат используются текстовые документы в формате Microsoft Word.

Если для реферата уникальность не имеет принципиального значения, то курсовой проект это уже работа с претензией на научную значимость, и она должна иметь определенный процент уникальности. В работе реализована автоматизация проверки курсовых работ прямо с используемого приложения. В соответствии с логикой программного средства работы на проверку отправляет преподаватель, а результаты проверки доступны как преподавателю, так и студенту.

Накопленная информация не редко должна быть обработана и проанализирована, поэтому в программе представлены некоторые механизмы отчетности. В программном средстве присутствуют отчеты, которые могут быть использованы в интересах кафедры, такие как: отчет по задолженностям, отчет по состоянию курсовых работ в заданном периоде на кафедре, отчет по группе.

В моей разработке подразумевается, что преподаватель использует приложение на персональном компьютере, имеющее расширенный функционал, заключающийся в том, что преподаватель может создать (как объект системы) и назначить курсовую работу любому студенту, а также имеет доступ ко всем справочникам и документам, может их редактировать. Студент, в свою очередь, имеет преднамеренно ограниченный функционал на своем мобильном устройстве. Студент может отвечать на сообщения, прикреплять и получать файлы, смотреть за статусом своей работы, получать уведомления.

 Основным объектом конфигураций данных приложений является документ «Курсовая работа», который использует справочники для заполнения своих реквизитов и предоставляет все необходимые команды с ним связанные. Именно в объекте конфигурации «Курсовая работа» реализована автоматизация проверки на плагиат.

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

 Для проверки на плагиат используется API сайта text.ru, который предоставляет услуги по созданию и соблюдению уникального контента. Взаимодействие с API происходит в два этапа. На первом этапе отправляем текст и пользовательский ключ посредством POST запроса на сервер сайта, на что в ответ получаем уникальный идентификатор проверки UID. В это время наш текст становится в очередь на проверку. Получение результатов проверки происходит на втором этапе: по запросу, который включает пользовательский ключ и уникальный идентификатор проверки UID получаем развернутый ответ. Ответ содержит процент уникальности работы, дату проверки на сервере сайта и массив ссылок в интернете с соответствующим процентом заимствований.

Так как текстовый файл хранится в сжатом виде двоичных данных, то чтобы его открыть в дальнейшем, мы записываем файл во временном хранилище операционной системы. Для работы с текстовым файлом формата Microsoft Word создаем COM-объект "Word.Application" с отключением отображения и открываем наш временный файл. Весь текст документа копируем по предложениям в отдельную переменную, после чего закрываем документ Microsoft Word и удаляем временный файл.

&НаСервере
Процедура АнтиплагиатНаСервере(Файл)
	
	ФайлСсылка = Файл;
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("docx");
	ДвоичныеДанные = ФайлСсылка.Файл.Получить();
	ДвоичныеДанные.Записать(ИмяВременногоФайла);
	
	Ворд = Новый COMОбъект("Word.Application");        
	Ворд.Visible = Ложь; 
	Ворд.Documents.Open(ИмяВременногоФайла);
	
	Документ = Ворд.ActiveDocument();  
	Для н = 1 по Документ.Sentences.Count Цикл 
		Текст = "" + Текст + Документ.Sentences(н).Text; 
	КонецЦикла;	
	
	Документ.Close();  
	Ворд.Quit();
	УдалитьФайлы(ИмяВременногоФайла);
	
	Попытка
		WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
		WinHttp.Option(2,"utf-8");
		WinHttp.Open("POST","http://api.text.ru/post",0);
		WinHttp.SetRequestHeader("Accept-Language", "ru");
		WinHttp.SetRequestHeader("Accept-Charset","utf-8");
		WinHttp.setRequestHeader("Content-Language", "ru");
		WinHttp.setRequestHeader("Content-Charset", "utf-8");
		WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
		ПараметрыПОСТ = "text=" + Текст + "&userkey=" + Константы.userkey.Получить();
		WinHttp.Send(ПараметрыПОСТ);
		Если WinHttp.Status = 200 Тогда
			ТекстОтвета = WinHttp.ResponseText();
			ЧтениеJSON = Новый ЧтениеJSON;
			ЧтениеJSON.УстановитьСтроку(ТекстОтвета);
			СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON, Ложь);
			Для Каждого Элемент Из СтруктураОтвета Цикл
				Если Элемент.Ключ = "error_code" Тогда
					Сообщить("Код ошибки: " + Элемент.Значение);
				КонецЕсли;
				Если Элемент.Ключ = "error_desc" Тогда
					Сообщить("Описание ошибки: " + Элемент.Значение);
				КонецЕсли;
				Если Элемент.Ключ = "text_uid" Тогда
					Объект.UID = Элемент.Значение;
					Сообщить("Работа успешно отправлена на проверку!");
				КонецЕсли;
			КонецЦикла;
		Иначе
			Сообщить("HTTP " + WinHttp.Status + " " + WinHttp.StatusText);
		КонецЕсли;
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
КонецПроцедуры

&НаКлиенте
Процедура Антиплагиат(Команда)
	СтрокаТЧ = Элементы.СписокДокументов.ТекущиеДанные; 
	АнтиплагиатНаСервере(СтрокаТЧ.Файл);
КонецПроцедуры

Чтобы отправить POST запрос создаем COM-объект WinHttp, задаем заголовки запроса, указываем адрес, параметры, в том числе ранее скопированный текст и отправляем запрос на веб-сервер.

При успешном выполнении читаем ответ в формате JSON, сохраняем UID, в ином случае выводим текст ошибки.

После выполнения этих действий текст курсовой работы находится в очереди на проверку на веб-сервере. Чтобы получить результат нажимаем кнопку «Результат проверки». Процедура, соответствующая кнопке, создает аналогичный по структуре POST запрос, только в параметрах вместо текста указываем UID. Текст ответа читаем в формате JSON, в процессе чего заполняем реквизиты объекта «Курсовая работа»: дату проверки, процент уникальности и табличную часть, содержащую ссылки в интернете с соответствующим процентом заимствований.

&НаСервере
Процедура РезультатПроверкиНаСервере() 
	Попытка
		WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
		WinHttp.Option(2,"utf-8");
		WinHttp.Open("POST","http://api.text.ru/post",0);
		WinHttp.SetRequestHeader("Accept-Language", "ru");
		WinHttp.SetRequestHeader("Accept-Charset","utf-8");
		WinHttp.setRequestHeader("Content-Language", "ru");
		WinHttp.setRequestHeader("Content-Charset", "utf-8");
		WinHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
		ПараметрыПОСТ = "uid=" + Объект.UID + "&userkey=" + Константы.userkey.Получить();
		WinHttp.Send(ПараметрыПОСТ);
		Если WinHttp.Status = 200 Тогда
			ТекстОтвета = WinHttp.ResponseText();
		Иначе
			Сообщить("HTTP " + WinHttp.Status + " " + WinHttp.StatusText);
		КонецЕсли;
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
	ЧтениеJSON = Новый ЧтениеJSON;
	ЧтениеJSON.УстановитьСтроку(ТекстОтвета);
	СтруктураОтвета = ПрочитатьJSON(ЧтениеJSON, Ложь);
	Для Каждого Элемент Из СтруктураОтвета Цикл
		
		Если Элемент.Ключ = "error_code" Тогда
			Сообщить("Код ошибки: " + Элемент.Значение);
		КонецЕсли;
		Если Элемент.Ключ = "error_desc" Тогда
			Сообщить("Описание ошибки: " + Элемент.Значение);
		КонецЕсли;
		
		Если Элемент.Ключ = "text_unique" Тогда
			ЭтаФорма.Модифицированность = Истина;
			Объект.УникальностьТекста = Элемент.Значение;
			Сообщить("Уникальность работы: " + Элемент.Значение + "%");
			Сообщить("Проверьте страницу 'Уникальность'");
		КонецЕсли;
		 
		Если Элемент.Ключ = "result_json" Тогда
			ЧтениеResult = Новый ЧтениеJSON;
			ЧтениеResult.УстановитьСтроку(Элемент.Значение);
			СтруктураResult = ПрочитатьJSON(ЧтениеResult, Ложь);
			Для Каждого Значение Из СтруктураResult Цикл
				Если Значение.Ключ = "urls" Тогда
					ЭтаФорма.Объект.Ссылки.Очистить();
					Для Каждого ЭлементМассива Из Значение.Значение Цикл
						НоваяСтрока = Объект.Ссылки.Добавить();
						НоваяСтрока.Url = ЭлементМассива.url;
						НоваяСтрока.Процент = ЭлементМассива.plagiat;
					КонецЦикла;
					Продолжить;
				КонецЕсли;
				Если Значение.Ключ = "date_check" Тогда
					Объект.ДатаПроверки = Значение.Значение;
				КонецЕсли;
			КонецЦикла;
			Продолжить;
		КонецЕсли;	
	КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура РезультатПроверки(Команда)
	РезультатПроверкиНаСервере();
КонецПроцедуры

Проверка работ через API привязана к определенной учетной записи. Под своей учетной записью на сайте text.ru можно получить пользовательский ключ, либо заменить его. По пользовательскому ключу выполняются все запросы по взаимодействию с API text.ru, а также в форме «Пользовательский ключ» можно не только задать ключ, но и проверить баланс остатка символов в учетной записи.

Проверка баланса осуществляется POST запросом с параметрами method = get_packages_info и пользовательским ключом. В ответе по значению ключа size сообщаем пользователю остаток символов в учетной записи.
Данное решение не является полностью завершенным и протестированным, а представляет наработки по теме. 

Основное приложение мобильное приложение веб сервис API post запросы.

См. также

Тренажер Азбуки Морзе

Разное Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Тренажер Азбуки Морзе на 1С без внешних компонент.

1 стартмани

вчера в 10:00    303    1    Irwin    2    

8

Разложим фото по полочкам

Разное Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

В публикации представлена простая внешняя обработка, позволяющая перенести файлы с фото в нужные папки.

1 стартмани

21.03.2024    401    1    vikhrov53    0    

3

Учет домашней квартплаты

Разное Платформа 1С v8.3 Конфигурации 1cv8 Энергетика и ЖКХ Россия Бухгалтерский учет Управленческий учет Абонемент ($m)

Позволяет в одном документе собрать записи по всем коммунальным платежам и показаниям бытовых приборов. Вы не пропустите и не забудете свой коммунальный платеж. Будете точно знать ежемесячную сумму коммуналки по всем объектам собственности. Расширение предназначено для самой популярной конфигурации 1С:Бухгалтерия 8, ред. 3. Объекты расширения не имеют заимствования конфигурации. Его легко встроить в другие типовые конфигурации 1С.

1 стартмани

30.01.2024    515    2    kwn2000    2    

5

Конфигурация "Рюкзачок"

Разное Платформа 1С v8.3 Туризм и путешествия Россия Абонемент ($m)

Составление комплекта вещей в поездку, поход, для работы и т.п. Конфигурация разработана для платформы 1С:Предприятие 8.3 (конкретно учебная версия 8.3.13.1644, потому что более новые утомили меня своими сюрпризами).

1 стартмани

19.01.2024    6207    5    AnatolPopov    31    

36

Конфигурация "Казначей группы (класса/команды/...)"

Разное Взаиморасчеты Платформа 1С v8.3 Общественные и некоммерческие структуры Обучение, бизнес-тренинг, курсы Развлечения, искусство, спорт Домашние учет и финансы Управленческий учет Абонемент ($m)

Нано- (даже не микро- !) конфигурация для тех, кто выступает в роли казначея класса/группы/команды, и в чьи задачи входит сбор денег с участников за участие в каких-то мероприятиях, а потом передача собранных денег организаторам этих мероприятий.

1 стартмани

03.11.2023    703    3    q_i    0    

11

Математический тренажер через телеграмм (feat 1С)

Математика и алгоритмы Разное Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Расширение (+ обработка) представляют собою математический тренажер. Ваш ребенок сможет проверить свои знание на математические вычисление до 100.

2 стартмани

29.09.2023    1942    maksa2005    8    

22

Генератор математических примеров

Математика и алгоритмы Разное Абонемент ($m)

Маленькая программа для генерации примеров. C#

1 стартмани

28.09.2023    1348    1    FIERYLIONS    18    

7

Конструктор: ЧислоПрописью и СтрокаСЧислом

Разное Инструментарий разработчика Работа с интерфейсом Платформа 1С v8.3 Абонемент ($m)

Возможно я просто ленивый, а может потому что понадобилось... в общем сделал конструктор параметров. Может 1С когда-нибудь сделает что-нибудь такое в конфигуратор?

1 стартмани

15.09.2023    3128    12    vandalsvq    8    

48
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. serega_new 02.08.18 00:21 Сейчас в теме
2. Denis11K 2 02.08.18 02:05 Сейчас в теме
(1) Пожалуйста, но если скачаете хотя бы один файл, буду тоже благодарен, очень нужен 1 стартмани))
wowik; +1
3. wowik 886 14.09.18 10:56 Сейчас в теме
4. user1344343 21.01.20 02:32 Сейчас в теме
не получается получить файл
+
Оставьте свое сообщение