вторник, 9 мая 2017 г.

Программа "ShifrText"

Сегодня я расскажу как сделать программу, которая будет шифровать текст, набранный нами.

Для начала:

1) Заходим с среду программирования.
2) Заходим в Solution Explorer и там выбираем папочку Header Files, а в ней ProgramDlg.h 
3) Там вписываем этот блок:

private:

HPEN hPenOxy, hOldPen;
HFONT hold, hNew, hbk;
HBRUSH m, oldm;
COLORREF cf, ck, c[25];

CPen d, oldd;
CBitmap pic;
CRect rc, w, kw[12];

CString ms, t, z;
 
int x1, y1, x2, y2, x3, y3, x4, y4;
int Matrix[50][50];
int RH, RW, k, i, j, cx, cy, dx, dy;
bool fg;

Теперь открываем планшетку и берём из Toolbox Static Text, Edit Control, Button( называем - "зашифровать"), Button(Называем -"выход").


Теперь добавляем переменную статическому тексту (control) "Е".
Теперь добавляем переменную edit control (value) "Z".

Пишем это: "E.SetWindowTextW(L"Введите фразу и нажмите <Зашифровать>:");" и это: "SetWindowTextW(L"Программа шифрования");"  в блок DoDataExchange.

Для первой и второй кнопки выбираем - (Add Event Handler).

Код для первой кнопки(шифровки):


// TODO: Add your control notification handler code here
UpdateData(true);
ms = Z;
UpdateData(false);
//переносим данные из планшетки в переменую
shf = "\tТаблица кодирования:\n\n\t";
//записываем в переменную слова
n = ms.GetLength();
//считаем количество символов в переменной ms
t.Empty();
//опусташаем переменную "т"
A[0] = ' '; B[0] = 0;
A[65] = '.';  B[65] = 65;
//запысываем в переменные числа и знаки
for (k = 1; k < 65; k++)
{
A[k] = wchar_t(k + 1039);
B[k] = k;
}
//создаём счетчик и записываем для каждой переменной букву
j = 0;
for (k = 0; k < 8; k++)
{
for (i = 0; i < 8; i++)
{
shf += "\"";
shf += A[j];
shf += "\"=";
t.Format(L"%i\t", B[j]);
if ((B[j] >= 0) && (B[j] < 10))
{
t.Format(L"0%i\t", B[j]);
}
shf += t;
j++;
}
shf += "\n\t";
}
//блок по написанию нуля перед х; 0<=x<10
shf += "\"";
shf += A[64];
shf += "\"=";
t.Format(L"%i\t", B[j]);
shf += t;
j++;
shf += "\"";
shf += A[65];
shf += "\"=";
t.Format(L"%i\n\n\t", B[j]);
shf += t;


shf += "Результат шифрования: \n\t";

CString shf1;
shf1.Empty();

for (k = 0; k <n; k++)
{
for (i = 0; i < 66; i++)
{
if (ms[k] == A[i])
{
t.Format(L"%i", B[i]);
if ((B[i] >= 0)&&(B[i]<10))
{
t.Format(L"0%i", B[i]);
}
shf += t;
shf1 += t;

}
}
}



E.SetWindowTextW(shf);
//выводит на экран шифр
setlocale(LC_ALL, "Russian");
CStdioFile inf(L"D:\\TEMP\\data.txt", CFile::modeCreate | CFile::modeWrite);
inf.WriteString(shf1); // записать в файл
inf.Flush();
inf.Close();
//процедура, записывающая результат в data.txt


Код для второй кнопки(закрытия):

OnOK();

После этого компелируем программу.
И готово!

Комментариев нет:

Отправить комментарий