Навчальна програма-перекладач тексту

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати


Міністерство освіти і науки Російської Федерації
Південно-Уральський державний університет
Кафедра Інформатики

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

«Навчальна програма - перекладач тексту» ГО ПЗ

Керівник
доц. каф. інформатики Конова Є.А.
«»________ 2007р.

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

Проект захищений з оцінкою
__________
«»________ 2007р.

Челябінськ
2007

Зміст

1 Вступ 2

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

3 Структура програми 19

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

5 Структурна схема відносин у специфікації класів 22

6 Реалізація 23

7 Алгоритми реалізації 24

8 Сценарій роботи проекту 26

9 Реалізація сценарію 27

10 Документація проекту 33

11 Висновок 34

12 Джерела інформації 35

Зміст 36

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 <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). У функцію передається рядок (слово або текст), яка посимвольний аналізується і, в залежності від символу, заноситься в строкову змінну. Якщо у переданій рядку зустрічаються певні символи (наприклад, знак повернення каретки або пропуск), значить, слово закінчилося, і його можна перекласти. Переклад слів заноситься в змінну-рядок, яка при закінченні роботи повертається функцією.

5 Структурна схема відносин у специфікації класів

Так як основними даними класу TWord є рядкові змінні One і Two, а вектор TWords складається з об'єктів TWord (і методи вектора працюють як з самим вектором, так і з даними-класами), то, загалом, схему відносин між класами можна описати так :


6 Реалізація

Так як особливістю поставленого завдання було забезпечення послівного перекладу, то в якості основного об'єкта, призначеного для зберігання даних, був обраний контейнер - вектор. Перевагою використання вектора стало те, що в цьому класі підтримуються динамічні масиви, а це означає, що розмір контейнера може змінюватися в міру необхідності, і одночасно з цим доступ до його елементів здійснюється за допомогою звичайної індексного нотації (оператора []).

Отримуємо, що для зберігання відносно невеликої кількості інформації про слово-перекладі використовується клас TWord, а для зберігання і обробки невідомого на момент компіляції кількості слів (відповідно, і класів TWord) використовується вектор TWords, що робить всі переваги застосування цього типу контейнера очевидними.

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

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

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

AnsiString TWords:: Translate (AnsiString W)

{For (unsigned int r = 0; r <GetSize ();++ 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] <= 'z') | | (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 + F 1 можна ознайомитися з довідкою за програмою.

Основними правилами, що висуваються для користувача, є:

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

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

  • Ставитися з повагою до роботи автора програми

9 Реалізація сценарію

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

Малюнок 2 - Головне вікно перекладача

Користувач може змінювати напрямок перекладу (з російської на англійську або з англійської на російську) за допомогою списку Direction of translation. При цьому раніше перекладені слова (якщо вони були протилежної спрямованості) втрачають переклад. Реалізовано за допомогою методів класу TWords - зміст вектора змінюється відповідно до заданим напрямом перекладу:

Малюнок 3 - Головне вікно перекладача. Напрямок перекладу

Програма була розрахована на користувача з хоча б мінімальними знаннями англійської мови, тому практично весь інтерфейс (назви кнопок, пунктів меню) реалізований англійською. Однак для користувачів, зовсім не знають цієї мови, передбачені підказки російською, вони стають видні при наведенні курсору миші на цікаву частина вікна (написи забезпечені властивістю Hint, видимість написів - властивістю ShowHint = True).

У програмі передбачено стандартне меню, оснащене гарячими клавішами, що дозволяє користувачеві відкривати текстові файли для перекладу, зберігати і роздруковувати переклад, а також редагувати поточний текст для перекладу. Меню реалізовано за допомогою компонента ActionManager, за допомогою якого легко створюються і реалізуються розділи меню (за необхідності забезпечені гарячими клавішами і вбудованими діалогами), до яких можуть бути прив'язані іконки дій по індексу компонента Images (ImageList). Користувач може змінювати зовнішній вигляд програми, наприклад, змінювати розмір шрифту. Також можливо приховувати або відображати панелі інструментів (які були створені також за допомогою ActionManager) - за допомогою контекстного меню (компонент PopupTools - PopupMenu, реалізація дій взята з ActionManager):

Рисунок 4 - Зміна стану панелей інструментів за допомогою контекстного меню

або за допомогою головного меню:

Рисунок 5 - Зміна стану панелей інструментів за допомогою головного меню

Контекстні меню передбачені і у обох текстових полів, дії також взяті з ActionManager.

Для переходу до Tutor необхідно натиснути кнопку Tutor головного вікна. Для цього було необхідно включити заголовки TTutor. H у файл опису головного вікна, після чого можливе заховати головне вікно і показати вікно Tutor. При кожному зверненні до цього вікна випадковим чином генерується нове завдання:

Малюнок 6 - Вікно Tutor

Tutor пропонує ознайомиться з поєднанням слів, даними у верхньому текстовому полі, і запропонувати свій варіант їх перекладу, записавши його в нижнє поле, і потім натиснувши кнопку Check! Програма порівнює переклад введеного слова з даними у верхньому полі словосполученнями. Код обробки натиснення кнопки можна переглянути в розділі 7 цієї записки.

Якщо результат перекладу вірний, з'явиться відповідний напис і забавна картинка (всі картинки цієї форми були завантажені програмно і їх поставка з програмою не потрібно):

Малюнок 7 - Вікно Tutor. Слово переведено вірно

Якщо користувач помилився, він відразу ж про це дізнається за відповідною написи і зображення:

Малюнок 8 - Вікно Tutor. Слово переведено невірно

Для повернення в Easy Translator досить натиснути кнопку Back ... або кнопку закриття вікна.

Також проект містить невелику, але інформативну довідку за програмою, яку можна викликати з розділу меню Help - Contents або натиснувши Ctrl + F 1. Для розділу довідки призначена спеціальна форма ETHlp:

Рисунок 9 - Вікно допомоги

Також користувачеві доступна інформація про програму та упорядника (Help - About ...):

Рисунок 10 - Вікно Про програму

Деякі особливості програми:

  • Відключається можливість запускати кілька копій програми. При спробі запустити більше однієї версії видається повідомлення про неможливість виконання операції;

  • З усіх заголовків вікон проекту була прибрана кнопка Maximize, для заборони зміни розмірів з метою збереження задуманих при дизайні пропорцій;

  • Для всіх форм була додана іконка, яку видно в смузі завдань поряд з ім'ям програми або при перегляді користувачем каталогу, в якому розташований виконуваний файл програми, також ця іконка може відображатися в лівому верхньому куті вікна.

  • На даний момент програма має досить вузькі можливості перекладу (близько 15 слів у кожному напрямку, список слів додається в текстовому файлі), так як додавання слів до бази даних - процес дуже трудомісткий і займає порівняно багато часу

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

Так як програма була реалізована з параметрами, що забезпечують незалежність програмного коду від середовища розробки, то Easy Translator має повну переносимістю.

Для установки програми потрібно саморозпаковується EasyTranslator. Exe (ніяких додаткових програм для розпакування не потрібно).

Вимоги для встановлення і роботи з програмою:

  • Наявність настільного комп'ютера, ноутбука або КПК

  • Версія Windows не нижче 95

  • Небажання переміщати і / або видаляти файли, що утворюються після установки програми

11 Висновок

Даний проект повністю реалізує можливості використання засобів об'єктно-орієнтованого програмування на прикладі створення програмного продукту - перекладача, а також ілюструє можливості використання середовища розробки - Borland C + + Builder 6.

Як розвитку проекту можна припустити розширення словникової бази перекладача (як програмного, так і призначеного для користувача), можливість інтеграції з іншими додатками (виклик програми з відкритих документів), а також можливість використання словників для тематичного перекладу.

12 Джерела інформації

1. Г. Шілдт «Самовчитель С + +, 3е видання», Видавництво «БХВ-Петербург» 2006

2. А.Я. Архангельський «C + + Builder 6, Довідковий посібник, Книга 2 - Класи і компоненти», Видавництво «Біном» 2002

3. Учні груп ЕіУ-264 і ЕіУ-263 ЮУрГУ

4. Лекції з курсу «Високорівневі методи інформатики та програмування»

Зміст

1 Вступ 2

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

3 Структура програми 19

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

5 Структурна схема відносин у специфікації класів 22

6 Реалізація 23

7 Алгоритми реалізації 24

8 Сценарій роботи проекту 26

9 Реалізація сценарію 27

10 Документація проекту 33

11 Висновок 34

12 Джерела інформації 35

Зміст 36


Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
57.3кб. | скачати


Схожі роботи:
Навчальна програма перекладач тексту
Програма Txtprintcom - резидентна програма для швидкого і зручного друкування виборчого тексту
Навчальна програма з інформатики
Навчальна програма з математики для допоміжної школи
Навчальна програма для гуртка англійської мови Нappy English
Навчальна програма для гуртка англійської мови Нappy English 2
Навчальна програма з фізичної культури для загальноосвітніх навчальних закладів 1011 клас
Набоков як перекладач
Брюсов як перекладач і теоретик перекладу
© Усі права захищені
написати до нас