Атаки на системы защиты информации. Алгоритм очереди на основе структуры " Товар"

Автор работы: Пользователь скрыл имя, 01 Октября 2013 в 16:30, курсовая работа

Описание работы

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

Содержание работы

ВВЕДЕНИЕ 3
1. Теоретические основы 5
1.1 Атаки сети, виды и защита 5
1.1.1 Классификация 5
1.1.2 Почтовая бомбардировка 5
1.1.3 Атаки с подбором пароля 6
1.1.4 Вирусы, почтовые черви и "троянские кони" 7
1.1.5 Сетевая разведка 7
1.1.6 Сниффинг пакетов 8
1.1.7 IP-спуфинг 9
1.1.8 Атака на отказ в обслуживании 10
1.1.9 Атаки типа Man-in-the-Middle 12
1.1.10 Использование "дыр" и "багов" в ПО 12
2. Постановка задачи 14
3. Описание программы 15
3.1 Описание данных 15
4. Блок схема 17
5. Руководство пользователя 18
6. Тестирование программы 19
7. ЗАКЛЮЧЕНИЕ 21
8. Список используемой литературы 22

Файлы: 1 файл

Записка к курсовой.docx

— 1.99 Мб (Скачать файл)

27) void vivodFileStruct();

Функция vivodFileStruct обеспечивает вывод элементов очереди в файл.

 

4. Блок схема

 

5. Руководство пользователя

 

При запуске  программы появляется меню для выбора необходимых действий.

Выбираем  необходимое действие, например, заполнение очереди.

Указываем откуда заполнять.

После заполнения очереди можно вывести очередь  на экран.

Часть очереди  выведенной на экран.

Далее по желанию  используем другие пункты меню.

 

6. Тестирование программы

Содержание  файла структур.

Заполнение  массива структур из файла и вывод  на экран

Удаление  элемента массива и вывод массива  на экран

Сдвиг элементов  массива

Очистка очереди

Вывод количества элементов

 

7. ЗАКЛЮЧЕНИЕ

Тестирование  и отладка программы проводилась  на ЭВМ, управляемой  операционной системой Windows XP Professional. В процессе отладки были устранены мелкие ошибки и недочеты, возникшие в ходе разработки программы. Окончательное тестирование программы не выявило ошибок и недочетов. Данная программа не занимает большого объёма памяти. В ней были использованы наиболее эффективные методы разработки данного программного обеспечения.

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

 

 

8. Список используемой литературы

 

  1. Павловская Т.А. С/С++. Программирование на языке высокого уровня – СПб.: Питер, 2006. – 461 с.: ил.
  2. Павловская Т.А.,Щупак Ю.А. С/С++. Структурное программирование: Практикум – СПб.: Питер, 2002. – 240 с.: ил.
  3. Введение в язык С++, Б.Страустрап, 1995 г., электронный учебник.
  4. Шилдт. Справочник программиста С, С++,электронный учебник.

 

Приложение

Код программы

#include "stdafx.h"

#include <iostream>

#include <cmath>

#include <fstream>

#include <string>

#include <Windows.h>

using namespace std;

 

struct tovarStruct

{

    int nomer;

    char naim[10];

    char edizm[10];

    int kolvo;

    int cena;

} massStruct[20];

 

struct tovarMass

{

    int nomer;

    char naim[10];

    char edizm[10];

    int kolvo;

    int cena;

 int nextElement;

} massChain[20];

 

void vvodMass();

void consolVvodMass();

void vivodFileMass();

void vivodEkranMass();

void delElem();

void clean();

void vivodElem();

void vivodColMass();

void vivodColStruct();

void sdvig();

void sdvigMass();

void sdvigStruct();

void FromFileMass();

void FromFileStruct();

void BezvDelMass();

void BezvDelStruct();

void DelInFileMass();

void DelInFileStruct();

void BezvCleanMass();

void BezvCleanStruct();

void CleanInFileMass();

void CleanInFileStruct();

void chooseMethod();

void FromFileChain();

void consolVvodStruct();

void vivodEkranStruct();

void vivodFileStruct();

 

const int n = 20;

 

bool choise;

 

void main()

{

 setlocale(LC_ALL,"Russian");

 char deistv;

 

 while (true)

{

  system("cls"); 

  cout<<"\n";

  cout<<"                 |-----|---------------------------------------|\n";

  cout<<"                 |  1  |Заполнение очереди:                    |\n";

  cout<<"                 |-----|---------------------------------------|\n";

  cout<<"                 |  2  |Удаление элемента из очереди;          |\n";

  cout<<"                 |-----|---------------------------------------|\n";

  cout<<"                 |  3  |Очистка очереди;                       |\n";

  cout<<"                 |-----|---------------------------------------|\n";

  cout<<"                 |  4  |Вывод элементов содержащихся в очереди;|\n";

  cout<<"                 |-----|---------------------------------------|\n";

  cout<<"                 |  5  |Вывод количества элементов в очереди;  |\n";

  cout<<"                 |-----|---------------------------------------|\n";

  cout<<"                 |  6  |Сдвиг элементов очереди к началу;      |\n";

  cout<<"                 |-----|---------------------------------------|\n";

  cout<<"                 |  9  |Какой тип очереди                      |\n";

  cout<<"                 |-----|---------------------------------------|\n";

  cout<<"                 |  0  |Выход;                                 |\n";

  cout<<"                 |-----|---------------------------------------|\n";

  cout<<"\n";

  cin>>deistv;

  switch(deistv)

  {

  case '1': vvodMass();break;

case '2': delElem();break;

case '3': clean(); break;

case '4': vivodElem();break;

case '5': vivodColMass();break;

case '6': sdvig();break;

case '9': chooseMethod(); break;

case '0': exit(0);

default : cout <<"\nНеверный ввод, повторите \n";

system ("pause");

  }

}

 

}

//выбор статического  или динамического варианта

void chooseMethod()

{

 

 char vibor;

 cout<< " y -- статический \n";

 cout<< " n -- динамический \n";

 cin>>vibor;

 switch(vibor)

{

  case 'y': choise = true; break;

  default: choise = false; break;

}

}

//выбор ввода: с консоли/из файла

void vvodMass()

{

 char vibor;

 cout << " 1 - с консоли \n";

 cout << " 2 - из файла \n" ;

 cin >> vibor;

 switch(vibor)

{

  case '1':

   if (choise)

   {

    consolVvodMass();

    break;

   }

   else

   {

    consolVvodStruct();

   }

   break;

  case '2':

   if (choise)

   {

    FromFileMass();

    break;

   }

   else

   {

    FromFileStruct();

   }

   break;

}

}

//ввод массива с консоли

void consolVvodMass()

int i=0;

    for(int i=0;i<20;i++)

    {

        cout<<"Введите номер: ";cin>>massStruct[i].nomer;

        cout<<"Введите наименование: ";cin>>massStruct[i].naim;

        cout<<"Введите единици измерения: ";cin>>massStruct[i].edizm;

        cout<<"Введите количество: ";cin>>massStruct[i].kolvo;

        cout<<"Введите цену: ";cin>>massStruct[i].cena;

        cout<<endl;

    }

}

//ввод очереди  с консоли

void consolVvodStruct()

{

 

    for(int i = 0; i < 20; i++)

    {

  cout<<"Введите номер: "; cin >> massChain[i].nomer;

        cout<<"Введите наименование: "; cin >> massChain[i].naim;

        cout<<"Введите единици измерения: "; cin >> massChain[i].edizm;

        cout<<"Введите количество: "; cin >> massChain[i].kolvo;

        cout<<"Введите цену: "; cin >> massChain[i].cena;

        cout<<endl;

  if (i == 19)

  {

   massChain[i].nextElement = 0;

  }

  else

  {

   massChain[i].nextElement = i + 1;

  }

    }

}

//ввод массива из файла

void FromFileMass()

{  

int i = 0;

ifstream myfile;

myfile.open("d:\\Tovar.txt");

while (!myfile.eof())

{

myfile >> massStruct[i].nomer;  

myfile >> massStruct[i].naim;

myfile >> massStruct[i].edizm;

myfile >> massStruct[i].kolvo;

myfile >> massStruct[i].cena;

i++;

}

myfile.close();   

}

//ввод очереди из файла

void FromFileStruct()

{  

int i =0;

ifstream myfile;

myfile.open("d:\\Tovar.txt");

while (!myfile.eof())

{

myfile >> massChain[i].nomer;  

myfile >> massChain[i].naim;

myfile >> massChain[i].edizm;

myfile >> massChain[i].kolvo;

myfile >> massChain[i].cena;

massChain[i].nextElement = i + 1;

i++;

}

myfile.close();   

}

//вывод элементов массива

void vivodElem()

{

char VibViv;

cout<< "Выберите куда выводить элементы \n";

cout<< "1 - на экран \n";

cout<< "2 - в файл \n";

cin>>VibViv;

switch(VibViv)

{

case '1':

if (choise)

{

vivodEkranMass();

break;

}

else

{

vivodEkranStruct();

}

break;

 

case '2':

if (choise)

{

vivodFileMass();

break;

}

else

{

vivodFileStruct();

}

break;

}

}

//вывод элементов  массива на экран

void vivodEkranMass()

{

cout<<"Список товара:\n";

for(int i = 0; i < 20; i++)

    {

      cout<<"Номер товара:     |" << massStruct[i].nomer << ";\n";

      cout<<"Наименование:     |" << massStruct[i].naim << ";\n";

      cout<<"Еденицы измерения:|" << massStruct[i].edizm << ";\n";

      cout<<"Количество:       |" << massStruct[i].kolvo << ";\n";

      cout<<"Цена:             |" << massStruct[i].cena << ";\n";

      cout<<endl;

    }

system("pause");

}

//вывод элементов  очереди на экран

void vivodEkranStruct()

{

cout<<"Список товара:\n";

int next = 1;

tovarMass tmpStruct;

for(int i = 0; i < 20; i++)

{

if (massChain[i].nextElement = next)

{

tmpStruct = massChain[i];

cout<<"Номер товара:     |" << tmpStruct.nomer << ";\n";

cout<<"Наименование:     |" << tmpStruct.naim << ";\n";

cout<<"Еденицы измерения:|" << tmpStruct.edizm << ";\n";

cout<<"Количество:       |" << tmpStruct.kolvo << ";\n";

cout<<"Цена:             |" << tmpStruct.cena << ";\n";

cout<<endl;

next = tmpStruct.nextElement;

 

}

}

system("pause");

}

//вывод элементов  массива в файл

void vivodFileMass()

{

FILE *f;

f=fopen("TovarOutMass.txt","w");  

for (int i = 0; i < 20; i++)

    {

fprintf(f,"%c Номер товара:     |"); fprintf(f,"%i",massStruct[i].nomer);

fprintf(f,"\n");

fprintf(f,"%c Наименование:     |"); fputs(massStruct[i].naim,f);

fprintf(f,"\n ");

fprintf(f,"%c Еденицы измерения:|"); fputs(massStruct[i].edizm,f);

fprintf(f,"\n ");

fprintf(f,"%c Количество:       |"); fprintf(f,"%i",massStruct[i].kolvo);

fprintf(f,"\n ");

fprintf(f,"%c Цена:             |"); fprintf(f,"%i",massStruct[i].cena);

fprintf(f,"\n ");

fprintf(f,"\n ");

    }

fclose(f);

}

//вывод элементов  очереди в файл

void vivodFileStruct()

{

 

FILE *f;

f=fopen("TovarOutStruct.txt","w");  

int next = 1;

tovarMass tmpStruct;

for(int i = 0; i < 20; i++)

  {

if (massChain[i].nextElement = next)

{

tmpStruct = massChain[i];

 

fprintf(f,"%c Номер товара:     |"); fprintf(f,"%i",tmpStruct.nomer);

fprintf(f,"\n");

fprintf(f,"%c Наименование:     |"); fputs(tmpStruct.naim,f);

fprintf(f,"\n ");

fprintf(f,"%c Еденицы измерения:|"); fputs(tmpStruct.edizm,f);

fprintf(f,"\n ");

fprintf(f,"%c Количество:       |"); fprintf(f,"%i",tmpStruct.kolvo);

fprintf(f,"\n ");

fprintf(f,"%c Цена:             |"); fprintf(f,"%i",tmpStruct.cena);

fprintf(f,"\n ");

fprintf(f,"\n ");

next = tmpStruct.nextElement;

}

  }

fclose(f);

}

//удаление элементов

void delElem()

{

char VibDel;

cout<<"Удаление элемента из очереди:\n";

cout<< " 1 - Безвозвратно \n";

cout<< " 2 - С сохранением в файл \n" ;

cin>>VibDel;

switch(VibDel)

{

case '1':

if (choise)

{

BezvDelMass();

break;

}

else

{

BezvDelStruct();

}

break;

case '2':

if (choise)

{

DelInFileMass();

break;

}

else

{

DelInFileStruct();

}

}

}

//безвозвратное удаление элементов массива

void BezvDelMass()

{

int i;

cout<<"Введите номер элемента массива который хотите удалить: ";

cin>>i;

i=i-1;

 

massStruct[i].nomer=0;

    ZeroMemory(massStruct[i].naim, sizeof(massStruct[i].naim));

ZeroMemory(massStruct[i].edizm, sizeof(massStruct[i].edizm));

massStruct[i].kolvo=0;

    massStruct[i].cena=0;

}

//очереди

void BezvDelStruct()

{

int i;

cout<<"Введите номер структуры которую хотите удалить: ";

cin>>i;

i=i-1;

 

massChain[i].nomer=0;

    ZeroMemory(massChain[i].naim, sizeof(massChain[i].naim));

ZeroMemory(massChain[i].edizm, sizeof(massChain[i].edizm));

massChain[i].kolvo=0;

    massChain[i].cena=0;

 

}

//удаление элементов  массива с сохранением

void DelInFileMass()

{

int i;

cout<<"Введите номер элемента массива который хотите удалить: ";

cin>>i;

i=i-1;

FILE *f;

f=fopen("DelTovarOut.txt","w");  

fprintf(f,"%c Номер товара:     |"); fprintf(f,"%i",massStruct[i].nomer);

fprintf(f,"\n");

fprintf(f,"%c Наименование:     |"); fputs(massStruct[i].naim,f);

fprintf(f,"\n ");

fprintf(f,"%c Еденицы измерения:|"); fputs(massStruct[i].edizm,f);

fprintf(f,"\n ");

fprintf(f,"%c Количество:       |"); fprintf(f,"%i",massStruct[i].kolvo);

fprintf(f,"\n ");

fprintf(f,"%c Цена:             |"); fprintf(f,"%i",massStruct[i].cena);

fprintf(f,"\n ");

fprintf(f,"\n ");

fclose(f);

massStruct[i].nomer=0;

    ZeroMemory(massStruct[i].naim, sizeof(massStruct[i].naim));

ZeroMemory(massStruct[i].edizm, sizeof(massStruct[i].edizm));

massStruct[i].kolvo=0;

    massStruct[i].cena=0;

 

}

//очереди

void DelInFileStruct()

{

int i;

cout<<"Введите номер структуры которую хотите удалить: ";

cin>>i;

i=i-1;

FILE *f;

f=fopen("DelTovarOutStruct.txt","w");  

int next = 1;

tovarMass tmpStruct;

 

if (massChain[i].nextElement = next)

{

tmpStruct = massChain[i];

 

fprintf(f,"%c Номер товара:     |"); fprintf(f,"%i",tmpStruct.nomer);

fprintf(f,"\n");

fprintf(f,"%c Наименование:     |"); fputs(tmpStruct.naim,f);

fprintf(f,"\n ");

fprintf(f,"%c Еденицы измерения:|"); fputs(tmpStruct.edizm,f);

fprintf(f,"\n ");

fprintf(f,"%c Количество:       |"); fprintf(f,"%i",tmpStruct.kolvo);

fprintf(f,"\n ");

fprintf(f,"%c Цена:             |"); fprintf(f,"%i",tmpStruct.cena);

fprintf(f,"\n ");

fprintf(f,"\n ");

}

fclose(f);

massChain[i].nomer=0;

    ZeroMemory(massChain[i].naim, sizeof(massChain[i].naim));

ZeroMemory(massChain[i].edizm, sizeof(massChain[i].edizm));

massChain[i].kolvo=0;

    massChain[i].cena=0;

}

//очистка элементов

void clean()

{

char VibClean;

cout<<"Выберите вариант очистки очереди:\n";

cout<< " 1 - Безвозвратно \n";

cout<< " 2 - С сохранением в файл \n" ;

cin>>VibClean;

switch(VibClean)

{

case '1':

if (choise)

{

BezvCleanMass();

break;

}

else

{

BezvCleanStruct();

}

break;

case '2':

if (choise)

{

CleanInFileMass();

break;

}

else

{

CleanInFileStruct();

}

break;

}

}

//безвозвратная  очистка массива

void BezvCleanMass()

{

for(int i = 0; i < 20; i++)

    {

      cout<<"Номер товара:     |" << massStruct[i].nomer << ";\n";

      cout<<"Наименование:     |" << massStruct[i].naim << ";\n";

      cout<<"Еденицы измерения:|" << massStruct[i].edizm << ";\n";

      cout<<"Количество:       |" << massStruct[i].kolvo << ";\n";

      cout<<"Цена:             |" << massStruct[i].cena << ";\n";

      cout<<endl;

    }

system("pause");

Информация о работе Атаки на системы защиты информации. Алгоритм очереди на основе структуры " Товар"