Отже, налаштування обміну із базою даних є, далі потрібно створити вікна та розмістити елементи керування, які відповідатимуть за відображення даних із БД, та для виконання певних задач.
В програмі повинна бути реалізована можливість роботи користувача у багатовіконному режимі, тому було використано контейнерну технологію дочірніх вікон MDI(multiple document interface). Дочірні діалогові вікна не повинні виходити за межі батьківської форми та керуватися за допомогою меню головної форми. Для цього потрібно скористатися властивістю “Parent”, значення якої буде вказано на головне вікно.
Відповідно до вище зазначених умов розроблено структуру інтерфейсу користувача, яка складатиметься з основної(батьківської) форми, головного навігаційного меню та дочірніх вікон. Головне меню призначене для виконання функціональних можливостей програмного забезпечення. Меню дочірніх форм містить набір функцій для виконання операцій конкретного вікна.
Але спершу на вікні розмістимо головне меню, створимо підпункти, задавши їм відповідні назви, та надавши стилю згідно із спроектованим раніше інтерфейсом.
Після того, як була створена батьківська форма та головне меню програми потрібно створити дочірні форми. Для цього потрібно скористатись головним меню Visual Studio: File/Add/Add Item/Windows Form. З’явиться порожня форма. При її виклику потрібно вказати параметр MdiParent на головну форму програми. Далі потрібно розмістити необхідні елементи керування, використовуючи створений клас доступу до бази даних, заносити дані до компонент.
Приклад занесення інформації у таблицю.
dataGrid1.DataSource = (new MySqlUsing()).GetaDataQuery("select `header` as 'Завдання', `Name` as 'Станція', `jobs`.`type` as 'Тип' from `jobs`, `stantion` where `jobs`.`idstantion` = `stantion`.`idStantion` ").Tables[0];
При створені підстанції, наперед не відомо скільки трансформаторів буде використовуватись. Тому потрібно забезпечити динамічне створення, а так як трансформатори мають власну конфігурацію, яку потрібно зазначати окремо, то було вирішено створити не стандартний елемент керування TransfUI.
Для динамічного створення компоненти потрібно використати його клас та створити за допомогою конструктора оголошений об’єкт.
Якщо ж трансформаторів буде декілька, то потрібно
створення здійснювати в циклі, що повторюватиметься необхідну кількість раз.
for (int i = 0; i < x; i++)
{tr2 = new TransfUI();.Dock = DockStyle.Left;panel.Controls.Add(tr2);
tr2.BringToFront();
}
Звіти, що мають створюватись у програмній системі, реалізовані з використанням додатку офісного пакету Microsoft Office Word, та для використання, потрібно підключити простір імен, щоб була можливість використати класи:
- Microsoft.Office.Interop.Word.Application wordapp;
- Microsoft.Office.Interop.Word.Paragraph wordparagraph;
- Microsoft.Office.Interop.Word.Document worddocument.
Тестування - це процес технічного дослідження, який виконується на вимогу замовників і призначений для визначення інформації про якість продукту відносно контексту, в якому він має використовуватись. До цього процесу входить виконання програми з метою пошуку помилок.
Тестування не може повністю забезпечити коректність програмного забезпечення, воно тільки порівнює стан і поведінку продукту зі вказаною специфікацією.
Для перевірки коду є наступні форми: інтеграційна та модульна. Спершу використовують стандарти (IEEE 829:1996 і IEEE 1008:1987) з перевірки і тестування модулів. Потім проводять інтеграційне тестування модулів системи із врахуванням роботи їх інтерфейсів під час виконання. При проведені різних видів перевірок збираються дані про помилки, дефекти, відмови тощо і оформляється відповідна документація.
Для проведення етапу тестування було розроблено тестові випадки для функціонального тестування та сценарії для тестування користувацького інтерфейсу. Кожен тестовий випадок містить детальні кроки, тестові дані і очікувані результати.
Під час фази розробки тестів було спроектовано 6 функціональних тестових випадків. Тестові випадки функціонального тестування:
- облік працівників;
- пошук та фільтрація перевірок;
- формування документів;
- створення та редагування підстанції;
- здійснення формування бригади працівників;
- розрахунок струму короткого замикання.
В таблиці 3.1 наведено розподіл функціональних
тестових випадків і наборів тестових даних для цих випадків за варіантами
використання.
Таблиця 3.1 - Розподіл функціональних
випадків і наборів даних
Варіанти використання
Тестові випадки
Тестові дані
Облік працівників.
8
15
Пошук та фільтрація перевірок.
6
18
Формування документів.
4
18
Створення та редагування підстанції.
5
9
Здійснення формування бригади працівників.
5
10
Розрахунок струму короткого замикання.
9
17
Разом
37
87
Усі тестові випадки функціонального тестування, яке
спрямоване на виявлення помилок при виконані певних задач, пройшли успішно,
отже, функціональне тестування розглядається, як успішне.
Тестування користувацького інтерфейсу.
Метою тестування користувацького інтерфейсу є
перевірка правильності навігації по об’єкту тестування та відповідність опису
елементів до дій, які вони виконують. Таблиця 3.2 - Випадки тестування
користувацького інтерфейсу
Кроки/дії
Очікувані результати
Стан
1. Вибір пункту меню «Файл»
Повинно розгорнутись підпункти пункту головного меню
Пройдено
2. Вибрати підпункт «Нова підстанція»
Повинно появитись вікно із можливістю введення
параметрів силової підстанції.
Пройдено
3. Вибрати підпункт «Перегляд усіх»
Повинно появитись вікно із можливістю перегляду списку
підстанцій
Пройдено
4. Натиснути на кнопку «Сортувати А-Я»
Відображення у таблиці із списком підстанцій впорядкованої
інформації згідно алфавіту
Пройдено
5. Вибрати підпункт «Налаштування»
Повинно появитись вікно із можливістю налаштування
параметрів під’єднання до сервера баз даних
Пройдено
6. Вибрати підпункт «Перевірки -Нова перевірка»
Повинно появитись вікно із можливістю вибору підстанції,
зазначення проблеми перевірки та вибору працівників бригади
Пройдено
7. Натиснути на кнопку «Додати»
У поле повинні добавитись дані про робітника, що
увійшов до складу бригади
Пройдено
8. Натиснути на пункт «Довідка»
Відкрилось нове вікно браузера із довідковою
інформацією
Пройдено
9. Зміна розташування вікна на екрані.
При зміні положення вікна, вікно змінює своє
розташування.
Пройдено
Було проведено 9 тестів «Випадки тестування
користувацького інтерфейсу», із яких усі пройшли успішно, отже, тестування
користувацького інтерфейсу розглядається, як успішне.
Враховуючи отримані результати, можна зробити
висновок, що програма успішно пройшла усі перевірки та готова до використання.
Для інсталяції та експлуатації
автоматизованої інформаційної системидля обліку та обслуговування електричних
силових підстанційслід забезпечити необхідні апаратні та програмні вимоги.
Конфігурація системи для працеспроможності має відповідати наступним вимогам:
- процесор - частотою не менше
1,5 ГГц;
- оперативна пам’ять - 1ГБ;
- монітор - підтримка
розширення 1024х768;
- жорсткий диск - місткістю не
менше 20ГБ;
- мережевий адаптер -
FastEthernet/Wi-Fi;
- наявність клавіатури;
- наявність маніпулятора
«миші».
Найпопулярнішими, серед звичайних
користувачів, операційними системами є системи, що відносяться до сімейства Windows, які забезпечують зручність та
легкість у користуванні програмним комплексом, надають широку палітру
можливостей, великий вибір програмного забезпечення різних видів, надійність
при оперування конфіденційними даними. Саме такі властивості системи потрібні для розроблювального
програмного забезпечення, тому до конфігурації ПК потрібно віднести наявність
ОС сімейства Windows із встановленим набором бібліотек(платформою) .NET
Framework 4.0, яка надає значні можливості для використання програмних засобів.
Вона показує, що для роботи проекту, потрібна
наявність Веб-сервера, на якому знаходитиметься база даних із даними.
Під’єднання персонального комп’ютера до серверу буде відбуватиметься через
мережу, через визначений порт системи, який по замовуванню рівний значенню
3066.
Визначивши мінімальну конфігурацію персонального
комп’ютера, під яку розроблятиметься програмне забезпечення, здійснено перелік
пристроїв, які потрібні для використання, можна перейти до експлуатації
створеного програмного забезпечення.
Щоб розпочати роботу із додатком, потрібно
пересвідчитись, що система відповідає вимогам для використання, та встановлені
всі додаткові програмні засоби, що використовуються програмною системою.
Після запуску програми перед користувачем, з’являється
головне вікно програми, що містить головне меню, у якому можна вибрати підпункт
Підстанція-Перегляд усіх.Після чого відкриється дочірнє вікно із вмістом. Як
бачимо, тут є можливість створити нову підстанцію, або ж редагувати вже
існуючу. Сортування, що реалізоване надасть простоту при роботі із програмою, а
за допомогою фільтра швидко здійснюватиметься пошук необхідних даних.
При створені запису про нову
підстанцію, відкривається вікно, яке складається із багатьох вкладок, кожна з
яких вміщує параметри із кожного елемента підстанції, з можливістю зазначення
конфігурацій.
Якщо при створенні підстанції не було
вказано обов’язкові налаштування, наприклад назви підстанції, тоді при закритті
дочірнього вікна, перед користувачем появиться попереджувальне повідомлення із
змістом, що не всі параметри введено.
Коли усі дані введено вірно, то при
закритті вікна, автоматично зберігаються дані про підстанцію, або можна
натиснути на кнопку «Зберегти», після чого відбудеться сповіщення повідомленням
про успішно доданий запис.
Для роботи із робітниками системи, потрібно перейти на
відповідний пункт меню «Файл - Робітники - Перегляд усіх», при натисненні на
який відкриється вікно із вмістом. У вікні можна переглянути список усіх
працівників, здійснити сортування інформації, знайти потрібний запис або ж перейти
до створення нового.
При створені нового робітника, потрібно скористатись
підписами на елементах керування, ввести відповідну інформацію та натиснути
кнопку із назвою «Додати» для збереження інформації. При натисненні на кнопку
із підписом «Відміна», не буде здійснено збереження введених даних.
У програмній системі співробітники фігурують для
створення бригад, які відправляються на виконання певного завдання.
Завдання можна створити скориставшись головним меню
додатку, та перейшовши на пункт «Файл-Перевірка-Нова перевірка», що забезпечить
відкриття відповідного вікна у якому потрібно вибрати тип перевірки, яка може
набувати двох значень(планова, ремонтна), далі вказати на якій підстанції буде
здійснюватись виконання завдання, вибравши необхідне значення у списку. Також
передбачена можливість введення суті роботи, яку потрібно виконати, із
зазначенням деталей поломки чи несправностей.
Для виконання створюваного завдання назначаються
працівники, що мають полагодити та виправити несправності. Працівники об’єднуються
у бригади, склад яких не є сталим, а визначаються операторами, в залежності від
завантаженості працівників.
У програмі для формування бригади потрібно вибрати
працівника із списку та натиснути на кнопку «Додати». Після цієї дії у полі під
кнопками повинно добавитись нове поле із значенням прізвища, ім’я та по
батькові робітника, якого було вибрано до складу бригади на завдання. Щоб
зберегти введену інформацію по перевірці, потрібно натиснути на кнопку
«Додати».
При перегляді усіх завдань, можна швидко переглянути
основну інформацію про перевірки, для зручності перегляду можна скористатись
сортуванням даних, що впорядкує їх за певним критерієм(за завданням, за
станцією, за типом перевірки), або використати фільтрування, яке залишить у
таблиці тільки ті значення записів, які будуть відповідати введеному критерію.
Натиснувши на кнопку із назвою «Звіт», на панелі
інструментів вікна роботи із перевірками, у додаток Microsoft Office Word,
завантажиться інформація про виділену у таблиці перевірку.
Так видно що у звіті зазначається номер направлення на
завдання, проблема що спонукала для створення перевірки на підстанції, що також
висвітлюється у звіті. Також у таблиці формується список працівників бригади,
які повинні поставити свій підпис про те, що вони ознайомлені із направленням.
Також у звіті є розграфлена область,
у якій потрібно буде зазначити причини поломки на підстанції, та виконані
роботи із вказанням витрачених матеріалів, які були використані для відновлення
працеспроможності енергетичної підстанції. Дату виконання завдання потрібно також буде прописати у формі
для занесення до архіву направлень.
Як зазначалось вище, у програмній системі також
присутні довідникові дані, які потрібні для використання при обрахунках та
зазначення параметрів елементів системи. Для того щоб переглянути чи редагувати
дані, потрібно скористатися пунктом головного меню «Файл - База даних», де
виберемо необхідний підпункт.
Потрібно зазначити, що також передбачена можливості
налаштування підключення до серверу бази даних, адже база даних може
розміщуватись як на локальному комп’ютері, так і на віддаленому. Тому для
виклику налаштування, потрібно вибрати відповідний пункт головного меню, після
чого перед користувачем з’явиться вікна.
Видно, що верхнє поле призначене для введення
мережевої адреси, за допомогою якого буде здійснюватись з’єднання.
Якщо база даних розміщується на локальному комп’ютері,
то у якості адреси серверу можна вводити не ІР адресу комп’ютера, а значення
localhost, що символізує внутрішню адресу ПК. Також при налаштуванні потрібно
зазначати користувача, що має доступ до серверу БД, та відповідний пароль.
Наприклад, при налаштуванні підключення програми до
серверу, в поле вводимо його ІР адресу типу 192.168.231.133, у поле
«Користувач» введемо назву облікового запису типу User та пароль Valetron.
Після введення інформації про параметри підключення,
можна здійснити його перевірку. Для збереження підключення, достатньо натиснути
на кнопку «Застосувати».
Також можливі певні інші
маніпулювання із програмною системою, але суть роботи не змінюється, і
використовувати її можна опираючись на інформацію описану вище.
Код програми
Клас для роботи із базою даних MySQL.
using
System;System.Collections.Generic;System.Linq;System.Text;System.Data;System.Data.Common;System.Collections;MySql.Data.MySqlClient;SubStation
{
{
///<summary>
///Рядокпідключення
///</summary>ConnectionStringDb;msg
= false;MySqlUsing()
{=
Properties.Settings.Default.SaveConnectionString;(!Connected())
{(!msg)
{.Windows.Forms.MessageBox.Show("Буловстановленорядокпід*єднаннядоБДпозамовченю...",
"System", System.Windows.Forms.MessageBoxButtons.OK,
System.Windows.Forms.MessageBoxIcon.Error);= true;
}
};
}getConnectingString()
{.ConnectionStringDb;
}
///<summary>
///ФункціядляперевіркинаявностіпідключеннядоБД
///</summary>
///<returns></returns>Connected()
{
{con =
newMySqlConnection(ConnectionStringDb);.Open();.Close();;
}
{;
};
}
///<summary>
/// Встановлення заданого підключення, зберігання у настройки проекту
///</summary>
///<param
name="ConStr"></param>SetConnectionString(string ConStr)
{.Settings.Default.SaveConnectionString
= ConStr;.Settings.Default.Save();=
Properties.Settings.Default.SaveConnectionString;
}
///<summary>
/// Функція для вибірки даних запитом
і повертає масив значень
///</summary>
///<param
name="query">Самзапит</param>
///<param
name="nil">Ти вставляти пустий рядок у масив, для
комбобоксів</param>
///<returns></returns>GetDataQuery(string
query, bool nil)
{con =
newMySqlConnection(ConnectionStringDb);oda = newMySqlCommand();.Connection =
con;.CommandText = query;
{.Open();reader;=
oda.ExecuteReader();arr = newArrayList(0);(nil)
arr.Add("");(DbDataRecord rec in reader)
{.Add(rec.GetValue(0));
}.Close();arr;
}
{;
}
}
///<summary>
/// Функція для вибірки даних запитом
і повертає Датасет, віртуальну базу з однією табличкою "Табле1"
///</summary>
///<param
name="query">Запит</param>
///<returns>Датасет</returns>GetaDataQuery(string
query)
{oda =
newMySqlDataAdapter();ds = newDataSet();.Tables.Add("Table1");con =
newMySqlConnection(ConnectionStringDb);.SelectCommand =
newMySqlCommand();.SelectCommand.Connection = con;.SelectCommand.CommandText =
query;
{.Open();.Fill(ds.Tables[0]);.Close();ds;
}
{;
}
}
///<summary>
///Запитнадодання
///</summary>
///<param name="DBTable">Назватаблиці</param>
///<param
name="DBPolya">Перелічити в рядку через кому поля для
вставки</param>
///<param
name="DBValue">Перелічити в рядку значення в лапках</param>
publicvoid
Insert(string DBTable, string DBPolya, string DBValue)
{con = newMySqlConnection(ConnectionStringDb);Command
= newMySqlCommand();.Connection = con;.CommandText = "INSERT INTO " +
DBTable + " (" + DBPolya + ") VALUES(" + DBValue +
")";.Open();.ExecuteNonQuery();.Close();
}
///<summary>
/// Запит на оновлення
///</summary>
///<param
name="DBTable">Назватаблиціоновлення</param>
///<param
name="DBSet">Прописати в рядку в які поля які значення
занести</param>
///<param
name="DBWhere">Умованаоновлення</param>Update(string
DBTable, string DBSet, string DBWhere)
{con =
newMySqlConnection(ConnectionStringDb);Command = newMySqlCommand();.Connection
= con;.CommandText = "UPDATE " + DBTable + " SET " + DBSet
+ " WHERE " + DBWhere;.Open();.ExecuteNonQuery();.Close();
}
///<summary>
/// Запит на видалення
///</summary>
///<param
name="DBTable">Назватаблиці</param>
///<param
name="DBWhere">Умованавидалення</param>Delete(string
DBTable, string DBWhere)
{con =
newMySqlConnection(ConnectionStringDb);Command = newMySqlCommand();.Connection
= con;.CommandText = "DELETE FROM " + DBTable + " WHERE " +
DBWhere;.Open();.ExecuteNonQuery();.Close();
}
///<summary>
///Запитщоповертаєключовеполе
///</summary>
///<param
name="DBTable">Назватаблиці</param>
///<param
name="DBWhere">Умованавиборкуелемента</param>
///<returns>КлючовеполеІД</returns>GetId(string
DBTable, string polename, string DBWhere)
{con =
newMySqlConnection(ConnectionStringDb);oda = newMySqlCommand();.Connection =
con;.CommandText = "Select " + polename + " From " +
DBTable + " Where " + DBWhere;
{.Open();reader;=
oda.ExecuteReader();arr = newArrayList(0);(DbDataRecord rec in reader)
{.Add(rec.GetValue(0));
}.Close();.ToInt16(arr[0]);
}
{-1;
}
}GetnoId(string
DBTable, string polename, string DBWhere)
{con =
newMySqlConnection(ConnectionStringDb);oda = newMySqlCommand();.Connection =
con;.CommandText = "Select " + polename + " From " +
DBTable + " Where " + DBWhere;
{.Open();reader;=
oda.ExecuteReader();arr = newArrayList(0);(DbDataRecord rec in reader)
{.Add(rec.GetValue(0));
}.Close();arr[0].ToString();
}
{"None";
}
}
}
}
Модуль для створення та редагування
підстанцій.
using
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;SubStation
{: Form
{EditSubStation()
{();
}Idstation =
-1;insert = true;tabPage1_Click(object sender, EventArgs e)
{
}radioButton1_CheckedChanged(object
sender, EventArgs e)
{x1 = ((sender
asRadioButton).Name[(sender asRadioButton).Name.Length-1]).ToString();x =
int.Parse(x1);panel.Controls.Clear();(int i = 0; i < x; i++) {tr2 =
newTransfUI();.Dock =
DockStyle.Left;.setNum((i+1).ToString());panel.Controls.Add(tr2);.BringToFront();
}
}EditSubStation_FormClosing(object
sender, FormClosingEventArgs e)
{
}EditSubStation_Load(object
sender, EventArgs e)
{(insert)
{
(newMySqlUsing()).Insert("`stantion`",
"`Name`", "''");=
(newMySqlUsing()).GetId("`stantion`", "max(`idStantion`)",
"1<2");
//vkladka 2tr2 =
newTransfUI();.Dock =
DockStyle.Left;.setNum((1).ToString());panel.Controls.Add(tr2);
}
{.Text =
((newMySqlUsing()).GetDataQuery("select Name from stantion where
idStantion=" + Idstation.ToString(), false).ToArray())[0].ToString();
//vkladka 2dt =
(newMySqlUsing()).GetaDataQuery("select * from `powertransformator` where
`idStantion`=" + Idstation.ToString()).Tables[0];(dt.Rows.Count)
{1:
radioButton1.Checked = true; break;2: radioButton2.Checked = true; break;3:
radioButton3.Checked = true; break;4: radioButton4.Checked = true; break;
}panel.Controls.Clear();(int
i = 0; i < dt.Rows.Count; i++)
{tr =
newTransfUI();.Dock = DockStyle.Left;.setNum((i+1).ToString());.label8.Text =
dt.Rows[i][0].ToString();.comboBox1.Text =
dt.Rows[i][1].ToString();.comboBox2.Text =
dt.Rows[i][2].ToString();.comboBox3.Text =
dt.Rows[i][6].ToString();.comboBox4.Text = dt.Rows[i][5].ToString();.comboBox5.Text
= dt.Rows[i][3].ToString();.comboBox6.Text =
dt.Rows[i][4].ToString();panel.Controls.Add(tr);.BringToFront();(dt.Rows[i][7].ToString()
== "2").radioButton1.Checked = true;
{.radioButton2.Checked
= true;.radioButton2_CheckedChanged(tr.radioButton2, e);
}
}
}
//vkladka 1
//vkladka
3.EnableHeadersVisualStyles = false;.DataSource =
(newMySqlUsing()).GetaDataQuery("select `Number` as 'Номер', `name`
as 'Назва',
`ComutationAparate` as 'Ком.Апарат' from line10kv
where `idStantion`="+Idstation.ToString()).Tables[0];
//vkladka
4.EnableHeadersVisualStyles = false;.DataSource =
(newMySqlUsing()).GetaDataQuery("select `PKA` as 'Назва' from
voltagetransformator where `Idstation`=" +
Idstation.ToString()).Tables[0];
//vkladka
5.EnableHeadersVisualStyles = false;.DataSource =
(newMySqlUsing()).GetaDataQuery("select `Name` as 'Назва' from
panel where `idstantion`=" + Idstation.ToString()).Tables[0];
//vkladka 6
//vkladka
7.EnableHeadersVisualStyles = false;.DataSource =
(newMySqlUsing()).GetaDataQuery("select `TypePowerOff` as 'Типвимикача', `TC`
as 'Трансформатор',
`Security` as 'Захист' from line110kv where `idstantion`=" +
Idstation.ToString()).Tables[0];.DataSource =
(newMySqlUsing()).GetDataQuery("select Name from rele", false);
}button1_Click(object
sender, EventArgs e)
{l10 =
newLine10();.Tag = Idstation;.ShowDialog();.DataSource =
(newMySqlUsing()).GetaDataQuery("select `Number` as 'Номер', `name`
as 'Назва',
`ComutationAparate` as 'Ком.Апарат' from line10kv
where `idStantion`=" + Idstation.ToString()).Tables[0];
}tabControl1_SelectedIndexChanged(object
sender, EventArgs e)
{
}button7_Click(object
sender, EventArgs e)
{
(newMySqlUsing()).Insert("voltagetransformator",
"PKA, Idstation",
"'"+comboBox2.Text+"',"+Idstation.ToString());.DataSource =
(newMySqlUsing()).GetaDataQuery("select `PKA` as 'Назва' from
voltagetransformator where `Idstation`=" +
Idstation.ToString()).Tables[0];
}button10_Click(object
sender, EventArgs e)
{
(newMySqlUsing()).Insert("panel",
"Name, idstantion", "'" + textBox2.Text + "'," +
Idstation.ToString());.DataSource =
(newMySqlUsing()).GetaDataQuery("select `Name` as 'Назва' from
panel where `idstantion`=" + Idstation.ToString()).Tables[0];
}button13_Click(object
sender, EventArgs e)
{
(newMySqlUsing()).Insert("line110kv",
"`TypePowerOff`, `TC`, `Security`, `idstantion`", "'" +
comboBox3.Text + "','" + comboBox4.Text + "','" +
comboBox5.Text + "'," + Idstation.ToString());.DataSource =
(newMySqlUsing()).GetaDataQuery("select `TypePowerOff` as 'Типвимикача', `TC`
as 'Трансформатор',
`Security` as 'Захист' from line110kv where `idstantion`=" +
Idstation.ToString()).Tables[0];
}button3_Click(object
sender, EventArgs e)
{(MessageBox.Show("Виточнохочетездійснитивидалення?",
"Система",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
(newMySqlUsing()).Delete("line10kv",
"Number='" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString()
+ "'");.DataSource = (newMySqlUsing()).GetaDataQuery("select
`Number` as 'Номер', `name` as 'Назва',
`ComutationAparate` as 'Ком.Апарат' from line10kv
where `idStantion`=" + Idstation.ToString()).Tables[0];
}
}button2_Click(object
sender, EventArgs e)
{l10 =
newLine10();.Tag = "N" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString();.ShowDialog();.DataSource
= (newMySqlUsing()).GetaDataQuery("select `Number` as 'Номер', `name`
as 'Назва',
`ComutationAparate` as 'Ком.Апарат' from line10kv
where `idStantion`=" + Idstation.ToString()).Tables[0];
}button5_Click(object
sender, EventArgs e)
{(MessageBox.Show("Виточнохочетездійснитивидалення?",
"Система",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
(newMySqlUsing()).Delete("voltagetransformator",
"PKA='" + dataGridView2.SelectedRows[0].Cells[0].Value.ToString() +
"'");.DataSource = (newMySqlUsing()).GetaDataQuery("select `PKA`
as 'Назва' from
voltagetransformator where `Idstation`=" +
Idstation.ToString()).Tables[0];
}
}button11_Click(object
sender, EventArgs e)
{(MessageBox.Show("Виточнохочетездійснитивидалення?",
"Система",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
(newMySqlUsing()).Delete("line110kv",
"TypePowerOff='" +
dataGridView4.SelectedRows[0].Cells[0].Value.ToString() + "' and
`TC`='" + dataGridView4.SelectedRows[0].Cells[1].Value.ToString() +
"'and `Security`='" +
dataGridView4.SelectedRows[0].Cells[2].Value.ToString() +
"'");.DataSource = (newMySqlUsing()).GetaDataQuery("select
`TypePowerOff` as 'Типвимикача', `TC` as 'Трансформатор', `Security` as 'Захист' from
line110kv where `idstantion`=" + Idstation.ToString()).Tables[0];
}
}button6_Click(object
sender, EventArgs e)
{
(newMySqlUsing()).Update("voltagetransformator",
"PKA='"+comboBox2.Text+"'", "PKA='" +
dataGridView2.SelectedRows[0].Cells[0].Value.ToString() +
"'");.DataSource = (newMySqlUsing()).GetaDataQuery("select `PKA`
as 'Назва' from
voltagetransformator where `Idstation`=" +
Idstation.ToString()).Tables[0];.Show("Данізмінено", "Система",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}button8_Click(object
sender, EventArgs e)
{(MessageBox.Show("Виточнохочетездійснитивидалення?",
"Система",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
(newMySqlUsing()).Delete("panel",
"Name='" + dataGridView3.SelectedRows[0].Cells[0].Value.ToString() +
"'");.DataSource = (newMySqlUsing()).GetaDataQuery("select
`Name` as 'Назва' from panel where `idstantion`=" +
Idstation.ToString()).Tables[0];
}
}зберегтиToolStripMenuItem_Click(object
sender, EventArgs e)
{(textBox1.Text ==
"")
{(MessageBox.Show("Длятогощобданізберегти, потрібноввестиназвупідстанції." +
Environment.NewLine + " Якщонатиснете [ок] данібудутьвтрачені", "Система",
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
(newMySqlUsing()).Delete("`stantion`",
"`Name`=''");
//else
// e.Cancel = true;
}
{
(newMySqlUsing()).Update("`stantion`",
"`Name`='" + textBox1.Text + "'", "idStantion=" +
Idstation.ToString());(insert)
{(int i = 0; i <
tp2panel.Controls.Count; i++)
{tr =
(TransfUI)tp2panel.Controls[i];x = 0;(tr.radioButton1.Checked)= 2;=
3;(tr.comboBox1.Text == "" || tr.comboBox2.Text == "" ||
tr.comboBox3.Text == "" || tr.comboBox4.Text == "" ||
tr.comboBox5.Text == "" || tr.comboBox6.Text == "")
{.Show("Не заповнені дані про
трансформатори");
return;
}
(newMySqlUsing()).Insert("`powertransformator`",
"`Marka`, `Power`, `RPN`, `Securiry`, `ConnectingGroup`,
`InTransformatorTok`, `TransformatorCount`, `TypeOfTransformator`, `idstantion`",
"'" +
tr.comboBox1.Text + "'," + tr.comboBox2.Text + "," +
tr.comboBox5.Text + ",'" + tr.comboBox6.Text + "','" +
tr.comboBox4.Text + "','" + tr.comboBox3.Text + "'," +
x.ToString() + ",'" + x.ToString() + "'," +
Idstation.ToString());
}
}
{
{
(newMySqlUsing()).Delete("`powertransformator`",
"`idstantion`=" + Idstation.ToString());(int i = 0; i <
tp2panel.Controls.Count; i++)
{tr =
(TransfUI)tp2panel.Controls[i];x = 0;(tr.radioButton1.Checked)= 2;=
3;(tr.comboBox1.Text == "" || tr.comboBox2.Text==""||tr.comboBox3.Text
== "" || tr.comboBox4.Text==""||tr.comboBox5.Text ==
"" || tr.comboBox6.Text=="")
{.Show("Не заповнені дані про
трансформатори");
return;
}
(newMySqlUsing()).Insert("`powertransformator`",
"`Marka`, `Power`, `RPN`, `Securiry`, `ConnectingGroup`,
`InTransformatorTok`, `TransformatorCount`, `TypeOfTransformator`,
`idstantion`",
"'" +
tr.comboBox1.Text + "'," + tr.comboBox2.Text + "," +
tr.comboBox5.Text + ",'" + tr.comboBox6.Text + "','" +
tr.comboBox4.Text + "','" + tr.comboBox3.Text + "'," +
x.ToString() + ",'" + x.ToString() + "'," +
Idstation.ToString());
}
}{
//e.Cancel = true;
}
}
}.Show("Інформаціюпропідстанціюзбереженно!");
}
}
}
Модуль опрацювання даних при
перегляді усіх підстанцій
using
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;SubStation
{: Form
{AllSubStantion()
{();
}num =
-1;AllSubStantion_Load(object sender, EventArgs e)
{.EnableHeadersVisualStyles
= false;.DataSource = (newMySqlUsing()).GetaDataQuery("select `Name` as 'Підстанція' from
stantion").Tables[0];
//
}dataGridView1_CellDoubleClick(object
sender, DataGridViewCellEventArgs e)
{sstion = newEditSubStation();.WindowState
= FormWindowState.Maximized;.MdiParent = this.MdiParent;.insert =
false;.Idstation = (newMySqlUsing()).GetId("`stantion`",
"`idStantion`", "Name='" +
dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString()+"'");.Show();
}dataGridView1_CellContentClick(object
sender, DataGridViewCellEventArgs e)
{
}AllSubStantion_Activated(object
sender, EventArgs e)
{.DataSource =
(newMySqlUsing()).GetaDataQuery("select `Name` as 'Підстанція' from
stantion").Tables[0];
}button2_Click(object
sender, EventArgs e)
{sstion =
newEditSubStation();.WindowState = FormWindowState.Maximized;.MdiParent =
this.MdiParent;.Show();
}button4_Click(object
sender, EventArgs e)
{.DataSource =
(newMySqlUsing()).GetaDataQuery("select `Name` as 'Підстанція' from
stantion order by 1 asc").Tables[0];
}button1_Click(object
sender, EventArgs e)
{.DataSource =
(newMySqlUsing()).GetaDataQuery("select `Name` as 'Підстанція' from
stantion order by 1 desc").Tables[0];
}button5_Click(object
sender, EventArgs e)
{.DataSource =
(newMySqlUsing()).GetaDataQuery("select `Name` as 'Підстанція' from
stantion").Tables[0];
}textBox1_TextChanged(object
sender, EventArgs e)
{.DataSource =
(newMySqlUsing()).GetaDataQuery("select `Name` as 'Підстанція' from
stantion where Name Like '%"+textBox1.Text+"%'").Tables[0];
}button3_Click(object
sender, EventArgs e)
{(num == -1)
return;sstion = newEditSubStation();.WindowState =
FormWindowState.Maximized;.MdiParent = this.MdiParent;.insert =
false;.Idstation = (newMySqlUsing()).GetId("`stantion`",
"`idStantion`", "Name='" +
dataGridView1.Rows[num].Cells[0].Value.ToString() + "'");.Show();
}dataGridView1_CellClick(object
sender, DataGridViewCellEventArgs e)
{= e.RowIndex;
}delToolStripMenuItem_Click(object
sender, EventArgs e)
{(MessageBox.Show("Виточнохочетездійснитивидалення?",
"Система",
MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
(newMySqlUsing()).Delete("stantion",
"Name='" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString() +
"'");.DataSource = (newMySqlUsing()).GetaDataQuery("select
`Name` as 'Підстанція' from stantion").Tables[0];
}
}infoToolStripMenuItem_Click(object
sender, EventArgs e)
{.Show("Нажаль інформація зараз
не доступна.");
}
}
}
Модуль перегляду усіх перевірок
using System;
using
System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;SubStation
{: Form
{Alljob()
{();
}Sel =
0;Alljob_Load(object sender, EventArgs e)
{.EnableHeadersVisualStyles
= false;.DataSource = (newMySqlUsing()).GetaDataQuery("select `header` as
'Завдання', `Name`
as 'Станція',
`jobs`.`type` as 'Тип' from `jobs`, `stantion` where
`jobs`.`idstantion`=`stantion`.`idStantion` ").Tables[0];
}dataGridView1_CellDoubleClick(object
sender, DataGridViewCellEventArgs e)
{sstion =
newJobs();.WindowState = FormWindowState.Maximized;.MdiParent =
this.MdiParent;.insert = false;.Idjob =
(newMySqlUsing()).GetId("`jobs`", "`id`",
"header='" + dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString()
+ "'");.Show();
}button1_Click(object
sender, EventArgs e)
{jb =
newJobs();.MdiParent = this.MdiParent;.WindowState =
FormWindowState.Maximized;.Show();
}button5_Click(object
sender, EventArgs e)
{.DataSource =
(newMySqlUsing()).GetaDataQuery("select `header` as 'Завдання', `Name`
as 'Станція',
`jobs`.`type` as 'Тип' from `jobs`, `stantion` where
`jobs`.`idstantion`=`stantion`.`idStantion` ").Tables[0];
}textBox1_TextChanged(object
sender, EventArgs e)
{.DataSource =
(newMySqlUsing()).GetaDataQuery("select `header` as 'Завдання', `Name`
as 'Станція',
`jobs`.`type` as 'Тип' from `jobs`, `stantion` where
`jobs`.`idstantion`=`stantion`.`idStantion` and header Like '%" +
textBox1.Text + "%'").Tables[0];
}button4_Click(object
sender, EventArgs e)
{.DataSource = (newMySqlUsing()).GetaDataQuery("select
`header` as 'Завдання', `Name` as 'Станція', `jobs`.`type` as
'Тип' from
`jobs`, `stantion` where `jobs`.`idstantion`=`stantion`.`idStantion` order by 1
asc").Tables[0];
}button2_Click(object
sender, EventArgs e)
{.DataSource =
(newMySqlUsing()).GetaDataQuery("select `header` as 'Завдання', `Name`
as 'Станція',
`jobs`.`type` as 'Тип' from `jobs`, `stantion` where
`jobs`.`idstantion`=`stantion`.`idStantion` order by 2 asc").Tables[0];
}button3_Click(object
sender, EventArgs e)
{.DataSource =
(newMySqlUsing()).GetaDataQuery("select `header` as 'Завдання', `Name`
as 'Станція',
`jobs`.`type` as 'Тип' from `jobs`, `stantion` where
`jobs`.`idstantion`=`stantion`.`idStantion` order by 3 asc").Tables[0];
}button6_Click(object
sender, EventArgs e)
{
{dt =
(newMySqlUsing()).GetaDataQuery("select id, `header` as 'Завдання', `Name`
as 'Станція',
`jobs`.`type` as 'Тип', `jobs`.`about` from `jobs`, `stantion`
where `jobs`.`idstantion`=`stantion`.`idStantion` and header='" +
dataGridView1.Rows[Sel].Cells[0].Value.ToString() +
"'").Tables[0];.Office.Interop.Word.Application
wordapp;.Office.Interop.Word.Paragraph
wordparagraph;.Office.Interop.Word.Document worddocument;= new
Microsoft.Office.Interop.Word.Application();template = Type.Missing;newTemplate
= false;documentType =
Microsoft.Office.Interop.Word.WdNewDocumentType.wdNewBlankDocument;visible =
true;= wordapp.Documents.Add(template, ref newTemplate, ref documentType, ref
visible);begin = Type.Missing;end = Type.Missing;.Office.Interop.Word.Range
wordrange = worddocument.Range(ref begin, ref end);.Select();.Font.Size =
16;.Font.Name = "Times New Roman";.Font.Color =
Microsoft.Office.Interop.Word.WdColor.wdColorBlack;.Text = "Направленнянароботу №"
+ dt.Rows[0][0].ToString();oMissing = System.Reflection.Missing.Value;.Paragraphs.Add(ref
oMissing);.Paragraphs.Add(ref oMissing);.Paragraphs.Add(ref
oMissing);.Paragraphs.Add(ref oMissing);.Paragraphs.Add(ref
oMissing);.Paragraphs.Add(ref oMissing);.Paragraphs.Add(ref
oMissing);.Paragraphs.Add(ref oMissing);.Paragraphs.Add(ref oMissing);=
worddocument.Paragraphs[2];= wordparagraph.Range;.Text = "Суть: "
+ dt.Rows[0][1].ToString();= worddocument.Paragraphs[3];=
wordparagraph.Range;.Text = "Типзавдання " +
dt.Rows[0][3].ToString();= worddocument.Paragraphs[4];=
wordparagraph.Range;.Text = "Об'єктнастанції: `" +
dt.Rows[0][2].ToString()+"`";= worddocument.Paragraphs[5];=
wordparagraph.Range;
wordrange.Text = "Бригада
працівників назначенна на завдання:";
wordparagraph =
worddocument.Paragraphs[6];= wordparagraph.Range;st =
dt.Rows[0][4].ToString();= (newMySqlUsing()).GetaDataQuery("select w.Name
from worker w, jobworkers j where j.idworker=w.id and j.idjob=" +
(newMySqlUsing()).GetId("`jobs`", "`id`", "header='"
+ dataGridView1.Rows[Sel].Cells[0].Value.ToString() +
"'").ToString()).Tables[0];defaultTableBehavior
=.Office.Interop.Word.WdDefaultTableBehavior.wdWord9TableBehavior;autoFitBehavior
=.Office.Interop.Word.WdAutoFitBehavior.wdAutoFitFixed;.Office.Interop.Word.Table
wordtable1 = worddocument.Tables.Add(wordrange, dt.Rows.Count + 1,
3,defaultTableBehavior, ref autoFitBehavior);.Office.Interop.Word.Range
wordcellrange = worddocument.Tables[1].Cell(1, 1).Range;.Text = "№";=
wordtable1.Cell(1, 2).Range;.Text = "ПІБ";= wordtable1.Cell(1,
3).Range;.Text = "Підпис";(int m = 1; m <= dt.Rows.Count;
m++)
{= wordtable1.Cell(m
+ 1, 1).Range;.Text = m.ToString();= wordtable1.Cell(m + 1, 2).Range;.Text =
dt.Rows[m - 1][0].ToString();
//worddocument.Paragraphs.Add(ref
oMissing);
}
{.Paragraphs.Add(ref
oMissing);.Paragraphs.Add(ref oMissing);.Paragraphs.Add(ref
oMissing);.Paragraphs.Add(ref oMissing);.Paragraphs.Add(ref
oMissing);.Paragraphs.Add(ref oMissing);=
worddocument.Paragraphs[worddocument.Paragraphs.Count - 4];=
wordparagraph.Range;.Text = "Детально: "+st
;.Paragraphs.Add(ref oMissing);=
worddocument.Paragraphs[worddocument.Paragraphs.Count - 4];=
wordparagraph.Range;.Text = "_____ _____ Підпис ____ Дата ___
_____''20___''";= worddocument.Range(ref oMissing);
}{ }.Visible = true;
}(Exception ex)
{= ex.Message; }dataGridView1_CellClick(object
sender, DataGridViewCellEventArgs e)
{= e.RowIndex;
}
}
}
Модуль створення нової перевірки із
зазначенням бригади працівників.
using
System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;SubStation
{: Form
{Jobs()
{();
}Idjob = -1;insert =
true;Jobs_Load(object sender, EventArgs e)
{.DataSource =
(newMySqlUsing()).GetDataQuery("select Name from stantion",
false);.DataSource = (newMySqlUsing()).GetDataQuery("select Name from
worker", false);(insert)
{
(newMySqlUsing()).Insert("`jobs`",
"`header`, `date`",
"'','"+DateTime.Now.ToString("yyyy-MM-dd")+"'");=
(newMySqlUsing()).GetId("`jobs`", "max(`id`)",
"1<2");
}
{.Text =
(newMySqlUsing()).GetnoId("`jobs`", "`type`",
"id=" + Idjob.ToString() ).ToString();.Text =
(newMySqlUsing()).GetnoId("`stantion`", "`Name`",
"idStantion=" + (newMySqlUsing()).GetId("`jobs`", "`idstantion`",
"id=" + Idjob.ToString()).ToString()).ToString();.Text = (newMySqlUsing()).GetnoId("`jobs`",
"`header`", "id=" + Idjob.ToString()).ToString();.Text =
(newMySqlUsing()).GetnoId("`jobs`", "`about`",
"id=" + Idjob.ToString()).ToString();.DataSource = (newMySqlUsing()).GetDataQuery("select
w.Name from worker w, jobworkers j where j.idworker=w.id and j.idjob=" +
Idjob.ToString(), false);
}
}button3_Click(object
sender, EventArgs e)
{
(newMySqlUsing()).Insert("`jobworkers`",
"`idjob`, `idworker`", Idjob.ToString()+",
"+(newMySqlUsing()).GetId("`worker`", "`id`",
"`Name`='"+comboBox3.Text+"'").ToString());.DataSource =
(newMySqlUsing()).GetDataQuery("select w.Name from worker w, jobworkers j
where j.idworker=w.id and j.idjob="+Idjob.ToString(), false);
}button4_Click(object
sender, EventArgs e)
{
(newMySqlUsing()).Delete("`jobworkers`",
"idjob=" + Idjob.ToString() + " and idworker=" +
(newMySqlUsing()).GetId("`worker`", "`id`",
"`Name`='" + listBox1.Text + "'").ToString());.DataSource =
(newMySqlUsing()).GetDataQuery("select w.Name from worker w, jobworkers j
where j.idworker=w.id and j.idjob=" + Idjob.ToString(), false);
}button1_Click(object
sender, EventArgs e)
{
(newMySqlUsing()).Update("`jobs`",
"`header`='" + textBox1.Text + "', `type`='" +
comboBox1.Text + "', `about`='" + textBox4.Text + "',
`idstantion`=" + (newMySqlUsing()).GetId("`stantion`",
"`idStantion`", "`Name`='" +
comboBox2.SelectedValue.ToString() + "'").ToString(), "id="
+ Idjob.ToString());.Show("Інформаціюпрозавданнязбереженно!");();
}button2_Click(object
sender, EventArgs e)
{();
}Jobs_FormClosing(object
sender, FormClosingEventArgs e)
{(textBox1.Text ==
"")
{(MessageBox.Show("Длятогощобданізберегти, потрібноввестиназвузавдання." +
Environment.NewLine + " Якщонатиснете [ок] данібудутьвтрачені", "Система",
MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
(newMySqlUsing()).Delete("`jobs`",
"`header`=''");.Cancel = true;
}
}
}
}
Для визначення економічної
доцільності, економічного обгрунтування, виконання поставленого завдання
створення автоматизованої інформаційної системи для обліку та обслуговування
електричних силових підстанцій найдоцільнішим буде визначення кошторису
розробки ПП.
Для цього спершу розглянемо основні етапи робіт при
складанні програмного продукту, які наведені у таблиці 5.1.
Таблиця 5.1 - Етапи робіт при складанні програмного
продукту
Етап
Вид виконуваних робіт
1
Планування
2
Пошук схожих методів та рішень
3
Розробка бази даних
4
Розробка алгоритму роботи програми
5
Розробка програмного інтерфейсу
6
Тестування та налагодження готового продукту
7
Складення документації
Розрахунок тривалості кожного етапу виробляється на
підставі даних, приведених у таблиці 5.2.
Таблиця 5.2 - Розрахунок тривалості робіт (загальна
трудомісткість)
Номер етапу
Мінімальна тривалість, днів (tmin)
Максимальна тривалість, днів (tmax)
Очікувана тривалість, днів tот=(3tmin+2tmax)/5
1
5
9
7
2
3
5
4
3
8
11
9
4
20
25
22
5.
4
6
5
6.
4
5
4
7.
4
5
4
Разом:
48
66
55
До складу витрат на розробку і реалізацію проекту
включається вартість усіх витрат, необхідних для реалізації комплексу робіт, що
складають зміст даної розробки. Витрати містять у собі наступні елементи:
- заробітна плата;
- відрахування на соціальні заходи;
- амортизація;
- інші операційні витрати.
Розрахуємо заробітну плату виконавця:
, грн. (5.1)
де, М - місячний посадовий окладпрограміста, грн. В
2017 році величини окладів коливались в межах 7500 грн. за місяць;
Тр - число робочих днів в місяці, приблизно Тр = 21
дні;- число днів роботи програміста.
Додаткова заробітна плата Зд розраховується як 10% від
основної заробітної плати.
Зд = 19642,86*0,1 =1964.29 грн.
Відрахування на соціальні потреби розробника, який
приймав участь в розробці нового технічного рішення розраховуються у розмірі 22
% (ставка ЄСВ) від суми основної та додаткової заробітної плати розробника.
Обчислимо витрати на амортизацію обчислювальної
техніки за наступною формулою:
Амортизація основних фондів розраховується за
формулою, грн.:
де, Ц - балансова вартість обладнання, грн. Для
комп'ютерів Ц = 18500 грн.; На - річна норма амортизаційних відрахувань для
даного виду обладнання, приміщень, %;
Тек - термін експлуатації обладнання, роки.
Розробка програмного виробу і написання проекту
включають також і інші операційні витрати, до яких входять:витрати на придбання
літератури для інформаційного забезпечення, оплата інтернет трафіку, витрати на
транспортне обслуговування, відрядження, канцелярські витрати та ін.
Разом інші витрати становлять 280,96 грн.
На основі вище наведених розрахунків у таблиці 5.3
складемо повний перелік витрат на розробку програмного продукту.
Таблиця 5.3 - Витрати на розробку програмного продукту
Елементи витрат
Сума,грн.
Заробітна плата
19642,86
Відрахування на соціальні потреби
4753,57
Амортизація основних фондів
3700
Інші витрати
280,96
Разом
28377,39
Отже, після проведення усіх необхідних розрахунків
кошторису розробки програмного продукту можна зробити висновок що в загальному
витрати на написання програми становлять28377,39 гривень.
Під час виконання дипломного проекту розроблено
автоматизовану інформаційну системудля обліку та обслуговування електричних
силових підстанцій.
У ході дипломного проектування було проведено огляд та
аналіз предметної області, на основі якого здійснено постановку задачі дипломного
проектування. В результаті аналітичного огляду предметної області показано
недоліки та переваги аналогів.
В дипломному проекті здійснено проектування та
реалізацію програмного засобу, що супроводжувались візуальним проектуванням UML
діаграм.
Програмне забезпечення розроблене з використанням
проекту WindowsFormApplication, мови програмування C#, СУБД MySQL, технології
доступу до даних ADO.NET та клієнт-серверну архітектуру ПЗ.
Розробка програмної системи пройшла всі основні стадії
життєвого циклу розроблення програмного забезпечення.
Спроектовано інтерфейс користувача, який забезпечує
максимальну зручність та інтуїтивну зрозумілість користування програмою.
Здійснено тестування програмного забезпечення, за
допомогою тестових випадків, що дали позитивні результати та підтвердити
працеспроможність програмного рішення.
Програмне забезпечення може бути впроваджене у
спеціалізованих компаніях по наданню послуг енергопостачання.
1 Катренко А.В. Системний аналіз
об’єктів та процесів комп’ютеризації: навчальний посібник. - Львів: “Новий
світ-2000”, 2003.
2 Прохоренко Н.А. Программирование
на С++ в Visual Studio 2010 Express. 2010. - СПб. : Питер, 2010 - 759с.
3 Рихтер Д. CLR via C#.
Программирование на платформе Microsoft .NET Framework 3.5 на языке С# / Д.
Рихтер. - 2008. - № 1. - 950 с.
Эдриан Кингсли-Хьюджес. C#
2005. Справочник программиста С#. Эдриан Кингсли-Хьюджес, Кэти Кингсли-Хьюджес.
- М.: Диалектика.2007, 3 кв. - 368 с.
ENERGO SOFT полезная информация [Електронний ресурс]. ―
Режим доступу:http://energosoft.info/soft_electrotex_161_170(2014).
6 Вікіпедія - електронна
екнциклопедіяhttp://uk.wikipedia.org/(2014).
7 Навчальні матеріали онлайн
[Електронний ресурс]. ― Режим доступу:http://pidruchniki.com/2002061047742/informatika/aparatne_zabezpechennya(2014).
8 Справочник електрика [Електронний ресурс]. ―
Режим доступу: http://electricalschool.info/(2014).
9 Техническая литература [Електронний ресурс]. ―
Режим доступу: http://www.skunksworks.net/(2014).
Электроснабжение промышленных
и сельскохозяйственных предприятий, районов, потребителей [Електронний ресурс].
―
Режим доступу: http://elsnabgenie.narod.ru/Opisanieelsnab12.htm(2014).
4. СПЕЦІАЛЬНИЙ РОЗДІЛ
4.1 Інструкція з інсталяції розробленого проекту
4.2 Інструкція з експлуатації проекту
5.
ЕКОНОМІЧНИЙ РОЗДІЛ
5.1 Визначення витрат на створення програмного продукту
грн.
грн.
(5.2)
, (5.3)
3700 грн.
ВИСНОВКИ
ПЕРЕЛІК ДЖЕРЕЛ ПОСИЛАННЯ