Технология разработки приложения
Чтобы создать приложение, следует:
1) Открыть Microsoft Visual Studio 2010.
2) Выбрать пункт меню «Создать проект».
3) Выбрать в шаблоне С# «Приложение Windows Form» и нажать «ОК».
4) В открывшемся окне формы переносим компоненты из Панели элементов:
а) RichTextBox - c помощью этого элемента управления пользователь может вводить и изменять текст.
б) TabControl – обрабатывает и отображает для пользователя соответствующую коллекцию вкладок, содержащих элементы управления и компоненты.
в) ToolStrip – предоставляет панели инструментов и другие элементы интерфейса пользователя, поддерживающих множество форматов представления элементов.
г) Button – при нажатии возникает событие.
д) NumericUpDown – отображает единичное числовое значение, которое пользователь может увеличить или уменьшить с помощью кнопок «вверх-вниз» элемента управления.
е) Label – предоставляет элементу управления текс описания либо информацию во время выполнения.
5) Обработчик события метода Shifr1_Click отвечает за шифрование методом Цезаря. При нажатии кнопки «Шифрование» происходит кодирование текста.
6) Обработчик события метода DeShifr1_Click отвечает за дешифрование метода Цезаря. При нажатии кнопки «Дешифрование» происходит декодирование текста.
7) Обработчик события метода Shifr2_Click отвечает за шифрование методом Атбаш. При нажатии кнопки «Шифрование» происходит кодирование текста.
8) Нажать клавишу F5 и начать компиляцию программу.
9) Программа готова к использованию.
Описание программы
В обработчике событий Shifr1_Click происходит шифрование методом Цезаря и вывод кодированного сообщения в DeShifrText1:
private void Shifr1_Click(object sender, EventArgs e)
{
int key = Convert.ToInt32(numericUpDown1.Value.ToString());
//количество сдвигов
string s = ShifrText1.Text;//храню слово, которое будем шифровать
string s1 = "";//храню результат шифрования
string alf = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";//работаю с английским алфавитом
string alfphabet = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя";//работаю с русским алфавитом
for (int i = 0; i < s.Length; i++)//цикл перебора букв шифруемого слова
{
if (s[i].ToString() == " " || s[i].ToString() == "." || s[i].ToString() == "," || s[i].ToString() == ":" || s[i].ToString() == ";" || s[i].ToString() == "?" || s[i].ToString() == "!") // эти знаки печатаются без зашифровки
{
s1 = s1 + s[i];
}
for (int j = 0; j < alfphabet.Length; j++)//цикл сравнения каждой бкувы с алфавитом
{
if (s[i] == alfphabet[j]) // в случае совпадения создаем темп, где храню номер буквы со сдвигом
{
int temp = j + 2*key;//номер буквы+сдвиг в темп
while (temp >= alfphabet.Length)//чтобы темп не уходил за рамки алфавита
temp -= alfphabet.Length;
s1 = s1 + alfphabet[temp];//заношу зашифрованную букву в переменную для ее хранения
}
}
for (int j = 0; j < alf.Length; j++)//цикл сравнения каждой буквы с алфавитом
if (s[i] == alf[j])
{
int temp = j + 2*key;//номер буквы-сдвиг в темп
while (temp >= alf.Length)//чтобы темп не уходил за рамки алфавита
temp -= alf.Length;
s1 = s1 + alf[temp];//заношу зашифрованную букву в переменную для ее хранения
}
}
DeShifrText1.Text = s1;
}
В обработчике событий DeShifr1_Click происходит декодирование сообщения, полученного раннее, которое тоже выводится на экран:
private void DeShifr1_Click(object sender, EventArgs e)
{
int key = Convert.ToInt32(numericUpDown1.Value.ToString());
//количество сдвигов
string s = ShifrText1.Text;//храню слово, которое будем шифровать
string s1 = "";//храню результат шифрования
string alf = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";//работаю с английским алфавитом
string alfphabet = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя";//работаю с русским алфавитом
for (int i = 0; i < s.Length; i++)//цикл перебора букв шифруемого слова
{
if (s[i].ToString() == " " || s[i].ToString() == "." || s[i].ToString() == "," || s[i].ToString() == ":" || s[i].ToString() == ";" || s[i].ToString() == "?" || s[i].ToString() == "!") // эти знаки печатаются без зашифровки
{
s1 = s1 + s[i];
}
for (int j = 0; j < alfphabet.Length; j++)//цикл сравнения каждой бкувы с алфавитом
{
if (s[i] == alfphabet[j]) // в случае совпадения создаем темп, где храню номер буквы со сдвигом
{
int temp = j - 2*key+66;//номер буквы+сдвиг в темп
while (temp >= alfphabet.Length)//чтобы темп не уходил за рамки алфавита
temp -= alfphabet.Length;
s1 = s1 + alfphabet[temp];//заношу зашифрованную букву в переменную для ее хранения
}
}
for (int j = 0; j < alf.Length; j++)//цикл сравнения каждой буквы с алфавитом
if (s[i] == alf[j])
{
int temp = j - 2*key;//номер буквы-сдвиг в темп
while (temp >= alf.Length)//чтобы темп не уходил за рамки алфавита
temp -= alf.Length;
s1 = s1 + alf[temp];//заношу зашифрованную букву в переменную для ее хранения
}
}
В обработчике событий Shifr2_Click происходит кодирование методом Атбаш:
private void Shifr2_Click (object sender, EventArgs e)
{
string abc1 = "АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя";
string abc2 = "ЯяЮюЭэЬьЫыЪъЩщШшЧчЦцХхФфУуТтСсРрПпОоНнМмЛлКкЙйИиЗзЖжЁёЕеДдГгВвБбАа";
string abc3 = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpRrSsTtUuVvWwXxYyZz";
string abc4 = "ZzYyXxWwVvUuTtSsRrPpOoNnMmLlKkJjIiHhGgFfEeDdCcBbAa";
string str1 = "";
string str2 = ShifrText2.Text;
for (int i = 0; i < str2.Length; i++)
{
if (str2[i].ToString() == " " || str2[i].ToString() == "." || str2[i].ToString() == "," || str2[i].ToString() == ":" || str2[i].ToString() == ";" || str2[i].ToString() == "?" || str2[i].ToString() == "!") // определение знаков, которые печатаются без изменений
{
str1 = str1 + str2[i];
}
for (int l = 0; l < abc1.Length; l++)
if (str2[i] == abc1[l])
{
str1 = str1 + abc2[l];
}
for (int l = 0; l < abc4.Length; l++)
if (str2[i] == abc4[l])
{
str1 = str1 + abc3[l];
}
}
DeShifrText2.Text = str1 ;
}
В обработчике события выходToolStripMenuItem_Click_1 производится выход из приложения:
private void выходToolStripMenuItem_Click_1(object sender, EventArgs e)
{
Close();
}
В обработчике события цезарьToolStripMenuItem_Click происходит переход во вкладку кодирования методом Цезаря:
private void цезарьToolStripMenuItem_Click(object sender, EventArgs e)
{
tabControl1.SelectTab(0);
}
В обработчике события атбашToolStripMenuItem_Click происходит переход во вкладку кодирования методом Атбаш:
private void атбашToolStripMenuItem_Click(object sender, EventArgs e)
{
tabControl1.SelectTab(1);
}
В обработчике события о_программеToolStripMenuItem_Click открывает диалоговое окно «О программе»:
private void о_программеToolStripMenuItem_Click(object sender, EventArgs e)
{
AboutBox1 box = new AboutBox1();
box.Show();
}