скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

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

Курсовая работа: Программа для перевода текстов с транслита

Федеральное агентство по образованию Российской Федерации.

Южно-Уральский Государственный Университет.

Кафедра «Информационно – аналитическое обеспечение управления в социальных и экономических системах»


Курсовая работа по дисциплине Программирование на языке высокого уровня

«Программа для перевода текстов с транслита»


Выполнил:

Студент группы ПC-ххх

_______  Студент

“___” ____________ 2005

Проверил:

_______ Препод

“___”____________2005


Челябинск

2005


План

Описание применения

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

2.  Актуальность задачи

3.  Метод решения

4.  Входные и выходные данные

Описание программы

1.  Общие данные и типы.

2.  Список процедур и функций

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

4.  Главная форма

5.  Форма «Редактор алфавита»

6.  Форма «О программе»

7.  Основные алгоритмы

8.  Работа с программой, входные и выходные данные

9.  Описание тестовых заданий

Приложение


Описание применения

 

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

Программа для перевода текстов с транслита на русский и обратно. Поддерживается форматирование текста, наиболее популярные системы транслитерации ГОСТ 16876-71, русско-английскую, а также таблицы, задаваемые пользователем. Программа должна иметь функцию перевода символов текста к верхнему и нижнему регистру, функцию подсчета количества символов в тексте. Загрузка текста из буфера обмена может осуществляться по быстрой кнопке.

2.   Актуальность задачи

Перевод текста из кириллицы в транслит используется очень часто. От простейшего создания nickname до разговоров в IRC-каналах. Многие программы не поддерживают кириллицу и приходится вводить какие-либо комментарии на транслите. Также некоторые mp3-плееры не поддерживают кириллицу и теги приходится писать также на транслите. Этот способ кодировки русских букв давно устоялся и есть чёткие правила (хотя есть и варианты) набора букв. Поэтому в данной программе необходимо реализовать загрузки словаря.

3.   Метод решения

Так как программа должна иметь графический и интуитивно понятный интерфейс, то для решения очень подходит DELPHI. Была выбрана версия 7.0. Вся программа была разбита на 3 формы: главная, форма работы со словарями и форма «О программе». Весь интерфейс был разработан  на стандартных компонентах и обработчиках событий.


4.   Входные и выходные данные

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


Описание программы

1.   Общие данные и типы

Алфавит перевода представляет из себя массив переменных типа shortstring с индексами от «А» до «Я». Элементами массива являются символы в транслите соответствующей букве в кириллице.

Array [‘А’..‘Я’] of shortstring.

Также создано множество больших и маленьких букв кириллицы:

al_set        : set of char = ['А'..'Я','Й','Ё'];

small_al      : set of char = ['а'..'я','й','ё'];

2.   Список процедур и функций

Функция UpCase_R(const ch_in:char):char возвращает символ в верхнем регистре:

Листинг 1. Функция UpCase_R

function UpCase_R(const ch_in:char):char;

var

   res:char;

begin

   case ch_in of  //проверяет является ли параметр ch_in русской буквой и если да

     'й': res:= 'Й';  //то заменяет её на аналогичную, но в верхнем регистре.

     'ц': res:= 'Ц';

     'у': res:= 'У';

     'к': res:= 'К';

     'е': res:= 'Е';

     'н': res:= 'Н';

     'г': res:= 'Г';

     'ш': res:= 'Ш';

     'щ': res:= 'Щ';

     'з': res:= 'З';

     'х': res:= 'Х';

     'ъ': res:= 'Ъ';

     'ф': res:= 'Ф';

     'ы': res:= 'Ы';

     'в': res:= 'В';

     'а': res:= 'А';

     'п': res:= 'П';

     'р': res:= 'Р';

     'о': res:= 'О';

     'л': res:= 'Л';

     'д': res:= 'Д';

     'ж': res:= 'Ж';

     'э': res:= 'Э';

     'я': res:= 'Я';

     'ч': res:= 'Ч';

     'с': res:= 'С';

     'м': res:= 'М';

     'и': res:= 'И';

     'т': res:= 'Т';

     'ь': res:= 'Ь';

     'б': res:= 'Б';

     'ю': res:= 'Ю';

     'ё': res:= 'Ё';

   else

     begin

        if not(ch_in in al_set) then

          res:= UpCase(ch_in)

        else

          res:= ch_in;

     end;

   end;

   UpCase_R:= res;

end;

Функция downcase (const ch_in:char):char возвращает символ в нижнем регистре:

Листинг 2. Функция downcase.

function downcase(ch_in:char):char;

var

   res:char;

Begin

   case ch_in of  // проверяет является ли параметр ch_in русской или латинской

     'Й': res:= 'й';  // буквой и если да, то возвращает соответствующую букву

     'Ц': res:= 'ц';  // но в верхнем регистре.

     'У': res:= 'у';

     'К': res:= 'к';

     'Е': res:= 'е';

     'Н': res:= 'н';

     'Г': res:= 'г';

     'Ш': res:= 'ш';

     'Щ': res:= 'щ';

     'З': res:= 'з';

     'Х': res:= 'х';

     'Ъ': res:= 'ъ';

     'Ф': res:= 'ф';

     'Ы': res:= 'ы';

     'В': res:= 'в';

     'А': res:= 'а';

     'П': res:= 'п';

     'Р': res:= 'р';

     'О': res:= 'о';

     'Л': res:= 'л';

     'Д': res:= 'д';

     'Ж': res:= 'ж';

     'Э': res:= 'э';

     'Я': res:= 'я';

     'Ч': res:= 'ч';

     'С': res:= 'с';

     'М': res:= 'м';

     'И': res:= 'и';

     'Т': res:= 'т';

     'Ь': res:= 'ь';

     'Б': res:= 'б';

     'Ю': res:= 'ю';

     'Ё': res:= 'ё';

     'Q': res:= 'q';

     'W': res:= 'w';

     'E': res:= 'e';

     'R': res:= 'r';

     'T': res:= 't';

     'Y': res:= 'y';

     'U': res:= 'u';

     'I': res:= 'i';

     'O': res:= 'o';

     'P': res:= 'p';

     'A': res:= 'a';

     'S': res:= 's';

     'D': res:= 'd';

     'F': res:= 'f';

     'G': res:= 'g';

     'H': res:= 'h';

     'J': res:= 'j';

     'K': res:= 'k';

     'L': res:= 'l';

     'Z': res:= 'z';

     'X': res:= 'x';

     'C': res:= 'c';

     'V': res:= 'v';

     'B': res:= 'b';

     'N': res:= 'n';

     'M': res:= 'm';

   else

     res:= ch_in;

   end;

   Downcase:= res;

End;

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

Программа состоит из трех частей:

·     Главной формы (модуль unit_main)


Рис 1. Главная форма

·     Формы «О программе» (модуль unit_about)

рис 2. Форма «О программе»

·     Формы работы со словарями (модуль unit_slov)


рис 3. Форма «Редактор алфавита»

Главная форма загружается автоматически и другие формы вызываются из нее. При выборе меню «Перевод -> Редактор алфавита» вызывается форма работы с алфавитом, а при выборе «Справка -> О программе» вызывается форма «О программе».

4.   Главная форма

Предназначена для загрузки, сохранения, редактирования и перевода текстов.

Содержит следующие компоненты:

·         TMemo 2шт

·         TPanel 2 шт.;

·         TMainMenu;

·         TStatusBar;

·         TLabel 4 шт.

·         TOpenDialog

·         TSaveDialog

·         TmainMenu

·         TimageList

·         TactionList

·         TtoolBar (ToolButton 7 шт.)

Вс расположено так, как указано на рисунке 1.

Два TLabel указывают на направление перевода в полях, ещё два – на количество символов в областях ввода данных. Два диалога (TOpenDialog и TSaveDialog) для сохранения и загрузки исходного или итогового текста. TMemo для ввода (и отображения) текущих данных для перевода. TMainMenu для главного меню и кнопки (ToolButton) для управления программой (для управления полями ввода и словарём).

Главное меню основной формы:

·     Меню «Файл»

рис. 4. Главное меню. Пункт «Файл»

·     Меню «Правка»


рис. 5. Главное меню. Пункт «Правка»

·     Меню «Перевод»

рис. 6. Главное меню. Пункт «Перевод»

·     Меню «Справка»

рис. 7. Главное меню. Пункт «Справка»


Для каждого пункта меню используются клавиши быстрого доступа (свойство ShortCut) и пиктограммы(элементы ImageList). Обработка выбора каждого пункта меню производится в Action’ах компонента ActionList.

Обработчики событий главной формы:

При создании формы загружается стандартный ГОСТ’овский словарь перевода из кириллицы в транслит и обнуляется текст выводящий количество символов в полях.

Листинг 3. «Обработчик события создания главной формы»

procedure TMainForm.FormCreate(Sender: TObject);

begin

   Count_1.Caption:= 'Символов: 0';

   Count_2.Caption:= 'Символов: 0';

   b_jo:= 'jo';

   alph['А']:= 'a';

   alph['Б']:= 'b';

   alph['В']:= 'v';

   alph['Г']:= 'g';

   alph['Д']:= 'd';

   alph['Е']:= 'e';

   alph['Ж']:= 'zh';

   alph['З']:= 'z';

   alph['И']:= 'i';

   alph['Й']:= 'jj';

   alph['К']:= 'k';

   alph['Л']:= 'l';

   alph['М']:= 'm';

   alph['Н']:= 'n';

   alph['О']:= 'o';

   alph['П']:= 'p';

   alph['Р']:= 'r';

   alph['С']:= 's';

   alph['Т']:= 't';

   alph['У']:= 'u';

   alph['Ф']:= 'f';

   alph['Х']:= 'kh';

   alph['Ц']:= 'c';

   alph['Ч']:= 'ch';

   alph['Ш']:= 'sh';

   alph['Щ']:= 'shh';

   alph['Ъ']:= '''''';

   alph['Ы']:= 'y';

   alph['Ь']:= '''';

   alph['Э']:= 'eh';

   alph['Ю']:= 'ju';

   alph['Я']:= 'ja';

end;

Обработчики событий для кнопок:

·     Кнопка  (редактировать алфавит), событие acAlphEdit

Листинг 4. «Обработчик события нажатия на кнопку Редактировать алфавит»

procedure TMainForm.acAlphEditExecute(Sender: TObject);

begin

   SlovarForm.show;

end;

·     Кнопка  (Открыть фаил в окно кириллици) acCyrOpen

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

Листинг 5. «Обработчик события нажатия на кнопку Открыть»

procedure TMainForm.acCyrOpenExecute(Sender: TObject);

begin

   if openDialog.execute then

     try

        memCyr.lines.LoadFromFile(OpenDialog.FileName);

     except

       showmessage('Неверный формат фаила!!!');

     end;

end;

·     Кнопка  (Сохранить текст из окна кириллици) acSaveCyr

Выполняет диалог SaveDialog и сохраняет поле memCyr в файл.

Листинг 6. «Обработчик события нажатия на кнопку Сохранить»

procedure TMainForm.acSaveCyrExecute(Sender: TObject);

begin

   if openDialog.execute then

     memCyr.lines.SaveToFile(OpenDialog.FileName);

end;

·     Кнопка  (перевести с кириллици в латиницу) acCyrToLat

Очищает поле memLat и заносит в него текст переведенный в транслит. Данный алгоритм будет рассмотрен в части «Основные алгоритмы»

Коды обработки событий нажатия кнопок сохранения и загрузки для memLat (поле ввода латиници) идентичны приведенным выша, за исключением входного и выходного полей (memLat)

Процедуры обработки событий главного меню:

·     Меню «Файл»

o  «Открыть фаил в окно кириллици»

acCyrOpen

o  «Открыть фаил в окно латиници»

acLatOpen

o  «Сохранить текст из окна кириллици»

acSaveCyr

o  «Сохранить текст из окна латиници»

acSaveLat

o  «Выход»

Закрывает главную форму.

Листинг 8. «Обработчик главного меню Файл -> Выход»

procedure TMainForm.N4Click(Sender: TObject);

begin

   MainForm.Close;

end;

·     Меню «Правка»

Содержит стандартные функции управления буфером обмена и редактирования текста.

o  «Отменить CTRL+Z»   acUndo

Отменяет изменения в текущем (активном) поле для ввода

Листинг 9. «Обработчик главного меню Правка -> Отменить»

procedure TMainForm. acUndoExecute(Sender: TObject);

begin

   if memCyr.Focused then memCyr.Undo;

   if memLat.Focused then memLat.Undo;

end;

o  «Вырезать CTRL+X»    acCut

Вырезает выделенный текст в текущем (активном) поле для ввода.

Листинг 10. «Обработчик главного меню Правка -> Вырезать»

procedure TMainForm.acCutExecute(Sender: TObject);

begin

   if memCyr.Focused then memCyr.CutToClipboard;

   if memLat.Focused then memLat.CutToClipboard;

end;

o  «Копировать CTRL+С»   acCopy

Копирует выделенный текст в текущем (активном) поле для ввода.

Листинг 11. «Обработчик главного меню Правка -> Копировать»

procedure TMainForm.acCopyExecute(Sender: TObject);

begin

   if memCyr.Focused then memCyr.CopyToClipboard;

   if memLat.Focused then memLat.CopyToClipboard;

end;

o  «Вставить CTRL+V»    acPaste

Страницы: 1, 2


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.