Разработка базы данных "Рецептуар кушаний" на языке программирования С++

Применение целых типов данных в массивах. Обоснование целесообразности использования операторов объединения и элементов структуры полей битов. Качество обработки данных составных объектов. Алгоритмизация программного обеспечения и порядок работы с ним.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 14.05.2018
Размер файла 643,5 K

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

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

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

Содержание

  • Введение
  • 1. Теоретическая часть
  • 1.1 Проанализировать применение целых типов данных в массивах
  • 1.2 Определить качество обработки данных составных объектов
  • 1.3 Обосновать целесообразность применения объединения (смеси)
  • 1.4 Проанализировать применение элементов структуры полей битов
  • 2. Практическая часть
  • 2.1 Анализ объекта исследования
  • 2.2 Анализ задания разработки структуры программы
  • 2.3 Алгоритмизация программы
  • 2.4 Порядок работы с разработанным программным обеспечением
  • 3. Охрана труда
  • 3.1 Организация охраны труда
  • 3.2 Нормативно-техническая документация по техники безопасности при работе с вычислительной техникой
  • 3.3 Расчет эффективности акустической обработки помещения
  • Заключение
  • Список использованной литературы
  • Приложения

Введение

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

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

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

Темой моего курсового проекта является разработка базы данных "Рецептуар кушаний".

Целью курсового проектирования является разработка базы данных на языке программирования С++. Разработанная программа должна будет уметь выполнять следующие функции:

- добавление рецепта;

- вывод рецептов на экран;

- поиск рецептов;

- выполнять сортировку;

- удаление рецепта;

- записать рецепты в текстовый файл;

- считывание рецептов из текстового файла.

1. Теоретическая часть

1.1 Проанализировать применение целых типов данных в массивах

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

int first;

int second;

int third;

int fourth;

int fifth;

В данном случае приходится объявлять пять отдельных переменных целочисленного типа. А если массив целых чисел, то это будет выглядеть так:

int IntArray [5]= {0}; // Инициализация всех элементов значением 0.

В коде выше был объявлен массив типа int, состоящий из пяти элементов и всем элементам было присвоено значение 0. Такой массив является статическим, поскольку количество содержащихся в них элементов, а также размер его области в памяти остаются неизменными во время компиляции и выполнения программы.

Можно также объявить массив с последующей инициализацией содержимого всех его элементов значениями:

Int Nubmers [5]= {5, 7, 2, 45, 44};

Для отдельной инициализации нужного элемента используется следующий синтаксис:

Numbers [3]= 5;

Numbers [2]= 2;

Numbers [0]= 56;

Numbers [1]= Numbers [2]; // Копирование значения

Далее приведён код программы, в которой пользователь вводит значения для элементов массива, после чего выводится сумма данных элементов. Код программы:

#include <iostream>

#include <string>

using namespace std;

int main()

{

int intArray [4];

cout " "Введите значения для элементов массива: " " endl;

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

{

cout " "Значение элемента #" " i " ": ";

cin " intArray [i];

}

int summ = 0;

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

{

summ += intArray [i];

}

cout " "\nСумма значений элементов массива = " " summ " endl;

system("pause");

return 0;

}

Результат выполнения изображён на рисунке 1.1.

Рисунок 1.1 - Результат выполнения программы с массивом

1.2 Определить качество обработки данных составных объектов

Составными объектами в языке программирования C++ являются структуры и классы, также их объекты. С++ позволяет создавать пользовательские типы данных. Это типы, которые группируют несколько отдельных переменных вместе. Одним из простейших пользовательских типов данных является структура.

Поскольку структуры определяются пользователем, то вначале нужно сообщить компилятору, как выглядит структура, прежде чем её использовать. Для объявления структуры данных используется ключевое слово struct.

Синтаксис структуры:

struct Employee

{

short id;

int age;

double salary;

};

В данном примере определена структура с названием Employee. Она содержит 3 переменные: id типа short, age типа int и salary типа double. Эти переменные, которые являются частью структуры, называются членами (или полями). В конце объявление структуры обязательно ставиться точка с запятой.

Для использования структуры объявляются переменные её типа. Пример:

Employee john; // создаем структуру Employee для John

Employee james; // создаем структуру Employee для James

При определении переменной, такой как Employee john, она ссылается на всю структуру. Для того, чтобы получить доступ к отдельным элементам-полям, используется оператор выбора члена (точка). Ниже приведен пример использования оператора выбора членов для инициализации каждого поля структуры:

Employee john; // создаем структуру Employee для John

john.id = 8; // присваиваем значение полю id внутри структуры john

john.age = 27; // присваиваем значение полю age внутри структуры john

john.salary = 32.17; // присваиваем значение полю salary внутри структуры john

Employee james; // создаем структуру Employee для James

james.id = 9; // присваиваем значение полю id внутри структуры james

james.age = 30; // присваиваем значение полю age внутри структуры james

james.salary = 28.35; // присваиваем значение полю salary внутри структуры james

Как и в случае с обычными переменными, переменные-поля структуры не инициализируются автоматически и обычно содержат мусор. Инициализировать их нужно вручную.

Переменные-члены структуры работают также, как и простые переменные, поэтому с ними можно и выполнять обычные операции:

int totalAge = john.age + james.age;

if (john.salary > james.salary)

cout " "John makes more than James\n";

else if (john.salary < james.salary)

cout " "John makes less than James\n";

else

cout " "John and James make the same amount\n";

// James получил повышение в должности

james.salary += 3.75;

// Сегодня день рождения John-а

++john.age; // используем преинкремент для увеличения возраста John-а на 1 год

Структуры можно инициализировать с помощью списка инициализаций. Пример:

struct Employee

{

short id;

int age;

double salary;

};

Employee john = { 5, 27, 45000.0 };

// john.id = 5, john.age = 27, john.salary = 45000.0

Employee james = { 6, 29 };

// james.id = 6, james.age = 29, james.salary = 0.0

Переменные struct подчиняются тем же правилам, что и обычные переменные.

Также составными объектами в С++ являются классы и их объекты.

При объявлении класса используется ключевое слово class, сопровождаемое именем класса и блоком операторов {...}, который заключает в фигурные скобки набор атрибутов и методов, а завершается точкой с запятой.

Моделирующий человека класс, выглядит следующим образом:

class Human

{

// Переменные:

string Name;

string DateOfBirth;

string PlaceOfBirth;

string Gender;// Методы:

void Talk(string TextToTalk);

void IntroduceSelf();…

}

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

Создание экземпляра класса:

Human humanObject; // Создание объекта типа класса Human

Доступ к членам класса осуществляется с помощью оператора точка. Выглядит это следующим образом:

humanObject.Name = "John";

При создании экземпляра класса Human с помощью указателя, к его членам можно обращаться через оператор указателя. Например:

Human* pJohn = new Human();

pJohn->DateOfBirth = "1970";

pJohn->IntroduceSelf();

Далее приведён код программы, демонстрирующей работу классов:

#include <iostream>

#include <string>

using namespace std;

class Human

{

private:

string Name;

int Age;

public:

void SetName (string HumansName)

{

Name = HumansName;

}

void SetAge(int HumansAge)

{

Age = HumansAge;

}

void IntroduceSelf()

{

cout " "I am " + Name " " and am ";

cout " Age " " years old" " endl;

}

};

int main()

{

// Создание объекта класса Human со значением "Adam"

// атрибута Name

Human FirstMan;

FirstMan.SetName("Adam");

FirstMan.SetAge(30);

// Создание объекта класса Human со значением "Eve"

// атрибута Name

Human FirstWoman;

FirstWoman.SetName("Eve");

FirstWoman.SetAge(28);

FirstMan.IntroduceSelf();

FirstWoman.IntroduceSelf();

system("pause");

return 0;

}

Первым делом в данном коде инициализируется класс, его атрибуты (переменные) и методы (функции). Далее в главной функции main создаётся экземпляр класса Human под названием FirstMan. После задаются его атрибуты, и создаётся второй экземпляр класса с названием FirstWoman, и также задаются атрибуты данного экземпляра. Далее вызывается функция IntroduceSelf() обоими экземплярами класса. Результат работы программы изображён на рисунке 1.2.

Рисунок 1.2 - Результат работы программы с классом

1.3 Обосновать целесообразность применения объединения (смеси)

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

union

{

short int name1;

int name2;

long int name3;

} myUnion; // объект объединения

Доступ к элементам объединения осуществляется также, как и к элементам структур: Имя объекта объединения myUnion, точка "." и имя элемента name1.

К данным, которые хранят элементы структуры (например short, int, long) мы можем обращаться в любой момент (хоть к одному, хоть и ко всем сразу). А в объединении могут храниться данные либо short, либо int, либо long. Например:

#include <iostream>

using namespace std;

union

{

short int name1;

int name2;

long int name3;

} myUnion;

int main()

{

myUnion.name1 = 22;

cout " myUnion.name1 " endl;

myUnion.name3 = 222222222;

cout " myUnion.name3 " endl;

// снова обращаемся к name1

cout " myUnion.name1 " endl;

}

Далее, на рисунке 1.3 приведён результат работы данной программы.

Рисунок 1.3 - Результат работы программы

После того как в элемент name3 было записано значение типа long int, уже невозможно нормально обращаться к элементу name1. Все потому, что в их общую память уже записано значение long int, а переменная типа short int неспособна работать с данными такого объема. На рисунке 1.4 изображено представление памяти для переменных.

Рисунок 1.4 - Схематическое представление памяти для переменных типа short int и long int

Поэтому, чтобы опять работать с данными типа short int, необходимо снова присвоить элементу name1 новое значение. Вот и получается - память одна и та же, а переменные в ней размещаются разные. К какой обращаемся - такая и запрашивает из этой памяти значение.

Элементы объединения располагаются в памяти начиная с одного места (как бы накладываются друг на друга), в отличии от элементов структуры (они располагаются в памяти последовательно один за другим).

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

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

Если описывать просто набор переменных, не объединяя их в union, то для их размещения потребовалось бы 2 + 4 + 4 байта = 10 байт. Вот и экономия. А так объединение занимает 4 байта, сэкономив 6 байт.

На сегодняшний день экономия памяти не так актуальна, как 10-15 лет назад, поэтому объединения используются довольно редко.

1.4 Проанализировать применение элементов структуры полей битов

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

Класс bitset это шаблон, который принимает один параметр - размер поля в битах. Чтобы воспользоваться классом bitset, достаточно подключить заголовочный файл <bitset>:

#include <bitset>

Объявление битового поля выглядит следующим образом:

bitset<8> number(34);

Здесь number - битовое поле размером 8 бит, которое инициализировано значением 34.

Пример с применением битового поля:

#include <iostream>

#include <bitset> // заголовочный файл битовых полей

#include <iomanip> // для манипулятора setw()

using namespace std;

int main()

{

bitset<8> number;

cout " "Двоичное представление чисел:\n";

for (int i = 0; i < 31; i+=3) {

number = i;

cout " setw(2) " number.to_ulong() " " = " " number " endl;

}

system("pause");

return 0;

}

Результат работы показан на рисунке 1.5.

Рисунок 1.5 - Результат выполнения программы с применением битового поля

Для реализации булевой логики, раньше использовались побитовые операции &, |, ~ и тип данных int.

Ещё один пример программы, демонстрирующий побитовые операции класса bitset:

#include <iostream>

#include <bitset> // заголовочный файл битовых полей

using namespace std;

int main()

{

int number;

cout " "Введите целое число от 1 до 255: ";

cin " number;

bitset<8> message(number);

cout " number " " = " " message " endl;

bitset<8> bit2 = message;

// Поменять все биты на противоположные

message = message.flip();

cout " "Инвертированное число: " " message " endl;

bitset<8> bit3 = bit2 | message;

// Операция логического ИЛИ

cout " bit2 " " | " " message " " = " " bit3 " endl; bitset<8> bit4 = bit3 & message;

// Операция логического И

cout " bit3 " " & " " message " " = " " bit4 " endl;

bitset<8> bit5 = bit3 ^ message;

// Операция исключающего ИЛИ

cout " bit3 " " ^ " " message " " = " " bit5 " endl; system("pause");

return 0;

}

Данная программа демонстрирует применение битовых операция логического "ИЛИ", логического "И", а также исключающего "ИЛИ". Сначала переменной number присваивается значение с клавиатуры, далее оно преобразовывается в битовое поле. Инициализируется второе битовое поле, которому присваивается инвертированное значение первого битового поля с помощью функции flip(). После этого с двумя данными битовыми полями выполняются логические операции. На рисунке 1.6 приведён результат выполнения программы. алгоритмизация массив объединение бит

Рисунок 1.6 - Результат выполнения программы с битовыми операциями

2. Практическая часть

2.1 Анализ объекта исследования

Объектом исследования данного курсового проекта является рецептуар кушаний. Рецептуар может содержать множество кулинарных рецептов.

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

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

Современный кулинарный рецепт содержит:

- название (часто и национальную принадлежность) блюда;

- ориентировочное время приготовления блюда;

- список необходимых для приготовления блюда ингредиентов, их количество и пропорции;

- оборудование и условия, необходимые для приготовления блюда;

- количество персон, на которых рассчитано блюдо;

- калорийность блюда (иногда и содержание белков, жиров и углеводов);

- пошаговая инструкция по приготовлению блюда;

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

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

2.2 Анализ задания разработки структуры программы

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

Основной целью является разработка программы на языке программирования С++ "Рецептуар кушаний". Данная программа позволит просматривать, редактировать, искать, сортировать и удалять рецепты различных блюд.

У данной программы будут иметься следующие функции:

- добавление рецепта блюда;

- вывод имеющихся рецептов на экран;

- поиск рецептов;

- сортировка списка рецептов;

- удаление рецепта из списка;

- запись в текстовый файл;

- чтение из текстового файла;

- выход.

Ниже, на рисунке 2.1 изображена структура разработанной программы, на которой показаны все её составные части. В структуру входят такие элементы:

- добавление рецепта;

- вывод рецептов на экран;

- поиск рецептов;

- сортировка рецептов;

- удаление рецепта;

- запись рецептов в текстовый файл;

- чтение рецептов из текстового файла;

- выход.

Рисунок 2.1 - Структура разработанной программы

2.3 Алгоритмизация программы

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

#include <iostream> // библиотека ввода-вывода

После подключения библиотек объявляется пространство имён std и объявляются две переменные для работы с файлами.

Далее объявляется класс с его переменными и функциями. Объявление класса выглядит следующим образом:

class CookRecipes

{

private:

//…

public:

//…

}

В приватной области класса объявляются переменные, доступные лишь членам самого класса:

private:

int index;

string name;

string cooktime;

В публичной области класса объявляются конструкторы и функции доступные в других частях программы:

public:

CookRecipes() {}; // конструктор

void AddRecipe() {…}; // функция

Функция добавления рецепта в базу данных реализована с помощью считывания данных из потока getline() и помещения всех записанных данных в вектор с помощью push_back().

Функция вывода рецептов блюд на экран осуществляет вывод с помощью cout. Далее пользователь выбирает нужный ему рецепт и ему выводится подробная информация.

Сортировка рецептов происходит благодаря алгоритму sort(). Сортировка происходит по названиям блюд.

Поиск рецептов осуществляется с помощью алгоритма find().

Функция удаления рецептов удаляет выбранный пользователем рецепт. Удаление происходит с помощью функции erase(), применяемой к элементу вектора.

Запись в текстовый файл реализована посредством использования переменной типа ofstream, которая последовательно считывает каждую переменную и записывает в текстовый файл.

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

Последней функцией класса является функция, которая представляет собой главное меню программы. В ней используются функции для установки кодировки ввода, используемой консолью, далее объявляется переменная для выбора функций в меню программы и само меню, которое находится в цикле while. Выход из меню осуществляется только при вводе фразы "exit".

На рисунке 2.2 изображён алгоритм работы функции добавления рецепта.

Рисунок 2.2 - Алгоритм работы функции добавления рецепта

2.4 Порядок работы с разработанным программным обеспечением

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

- добавить новый рецепт;

- вывести список рецептов на экран;

- поиск рецептов;

- выполнить сортировку рецептов;

- удаление рецепта;

- записать рецепты в текстовый файл;

- считать рецепты с текстового файла;

- выход.

Рисунок 2.3 - Меню программы

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

Рисунок 2.4 - Добавление рецепта в базу данных

При выборе варианта в меню под названием "Вывести список рецептов" осуществляется вывод текущих рецептов на экран. Данное действие изображено на рисунке 2.5.

Рисунок 2.5 - Вывод рецептов на экран

На рисунке 2.6 изображён подробный вывод одного из рецептов, выбранного пользователем.

Рисунок 2.6 - Подробный вывод рецепта под номером 2

Следующим пунктом является поиск рецептов. На рисунке 2.7 изображен запрос поиска рецептов.

Рисунок 2.7 - Запрос поиска рецептов

На рисунке 2.8 изображён результат поиска.

Рисунок 2.8 - Результат поиска

Далее идёт пункт "Сортировка рецептов по алфавиту". На рисунке 2.9 изображён список рецептов выполнения сортировки.

Рисунок 2.9 - Список рецептов до сортировки

На рисунке 2.10 изображён список рецептов после сортировки.

Рисунок 2.10 - Результат сортироки названий рецептов

Далее находится пункт под названием "Удалить рецепт из списка". При выборе данного пункта, пользователю предлагается сделать выбор номера рецепта для удаления. Процесс удаления рецепта продемонстрирован на рисунках 2.11 и 2.12.

Рисунок 2.11 - Выбор рецепта для удаления

Рисунок 2.12 - Список рецептов после удаления

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

3. Охрана труда

3.1 Организация охраны труда

В настоящее время на территории Луганской Народной Республики вступил в силу, и действует Трудовой Кодекс Луганской Народной Республики от 30.04.2015 № 23-II.

В состав Трудового Кодекса вошел раздел "Охрана труда", регламентирующий вопросы в сфере охраны труда.

Госгорпромнадзором ЛНР в 2015 году, разработаны и зарегистрированы в Министерстве юстиции Луганской Народной Республики семь нормативных правовых актов по охране труда и промышленной безопасности, а именно - "Временные правила выдачи специального разрешения на деятельность, связанную с производством взрывчатых материалов", "Положение о порядке обучения и проверки знаний по вопросам охраны труда у работников предприятий, учреждений и организаций", "Временное положение о порядке организации и осуществления государственного надзора за состоянием промышленной безопасности, охраны труда и горного надзора", "Порядок выдачи разрешения на начало работы в части обеспечения требований законодательства по охране труда и промышленной безопасности", "Порядок ведомственной регистрации и ведения учета крупнотоннажных и других технологических транспортных средств", "Временный порядок приостановления действий отдельных требований нормативных правовых актов в сфере промышленной безопасности и охраны труда", "Временные правила выдачи специального разрешения на деятельность по проведению экспертизы промышленной безопасности".

Указанные нормативные правовые акты размещены на официальном сайте Госгорпромнадзора ЛНР - gospromnadzor.ru.

Согласно пункта 2 статьи 86 Временного Основного Закона (Конституции) Луганской Народной Республики - законы и другие нормативные правовые акты, действовавшие на территории Луганской Народной Республики, до вступления в силу настоящей Конституции, применяются в части, не противоречащей Конституции Луганской Народной Республики.

В связи с этим, на территории Луганской Народной Республики действуют нормативные правовые акты по охране труда (НПАОП), согласно государственного реестра нормативно-правовых актов по вопросам охраны труда, утвержденного приказом Госгорпромнадзора Украины от 21.07.2015 № 41 и размещенного на официальном сайте - dnop.gov.ua.

В настоящее время, Госгорпромнадзором ЛНР готовится реестр, применяемых на территории Луганской Народной Республики, нормативных правовых актов по охране труда и промышленной безопасности.

3.2 Нормативно-техническая документация по техники безопасности при работе с вычислительной техникой

В настоящее время при эксплуатации ОТ действуют следующие нормативно - технические документы:

1) ГОСТ 12.1.005-88 ССБТ Общие санитарно-гигиенические требования к воздуху рабочей зоны. -М., 1988

2) ДНАОП 0.03-3.06-80 Санитарно-гигиенические нормы допустимых уровней ионизации воздуха производственных и общественных помещений №2152-80 -М., 1980

3) СНиП 23-05-95 Строительные нормы и правила Естественное и искусственное освещение. -М., 1995 [13].

4) ГОСТ 12.1.003-83 ССБТ. Шум. Общие требования безопасности М, 1983.

5) ДНАОП 0 03-3 14-85 Санитарные нормы допустимых уровней шума на рабочих местах №3223-85 М, 1985.

6) ДСТУ 3010-95 Оборудование для кондиционирования воздуха и вентиляции Методы определения шумовых характеристик кондиционеров - М, 1995.

7) ДНАОП 0 03-3.30-96 Государственные стандартные нормы и правила защиты населения от воздействия электромагнитных излучений.

8) ГОСТ 12.1.006-84 ССБТ Электромагнитные поля радиочастот. Допустимые уровни на рабочих местах и ??требования к проведению контроля (СТ СЭВ 5801-86).

9) ГОСТ 12.1 038-82 ССБТ Электробезопасность Предельно допустимые значения напряжений прикосновения и токов.

10) ГОСТ 12.1.030-81 ССБТ. Электробезопасность. Защитное заземление, зануление.

11) В Европейских странах действуют свои национальные нормативно - технические документы по безопасности при работе с ЭВМ. В Европейских странах наибольшее распространение нашел документ ТСО. TCO - группа стандартов добровольной сертификации на эргономичность и безопасность электронного оборудования (прежде всего компьютерного), разработанных комитетом TCO Development, который является частью Шведской конфедерации профсоюзов.

12) Стандарты нумеруются по годам и на текущий момент включают TCO'92, TCO'95, TCO'99, TCO'01, TCO'03, TCO'04, TCO'05, TCO'06 и TCO'07.

3.3 Расчет эффективности акустической обработки помещения

Расчет звукопоглощения в производственном помещении, где оборудование излучает шум (L, дБ), превышающий предельно допустимый уровень, осуществляется по общепринятой методике. Для определения эффективности звукопоглощения в качестве примера необходимые исходные данные приводятся в таблице 3.1 и предполагается, что потолок и 80 % площади стен облицованы звукопоглощающим материалом с коэффициентом звукопоглощения ам. Первоначально стены помещения выполнены из кирпича (ак = 0,035), перекрытия - из бетона (аб = 0,016). Общая площадь застекления Sо(ас = 0,027).

Таблица 3.1 - Исходные данные для расчета эффективности звукопоглощения

Длина

Ширина

Высота

Sо, м2

L, дБ

Частота

ам, дБ

помещения,

помещения,

помещения,

шума,

А, м

В, м

Н, м

f,Гц

28

16

6

50

96

1200 (60)

0,85

Эффективность звукопоглощения определяется по формуле:

(3.1)

где А1 и А2 - звукопоглощающая поверхность до и после акустической обработки помещения.

Определим звукопоглощающую поверхность, м2, в производственном помещении до акустической обработки:

(3.2)

где а 1, а 2.... аn - коэффициенты звукопоглощения строительных материалов, дБ;

S1, S2,...Sn-площади стен, потолка, окон и т.д., м 2. Звукопоглощающая поверхность в помещении, м 2, после акустической обработки определяется по формуле:

А 2 =a(S1+S2+Sп) (3.3)

где а - коэффициент звукопоглощения выбранного материала, дБ;

Sj, S2, S" - площади, обработанные звукопоглощающим материалом, м2.

Звукопоглощающую поверхность находят из выражения:

A=S · а

где S - площадь потолка, стен, окон, м2;

а-коэффициент звукопоглощения соответствующего материала.

Чтобы найти А 1, надо вычислить площадь (S1):

S1 = А• В • Н = 28·16·6 = 2668 (3.4)

А 1 = S1 · а 1 (3.5)

А 1 = 2668 ·0,85 = 2267,8 (3.6)

Чтобы найти А 2, надо вычислить площадь (S2)

S2 = 20 · 0,035· 10· 0,016· 5 · 0,027 = 0,04· 80 % = 0,032 (3.7)

А 2 = S2 · а 2 (3.8)

А 2 = 0,032 ·0,078 = 0,002

ДL = 10 · Lg 0,002 = log 0,000008 = 10 · 6,1 = 61 (3.8)

2267,8

Обработка помещения считается целесообразной, если уровень шума в помещении снижается до Lпду. В данном примере акустическая обработка помещения достаточно эффективна.

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

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

а=Епогл ? Епал (3.9)

При а = 0 вся энергия отражается без поглощения, при а = 1 вся энергия поглощается (эффект "открытого окна"). Коэффициент, а зависит от частоты звуковых волн и угла их падения на конструкцию.

Звукопоглощающие устройства бывают пористыми, пористо-волокнистыми, с экраном, мембранные, слоистые, резонансные и объемные. Эффективность применения различных звукопоглощающих устройств определяется в результате акустического расчета с учетом требования СНиП П-12-77. Для достижения максимального эффекта рекомендуется облицовывать не менее 60 % общей площади ограждающих поверхностей, а объемные (штучные) звукопоглотители - располагать как можно ближе к источнику шума.

Максимальное снижение уровня шума в отраженном поле с помощью акустической обработки внутренних поверхностей помещения практически не превышает 6...8 дБ, достигая в отдельных полосах частот 10... 12 дБ.

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

Интересным и принципиально новым методом снижения шума является метод, связанный с созданием "антизвука", т. е. созданием равного по величине и противоположного по фазе звука. В результате интерференции основного звука и "антизвука" в некоторых местах шумного помещения можно создать зоны тишины. Особенно перспективным этот метод может оказаться в машиностроении и энергетике для подавления тональных шумов. В месте, где необходимо уменьшить шум, устанавливается микрофон, сигнал от которого усиливается и излучается определенным образом расположенными динамиками. Уже разработан комплекс электроакустических приборов для интерференционного подавления шума.

Заключение

В результате выполнения курсового проекта были изучены основы языка программирования С++ для выполнения поставленной задачи.

Для разработки программы была выбрана интегрированная среда разработки Microsoft Visual Studio 2017. Был изучен интерфейс и инструменты данной среды разработки, после чего выполнена разработка программы на языке программирования С++.

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

- добавление рецепта в базу;

- вывод рецептов из базы на экран;

- поиск рецептов в базе;

- сортировка рецептов;

- удаление рецептов;

- запись рецептов в текстовый файл;

- чтение рецептов с текстового файла.

Список использованной литературы

1. Васильев А. Программирование на С++ в примерах и задачах - Эксмо, 2016. - 368 стр.

2. Виллемер А. Программирование на С++ - Эксмо, 2013. - 528 стр.

3. Гантерот К. Оптимизация программ на С++. Проверенные методы повышения производительности - Вильямс, 2017. - 400 стр.

4. Прата С. Язык программирования С++. Лекции и упражнения - Вильямс, 2016. - 1248 стр.

5. Седжвик Р. Алгоритмы на С++ - Вильямс, 2016. - 1056 стр.

6. Стефан Р. Девис, С++ для чайников - Вильямс, 2017. - 400 стр.

7. Страуструп Б. Язык программирования С++. Стандарт С++11. Краткий курс - Бином. Лаборатория знаний, 2017. - 176 стр.

8. Страуструп Б. Язык программирования С++. Специальное издание - Бином, 2017. - 1136 стр.

9. Керниган Б., Ритчи Д. Язык программирования С - Вильямс, 2017. - 288 стр.

10. Лафоре Р. Объектно-ориентированное программирование в С++ - Питер, 2015. - 928 стр.

11. Мейерс С. Эффективный и современный С++ - Вильямс, 2016. - 304 стр.

12. Николаи М. Джосаттис Стандартная библиотека С++. Справочное руководство - Вильямс, 2014. - 1136 стр.

13. Оверленд Б. С++ без страха - Триумф, 2014. - 432 стр.

14. Уилсон М. Расширение библиотеки STL для С++. Наборы и итераторы - БХВ-Петербург,ДМК Пресс, 2008. - 608 стр.

15. Шмидт Г. С++. Базовый курс - Вильямс, 2015. - 624 стр.

Приложение А. Исходных код программы

#include "stdafx.h" // для Visual Studio C++

#include <iostream> // для работы ввода-вывода

#include <vector> // для векторов

#include <string> // для строк

#include <iomanip> // для манипуляторов вывода

#include <algorithm> // для алгоритмов find(), sort()

#include <fstream> // для работы с файлами

#include <Windows.h> // для работы SetConsoleCP

using namespace std; // объявление пространства имён std

// переменные для работы с файлами

ofstream ofcook;

ifstream ifcook;

// Объявление класса

class CookRecipes

{

// приватная область

private:

int index;

string name;

string cooktime;

string ingridients;

string cookmethod;

string caloricity;

string instruction;

vector<CookRecipes> cookrecipes;

// публичная область

public:

// конструкторы

CookRecipes() {};

CookRecipes(int index, string name, string cooktime, string ingridients, string cookmethod, string caloricity, string instruction):

index(index), name(name), cooktime(cooktime), ingridients(ingridients), cookmethod(cookmethod), caloricity(caloricity), instruction(instruction) {}

// функции

// Функция нумерации

void Numbering(vector<CookRecipes>& recipes) {

unsigned short count = 0;

for (vector<CookRecipes>::iterator i = recipes.begin(); i!= recipes.end(); i++)

{

(*i).index = count + 1;

count++;

}

};

// Функция добавления рецепта

void AddRecipe(vector<CookRecipes>& recipes) {

system("cls");

cout " "Добавить рецепт:\n" " endl;

cout " "Введите название блюда: " " endl;

getline(cin, name);

cout " "Введите время приготовления:" " endl;

getline(cin, cooktime);

cout " "Введите необходимые ингридиенты для блюда:" " endl;

getline(cin, ingridients);

cout " "Введите метод готовки:" " endl;

getline(cin, cookmethod);

cout " "Введите калорийность блюда:" " endl;

getline(cin, caloricity);

cout " "Введите инструкцию по приготовлению:" " endl;

getline(cin, instruction);

index = recipes.size() + 1;

recipes.push_back(CookRecipes(index, name, cooktime, ingridients, cookmethod, caloricity, instruction));

system("cls");

cout " "Рецепт добавлен!" " endl;

system("pause");

};

// Функция вывода рецептов на экран

void ShowRecipes(vector<CookRecipes>& recipes) {

vector<CookRecipes>::iterator it;

Numbering(recipes);

cout " left " setw(3) " "№"

" setw(20) " "Название блюда" " endl;

for (it = recipes.begin(); it!= recipes.end(); it++) {

cout " left " setw(3) " (*it).index

" setw(20) " (*it).name " endl;

}

};

// Функция подробного вывода

void ShowRecipesDetail(vector<CookRecipes>& recipes) {

system("cls");

if (recipes.size() == 0) cout " "Список рецептов пуст!" " endl;

else {

ShowRecipes(recipes);

cout " "Введите номер товара для отображения подробного описания." " endl;

string sChoose;

getline(cin, sChoose);

int choose = atoi(sChoose.c_str());

if (choose <= recipes.size() && choose > 0) {

for (vector<CookRecipes>::iterator i = recipes.begin(); i!= recipes.end(); i++) {

if ((*i).index == choose) {

system("cls");

cout " "Название блюда:" " (*i).name " "\n" " endl

" "Время приготовления:" " (*i).cooktime " endl

" "\nИнгридиенты:\n" " (*i).ingridients " endl

" "\nМетод приготовления:\n" " (*i).cookmethod " endl

" "\nКалорийность: " " (*i).caloricity " endl

" "\nИнструкция к приготовлению:\n" " (*i).instruction " "\n" " endl;

}

}

}

else cout " "Неверный номер блюда!" " endl;

}

system("pause");

};

// Функция сортировки рецептов по названию

void SortRecipes(vector<CookRecipes>& recipes) {

system("cls");

if (recipes.size() == 0) cout " "Список рецептов пуст!" " endl;

else {

sort(recipes.begin(), recipes.end(), []

(CookRecipes const& a, CookRecipes const& b)->

bool {return a.name < b.name; });

Numbering(recipes);

cout " "Сортировка рецептов выполнена!" " endl;

}

system("pause");

}

// Функция поиска рецептов

void SearchRecipes(vector<CookRecipes>& recipes) {

system("cls");

if (recipes.size() == 0) cout " "Список рецептов пуст!" " endl;

else {

int search, count = 0;

string sSearch;

cout " "Введите слово для поиска, состоящее минимум из 4 букв." " endl;

getline(cin, sSearch);

if (sSearch.size() > 3) {

system("cls");

for (vector<CookRecipes>::iterator i = recipes.begin(); i!= recipes.end(); i++) {

if ((search = (*i).name.find(sSearch))!= -1 ||

(search = (*i).ingridients.find(sSearch))!= -1 ||

(search = (*i).caloricity.find(sSearch))!= -1 ||

(search = (*i).instruction.find(sSearch))!= -1 ||

(search = (*i).cookmethod.find(sSearch))!= -1) {

cout " setw(20) " "Название блюда:" " (*i).name " "\n" " endl

" "\nИнгридиенты:" " (*i).ingridients " endl

" "\nМетод приготовления:\n" " (*i).cookmethod " endl

" "\nКалорийность:\n" " (*i).caloricity " endl

" "\nИнструкция к приготовлению:\n" " (*i).instruction " "\n" " endl;

cout " "====================================================" " endl;

count++;

}

}

if (count == 0) {

cout " "Совпадений не найдено." " endl;

system("cls");

}

}

}

system("pause");

};

// Функция удаления рецепта

void DeleteRecipes(vector<CookRecipes>& recipes) {

system("cls");

if (recipes.size() == 0) cout " "Список рецептов пуст!" " endl;

else {

ShowRecipes(recipes);

string sDel;

cout " "Введите номер рецепта, который нужно удалить." " endl;

getline(cin, sDel);

int delIndex = atoi(sDel.c_str());

if (delIndex > 0 && delIndex <= recipes.size()) {

system("cls");

recipes.erase(recipes.begin() + (delIndex - 1));

vector<CookRecipes>(recipes).swap(recipes);

cout " "Рецепт удалён из списка!" " endl;

}

else {

cout " "Неправильный номер рецепта!" " endl;

}

}

system("pause");

};

// Функция записи данных в текстовый файл

void WriteInTxtFile(vector<CookRecipes>& recipes) {

system("cls");

if (recipes.size() == 0) cout " "Список рецептов пуст!" " endl;

else {

ofcook.open("cook.txt");

for (vector<CookRecipes>::iterator i = recipes.begin(); i!= recipes.end(); ++i) {

if ((i + 1) == recipes.end()) {

ofcook " (*i).index " endl;

ofcook " (*i).name " endl;

ofcook " (*i).cooktime " endl;

ofcook " (*i).ingridients " endl;

ofcook " (*i).cookmethod " endl;

ofcook " (*i).caloricity " endl;

ofcook " (*i).instruction;

}

else {

ofcook " (*i).index " endl;

ofcook " (*i).name " endl;

ofcook " (*i).cooktime " endl;

ofcook " (*i).ingridients " endl;

ofcook " (*i).cookmethod " endl;

ofcook " (*i).caloricity " endl;

ofcook " (*i).instruction " endl;

}

}

ofcook.close();

cout " "Данные записаны в текстовый файл." " endl;

system("pause");

}

};

// Функция чтения данных из текстового файла

void ReadTxtAndWriteInVector(vector<CookRecipes>& recipes) {

system("cls");

ifcook.open("cook.txt", ios_base::in);

if (ifcook.peek() == ifstream::traits_type::eof())

{

cout " "Данные в текстовом файле отсутствуют." " endl;

system("pause");

}

else

{

string forIndex;

int Index;

while (!ifcook.eof())

{

getline(ifcook, forIndex);

getline(ifcook, name);

getline(ifcook, cooktime);

getline(ifcook, ingridients);

getline(ifcook, cookmethod);

getline(ifcook, caloricity);

getline(ifcook, instruction);

Index = atoi(forIndex.c_str());

recipes.push_back(CookRecipes(Index, name, cooktime, ingridients, cookmethod, caloricity, instruction));

}

cout " "Данные из текстового файла считаны!" " endl;

system("pause");

}

ifcook.close();

};

// Главное меню программы

void Menu() {

SetConsoleCP(1251); // для корректного вывода русских символов

SetConsoleOutputCP(1251); // для корректного вывода русских символов

string sChoose = ""; // переменная для выбора функции

int choose; // переменная для выбора функции

while (1) {

system("cls");

cout " "Рецептуар кушаний\n" " endl;

cout " "1.Добавить новый рецепт." " endl;

cout " "2.Вывести список рецептов на экран." " endl;

cout " "3.Поиск рецептов." " endl;

cout " "4.Выполнить сортировку названий рецептов по алфавиту." " endl;

cout " "5.Удалить рецепт из списка." " endl;

cout " "6.Записать список рецептов в текстовый файл." " endl;

cout " "7.Считать список рецептов из текстового файла." " endl;

cout " "\nexit - Выход.\n" " endl;

getline(cin, sChoose);

choose = atoi(sChoose.c_str());

if (sChoose == "exit") {

exit(EXIT_FAILURE);

}

switch (choose) {

case 1:

AddRecipe(cookrecipes);

break;

case 2:

ShowRecipesDetail(cookrecipes);

break;

case 3:

SearchRecipes(cookrecipes);

break;

case 4:

SortRecipes(cookrecipes);

break;

case 5:

DeleteRecipes(cookrecipes);

break;

case 6:

WriteInTxtFile(cookrecipes);

break;

case 7:

ReadTxtAndWriteInVector(cookrecipes);

default:

break;

}

}

};

~CookRecipes() {};

};

int main() {

CookRecipes A;

A. Menu();

return 0;

}

Приложение Б. Алгоритм работы функции добавления рецепта

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

...

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

  • Структура простейшей базы данных и свойства полей. Характеристика типов данных. Описание процесса создания базы данных, таблиц и связей между ними, простых и составных форм, запросов в Microsoft Access. Пример составления подчинённых отчетов и макросов.

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

  • Разработка базы данных торговой фирмы по поставке одежды. Анализ таблиц, которые она содержит. Присвоение ключевых полей. Использование средств программирования и макросов для упорядочения структуры базы данных в среде СУБД MS Access. Добавление объектов.

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

  • Понятие шаблона проектирования или паттерна в разработке программного обеспечения. Изменение поведения системы (базы данных) с помощью порождающего шаблона программирования - абстрактной фабрики. Программирование базы данных и управление ею на языке С+.

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

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

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

  • Порядок проектирования и разработки базы данных и программного обеспечения. Информация о структуре базы данных, созданных таблицах, формах, отчетах, запросах, хранимой информации. Логическая и концептуальная модели данных; выбор программного обеспечения.

    курсовая работа [906,6 K], добавлен 20.01.2010

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

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

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

    контрольная работа [648,7 K], добавлен 13.04.2012

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

    курсовая работа [650,9 K], добавлен 27.02.2013

  • Разбиение данных по таблицам и создание связей между таблицами. Нормализация и проектирование сценария работы базы данных. Выбор программного обеспечения. Требования к аппаратным и программным средствам для работы созданного программного продукта.

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

  • Разработка базы данных и клиента для управления базой данных с целью автоматизации рабочего места менеджера по клининговым услугам для ООО "Мастер блеск". Обоснование выбора программного обеспечения для создания базы данных. Заполнение данных в таблицы.

    дипломная работа [1,8 M], добавлен 13.04.2014

  • Разработка базы данных, позволяющей определять месторасположение на полке и код товаров в магазинных складах, количество и качество товаров. Концепция баз данных. Модели данных, описание данных проектирования. Разработка программного приложения.

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

  • Теоретическая часть по основным положениям MS ACCESS: базы данных и системы управления, свойства полей, типы данных. Разработка прикладного программного обеспечения ООО "Киновидеопрокат". Рекомендации и мероприятия по улучшению базы данных предприятия.

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

  • Разработка приложения для работы с базой данных с использованием объектно-ориентированного и визуального программирования. Обзор языка элементов языка программирования Delphi. Проектирование базы данных автозаправки. Клиентская система приложения.

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

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

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

  • Разработка приложения для осуществления работы с медицинскими данными с последующей их визуализацией. Изучение типов данных и свойств полей Access. Компоненты наборов данных. Структура базы данных для клиники. Экранные формы для отображения справочников.

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

  • Проектирование структуры базы данных. Технология обработки данных. Порядок установки и запуска программы. Описание объектов приложения и структура данных. Ввод и изменение исходных данных. Получение выходных документов и тестирование программы.

    отчет по практике [2,3 M], добавлен 22.07.2012

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

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

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

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

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

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

  • Разработка программных продуктов на языке программирования Borland Delphi. Применяемые таблицы и связи между ними. Пользовательский интерфейс работы с базой данных. Алгоритм работы программы "Футбольные команды и игроки". Защита от ввода неверных данных.

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

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