Xreferat.com » Рефераты по информатике и программированию » Программа для перевода текстов с транслита

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

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

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

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


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

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


Выполнил:

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

_______ Студент

“___” ____________ 2005


Проверил:

_______ Препод

“___”____________2005


Челябинск

2005

План


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Приложение


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


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


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


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


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


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


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

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


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

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


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


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

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

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

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

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


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


Функция 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;


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


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

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


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

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


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


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

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


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


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

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


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


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


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

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

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)

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

Меню «Файл»

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

acCyrOpen

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

acLatOpen

«Сохранить текст из окна кириллици» Программа для перевода текстов с транслита

acSaveCyr

«Сохранить текст из окна латиници» Программа для перевода текстов с транслита

acSaveLat

«Выход»

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

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

procedure TMainForm.N4Click(Sender: TObject);

begin

MainForm.Close;

end;

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

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

«Отменить CTRL+Z» Программа для перевода текстов с транслита acUndo

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

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

procedure TMainForm. acUndoExecute(Sender: TObject);

begin

if memCyr.Focused then memCyr.Undo;

if memLat.Focused then memLat.Undo;

end;

«Вырезать CTRL+X» Программа для перевода текстов с транслита acCut

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

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

procedure TMainForm.acCutExecute(Sender: TObject);

begin

if memCyr.Focused then memCyr.CutToClipboard;

if memLat.Focused then memLat.CutToClipboard;

end;

«Копировать CTRL+С» Программа для перевода текстов с транслита acCopy

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

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

procedure TMainForm.acCopyExecute(Sender: TObject);

begin

if memCyr.Focused then memCyr.CopyToClipboard;

if memLat.Focused then memLat.CopyToClipboard;

end;

«Вставить CTRL+V» Программа для перевода текстов с транслита acPaste

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

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

procedure TMainForm.acPasteExecute(Sender: TObject);

begin

if memCyr.Focused then memCyr.PasteFromClipboard;

if memLat.Focused then memLat.PasteFromClipboard;

end;

«Удалить CTRL+Del» Программа для перевода текстов с транслита acDelete

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

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

procedure TMainForm.acDeleteExecute(Sender: TObject);

begin

if MemCyr.Focused then memCyr.ClearSelection;

if MemLat.Focused then memLat.ClearSelection;

end;

«Выделить всё CTRL+A»

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

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

procedure TMainForm.N18Click(Sender: TObject);

begin

if memo1.Focused then memo1.SelectAll;

if memo2.Focused then memo2.SelectAll;

end;

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

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

Переводит текст из кириллицы в транслит. Текст данной процедуры будет рассмотрен ниже.

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

Переводит текст из транслита в кириллицу. Текст данной процедуры будет рассмотрен ниже.

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

Отображает форму редактирования словаря.

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

«О программе»

Отображает форму «О программе»

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

procedure TMainForm.N7Click(Sender: TObject);

begin

AboutForm.show;

end;


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


Данная форма предназначена для загрузки, сохранения и редактиро-вания словарей перевода кириллицы в транслит.


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

рис. 8. Форма «Редактора»


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

TStringGrid;

TPanel;

TBitBtn (2 шт.);

TOpenDialog;

TSaveDialog;

TButton;

Компонент TStringGrid предназначен для ввода и просмотра таблицы перевода. На TPanel расположены все кнопки. TBitBtn – позволяют сохранять и загружать словари. Диалоги TOpenDialog и TSaveDialog предназначены для выбора файлов словарей. TButton – применяет текущие настройки к глобальному словарю (он расположен в Unit_main).

Обработчики событий.

При создании формы происходит заполнение таблицы (SlovGrid):

Листинг 16. «Созание формы Редактировать алфавит»

procedure TSlovarForm.FormCreate(Sender: TObject);

var

i1 :integer;

begin

SlovGrid.Cells[0,0]:= 'Русский';

SlovGrid.Cells[1,0]:= 'Перевод';

for i1:= 1 to 33 do

begin

SlovGrid.Cells[0,i1]:= alph_r[i1];

if i1 = 7 then SlovGrid.Cells[1,i1]:= b_jo

else SlovGrid.Cells[1,i1]:= alph[alph_r[i1]];

end;

f_name:= '';

end;

Обработчик нажатия на кнопку «Сохранить». Если пользователь выбрал файл, куда сохранить новый словарь, то происходит перезапись этого файла. В него (как в типизированный файл) записывается последовательность переменных типа ShortString. Эти данные (и их количество) берутся из таблицы SlovGrid:

Листинг 17. «Нажатия на кнопку Сохранить»

procedure TSlovarForm.SveButtClick(Sender: TObject);

var

f :file of shortstring;

i1 :integer;

str :shortstring;

begin

if savefile.execute then

begin

assignfile(f,SaveFile.FileName);

f_name:= SaveFile.FileName;

rewrite(f);

for i1:= 1 to SlovGrid.RowCount-1 do

begin

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: