Разработка шифровальной программы "Decoder"

Язык программирования высокого уровня C++. Цель и область применения программы "Decoder". Описание пользовательского интерфейса. Процесс создания матрицы, шифрования и дешифровки. Функциональное описание программного продукта, алгоритмы и методы решений.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 06.06.2014
Размер файла 2,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

ОГЛАВЛЕНИЕ

Введение

Язык высокого уровня «C++»

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

Назначение и область применения программного продукта

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

Описание алгоритмов и методов решения. Функциональное описание

Описание пользовательского интерфейса

Заключение

Приложение

ВВЕДЕНИЕ

Бурное развитие информационных технологий обусловило необходимость выработки новых подходов к решению проблем автоматизации деятельности различных организаций, служб, предприятий, а также безопасности информации. Работа многих организаций связана с передачей данных друг другу по различным сетям, где эта информация может быть перехвачена теми, кому она не предназначена.

Сейчас, в век компьютерных технологий, на смену неудобного прошлого пришли очень удобные, надёжные, быстродействующие компьютерные системы, но при этом часто возникают ситуации, когда трудно осуществить быстрый отбор нужной информации. Немаловажен вопрос надежности хранения и конфиденциальности различных сведений. Для решения таких задач используется специальное программное обеспечение, часто объединенное в крупные информационно-справочные системы.

В этих условиях особенно актуально встает вопрос шифрования данных.

Цель курсовой работы - разработка программы «Decoder» (с англ. decoder - шифровальщик), которая обеспечивает быстрое шифрование и дешифровку данных, минимальную нагрузку на операционную систему и локальную сеть организации, обладает удобным интерфейсом пользователя и имеет интуитивно-понятные связи между диалогами ввода информации.

В настоящее время существует большое количество способов создания программного обеспечения аналогичного «Decoder». Для решения поставленной задачи можно выделить такое программное средство как языки программирования.

ЯЗЫК ВЫСОКОГО УРОВНЯ «C++»

программа шифрование создание

C++ - универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей C++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, C++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.

Ключевым понятием C++ является класс. Класс - это тип, определяемый пользователем. Классы обеспечивают скрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. C++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, in line - подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В C++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем.

C++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из C++ программ можно использовать C библиотеки, и с C++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C.

ПОСТАНОВКА ЗАДАЧИ

Разработать программу на базе языка C++, для зашифровки и расшифровки текста по спирали, которая принимает текст в виде двумерной матрицы, и читает его по спирали, начиная с центра матрицы.

Программа содержит панель для выбора тип работы с программой.

v Quick text decoder- зашифровка и расшифровка текста, введенный пользователем во время работы. Quick text decoder содержит два текстового поля и кнопки зашифровки и расшифровки. На первом текстовом поле введется текст, пользователем для зашифровки или расшифровки, на втором текстовом поле выявится зашифрованный или расшифрованный текст программой.

v File decoder- зашифровка и расшифровка текстового файла указанным пользователем.File decoderсодержит одно текстовое поле для указания пути к текстовому файлу, а также две кнопки: кнопка зашифровки и расшифровки текста, содержащиеся в текстовом файле.

НАЗНАЧЕНИЕ И ОБЛАСТЬ ПРИМЕНЕНИЯ ПРОГРАММНОГО ПРОДУКТА

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

В программе «Decoder» использованы различные процедуры и функции, предназначенные для обработки и редактирования. В данной программе реализовано большое количество различных методов работы с информацией, использовано много компонентов, позволяющих качественно и быстро организовать удобную работу. Программа может служить наглядным пособием для показа работы этих процедур и функций.

Для использования программы необходимо иметь первоначальные навыки работы на компьютере и достаточно невысокие требования к компьютеру. Компьютер должен иметь минимальную конфигурацию:

- процессор Intel Celeron 300 и выше;

- свободное пространство на жестком диске 10 Mb;

- видеокарта встроенная;

- монитор;

- клавиатура;

- мышь.

ОПИСАНИЕ ПРОГРАММЫ

Запуск программы осуществляется следующим образом: необходимо открыть папку, содержащую данную игру, и найти исполняемый файл decoder.exe. На этом файле следует выполнить двойной щелчок левой клавишей манипулятора мышь.

После запуска программы на экран выводится основное окно IDD_DECODER_DIALOG (см.рис.1), на которой расположены следующие объекты:

1. Кнопки для выбора работы

2. Кнопка справки

3. Кнопка информации о программе

4. Кнопки главного окна “Закрыть” и “Свернуть”

Рис.1. Вид программы после запуска

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

Чтобы продолжать работу пользователь должен выбирать одну из типов работы, процесс осуществляется при нажатии один из кнопок, которые появятся в низу окна после запуска программы. (см.рис.2)

Рис.2. Кнопки для выбора типа

Если выбрано «Quick text decoder», то на окне появятся два текстовых поля и две кнопки.

Quick text decoder

Quick text decoder - зашифровка и расшифровка текста, введенный пользователем во время работы. На первом текстовом поле пользователь должен вводить текст, который пользователь хочет зашифровать или наоборот дешифровать (расшифровать). После ввода текста пользователю предстоит нажать на кнопку «ENCRYPT» которая написано зеленым цветом, если пользователь хочет зашифровать текст. А если наоборот он хочет расшифровать текст, то ему следует нажать на соседнюю кнопку, т.е. на кнопку с надписям «decipher» зеленого цвета (см. рис. 3).

Рис. 3. Кнопки для шифровки и дешифровки

Теперь подробно о процессе после нажатии на кнопку.

Процесс создания матрицы:

После нажатия на кнопку «ENCRYPT» или «decipher» программа в первый очередь очищает память второго текстового поля. Затем она создает две текстовых переменных и одна из них заполняется текстом первого текстового поля, который введен пользователем. Очередной шаг программы это определение длины текста, по точнее она начинает посчитать количество символов, который содержит текст, введенный пользователем. Это нужно для заполнения матрицы. Если количество символов равно нулю, то программа сразу переходит в конец, т.е. она прекращает работу. В другом случае, если текстовое поле не пусто, то она находит делителей количество символов. Программа начинает проверять количество делителей, если количество делителей простое число (простое число - это число который имеет только два делителя, 1 и само это число), то текст шифруется в наоборот.

Например, слово «decoder» становится «redoced» ,и очищается первое текстовое поле, а зашифрованный текст выявится во втором текстовом поле и завершает процесс шифрования. Но если количество делителей непростое число, то следующим шагом программы будет определение четность или нечетность количество делителей.

Логика, логика, логика…Следующая действие, если количество делителей четное число, то матрица образуется по следующей формуле:

a= m [l/2]

b= m [l/2-1]

a - количество строк

b - количество столбцов

m - это ячейка, который расположено делитель количества символов в тексте

l - это количество делителей

Например, количество символов в тексте 15, согласно вышесказанным программа находит делителей.

15 = { a [0]=1; a[1]=3; a[2]=5; a[3]=15 }

Помните! Нумерация матрицы начинается с нуля!

Количество делителей равно на 3.

Теперь по придуманной формуле создается вот такая матрица:

Так как a и bсозданы с помощи оператораint, принимают целых чисел.

a = m [4/2] = 5

b = m [4/2-1]

x[a*b]

X[0]

X[1]

X[2]

X[3]

X[4]

X[5]

X[6]

X[7]

X[8]

X[9]

X[10]

X[11]

X[12]

X[13]

X[14]

Если количество нечетное число, то формула немножко по-другому:

a = b = m [(l - 1) /2]

Например, количество символов в тексте 9, и в этом случае программа находит делителей.

9 = {a [0]=1; a[1]=3; a[2]=9}

a = b = m [(3 - 1) /2] = 3

x[a*b]

X[0]

X[1]

X[2]

X[3]

X[4]

X[5]

X[6]

X[7]

X[8]

После создания матрицы она заполняется числами от 1 до количества символов в тексте

Если количество делителей четное:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Если количество делителей нечетное:

1

2

3

4

5

6

7

8

9

Процесс шифрования и дешифрования:

Следующим действием программы будет расположение матрицы по спирали.

Есть некий цикл, который располагает матрицу по спирали:

int beg1=0,end1=a-1;

int beg2=0,end2=b-1;

int count=a*b;

while(count)

{

for(inti=beg2;i<=end2&&count;i++)

*(pr+beg1*b+i)=count--;

beg1++;

for(inti=beg1;i<=end1&&count;i++)

*(pr+i*b+end2)=count--;

end2--;

for(inti=end2;i>=beg2&&count;i--)

*(pr+end1*b+i)=count--;

end1--;

for(inti=end1;i>=beg1&&count;i--)

*(pr+i*b+beg2)=count--;

beg2++;

}

В результате получим вот такую матрицу:

Если количество делителей четное:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

15

14

13

12

11

4

3

2

1

10

5

6

7

8

9

Если количество делителей нечетное:

1

2

3

4

5

6

7

8

9

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

9

8

7

2

1

6

3

4

5

После расположения матрицы программа начинает зашифровать или расшифровать самого текста, который введен пользователем. Процесс происходит следующим образом: Программа начинает сравнить изначально созданную матрицу с переставленной матрицей.

Если количество делителей четное:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

15

14

13

12

11

4

3

2

1

10

5

6

7

8

9

«Шифровальщик!» - !кфииршщо"ьвал"

Если количество делителей нечетное:

1

2

3

4

5

6

7

8

9

9

8

7

2

1

6

3

4

5

Программа - ммрПаогра

В конце процесса очищается первое текстовое поле и на втором текстовом поле появится, нажато кнопка «ENCRYPT», то зашифрованный текст, а если «decipher» расшифрованный текст.

File decoder

File decoder - зашифровка и расшифровка текстового файла указанным пользователем, т.е. пользователь не должен вводит текст, вместо этого он должен указать путь к файлу (учитывается имя самого файла и его расширение)

Например, текстовый файл содержится на рабочем столе компьютера, название текстового файла «Курсовая работа»:

C:\Курсовая работа.txt

«File decoder» содержит две кнопки, как и в «Quick text decoder», кнопка «ENCRYPT»,для шифрования текстового файла, а также кнопка «decipher», для дешифрования.

Процесс происходит следующим образом:

После нажатия программа начинает импортировать текст из файла, она проверяет каждый, пока символов в файле не останутся. Работа этой кнопки такая же как и в«Quick text decoder», различие в том, что эта кнопка импортирует текст с файла и обратно сохраняет в новый текстовый файл в зашифрованным или наоборот расшифрованным виде.

Сохранение файла с обработанным текстом происходить так:

Например, название файла «Курсовая работа», то название нового файла с зашифрованным текстом будет «Курсовая работа(1)», а нового файла с расшифрованным текстом будет «Курсовая работа(2)

ОПИСАНИЕ АЛГОРИТМОВ И МЕТОДОВ РЕШЕНИЯ. ФУНКЦИОНАЛЬНОЕ ОПИСАНИЕ

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

ОПИСАНИЕ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА

Работоспособность программы очень важная часть конечно. Но мы признать, что человечество легко обманывается на красоту, исходя, от этого программист должен думать не только о процессе работы, но и о пользовательском интерфейсе. Простота и красивость интерфейса легко привлекает к внимание человека. Хотя программа, созданная мной, считается очень простой, но в ней вложено многое чего.

Программа «Decoder» содержит свой пользовательский интерфейс, с красивым оформлением.

Рис. 4. Процесс создания интерфейса

В процессе создании интерфейс программы изменился три раза, и думаю интерфейс красивее, чем раньше.

Рис. 5. Первый интерфейс программы

Рис. 6. Второе изменение интерфейса. Добавлено чтение файла.

Третье стадия изменение интерфейса стало окончательным. Интерфейс достаточно простой, максимальный размер окна 410x590 pix. Начальный вид пользовательского интерфейса. Имеет четыре кнопки, верхние две кнопки имеется во всех частях программы. А нижние две кнопки для выбора тип работы с программой.

Рис. 7. Интерфейс при запуске программы

Рис. 8. Интерфейс «File decoder»

Рис. 9. Интерфейс «Quick text decoder»

ЗАКЛЮЧЕНИЕ

Главной задачей в данном проекте является осуществление разработки программы, произвести проверку её работоспособности, пользуясь различными методами тестирования, а также подготовить комплект программной и эксплуатационной документации на программу. Эта документация отображает все сведения о разработанной программе, а также все сведения, необходимые для работы с программой и ее обслуживания. Процесс составления программной и эксплуатационной документации является очень трудоемким и требует большого количества времени на ее оформление. Используя при этом аппаратные средства, которые позволяют без особых проблем применять данный программный продукт. Воспользоваться всеми его возможностями и функциями, которые могут понадобиться, и которыми можно было бы воспользоваться в ходе «трудового процесса».

В ходе курсового проекта были закреплены теоретические знания, полученные по предмету «Программирование на языке высокого уровня» и приобретены практические навыки по составлению и оформлению комплекта программной и эксплуатационной документации на программное изделие.

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

1. C/C++ и MS Visual C++ 2010 для начинающих. - СПб.: БХВ-Петербург, 2011.-736 с.

2. Прохоренко Н.А.,2010 г., unicross@mail.ru

3. C++ МАСТЕР-КЛАСС, 85 НЕТРИВИАЛЬНЫХ ПРОЕКТОВ, РЕШЕНИЙ И ЗАДАЧ. -СПб.: Наука и Техника, 2007.-272 с.

ПРИЛОЖЕНИЕ

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {

pictureBox1->ImageLocation="button 1.png";

pictureBox2->ImageLocation="button 2.png";

pictureBox3->ImageLocation="textbox.png";

pictureBox3->Visible=false;

textBox1->Visible=false;

textBox2->Visible=false;

button1->Hide();

button2->Hide();

textBox3->Visible=false;

button3->Hide();

button4->Hide();

button5->Hide();

label1->Visible=false;

pictureBox4->ImageLocation="question.png";

pictureBox5->ImageLocation="about.png";

pictureBox6->ImageLocation="aboutit.png";

pictureBox6->Visible=false;

pictureBox7->ImageLocation="instruction.png";

pictureBox7->Visible=false;

label2->Visible=false;

}

private: System::Void pictureBox1_Click(System::Object^ sender, System::EventArgs^ e) {

textBox1->Clear();

textBox2->Clear();

pictureBox6->Visible=false;

pictureBox1->Visible=false;

pictureBox2->Visible=false;

pictureBox3->Visible=true;

textBox1->Visible=true;

textBox2->Visible=true;

button1->Show();

button2->Show();

button4->Show();

label1->Visible=true;

label1->Text="Quick text decoder";

}

private: System::Void pictureBox2_Click(System::Object^ sender, System::EventArgs^ e) {

pictureBox6->Visible=false;

pictureBox1->Visible=false;

pictureBox2->Visible=false;

textBox3->Visible=true;

//button1->Show();

//button2->Show();

button3->Show();

button4->Show();

button5->Show();

label1->Visible=true;

label1->Text="File decoder";

label2->Visible=true;

}

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

pictureBox6->Visible=false;

textBox2->Clear();

String^x,^y="";

x=textBox1->Text;

int k=x->Length;

int *m,*pr,*or;

int l=0;

if(x==""){

textBox2->Text="";goto v;

}

inta,b;//razmermassiva

m=newint[k];

for(inti=1;i<=k;i++)

{

if(k%i==0)

{

m[l]=i;l++;//deliteli.dividers

}

}

if(l==2)

{

for(inti=k-1;i>=0;i--)

{

textBox2->Text+=x->Substring(i,1);

}goto v;

}

else

if(l%2==0)

{a=m[l/2];b=m[l/2-1];}

else {

a=m[(l-1)/2];b=m[(l-1)/2];

}

//----------------------------------------------------

or=newint[a*b];int h=0;pr=newint[a*b];

for(inti=0;i<a;i++)

{

for(int j=0;j<b;j++)

{

*(or+i*b+j)=h;h++;

}

}

int beg1=0,end1=a-1;

int beg2=0,end2=b-1;

int count=a*b;

while(count)

{

for(inti=beg2;i<=end2&&count;i++)

*(pr+beg1*b+i)=count--;

beg1++;

for(inti=beg1;i<=end1&&count;i++)

*(pr+i*b+end2)=count--;

end2--;

for(inti=end2;i>=beg2&&count;i--)

*(pr+end1*b+i)=count--;

end1--;

for(inti=end1;i>=beg1&&count;i--)

*(pr+i*b+beg2)=count--;

beg2++;

}

for(inti=1;i<=k;i++)

{

for(int j=1;j<=k;j++)

{

if(or[j]==pr[i])

{

y+=x->Substring(j-1,1);

}

}

}

textBox2->Text=y;

v:; textBox1->Clear();

}

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {

pictureBox6->Visible=false;

textBox2->Clear();

String^x,^y="",^c;

c=textBox1->Text;

int k=c->Length;

int *m,*pr,*or;

int l=0;

if(c=="")

{textBox2->Text="";goto w;}

inta,b;//razmermassiva

m=newint[k];

for(inti=1;i<=k;i++)

{

if(k%i==0)

{

m[l]=i;l++;//deliteli.dividers

}

}

if(l==2)

{

for(inti=k-1;i>=0;i--)

{

textBox2->Text+=c->Substring(i,1);

}goto w;

}

else

if(l%2==0)

{a=m[l/2];b=m[l/2-1];}

else {

a=m[(l-1)/2];b=m[(l-1)/2];

}

//----------------------------------------------------

or=newint[a*b];int h=0;pr=newint[a*b];

for(inti=0;i<a;i++)

{

for(int j=0;j<b;j++)

{

*(or+i*b+j)=h;h++;

}

}

int beg1=0,end1=a-1;

int beg2=0,end2=b-1;

int count=a*b;

while(count)

{

for(inti=beg2;i<=end2&&count;i++)

*(pr+beg1*b+i)=count--;

beg1++;

for(inti=beg1;i<=end1&&count;i++)

*(pr+i*b+end2)=count--;

end2--;

for(inti=end2;i>=beg2&&count;i--)

*(pr+end1*b+i)=count--;

end1--;

for(inti=end1;i>=beg1&&count;i--)

*(pr+i*b+beg2)=count--;

beg2++;

}

for(inti=1;i<=k;i++)

{

for(int j=1;j<=k;j++)

{

if(or[i]==pr[j])

{

y+=c->Substring(j-1,1);

}

}

}

textBox2->Text=y;

w:;textBox1->Clear();

}

private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {

pictureBox1->ImageLocation="button 1.png";

pictureBox2->ImageLocation="button 2.png";

pictureBox3->ImageLocation="textbox.png";

pictureBox3->Visible=false;

textBox1->Visible=false;

textBox2->Visible=false;

button1->Hide();

button2->Hide();

button4->Hide();

textBox3->Visible=false;

button3->Hide();

pictureBox1->Visible=true;

pictureBox2->Visible=true;

label1->Text="none";

label1->Visible=false;

pictureBox6->Visible=false;

pictureBox7->Visible=false;

button5->Hide();

label2->Visible=false;

}

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {

pictureBox6->Visible=false;

if(textBox3->Text=="")

{goto k;}

String^x, ^as="";

String ^g=textBox3->Text;

String^gr=g->Substring(0,(g->Length)-4)+"(1).txt";

StreamReader^din=File::OpenText(g);

while((x=din->ReadLine())!=nullptr){

as=as+x;

}

din->Close();

//--------------------------------------

String^y="";

int k=as->Length;

int *m,*pr,*or;

int l=0;

f(as==""){

textBox2->Text="";goto v;

}

inta,b;//razmermassiva

m=newint[k];

for(inti=1;i<=k;i++)

{

if(k%i==0)

{

m[l]=i;l++;//deliteli.dividers

}

}

if(l==2)

{

for(inti=k-1;i>=0;i--)

{

textBox2->Text+=as->Substring(i,1);

}goto v;

}

else

if(l%2==0)

{a=m[l/2];b=m[l/2-1];}

else {

a=m[(l-1)/2];b=m[(l-1)/2];

}

//----------------------------------------------------

or=newint[a*b];int h=0;pr=newint[a*b];

for(inti=0;i<a;i++)

{

for(int j=0;j<b;j++)

{

*(or+i*b+j)=h;h++;

}

}

int beg1=0,end1=a-1;

int beg2=0,end2=b-1;

int count=a*b;

while(count)

{

for(inti=beg2;i<=end2&&count;i++)

*(pr+beg1*b+i)=count--;

beg1++;

for(inti=beg1;i<=end1&&count;i++)

*(pr+i*b+end2)=count--;

end2--;

for(inti=end2;i>=beg2&&count;i--)

*(pr+end1*b+i)=count--;

end1--;

for(inti=end1;i>=beg1&&count;i--)

*(pr+i*b+beg2)=count--;

beg2++;

}

for(inti=1;i<=k;i++)

{

for(int j=1;j<=k;j++)

{

if(or[j]==pr[i])

{

y+=as->Substring(j-1,1);

}

}

}

v:;

//-------------------------------------

try{

din=File::OpenText(gr);

din->Close();

}

catch(...){

StreamWriter^ wr=gcnewStreamWriter(gr);

wr->WriteLine(y);

wr->Close();

}

MessageBox::Show(gr+"\n competed!");

k:;}

private: System::Void pictureBox5_Click(System::Object^ sender, System::EventArgs^ e) {

pictureBox7->Visible=false;

if(pictureBox6->Visible==false)

{

pictureBox6->Visible=true;

}

else{pictureBox6->Visible=false;}

if(label1->Text=="File decoder")

{

label2->Visible=true;

button5->Show();}

}

private: System::Void pictureBox4_Click(System::Object^ sender, System::EventArgs^ e) {

pictureBox6->Visible=false;

if(pictureBox7->Visible==false)

{

pictureBox7->Visible=true;

label2->Visible=false;

button5->Hide();

}

else{

pictureBox7->Visible=false;

if(label1->Text=="File decoder")

{

label2->Visible=true;

button5->Show();}

}

}

private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) {

pictureBox6->Visible=false;

if(textBox3->Text=="")

{goto k;}

String^x, ^as="";

String ^g=textBox3->Text;

String^gr=g->Substring(0,(g->Length)-4)+"(2).txt";

StreamReader^din=File::OpenText(g);

while((x=din->ReadLine())!=nullptr){

as=as+x;

}

din->Close();

//--------------------------------------

String^y="";

int k=as->Length;

int *m,*pr,*or;

int l=0;

if(as=="")

{textBox2->Text="";goto w;}

inta,b;//razmermassiva

m=newint[k];

for(inti=1;i<=k;i++)

{

if(k%i==0)

{

m[l]=i;l++;//deliteli.dividers

}

}

if(l==2)

{

for(inti=k-1;i>=0;i--)

{

textBox2->Text+=as->Substring(i,1);

}goto w;

}

else

if(l%2==0)

{a=m[l/2];b=m[l/2-1];}

else {

a=m[(l-1)/2];b=m[(l-1)/2];

}

//----------------------------------------------------

or=newint[a*b];int h=0;pr=newint[a*b];

for(inti=0;i<a;i++)

{

for(int j=0;j<b;j++)

{

*(or+i*b+j)=h;h++;

}

}

int beg1=0,end1=a-1;

int beg2=0,end2=b-1;

int count=a*b;

while(count)

{

for(inti=beg2;i<=end2&&count;i++)

*(pr+beg1*b+i)=count--;

beg1++;

for(inti=beg1;i<=end1&&count;i++)

*(pr+i*b+end2)=count--;

end2--;

for(inti=end2;i>=beg2&&count;i--)

*(pr+end1*b+i)=count--;

end1--;

for(inti=end1;i>=beg1&&count;i--)

*(pr+i*b+beg2)=count--;

beg2++;

}

for(inti=1;i<=k;i++)

{

for(int j=1;j<=k;j++)

{

if(or[i]==pr[j])

{

y+=as->Substring(j-1,1);

}

}

}

w:;

//-------------------------------------

try{

din=File::OpenText(gr);

din->Close();

}

catch(...){

StreamWriter^ wr=gcnewStreamWriter(gr);

wr->WriteLine(y);

wr->Close();

}

MessageBox::Show(gr+"\n completed!");

k:;

}

Размещено на Allbest.ru


Подобные документы

  • Разработка программы создания заметок в любом месте компьютера. Выбор технологии, языка и среды разработки приложения. Описание основных алгоритмов работы программного обеспечения. Проектирование пользовательского интерфейса. Выбор стратегии тестирования.

    отчет по практике [700,5 K], добавлен 24.11.2014

  • Область применения системы учета перевозок в карьере горно-обогатительного комбината. Функциональное назначение, описание логической структуры программы, пользовательского интерфейса, языков программирования, используемых при разработке программы.

    дипломная работа [3,0 M], добавлен 21.12.2016

  • Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.

    курсовая работа [2,7 M], добавлен 21.02.2011

  • Сравнительный анализ наиболее распространенных языков, их классификация, описание достоинств и недостатков. Использование процедур, функции и подпрограмм в языках программирования высокого уровня. Разработка и реализация программы "Бортовой компьютер".

    курсовая работа [329,8 K], добавлен 22.06.2014

  • Составление математической модели расписания в школе. Назначение и область применения программного продукта. Обоснование выбора инструментальных средств. Описание разработки, алгоритмов и методов решения, форматов данных и пользовательского интерфейса.

    курсовая работа [1,6 M], добавлен 18.01.2012

  • Язык программирования Pascal и его турбооболочка. Аналитический обзор игрового программного обеспечения. Функции модуля Crt. Постановка задачи создания несложной игровой программы "Турбозмей", алгоритм реализации и описание пользовательского интерфейса.

    курсовая работа [100,4 K], добавлен 15.05.2014

  • Применение программного обеспечения для разработки игры "Быки и коровы". Описание алгоритма и интерфейса пользователя программы. Назначение и область применения и описание возможностей программы. Рассмотрение списка сообщений об ошибках программы.

    курсовая работа [799,2 K], добавлен 26.04.2021

  • Общие сведения о миномётах, их конструкция, боевые качества и классификация. Структурное построение обучающих программ, их алгоритмы. Жизненные циклы программного продукта. Реализация функционирования программы и разработка пользовательского интерфейса.

    курсовая работа [1,2 M], добавлен 06.11.2012

  • Схема работы и требования к программам шифрования и дешифрования. Алгоритмы и тексты программы шифрования и программы дешифрования, выполненные на языке программирования C/C++. Содержание файла с исходным текстом, с шифротекстом, с дешифрованным текстом.

    курсовая работа [24,7 K], добавлен 20.10.2014

  • Постановка задачи и математическое описание ее решения. Назначение программного обеспечения. Описание принятых идентификаторов. Выбор языка программирования и написание программы на входном языке. Методика отладки программы и проведение ее тестирования.

    курсовая работа [96,1 K], добавлен 25.06.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.