Министерство образования и науки Российской Федерации Южно-Уральский государственный университет Кафедра Информатики
Пояснительная записка по курсовому проекту по курсу «Высокоуровневые методы информатики и программирования»
«Обучающая программа – переводчик текста» ОО ПЗ
Руководитель доц. каф. информатики Конова Е.А. « »________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
Данная курсовая работа велась на основе объектно-ориентированного программирования. Суть объектно-ориентированного программирования состоит в том, что задачу можно разложить на составные части, каждая из которых становится самостоятельным объектом. Каждая составляющая содержит свои собственные данные и методы их обработки, также, возможно, методы отношений с другими объектами. В итоге получаем некую совокупность относительно независимых объектов в их взаимосвязи, не жёсткой, но основанной определённых концепциях (без которых теряется суть ООП) – инкапсуляции, полиморфизме и наследовании.
Поэтому для того, чтобы максимально полно раскрыть все возможности разрабатываемой программы, и использовалось объектно-ориентированное программирование.
Темой проекта является составление программы – переводчика текста (по типу Lingvo).
Так как данная задача относится к разделу обучающих программ, то, кроме собственно переводчика, в программу была включена дополнительная функция – Tutor («Учитель»), позволяющая проверить словарный запас пользователя и по возможности его расширить.
Для реализации поставленной задачи потребовалось обеспечить следующую функциональность:
· Возможность перевода отдельных слов;
· Возможность перевода предложений (текстов);
· Исключение из перевода не алфавитных знаков (знаков пунктуации, чисел и пр.);
· Возможность открытия файла для перевода;
· Возможность сохранения полученного перевода;
· Возможность распечатки перевода;
· Система Tutor – «Учитель» – для проверки знаний пользователя;
· Наличие необходимой справочной системы;
· Обеспечить приложение стандартным интерфейсом: основным меню, горячими клавишами, панелями инструментов.
Для реализации задачи были сформированы следующие классы:
· 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.
Разработаны объекты TWord и TWords:
· class TWord – класс, который хранит только данные «слово-перевод».
Параметры класса:
AnsiString One, Two;
One содержит «вводимое» слово, Two – возможные варианты перевода слова One. Для максимальной функциональности используется тип AnsiString – динамическая строка с нулевым символом в конце.
· class TWords – класс-контейнер, используется для хранения в оперативной памяти содержимого файлов данных (слов с переводами), что значительно ускоряет работу программы.
Параметры класса: vector <TWord> 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). В функцию передаётся строка (слово или текст), которая посимвольно анализируется и, в зависимости от символа, заносится в строковую переменную. Если в переданной строке встречаются определённые символы (например, знак возврата каретки или пробел), значит, слово закончилось, и его можно перевести. Перевод слов заносится в переменную-строку, которая при окончании работы возвращается функцией.
Так как основными данными класса TWord являются строковые переменные One и Two, а вектор TWords состоит из объектов TWord (и методы вектора работают как с самим вектором, так и с данными-классами), то, в общем, схему отношений между классами можно описать так:
Рисунок 1 – Схема отношений в спецификации классов
Страницы: 1, 2