Разработка программного обеспечения встроенного процессора холодильника
Разработка схемы базы данных для хранения журнала событий холодильника. Передача содержимого журнала в компьютер, подсоединенный к специальному гнезду на корпусе холодильника. Концептуальное и логическое проектирование программы встроенного процессора.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 20.11.2020 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
ОГЛАВЛЕНИЕ
- ВВЕДЕНИЕ
- 1. ОБЗОР ПРЕДМЕТНОЙ ОБЛАСТИ
- 2. ПРОЕКТИРОВАНИЕ
- 3. РЕАЛИЗАЦИЯ
- ЗАКЛЮЧЕНИЕ
- ПРИЛОЖЕНИЕ А - ЛИСТИНГ ПРОГРАММЫ
- ВВЕДЕНИЕ
- Целью данной работы является разработка программного обеспечения встроенного процессора холодильника.
- Холодильник состоит из двух холодильных камер для хранения продуктов. В каждой холодильной камере имеется регулятор температуры, агрегат, термометр, индикатор, таймер, датчик открытия двери камеры и устройство для подачи звуковых сигналов.
- При помощи терморегулятора устанавливается максимально допустимая температура в данной камере. Агрегат предназначен для поддержания низкой температуры. Термометр постоянно измеряет температуру внутри камеры, а индикатор температуры, расположенный на дверце, постоянно высвечивает ее значение. При повышении температуры выше предела, определяемого текущим положением регулятора, включается агрегат. При снижении температуры ниже некоторого другого значения, связанного с первым, агрегат отключается.
- Доступ в камеру осуществляется через дверцу. Если дверь холодильной камеры открыта в течение слишком долгого времени, подается звуковой сигнал. Звуковой сигнал также подается в любых нештатных ситуациях (например, при поломке мотора).
- Холодильник ведет электронный журнал, в котором отмечаются все происходящие события
- · изменение положения терморегулятора камеры;
- · включение и отключение мотора;
- · доступ в камеру;
- · внештатные ситуации.
- Необходимо разработать схему базы данных для хранения журнала событий холодильника. Содержимое журнала может быть передано в компьютер, подсоединенный к специальному гнезду на корпусе холодильника.
- Инструментальными средствами разработки были определены:
- - язык программирования Visual C#;
- - среда программирования Microsoft Visual Studio;
- - система управления базами данных MySQL;
- - библиотека доступа к базе данных MySql.Data.DLL.
- 1. ОБЗОР ПРЕДМЕТНОЙ ОБЛАСТИ
- Проводя анализ предметной области важно выделить ее основные составляющие, чтобы результат работы был полным, неизбыточным и достаточным.
- Основными составляющими предметной области являются:
- - исполнители;
- - действия;
- - объекты.
- Исполнители - это те лица, которые производят какую-либо деятельность в рамках предметной области. Именно эти исполнители в дальнейшем станут пользователями информационной системы. Деятельности, которые они выполняют, необходимо будет автоматизировать, то есть все действия предметной области станут функциями информационной системы. А объекты - это то, на что направлены действия и с чем работают исполнители предметной области. В будущем объекты станут таблица базы данных.
- Среди исполнителей были выделены следующие группы:
- - человек, пользующийся холодильником;
- - процессор холодильника, контролирующий температуру и отслеживающий события.
- Были определены следующие действия предметной области:
- - открыть холодильную камеру;
- - закрыть холодильную камеру;
- - открыть морозильную камеру;
- - закрыть морозильную камеру;
- - событие состояния долго открытой холодильной камеры;
- - событие состояния долго открытой морозильной камеры;
- - увеличение температуры холодильной камеры вследствие открытия двери;
- - уменьшение температуры холодильной камеры вследствие закрытия двери и включения агрегата;
- - увеличение температуры морозильной камеры вследствие открытия двери;
- - уменьшение температуры морозильной камеры вследствие закрытия двери и включения агрегата;
- - отключение агрегата при достижении минимально допустимой температуры в холодильной камере;
- - отключение агрегата при достижении минимально допустимой температуры в морозильной камере;
- - ведение журнала событий.
- Объекты, на которые направлены действия исполнителей предметной области, были определены следующие:
- - номер события;
- - тип события;
- - время события (дата + время);
- - описание.
2. ПРОЕКТИРОВАНИЕ
программный процессор холодильник
Проектирование базы данных будет производиться на основании анализа предметной области, где были определены объекты предметной области, в несколько этапов:
- концептуальное проектирование;
- логическое проектирование;
- нормализация данных;
- физическое проектирование.
Концептуальная модель данных - это наглядная диаграмма, нарисованная в принятых обозначениях и подробно показывающая связь между объектами и их характеристиками. Создается концептуальная модель для дальнейшего проектирования базы данных и перевод ее, например, в реляционную базу данных. На концептуальной модели в визуально удобном виде прописываются связи между объектами данных и их характеристиками.
Концептуальная модель данных состоит из следующих элементов:
- сущностей, которым соответствуют объекты предметной области;
- атрибутов сущностей, которым соответствуют свойства объектов предметной области;
- связей между сущностями.
Были определены следующие сущности:
- лог (журнал).
Атрибутами сущности «раздел (страна)» были определены:
- номер события;
- тип события;
- время события;
- описание события.
Все атрибуты являются обязательными, но не являются уникальными, так как могут повторяться их значения, кроме атрибута «номер события».
Теперь же необходимо как раз определить эти самые связи.
Выделяют следующие типы связей:
- один-к-одному;
- один-ко-многим;
- многие-к-одному;
- многие-ко-многим.
ER диаграмма представлена на рисунке 1.
Рисунок 1 - ER диаграмма
В качестве типа разрабатываемой базы данных была определена структура реляционная СУБД, соответствующая требованиям проектного решения.
На основании типа базы данных и инфологической модели данных проведем проектирование даталогической или логической модели данных.
На данном этапе необходимо привести спроектированную концептуальную модель к требованиям выбранного типа базы данных, переведя все сущности в отношения, а атрибуты сущностей в соответствующие поля отношений.
Сущностям буду соответствовать следующие отношения:
- сущности «лог» будет соответствовать отношение «log».
Полями отношения «log» стали:
- атрибут «номер события» стал полем «id_log»;
- атрибут «тип события» стал полем «type»;
- атрибут «время события» стал полем «time»;
- атрибут «описание события» стал полем «value».
Логическая модель данных представлена на рисунке 2.
Рисунок 2 - Логическая модель данных
После того, как была составлена логическая модель данных, необходимо произвести нормализацию данных, приведя все отношения и их связи к 3 нормальной форме.
Отношение находится в первой нормальной форме, когда каждый атрибут отношения хранит атомарное значение, каждое отношение содержат одинаковое количество атрибутов, которые не повторяются и не являются списками.
Отношение находится во второй нормальной форме, когда находится в первой нормальной форме и при этом все неключевые атрибуты зависят только от первичного ключа.
Отношение находится в третьей нормальной форме, когда оно находится во второй нормальной форме, а все неключевые атрибуты зависят только от первичного ключа и не зависят друг от друга, а также все связи имеют вид «один-ко-многим» или «многие-к-одному».
Логическая модель данных уже соответствует всем трем нормальным формам.
Нормализованная логическая модель данных представлена на рисунке 3.
Рисунок 3 - Нормализованная логическая модель данных
Физическая модель разрабатывается на основании нормализованной логической модели данных и выбранной СУБД.
В качестве СУБД была определена MySQL.
Теперь необходимо объявить таблицы, соответствующие отношениям нормализованной логической модели данных с соответствующими полями, которым определены типы данных и ограничения.
Наименования отношений и их полей оставим соответствующими.
Так как все поля являются важными, то ко всем необходимо применить ограничение «NOTNULL», соответствующее тому, что поля не могут быть пустыми.
Определим типы данных и ограничения для полей таблиц.
Типы данных для полей таблицы «log» были определены следующие:
- поле «id_log» - INT;
- поле «type» - VARCHAR(35);
- поле «time» - DATETIME;
- поле «value» - VARCHAR(35).
Физическая модель данных представлена на рисунке 4.
Рисунок 4 - Физическая модель данных
Произведем проектирование пользовательского интерфейса. Пользовательский интерфейс системы представлен на рисунке 5.
Рисунок 5 - Пользовательский интерфейс системы
3. РЕАЛИЗАЦИЯ
Первым делом произведем разработку базы данных. Код создания базы данных:
CREATE TABLE log
(
id_log INTEGER NOT NULL PRIMARY KEY,
type VARCHAR(50) NOT NULL,
time DATE NOT NULL,
value VARCHAR(50) NOT NULL
);
Готовая база данных представлена на рисунке 6.
Рисунок 6 - Готовая база данных
Для того, чтобы получить доступ к данным БД в структуру приложения необходимо добавить библиотеку MySql.Data.DLL.
Для подключения библиотеки к проекту необходимо в среде программирования Microsoft Visual Studio в раздел «Ссылки» («References») добавить библиотеку. Подключение библиотеки представлено на рисунках 7, 8.
Рисунок 7 - Подключение библиотеки
Рисунок 8 - Подключение библиотеки
Далее пропишем подключение библиотеки:
using MySql.Data.MySqlClient;
Произведем считывание базы данных в приложение при запуске самого приложения:
private DataTable load_data()
{
DataTable dt = new DataTable();
MySqlConnectionStringBuilder mysqlCSB;
mysqlCSB = new MySqlConnectionStringBuilder();
mysqlCSB.Server = "127.0.0.1";
mysqlCSB.Database = "fridge";
mysqlCSB.UserID = "root";
mysqlCSB.Password = "";
string queryString = @"SELECT * FROM log";
using (MySqlConnection con = new MySqlConnection())
{
con.ConnectionString = mysqlCSB.ConnectionString;
MySqlCommand com = new MySqlCommand(queryString, con);
try
{
con.Open();
using (MySqlDataReader dr = com.ExecuteReader())
{
if (dr.HasRows)
{
dt.Load(dr);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
return dt;
}
Также пропишем считывание текущего времени при запуске приложения:
private void Form1_Load(object sender, EventArgs e)
{
data.Text = DateTime.Now.ToString();
timer1.Enabled = true;
h1 = 0;
h2 = 0;
dataGridView1.DataSource = load_data();
dataGridView1.Columns[0].Width = 150;
dataGridView1.Columns[1].Width = 150;
dataGridView1.Columns[2].Width = 150;
dataGridView1.Columns[3].Width = 150;
}
Считывание базы данных в приложение и текущего времени представлено на рисунке 9.
Рисунок 9 - Считывание базы данных в приложение и текущего времени
Пропишем таймер, отслеживающий события, долгое состояние камер холодильника в открытом состоянии и запись соответствующих событий в журнал:
private void timer1_Tick(object sender, EventArgs e)
{
data.Text = DateTime.Now.ToString();
dataGridView1.DataSource = load_data();
if (Convert.ToInt32(tt1.Text) >= 0)
{
tt1.Text = (Convert.ToInt32(tt1.Text) + 1).ToString();
if (Convert.ToInt32(tt1.Text) >= 5)
{
z51.Visible = true;
if (Convert.ToInt32(tt1.Text) == 5)
{
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "хол.кам. открыта долго" + "', '" + data.Text + "', '" + "-" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
if (Convert.ToInt32(tt2.Text) >= 0)
{
tt2.Text = (Convert.ToInt32(tt2.Text) + 1).ToString();
if (Convert.ToInt32(tt2.Text) >= 5)
{
z52.Visible = true;
if (Convert.ToInt32(tt2.Text) == 5)
{
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "мор.кам. открыта долго" + "', '" + data.Text + "', '" + "-" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
}
}
if (h1 == 1)
{
z22.Visible = true;
z23.Visible = false;
if (Convert.ToInt32(t1.Text) < 25) t1.Text = (Convert.ToInt32(t1.Text) + 1).ToString();
}
if (h1 == 2)
{
z22.Visible = false;
z23.Visible = true;
if (Convert.ToInt32(t1.Text) > 0) t1.Text = (Convert.ToInt32(t1.Text) - 1).ToString();
else h1 = 3;
}
if (h2 == 1)
{
z32.Visible = true;
z33.Visible = false;
if (Convert.ToInt32(t2.Text) < 25) t2.Text = (Convert.ToInt32(t2.Text) + 1).ToString();
}
if (h2 == 2)
{
z32.Visible = false;
z33.Visible = true;
if (Convert.ToInt32(t2.Text) > -20) t2.Text = (Convert.ToInt32(t2.Text) - 1).ToString();
else h2 = 3;
}
if (h1 == 3)
{
z23.Visible = false;
h1 = 0;
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "хол.кам. стабилизировалась" + "', '" + data.Text + "', '" + "-" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
if (h2 == 3)
{
z33.Visible = false;
h2 = 0;
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "хол.кам. стабилизировалась" + "', '" + data.Text + "', '" + "-" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
}
Пропишем открывание холодильной камеры, повышение температуры из-за открытия и создания соответствующей записи:
private void p11_Click(object sender, EventArgs e)
{
p12.Visible = true;
p11.Visible = false;
tt1.Text = "0";
h1 = 1;
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() +"', '" + "открыта холодил.камера" + "', '" + data.Text + "', '" + "температура растет" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
Открывание холодильной камеры, повышение температуры из-за открытия и создание соответствующей записи представлено на рисунке 10.
Рисунок 10 - Открывание холодильной камеры, повышение температуры из-за открытия и создание соответствующей записи
Длительное состояние открытой холодильной камеры и соответствующая запись в журнале представлено на рисунке 11.
Рисунок 11 - Длительное состояние открытой холодильной камеры и соответствующая запись в журнале
Пропишем закрытие холодильной камеры и включения агрегата для понижения (стабилизации температуры), а также создания соответствующей записи:
private void p12_Click(object sender, EventArgs e)
{
p11.Visible = true;
p12.Visible = false;
tt1.Text = "-1";
z51.Visible = false;
h1 = 2;
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "закрыта холодил.камера" + "', '" + data.Text + "', '" + "температура падает" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
Закрытие холодильной камеры и включения агрегата для понижения (стабилизации температуры), а также создания соответствующей записи представлено на рисунке 12.
Рисунок 12 - Закрытие холодильной камеры и включения агрегата для понижения (стабилизации температуры), а также создания соответствующей записи
Стабилизация температуры в холодильной камере и создание соответствующей записи представлено на рисунке 13.
Рисунок 13 - Стабилизация температуры в холодильной камере и создание соответствующей записи
Пропишем открывание морозильной камеры, повышение температуры из-за открытия и создания соответствующей записи:
private void p21_Click(object sender, EventArgs e)
{
p22.Visible = true;
p21.Visible = false;
tt2.Text = "0";
h2 = 1;
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "открыта морозил.камера" + "', '" + data.Text + "', '" + "температура растет" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
Открывание морозильной камеры, повышение температуры из-за открытия и создание соответствующей записи представлено на рисунке 14.
Рисунок 14 - Открывание морозильной камеры, повышение температуры из-за открытия и создание соответствующей записи
Длительное состояние открытой морозильной камеры и соответствующая запись в журнале представлено на рисунке 15.
Рисунок 15 - Длительное состояние открытой морозильной камеры и соответствующая запись в журнале
Пропишем закрытие морозильной камеры и включения агрегата для понижения (стабилизации температуры), а также создания соответствующей записи:
private void p22_Click(object sender, EventArgs e)
{
p21.Visible = true;
p22.Visible = false;
tt2.Text = "-1";
z52.Visible = false;
h2 = 2;
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "закрыта морозил.камера" + "', '" + data.Text + "', '" + "температура падает" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
Закрытие морозильной камеры и включения агрегата для понижения (стабилизации температуры), а также создания соответствующей записи представлено на рисунке 16.
Рисунок 16 - Закрытие морозильной камеры и включения агрегата для понижения (стабилизации температуры), а также создания соответствующей записи
Стабилизация температуры в морозильной камере и создание соответствующей записи представлено на рисунке 17.
Рисунок 17 - Стабилизация температуры в морозильной камере и создание соответствующей записи
Пропишем всплывающие подсказки по работе холодильника, в том числе по наведению курсора компьютерной мыши на индикаторы:
private void z21_MouseMove(object sender, MouseEventArgs e)
{
z4.Visible = false;
description.Text = "Температура холодильной камеры (норма 0..+5)";
description.Visible = true;
z1.Left = z21.Left - 2;
z1.Top = z21.Top - 2;
z1.Visible = true;
}
private void z22_MouseMove(object sender, MouseEventArgs e)
{
z4.Visible = false;
description.Text = "Температура холодильной камеры растет";
description.Visible = true;
z1.Left = z22.Left - 2;
z1.Top = z22.Top - 2;
z1.Visible = true;
}
private void z23_MouseMove(object sender, MouseEventArgs e)
{
z4.Visible = false;
description.Text = "Температура холодильной камеры падает";
description.Visible = true;
z1.Left = z23.Left - 2;
z1.Top = z23.Top - 2;
z1.Visible = true;
}
private void z31_MouseMove(object sender, MouseEventArgs e)
{
z4.Visible = false;
description.Text = "Температура морозильной камеры (норма -10..-20)";
description.Visible = true;
z1.Left = z31.Left - 2;
z1.Top = z31.Top - 2;
z1.Visible = true;
}
private void z32_MouseMove(object sender, MouseEventArgs e)
{
z4.Visible = false;
description.Text = "Температура морозильной камеры растет";
description.Visible = true;
z1.Left = z32.Left - 2;
z1.Top = z32.Top - 2;
z1.Visible = true;
}
private void z33_MouseMove(object sender, MouseEventArgs e)
{
z4.Visible = false;
description.Text = "Температура морозильной камеры падает";
description.Visible = true;
z1.Left = z33.Left - 2;
z1.Top = z33.Top - 2;
z1.Visible = true;
}
private void p11_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void p12_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void p21_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void p22_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void z1_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void description_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void data_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void z51_MouseMove(object sender, MouseEventArgs e)
{
z1.Visible = false;
description.Text = "Холодильная камера открыта слишком долго";
description.Visible = true;
z4.Left = z51.Left - 1;
z4.Top = z51.Top - 1;
z4.Visible = true;
}
private void z52_MouseMove(object sender, MouseEventArgs e)
{
z1.Visible = false;
description.Text = "Морозильная камера открыта слишком долго";
description.Visible = true;
z4.Left = z52.Left - 1;
z4.Top = z52.Top - 1;
z4.Visible = true;
}
private void z4_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void dataGridView1_Move(object sender, EventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
Всплывающие подсказки по работе холодильника, в том числе по наведению курсора компьютерной мыши на индикаторы представлено на рисунках 18 - 20.
Рисунок 18 - Всплывающие подсказки по работе холодильника, в том числе по наведению курсора компьютерной мыши на индикаторы
Рисунок 19 - Всплывающие подсказки по работе холодильника, в том числе по наведению курсора компьютерной мыши на индикаторы
Рисунок 20 - Всплывающие подсказки по работе холодильника, в том числе по наведению курсора компьютерной мыши на индикаторы
Одновременно открытые двери камер холодильника представлены на рисунке 21.
Рисунок 21 - Одновременно открытые двери камер холодильника
Зафиксированные транзакции в базе данных представлены на рисунке 22.
Рисунок 22 - Зафиксированные транзакции в базе данных
ЗАКЛЮЧЕНИЕ
Целью данной работы является разработка программного обеспечения встроенного процессора холодильника.
Для достижения поставленной цели был проведен анализ предметной области. Анализ предметной области позволил сформировать перечень функциональных требований к проекту.
Следующим шагом к достижению цели было выполнено проектирование. На его этапе были определены данные, с которыми предстояло работать информационной системе, а также определены инструментальные средства ее реализации.
После этого была создана база данных в СУБД «MySQL» было разработана приложения на языке программирования Visual C#.
В конце было произведено тестирование всех частей системы, на основании которого можно сказать, что система работает корректно и удовлетворяет всем поставленным задачам.
Полный листинг кода программы представлен в приложении А.
ПРИЛОЖЕНИЕ А - ЛИСТИНГ ПРОГРАММЫ
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace WindowsFormsApplication10
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int h1, h2;
private DataTable load_data()
{
DataTable dt = new DataTable();
MySqlConnectionStringBuilder mysqlCSB;
mysqlCSB = new MySqlConnectionStringBuilder();
mysqlCSB.Server = "127.0.0.1";
mysqlCSB.Database = "fridge";
mysqlCSB.UserID = "root";
mysqlCSB.Password = "";
string queryString = @"SELECT * FROM log";
using (MySqlConnection con = new MySqlConnection())
{
con.ConnectionString = mysqlCSB.ConnectionString;
MySqlCommand com = new MySqlCommand(queryString, con);
try
{
con.Open();
using (MySqlDataReader dr = com.ExecuteReader())
{
if (dr.HasRows)
{
dt.Load(dr);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
return dt;
}
private void p11_Click(object sender, EventArgs e)
{
p12.Visible = true;
p11.Visible = false;
tt1.Text = "0";
h1 = 1;
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() +"', '" + "открыта холодил.камера" + "', '" + data.Text + "', '" + "температура растет" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
private void Form1_Load(object sender, EventArgs e)
{
data.Text = DateTime.Now.ToString();
timer1.Enabled = true;
h1 = 0;
h2 = 0;
dataGridView1.DataSource = load_data();
dataGridView1.Columns[0].Width = 150;
dataGridView1.Columns[1].Width = 150;
dataGridView1.Columns[2].Width = 150;
dataGridView1.Columns[3].Width = 150;
}
private void p12_Click(object sender, EventArgs e)
{
p11.Visible = true;
p12.Visible = false;
tt1.Text = "-1";
z51.Visible = false;
h1 = 2;
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "закрыта холодил.камера" + "', '" + data.Text + "', '" + "температура падает" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
private void p21_Click(object sender, EventArgs e)
{
p22.Visible = true;
p21.Visible = false;
tt2.Text = "0";
h2 = 1;
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "открыта морозил.камера" + "', '" + data.Text + "', '" + "температура растет" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
private void p22_Click(object sender, EventArgs e)
{
p21.Visible = true;
p22.Visible = false;
tt2.Text = "-1";
z52.Visible = false;
h2 = 2;
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "закрыта морозил.камера" + "', '" + data.Text + "', '" + "температура падает" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
private void timer1_Tick(object sender, EventArgs e)
{
data.Text = DateTime.Now.ToString();
dataGridView1.DataSource = load_data();
if (Convert.ToInt32(tt1.Text) >= 0)
{
tt1.Text = (Convert.ToInt32(tt1.Text) + 1).ToString();
if (Convert.ToInt32(tt1.Text) >= 5)
{
z51.Visible = true;
if (Convert.ToInt32(tt1.Text) == 5)
{
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "хол.кам. открыта долго" + "', '" + data.Text + "', '" + "-" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
}
}
if (Convert.ToInt32(tt2.Text) >= 0)
{
tt2.Text = (Convert.ToInt32(tt2.Text) + 1).ToString();
if (Convert.ToInt32(tt2.Text) >= 5)
{
z52.Visible = true;
if (Convert.ToInt32(tt2.Text) == 5)
{
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "мор.кам. открыта долго" + "', '" + data.Text + "', '" + "-" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
}
}
if (h1 == 1)
{
z22.Visible = true;
z23.Visible = false;
if (Convert.ToInt32(t1.Text) < 25) t1.Text = (Convert.ToInt32(t1.Text) + 1).ToString();
}
if (h1 == 2)
{
z22.Visible = false;
z23.Visible = true;
if (Convert.ToInt32(t1.Text) > 0) t1.Text = (Convert.ToInt32(t1.Text) - 1).ToString();
else h1 = 3;
}
if (h2 == 1)
{
z32.Visible = true;
z33.Visible = false;
if (Convert.ToInt32(t2.Text) < 25) t2.Text = (Convert.ToInt32(t2.Text) + 1).ToString();
}
if (h2 == 2)
{
z32.Visible = false;
z33.Visible = true;
if (Convert.ToInt32(t2.Text) > -20) t2.Text = (Convert.ToInt32(t2.Text) - 1).ToString();
else h2 = 3;
}
if (h1 == 3)
{
z23.Visible = false;
h1 = 0;
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "хол.кам. стабилизировалась" + "', '" + data.Text + "', '" + "-" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
if (h2 == 3)
{
z33.Visible = false;
h2 = 0;
string connectionString = "server=localhost;user=root;database=fridge;";
MySqlConnection connection = new MySqlConnection(connectionString);
connection.Open();
string query = "INSERT INTO log (id_log, type, time, value) VALUES ('" + dataGridView1.RowCount.ToString() + "', '" + "хол.кам. стабилизировалась" + "', '" + data.Text + "', '" + "-" + "')";
MySqlCommand command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
connection.Close();
dataGridView1.DataSource = load_data();
}
}
private void z21_MouseMove(object sender, MouseEventArgs e)
{
z4.Visible = false;
description.Text = "Температура холодильной камеры (норма 0..+5)";
description.Visible = true;
z1.Left = z21.Left - 2;
z1.Top = z21.Top - 2;
z1.Visible = true;
}
private void z22_MouseMove(object sender, MouseEventArgs e)
{
z4.Visible = false;
description.Text = "Температура холодильной камеры растет";
description.Visible = true;
z1.Left = z22.Left - 2;
z1.Top = z22.Top - 2;
z1.Visible = true;
}
private void z23_MouseMove(object sender, MouseEventArgs e)
{
z4.Visible = false;
description.Text = "Температура холодильной камеры падает";
description.Visible = true;
z1.Left = z23.Left - 2;
z1.Top = z23.Top - 2;
z1.Visible = true;
}
private void z31_MouseMove(object sender, MouseEventArgs e)
{
z4.Visible = false;
description.Text = "Температура морозильной камеры (норма -10..-20)";
description.Visible = true;
z1.Left = z31.Left - 2;
z1.Top = z31.Top - 2;
z1.Visible = true;
}
private void z32_MouseMove(object sender, MouseEventArgs e)
{
z4.Visible = false;
description.Text = "Температура морозильной камеры растет";
description.Visible = true;
z1.Left = z32.Left - 2;
z1.Top = z32.Top - 2;
z1.Visible = true;
}
private void z33_MouseMove(object sender, MouseEventArgs e)
{
z4.Visible = false;
description.Text = "Температура морозильной камеры падает";
description.Visible = true;
z1.Left = z33.Left - 2;
z1.Top = z33.Top - 2;
z1.Visible = true;
}
private void p11_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void p12_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void p21_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void p22_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void z1_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void description_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void data_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void z51_MouseMove(object sender, MouseEventArgs e)
{
z1.Visible = false;
description.Text = "Холодильная камера открыта слишком долго";
description.Visible = true;
z4.Left = z51.Left - 1;
z4.Top = z51.Top - 1;
z4.Visible = true;
}
private void z52_MouseMove(object sender, MouseEventArgs e)
{
z1.Visible = false;
description.Text = "Морозильная камера открыта слишком долго";
description.Visible = true;
z4.Left = z52.Left - 1;
z4.Top = z52.Top - 1;
z4.Visible = true;
}
private void z4_MouseMove(object sender, MouseEventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
private void dataGridView1_Move(object sender, EventArgs e)
{
description.Visible = false;
z1.Visible = false;
z4.Visible = false;
}
}
}
ИНСТРУКЦИЯ
Заходите через браузер в утилиту PHPmyAdmin для импорта базы данных (адрес можете увидеть на фото)
Раз Переходите в раздел "базы данных"
И создаете базу данных с именем "fridge" в поле "сравнение" (кодировка) выбираете "cp1251_bin"
После этого выбираете в списке эту базу данных и нажимаете на нее
Сверху нажимаете "импорт"
Нажимаете "выбрать файл" и в проводнике выбираете мой файл fridge.sql
Размещено на Allbest.ru
Подобные документы
Основные принципы, которыми следует руководствоваться в процессе создания и функционирования информационной системы. Проектирование системы программного обеспечения холодильника. Построение диаграммы классов, компонентов, размещения и состояний.
курсовая работа [733,4 K], добавлен 10.06.2011Проектирование базы данных, информационной подсистемы PLC-Tester, модуля тестирования и web-приложения. Разработка логической структуры программного продукта и общие требования к техническому обеспечению. Запуск программы и описание тестовых прогонов.
дипломная работа [3,2 M], добавлен 30.06.2011Разработка структурной схемы процессора; синтез микропрограммного и управляющего автомата с жесткой логикой. Функциональная организация процессора: программные модели, форматы данных и команд. Организация оперативной памяти. Проектирование блока операций.
учебное пособие [1,1 M], добавлен 09.04.2013Разработка устройства, реализующего набор команд из числа операций с плавающей точкой семейства процессора i486. Структура сопроцессора FPU. Принцип выполнения операций, разработка блок-схемы, построение структурной схемы основных блоков процессора.
курсовая работа [734,9 K], добавлен 27.10.2010Особенности объектно-ориентированного проектирования. Основные понятия объектно-ориентированного подхода. Основы языка UML, варианты его использования. Диаграммы классов и взаимодействия. Разработка диаграммы прецедентов (вариантов использования).
курсовая работа [1,1 M], добавлен 13.05.2014История развития центрального процессора. Основные проблемы создания многоядерных процессоров. Проектирование микропроцессорной системы на базе процессора Intel 8080. Разработка принципиальной схемы и блок-схемы алгоритма работы микропроцессорной системы.
курсовая работа [467,6 K], добавлен 11.05.2014Функциональная и структурная организация ЭВМ. Разработка функциональных микропрограмм заданных команд. Их объединение и привязка к структуре операционного автомата процессора. Разработка управляющего автомата процессора с программируемой логикой.
дипломная работа [4,0 M], добавлен 25.03.2012Анализ существующего программного обеспечения. Этапы создания проекта. Концептуальное, логическое и физическое проектирование базы данных. Структура программного продукта. Руководство программиста и оператора. Тестирование программного продукта.
курсовая работа [586,4 K], добавлен 26.06.2015Разработка концепции и проектирование базы данных, специально адаптированной для потребностей фитнес-клубов, создание прототипа сайта фитнес-клуба. Концептуальное, даталогическое и логическое проектирование, запросы к базе данных, реляционная модель.
курсовая работа [2,1 M], добавлен 25.08.2024Разработка программного обеспечения, предназначенного для автоматизации деятельности туристической фирмы. Анализ и проектирование базы данных предметной области. Создание концептуальной, логической и физической моделей данных и программы их обработки.
курсовая работа [816,5 K], добавлен 05.02.2018