Реферати

Курсова робота: Повчальна програма-перекладач тексту

Фіскальна політика і її роль у державному регулюванні економіки. Міністерство утворення і науки Російської Федерації Федеральне агентство по утворенню Бузулукский гуманитарно-технологический інститут (філія) державної освітньої установи

Хрущев як особистість. ХХ з'їзд партії."Ленінський шлях". Політика Хрущева. Хрущев і Берия. "Антипартійне угруповання".

Мить. Мить Автор: Короленко В. Г. - Буде бура, товариш. - Так, капрал, буде сильна бура. Я добре знаю цей східний вітер. Ніч на море буде дуже неспокійна.

Прийняття християнства на Русі 7. Реферат на тему: Прийняття християнства на Русі Зміст Уведення......2 Зародження і становлення Християнства на Русі......3 Прийняття Християнства на Русі......5 Значення прийняття Християнства на Русі......7 Причини прийняття Християнства на Русі......9

451 градус по Фаренгейтові. 451 градус по Фаренгейтові Автор: Бредбери Р. Дону Конгдону з вдячністю "Якщо тобі дадуть лінійований папір, пиши поперек." Хуан Рамон Хименес

Міністерство освіти і науки Російської Федерації

Південно-Уральський державний університет

Кафедра Інформатики

Пояснювальна записка по курсовому проекту

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

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

Керівник

доц. каф. інформатики Конова Е. А.

« »_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 Структура програми

Для реалізації задачі були сформовані наступні класи:

- classTWord, призначений для зберігання пар слово-переклад;

- classTWords, клас-контейнер, даним якого є вектор класів 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:

- classTWord - клас, який зберігає тільки дані «слово-переклад».

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

AnsiString One, Two;

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

- classTWords - клас-контейнер, використовується для зберігання в оперативній пам'яті вмісту файлів даних (слів з переказами), що значно прискорює роботу програми.

Параметри класу: vector < TWord > Words;

//контейнер типу vector для зберігання класів TWord;

Прототипи методів класу:voidClear();

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

voidOpenFile(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 < GetSize();++r) //пробегаемповекторуслов

if (GetWord(r).)(One==W) //якщо перше слово "підкласу"

//_вектора дорівнює шуканому

returnGetWord(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 головного вікна програми, закінчити роботу - натиснувши BacktoTranslator або червоний хрест.

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

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

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

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

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

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

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

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

Користувач може змінювати напрям перекладу (з російського на англійський або з англійського на російський) за допомогою списку Directionoftranslation. При цьому раніше переведені слова (якщо вони були протилежній спрямованості) втрачають переклад. Реалізовано за допомогою методів класу 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. Слово переведене невірно

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

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

Малюнок 9 - Вікно допомоги

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

Малюнок 10 - Вікно Про програму

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

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

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

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

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

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

Оскільки програма була реалізована з параметрами, що забезпечують незалежність програмного коду від середи розробки, то EasyTranslatorобладает повною переносимістю.

Для установки програми потрібно самораспаковивающийся архів EasyTranslator.exe (ніяких додаткових програм для розпаковування не потрібно).

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

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

- Версія Windows не нижче за 95

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

11 Висновок

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

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

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

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

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

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

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

Зміст

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