Автор работы: Пользователь скрыл имя, 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
27) void vivodFileStruct();
Функция vivodFileStruct обеспечивает вывод элементов очереди в файл.
4. Блок схема
5. Руководство пользователя
При запуске программы появляется меню для выбора необходимых действий.
Выбираем необходимое действие, например, заполнение очереди.
Указываем откуда заполнять.
После заполнения очереди можно вывести очередь на экран.
Часть очереди выведенной на экран.
Далее по желанию используем другие пункты меню.
6. Тестирование программы
Содержание файла структур.
Заполнение массива структур из файла и вывод на экран
Удаление элемента массива и вывод массива на экран
Сдвиг элементов массива
Очистка очереди
Вывод количества элементов
7. ЗАКЛЮЧЕНИЕ
8. Список используемой литературы
Приложение
Код программы
#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<<"
|-----|-----------------------
cout<<" | 1 |Заполнение очереди: |\n";
cout<<"
|-----|-----------------------
cout<<" | 2 |Удаление элемента из очереди; |\n";
cout<<"
|-----|-----------------------
cout<<" | 3 |Очистка очереди; |\n";
cout<<"
|-----|-----------------------
cout<<" | 4 |Вывод элементов содержащихся в очереди;|\n";
cout<<"
|-----|-----------------------
cout<<" | 5 |Вывод количества элементов в очереди; |\n";
cout<<"
|-----|-----------------------
cout<<" | 6 |Сдвиг элементов очереди к началу; |\n";
cout<<"
|-----|-----------------------
cout<<" | 9 |Какой тип очереди |\n";
cout<<"
|-----|-----------------------
cout<<"
| 0 |Выход;
cout<<"
|-----|-----------------------
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].
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].
fprintf(f,"\n ");
fprintf(f,"%c Цена:
|"); fprintf(f,"%i",massStruct[i].
fprintf(f,"\n ");
fprintf(f,"\n ");
}
fclose(f);
}
//вывод элементов очереди в файл
void vivodFileStruct()
{
FILE *f;
f=fopen("TovarOutStruct.txt","
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.
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.
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].
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].
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].
fprintf(f,"\n ");
fprintf(f,"%c Цена:
|"); fprintf(f,"%i",massStruct[i].
fprintf(f,"\n ");
fprintf(f,"\n ");
fclose(f);
massStruct[i].nomer=0;
ZeroMemory(massStruct[i].naim, sizeof(massStruct[i].naim));
ZeroMemory(massStruct[i].
massStruct[i].kolvo=0;
massStruct[i].cena=0;
}
//очереди
void DelInFileStruct()
{
int i;
cout<<"Введите номер структуры которую хотите удалить: ";
cin>>i;
i=i-1;
FILE *f;
f=fopen("DelTovarOutStruct.
int next = 1;
tovarMass tmpStruct;
if (massChain[i].nextElement = next)
{
tmpStruct = massChain[i];
fprintf(f,"%c Номер товара:
|"); fprintf(f,"%i",tmpStruct.
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.
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");