47791 (Обучающая программа-переводчик текста)

2016-07-30СтудИзба

Описание файла

Документ из архива "Обучающая программа-переводчик текста", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "47791"

Текст из документа "47791"

Министерство образования и науки Российской Федерации
Южно-Уральский государственный университет
Кафедра Информатики

Пояснительная записка по курсовому проекту
по курсу «Высокоуровневые методы информатики и программирования»

«Обучающая программа – переводчик текста» ОО ПЗ

Руководитель
доц. каф. информатики Конова Е.А.
« »________2007г.

Автор проекта
студент группы
ЭиУ-264
Лаврова Екатерина
«10» декабря 2007г.

Проект защищён с оценкой
__________
« »________2007г.

Челябинск
2007

Оглавление

1 Введение 1

2 Постановка задачи 2

3 Структура программы 3

4 Спецификация 4

5 Структурная схема отношений в спецификации классов 6

6 Реализация 7

7 Алгоритмы реализации 8

8 Сценарий работы проекта 10

9 Реализация сценария 11

10 Документация проекта 17

11 Заключение 18

12 Источники информации 19

Оглавление 20


1 Введение

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

Поэтому для того, чтобы максимально полно раскрыть все возможности разрабатываемой программы, и использовалось объектно-ориентированное программирование.

2 Постановка задачи

Темой проекта является составление программы – переводчика текста (по типу Lingvo).

Так как данная задача относится к разделу обучающих программ, то, кроме собственно переводчика, в программу была включена дополнительная функция – Tutor («Учитель»), позволяющая проверить словарный запас пользователя и по возможности его расширить.

Для реализации поставленной задачи потребовалось обеспечить следующую функциональность:

  • Возможность перевода отдельных слов;

  • Возможность перевода предложений (текстов);

  • Исключение из перевода не алфавитных знаков (знаков пунктуации, чисел и пр.);

  • Возможность открытия файла для перевода;

  • Возможность сохранения полученного перевода;

  • Возможность распечатки перевода;

  • Система Tutor – «Учитель» – для проверки знаний пользователя;

  • Наличие необходимой справочной системы;

  • Обеспечить приложение стандартным интерфейсом: основным меню, горячими клавишами, панелями инструментов.

3 Структура программы

Для реализации задачи были сформированы следующие классы:

  • class TWord, предназначенный для хранения пар слово-перевод;

  • class TWords, класс-контейнер, данным которого является вектор классов TWord, также содержащий методы работы с вектором.

Эти классы описаны в файле Lexicon.h, реализация – в файле Lexicon.cpp.

Файлы данных – En-Ru.csv и Ru-En.csv. Файлы проекта – EasyTranslator.cpp, EasyTranslator.h, EasyTranslator.bpr (установки опций проекта), EasyTranslator.res (ресурсы проекта), EasyTranslator.tds (файл таблицы символов – для отладки).

Интерфейс программы представлен формами:

  • TBody, представляющая собой тело переводчика (реализовано меню с горячими клавишами, панели инструментов…), заголовочный файл – Bodys.h, реализация – Bodys.cpp, файл формы – Bodys.dfm; Bodys.ddp;

  • TETHlp – помощь и TTAbout – о программе. Соответственно файлы: Hlp.cpp, Hlp.h, Hlp.ddp, Hlp.dfm (файл формы); ETAbout.cpp, ETAbout.h, ETAbout.ddp, ETAbout.dfm;

  • TTutor, для проверки и пополнения словарного запаса пользователя. Файлы: ETutor.cpp, ETutor.h, ETutor .ddp, ETutor.dfm;

Файл справки – Help.rtf.

Исполняемый файл приложения – EasyTranslator.exe.

4 Спецификация

Разработаны объекты TWord и TWords:

  • class TWord – класс, который хранит только данные «слово-перевод».

Параметры класса:

AnsiString One, Two;

One содержит «вводимое» слово, Two – возможные варианты перевода слова One. Для максимальной функциональности используется тип AnsiString – динамическая строка с нулевым символом в конце.

  • class TWords – класс-контейнер, используется для хранения в оперативной памяти содержимого файлов данных (слов с переводами), что значительно ускоряет работу программы.

Параметры класса: vector Words;

//контейнер типа vector для хранения классов TWord;

Прототипы методов класса:void Clear();

//Очищает вектор для адекватной работы в случае изменения направления перевода, для этого используется стандартная функция-член класса vector – pop_back();

void OpenFile(char *Name);

//Открывает файл данных слов для заполнения классов TWord, и, соответственно, вектора TWords. Для адекватной работы вектор «обнуляется» с помощью Clear(). В функцию передаётся указатель на имя открываемого файла. Функция использует поток ifstream для доступа к файлу данных, считывая в вектор с помощью push_back() попарно слова-значения (соответственно классам TWord). TWord GetWord(int Index);

//Определяется оператор индекса [] для обеспечения доступа к элементам вектора путём обычной индексации, соответственно, передаваемое значение – целое число, возвращаемое – класс TWord. unsigned int GetSize();

/Определяется текущий размер вектора. Возвращает беззнаковое целое.AnsiString Translate(AnsiString W);

//Обеспечивает перевод одного слова (или устойчивого словосочетания). В функцию передаётся строка (то есть слово для перевода), в векторе ищется совпадение по данному One объектов TWord, и, если находится, функция возвращает данное Two того элемента, в котором найдено совпадение. AnsiString TranslateString(AnsiString Str);

//Обеспечивает пословный перевод введённой фразы с помощью функции Translate(AnsiString W). В функцию передаётся строка (слово или текст), которая посимвольно анализируется и, в зависимости от символа, заносится в строковую переменную. Если в переданной строке встречаются определённые символы (например, знак возврата каретки или пробел), значит, слово закончилось, и его можно перевести. Перевод слов заносится в переменную-строку, которая при окончании работы возвращается функцией.

5 Структурная схема отношений в спецификации классов

Так как основными данными класса TWord являются строковые переменные One и Two, а вектор TWords состоит из объектов TWord (и методы вектора работают как с самим вектором, так и с данными-классами), то, в общем, схему отношений между классами можно описать так:


Рисунок 1 – Схема отношений в спецификации классов


6 Реализация

Так как особенностью поставленной задачи было обеспечение пословного перевода, то в качестве основного объекта, предназначенного для хранения данных, был выбран контейнер – вектор. Преимуществом использования вектора стало то, что в этом классе поддерживаются динамические массивы, а это значит, что размер контейнера может изменяться по мере необходимости, и одновременно с этим доступ к его элементам осуществляется с помощью обычной индексной нотации (оператора []).

Получаем, что для хранения относительно небольшого количества информации о слове-переводе используется класс TWord, а для хранения и обработки неизвестного на момент компиляции количества слов (соответственно, и классов TWord) используется вектор TWords, что делает все преимущества применения этого типа контейнера очевидными.

7 Алгоритмы реализации

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

Перевод одного слова (или устойчивого словосочетания) осуществляется с помощью довольно простого метода Translate:

AnsiString TWords::Translate(AnsiString W)

{ for (unsigned int r=0; r

if (GetWord(r).One==W) //если первое слово "подкласса"

//_вектора равно искомому

return GetWord(r).Two; //вернуть второе слово "подкласса"

return ""; //иначе возвращается пустая строка}

Функция Translate непосредственно вызывается только из функции TranslateString, ответственной за пословный перевод текста.

AnsiString TWords::TranslateString(AnsiString Str) //передаётся введённый текст

{ Str=Str+'\n'; //добавление перевода строки

AnsiString W; //отдельное слово из введённого текста

AnsiString outp; //строка-перевод

for(int i=1;i<=Str.Length();i++) //пробегаем по длине введённого текста

{ f(Str[i]!=' ' && Str[i]!='\r' && Str[i]!='\n' && ((Str[i] >= 'a' && Str[i]= 'а' && Str[i]<='я')))

W=W+Str[i]; //посимвольно формируем слово (исключая знаки-небуквы)

else //если символ-пробел или строка закончилась

if(W!="") //если слово непустое

{

//в строку перевода пишем исходное слово + перевод + возврат каретки

outp=outp+W.UpperCase() + " : "+Translate(W)+"\n";

W=""; //обнуляем переводимое слово

}

}

return outp;}

Работа Tutor, описанная в файле реализации формы TTutor, построена практически аналогично работе основного переводчика – на основании функции TranslateString:

void __fastcall TTutor::CheckClick(TObject *Sender)

{

AnsiString W = TwoW->Text.LowerCase();

if(Wordz.Translate(W)==OneW->Text.LowerCase())

//если перевод введённого слова совпадает с данным пользователю описанием

{ Result->Caption="That's right!! =) " + Wordz.GetWord(k).One;//правильно!

// выбор соответствующе картинки }

else {//если перевод введённого слова не совпадает

Result->Caption="That's wrong! =( "+Wordz.GetWord(k).One;//неправильно!

// выбор соответствующе картинки

8 Сценарий работы проекта

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

После ввода текста в верхнее текстовое поле, нажав кнопку Translate или Enter, получаем пословный перевод вида ВВЕДЁННОЕ_СЛОВО : перевод.

Изменение направления перевода – с помощью списка на главной форме.

Пользователю доступны все разделы меню, поэтому можно открыть текстовый файл изменить содержимое текста, а потом сохранить или распечатать полученный пословный перевод. Некоторые разделы меню (например, Правка) представлены в виде панелей инструментов, которые можно отобразить или скрыть.

Приступить к работе с Tutor можно, нажав кнопку Tutor главного окна программы, закончить работу – нажав Back to Translator или красный крест.

По нажатию Contents раздела меню Help или клавиши Ctrl+F1 можно ознакомиться со справкой по программе.

Основными правилами, предъявляемыми для пользователя, являются:

  • Не удалять и не перемещать файлы, поставляемые с программой (любые файлы программы после распаковки архива являются неприкосновенными и не подлежат коррекции);

  • Не пытаться использовать Easy Translator в не предназначенных и не рассчитанных для него целях;

  • Относиться с уважением к работе автора программы

9 Реализация сценария

Верхнее текстовое поле главной формы предназначено для ввода переводимого текста, нижнее поле – для полученного перевода (поле перевода не подлежит правке – для этого при создании формы установлен параметр полей ReadOnly=True. Также устанавливается внешний вид полей, и загружается первоначальная база слов). Для получения перевода достаточно нажать большую и заметную кнопку Translate! в окне или Enter на клавиатуре (обрабатывается нажатие кнопки или анализируется нажатая кнопка клавиатуры при фокусе в поле ввода).

Рисунок 2 – Главное окно переводчика

Пользователь может изменять направление перевода (с русского на английский или с английского на русский) с помощью списка Direction of translation. При этом ранее переведённые слова (если они были противоположной направленности) теряют перевод. Реализовано с помощью методов класса TWords – содержание вектора меняется в соответствии с заданным направлением перевода:

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5173
Авторов
на СтудИзбе
437
Средний доход
с одного платного файла
Обучение Подробнее