Створення баз даних для електричних силових підстанцій

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    40,65 Кб
  • Опубликовано:
    2017-06-25
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Створення баз даних для електричних силових підстанцій

ВСТУП


Розвиток техніки стрімко зріс за останнє десятиліття, що посприяло впровадженню комп’ютерної техніки у різні галузі та сфери людського життя. Швидкість виконання розрахункової роботи, формування підсумкових звітностей, будування графіків, контроль над людиною, захист інформації та відображення процесу виконання завдання, саме ці фактори й сприяють здешевленню праці, адже відбувається зменшення необхідності у робочій силі, що зумовлюють менші затрати коштів на виплату заробітної праці працівникам.

Актуальним є використання комп’ютерної техніки і у галузі електропостачання, головною метою діяльності якої є передача та надійне постачання електричної енергії споживачам, на умовах укладених договорів за тарифами, що регулюються відповідно до вимог чинного законодавства України. програмний автоматизований інформаційний підстанці

Передачею електроенергії до споживачів займаються компанії та товариства, що здійснюють передачу електричної енергії місцевими (локальними) електромережами на певній території.

Локальна система транспортування та постачання електроенергії споживачам регіону складається з:

-  ліній електропередач;

-       трансформаторних підстанцій;

-       розподільчих пунктів.

Власне для зберігання характеристик системи, швидкого реагування та контролю над здійсненням профілактичних та ремонтних робіт на трансформаторних підстанціях, потрібне спеціалізоване програмне забезпечення.

Збереження великої кількості інформації із швидким доступом до них забезпечують системи керування базами даних.

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

Використання баз даних та програмних систем для автоматизованої інформацыйної системи обліку та обслуговування електричних силових підстанцій дає значні часові і трудові переваги, тому розробка такого програмного забезпечення є не обхідною для спрощення та пришвидшення дій енергопостачальної компанії.

 

1. ЗАГАЛЬНИЙ РОЗДІЛ

 

.1 Опис предметної області


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

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

Роботи ж на місцях, розрізняють два типи: профілактична - суть якої полягає у перевірянні усіх компонентів електричної підстанції на працездатність та на їх не зношеність; ремонтна - завдання якої полягає у аналізі поломки, що сталася на підстанції, та відповідне здійснення ремонтування поломленої компоненти для відновлення працеспроможності усієї підстанції для електропередачі.

Але виникають у компанії значні труднощі при ведені обліку усіх її елементів, у тому числі і проведення робіт, на що витрачається багато часу на оформлення звітностей, щоб зберегти необхідну інформацію. Через що в останні роки виникла необхідність у використані автоматизації діяльності у компаніях, що займаються електропостачанням електроенергії до споживачів. Відповідно на ринку з’являються все нові програмні продукти, за допомогою яких буде здійснюватись автоматизація ресурсозатратних процесів.

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

У інформаційній системі для енергопостачальної компанії потрібно передбачити ряд функцій, що мають полегшити та автоматизувати вище зазначені процеси роботи по обслуговуванню силових підстанції.

Розглянемо та опишемо основні функціональні можливості, які потрібно реалізувати у програмному продукті, що розробляється.

Отже, потрібно здійснити можливість зберігання повної інформації про підстанцію, де має зазначатись інформація про трансформатори, які там використовуються із відповідною конфігурацією, про лінії електропередач, із зазначенням параметрів напруги, дані силового вимикача та іншу інформацію. Забезпечити зручний інтерфейс редагування значень силового трансформатора.

Також є необхідність у зберіганні довідникової інформації про кабелі, проводи, реле та коефіцієнтів, що використовуються у розрахунках. Розрахунки при здійсненні виконання робіт на підстанції відіграють важливу роль, адже допомагають визначити необхідні значення елементів, які потрібні при використані на усіх частках підстанції.

Наприклад, потрібно передбачити у програмній системі розрахунок струму короткого замикання в електричних лініях. Із шкільної програми знаємо, що сила струму, за законом Ома, прямо пропорційна напрузі і обернено пропорційна електричному опору даної ділянки ланцюга.

,                                                    (1.1)

де I - сила струму;- напруга;- опір.

Кожна лінія має стало зазначену напругу, на підстанції використовуються напруги у 10кВ та 110кВ, тому значення напруги нам відомо, але не відоме значення опору.

Опір буде залежати від використаного проводу на лінії, дані якого будуть у довіднику, де можна буде переглянути значення активного та індуктивного опорів проводу. За допомогою цих опорів та довжини кабелю можна розрахувати значення повного опору за формулою 1.2, який потрібний для визначення струму короткого замикання.

,                                                                                                           (1.2)

де, R - повний опір;- довжина лінії(проводу);- активний опір;- індуктивний опір.

Отже, підставивши усі необхідні значення, можна таким чином розрахувати потрібне значення.

Ще потрібно зазначити, що у програмі має бути здійснений облік робітників та робіт, які проводились на підстанціях, для ведення журналу реєстрації поломок із фіксацією причин поломок, та який працівник виконував ремонтні роботи.

 

1.2 Аналітичний огляд існуючих рішень


Інформацію про існуючі програмні рішення, можна відшукати у спеціалізованій літературі, а також у мережі Інтернет.

Не підприємствах по енергопостачанню зазвичай використовують уже розроблені автоматизовані системи, у яких реалізовані основні, загальні необхідні функціональні можливості. Проте великі компанії надають перевагу розробці програмного забезпечення спеціально із функціональними можливостями для забезпечення автоматизації процесів необхідних компанії по електропостачанню.

Розглянемо деякі наявні програмні продукти, що забезпечують автоматизацію роботи у заданій предметній області: «Plant Intelligence Foundation».

Програмний комплекс розроблений під операційну систему Windows, має можливість зберігати інформацію у таких джерелах даних як MS SQL, Oracle, та інших.

У цей програмний комплекс входить програмний продукт FIX, метою якого є повний контроль енергетичної підстанції. Основним принципом роботи даного продукту є відстеження секцій, ліній та трансформаторів підстанції для забезпечення безперебойного та ресурсозатратного електропостачання.

Основні функції:

-  надання значень базових параметрів підстанції;

-       вмикання та вимикання високовольтних ліній електропередач;

-       визначення критичних станів на підстанції;

-       визначення короткого замикання;

-       контролювання напруги на лініях електропередачі.

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

Також у програмній системі реалізовані можливості архівування даних за допомогою системи iHistorian, та експорту даних у додаток пакету Microsoft Office - Excel.

Для використання програмного комплексу потрібні певні затрати коштів на його придбання, та придбання ліцензій для використання на персональних комп’ютерах.

Програмний засіб призначений для проектування електропостачання розподілених енергоспоживачів на рівні певного району, підприємства чи об’єкту.

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

Рисунок 1.1 - Вигляд програмного засобу FIX компанії Intellution «Электроснабжение»

Основні функції:

-  визначення електричних навантажень на мережу;

-       визначення потужності трансформаторів на підстанції;

-       вибір типів підстанцій;

-       розрахунок струму короткого замикання;

-       визначення допустимих втрат напруги;

-       визначення навантаження на мережу високої напруги;

-       розрахунок перерізу проводів в мережі високої напруги.


Рисунок 1.2 - Вигляд програмного засобу «Электроснабжение»

Програмний продукт розповсюджується у двох виглядах: безкоштовний та платний, різниця між якими полягає у доступних можливостях використання функцій, які у безкоштовній версії зовсім не значні, і не достатні для використання на великих підприємствах.

«Elsna Work».

Програма використовуються для опису та моделювання роботи мережі електропостачання. Присутня можливість включення в мережу декількох трансформаторних підстанцій. Програма дозволяє описувати вибрану мережу, створити схеми, та працювати з ними в інтерактивному режимі. Схеми відображають стан елементів мережі (включений\виключений, під напругою\без струму), стрілками показую напрям потоків потужностей, оперативно відображає результати розрахунків по котромусь вузлу чи вітки електромережі. Безпосередньо на схемах відбувається перемикання. Після здійснення перемикань мережа аналізується, розраховується та результат відображається на схемах. В результаті аналізу мережі створюються напрямлені графи, які дають наглядне уявленняпро стані мережі, потоки потужностей і струму.

Рисунок 1.3 - Програма «Elsna Work»

Основні функції:

-  створення електричних схем;

-       визначення електричних навантажень на мережу;

-       визначення параметрів джерел електроенергії;

-       визначення допустимих втрат напруги на окремім елементах мережі;

-       визначення навантаження на мережу високої напруги;

-       розрахунок споживання електроенергії на секціях мережі.

На сьогоднішній день завершилась технічна підтримка даного програмного проекту, відповідно версії не оновлюються, що свідчить про його старіння та не відповідність до нинішніх потреб та вимог.

«Релейщик 10/35».

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

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

Основні функції:

-  створювати файл підстанції, у якому задаються її параметри;

-       розрахунок струму короткого замикання;

-       визначення реактансів на шинах високої напруги;

-       розрахунок ліній нормального живлення;

-       розрахунок трансформаторів;

-       здійснювати налаштування ліній електропередачі;

-       розрахунок опорів та напруг на окремих ділянках ліній силової підстанції;

-       розрахунок релейного захисту;

-       створення звітів та експортування даних із вибраної підстанції.

Рисунок 1.4 - Програма «Релейщик 10/35»

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

Проаналізувавши та порівнявши розглянуті системи, що є аналогами для розроблюваного програмного рішення, видно переваги одних систем над іншими, та які існують недоліки у цих програмних рішеннях. За результатами такого аналізу значно простіше здійснювати проектування всієї системи, вибір технічних засобів для створення програмного забезпечення, та передбачати можливі недоліки та помилки.

 

1.3 Технічне завдання


Найменування та галузь застосування

Завданням дипломного проекту є створення програмного забезпечення для обліку елементів енергетичної підстанції, здійснення розподілення роботи між робітниками енергопостачальної компанії, дані яких будуть занесені у систему.

Розроблювана система призначена для застосування в галузі електропостачання, яка займається забезпеченням споживача відповідним типом енергії.

Метою розробки є створення дієздатної, готової до застосування інформаційної системи для діяльності енергопостачальної компанії.

Призначення розробки

Головні завдання, які виконує дана підсистема, можна поділити на задачі обліку та задачі автоматизації.

До задач обліку віднесемо:

-  збереження детальної інформації про підстанції та їх вміст;

-       збереження інформації про співробітників, що працюють у компанії;

-       збереження інформації кабелів, констант та коефіцієнтів;

-       збереження інформації про роботи проведені на певних підстанціях.

До задач автоматизації відносять:

-  надання інформації про конфігурацію кожного елемента, що входить у склад підстанції;

-       автоматизація генерування звітностей;

-       автоматизація формування статистичних даних по роботі на підстанціях.

Вимоги до програмного продукту

Для вирішення задач автоматизації ведення обліку доцільно використовувати засоби СУБД, у якому буде реалізована система.

Для інших задач доцільно використати тип проекту WindowsFormsApplication, що працюватиме на платформі .NET Framework 4.0, програмне забезпечення реалізувати за допомогою об’єктно-орієнтованої мови програмування C#. Оброблення даних проекту здійснити за допомогою реляційної бази даних MySQL.

Вхідною інформацією для програмного забезпечення буде інформація про конфігурацію силової підстанції, де має зазначатись інформація про трансформатори, що використовуються, їх конфігурацію, дані про лінії електропередач, тощо. Також інформація взята із відділу кадрів про робітників компанії та розпорядження для сформованих бригад на здійснення робіт у зазначених підстанціях.

До вхідних даних потрібно віднести довідникову інформацію про кабелі, проводи та коефіцієнти для розрахунку фізичних величин.

Вихідними даними будуть форми представлені користувачу із висвітленою інформацією, а також звіти. Звіти формуватимуться із відповідних зразків, із автоматичним занесенням даних для подальшого роздруку, щоб документацію засвідчити підписами фігуруючих осіб.

Вимоги до проектної документації

Проектна документація повина бути розроблена згідно державних стандартів України. Вона має містити максимальну інформацію щодо проекту, детальну інструкцію з використання, де кожен пункт повинен бути проілюстрований відповідними зображенням з детальним описом виконуваних дій і призначенням тої чи іншої функції. В той же час проектна документація має бути виконана з 1.5 інтервалом, 14 розміром шрифту Times New Roman.

Опис усіх етапів розробки має бути простим і легким для розуміння. Також в проектній документації повинні описуватись інструкції з інсталяції, оновлення, видалення, експорту. До документації мають додаватись всі особливості апаратної та програмної частин, тобто версії програм на яких написаний даний програмний продукт, версії всіх бібліотек і фреймворків, всі паролі доступів до серверів та баз даних.

Важливою частиною дипломного проектування є побудова графічних додатків, що б візуально демонстрували різні етапи роботи.

При проектуванні програмного продукту використати наявний інструментарій побудови UML-діаграм, що б наглядно демонстрували сам процес проектування, полегшили б подальшу програмну реалізацію, інсталяцію програми. Для цього слід реалізувати наступні UML-діаграми: діаграма використання, діаграма активності, діаграма компонентів, діаграма розгортання, діаграма послідовності дій.

Також слід провести проектування та нормалізацію бази даних програмного продукту. Результатом проектування має бути інфологічна модель бази даних, що слід відобразити також у графічних додатках.

Етапи проектування

На етапі проектування відбувається важливий процес створення архітектури системи, від даного кроку залежать всі наступні кроки розробки системи. Етап проектування структури бази даних можна розбити на такі кроки:

-       визначення вимог до програмного забезпечення сервера баз даних:

-       аналіз вхідних та вихідних даних;

-       визначення зв’язків між сутностями;

-       нормалізація структури даних.

Розробка інтерфейсу користувача:

-       визначення з основними принципами побудови інтерфейсу;

-       створення попереднього шаблону зовнішнього вигляду;

-       розробка макетів;

-       вибір зовнішнього оформлення інтерфейсу.

Проектування та розробка програмної частини:

-       визначення середовища розробки та інших інструментальних засобів;

-       визначення зовнішніх бібліотек та допоміжних засобів розробки;

-       проектування архітектури системи;

-       розробка класів для реалізації системної логіки.

Порядок тестування розробки

При тестуванні розробленого програмного продукту слід використати інтеграційне та модульне тестування. При цьому слід спиратись на наступні стандарти з перевірки і тестування модулів:IEEE 829:1996 і IEEE 1008:1987.

При проведенні інтеграційного тестування модулів системи слід врахувати роботу їх інтерфейсів під час виконання.

При проведені різних видів перевірок необхідно зібрати дані про помилки, дефекти, відмови тощо і оформити відповідну документацію.

Також слід виконати функціональне тестування системи для різних експлуатаційних випадків, станів програмної системи.

Для якісної роботи користувачів із системою слід виконати тестування користувацького інтерфейсу, що полягає у перевірці правильності навігації по об’єкту тестування та відповідність опису елементів до дій, які вони виконують.

У цьому розділі було здійснено короткий огляд причини створення спеціалізованого програмного забезпечення для енергопостачальних компаній, які залежать від процесів, що виконуються працівниками компанії стосовно силових підстанцій, та визначаються важкістю оперування великими об’ємами інформації про них.

Було визначено основні можливості, які потрібно реалізувати у дипломному проекті, та розписано, що вони мають здійснювати.

 

 

2. ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

 

2.1 Проектування архітектури програмного продукту


Проектування архітектурипрограмного продукту буде виконуватись за допомогою діаграм, які будуть відображати основні компоненти та об’єкти системи, функції, які вони мають виконувати.

Для визначення основних варіантів використання системи, що розробляється, використаємо діаграму прецедентів (Use Case), яка зображена на рисунку 2.1.

Основними зовнішніми сутностями є Оператор та Працівник. Спершу оператор системи повинен здійснити певні дії, щоб занести дані про енергетичні підстанції, задати параметри таким елементам, як: оперативний струм, силовий трансформатор, лінії 10кВ, трансформатор напруги та ін.. Після того, як Оператором було створено об’єкти для опрацювання, він має ще занести до даних системи інформацію про співробітників робочих бригад, які в свою чергу мають надати певні персональні дані.

Рисунок 2.1 - Діаграма прецедентів (Use Case)

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

Деталізацію процесів системи відображає діаграма послідовності дій показано на рисунку 2.2, яка відображає взаємодії об’єктів впорядкованих за часом.

Рисунок 2.2 - Діаграма послідовності (Sequence Diagram)

Як видно із діаграми для створення підстанції недостатньо вказати параметри елементів підстанції, а ще й обов’язково надати їй назву для задання ідентифікації, при відсутності якої, не відбудеться збереження даних у системі.

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

Отже, діаграма діяльності, що зображена на рисунку 2.3, відображає, що для створення нової підстанції, як зазначали раніше, потрібно ввести параметри системи, а саме: кількість трансформаторів, їх потужність та тип, лінії електропередачі, їх довжину та тип, трансформатор напруги, силу струму та інші дані. Пам’ятаємо, щоб дані збереглися, потрібно надати назву підстанції, тому що іншому випадку система проігнорує введені користувачем дані.

Рисунок 2.3 - Діаграма діяльності створення нової підстанції

Схожий принцип і при додаванні робітників у систему показано на рисунку 2.4.Тобто операторові необхідно взяти персональні дані робітника та ввести їх у систему, після чого у ній здійснюється перевірка на те, чи дані, введені оператором, відповідають необхідним правилам, чи вони є коректними.Після цього буде відбуватись збереження даних.

Рисунок 2.4 - Діаграма діяльності добавлення робітника

Приведемо діаграму діяльності для роботи проекту в цілому показано на рисунку 2.5. При вході в проект потрібно здійснити підключення до серверу бази даних, якщо ж підключення відсутнє, працювати із системою буде неможливо, адже дані проекту не завантажаться, і потрібно буде перейти на гілку зміни параметрів підключення до серверу БД.

Рисунок 2.5 - Діаграма діяльності роботи проекту

Якщо проект під’єднається до серверу БД, то можна буде здійснювати ряд функціональних можливостей, основні з яких відображені на діаграмі, а саме: вище розглянуте створення нової підстанції, добавлення робітників та створення завдання.

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

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

Локальний варіант передбачає розміщення даних безпосередньо на комп'ютері користувача. В цьому випадку користувач володіє монопольним доступом до даних, доступ до даних інших користувачі неможливий.

Віддалений варіант передбачає розміщення даних поза комп’ютерами користувачів - на файловому сервері мережі або на спеціально виділеному комп’ютері.

Використовуючи віддалений варіант зберігання даних потребує використання на персональномукомп’ютері мережевої плати, налаштованої під внутрішню мережу компанії, або до мережі Інтернет, що також надає можливість підключення до серверу бази даних. У такий спосіб буде використовуватись архітектура клієнт-сервер.

Дана архітектура є домінуючою концепцією у створенні розподілених мережних додатків і передбачає взаємодію та обмін даними між ними. В даній архітектурі для обробки даних виділяється сервер баз даних, який виконує функції обробки запитів, що надходять від клієнтів.

Перевагами даної архітектури є: зменшення навантаження на мережу, збільшення надійності роботи системи, зменшення вимог до потужності комп’ютерів-клієнтів, обробка і збереження даних відбувається в єдиному “центрі”, що призводить до збереження логічної цілісності структури даних.

До недоліків даної архітектури можна віднести: відносна складність розробки програмних систем з використанням даної архітектури, збільшення часу розробки і затрат матеріальних і інтелектуальних ресурсів на створення програмних систем порівняно з системами з використанням архітектури файл-сервер. Саме таку клієнт-серверну архітектуру використаємо для реалізації поставленого завдання.

2.2 Проектування структур даних


Розробимо статичне представлення структури даних моделі використовуючи діаграму класів.

Діаграма отриманих класів зображена на рисунку 2.6. Діаграма відображає основні класи з якими взаємодіє система, на основі цих класів буде побудована база даних до системи. Класи складаються з атрибутів та методів, які вони виконують у процесі розрахунків та створення елементів енергетичної підстанції.

Рисунок 2.6 - Діаграма класів

Діаграма компонентів бази даних системизображена на рисунку 2.7. Діаграма зображує компоненти з яких буде складатися база даних та зв’язки між ними. Додатково потрібно зазначити, що на основі інтерфейсу бази даних потрібно буде реалізувати власний модуль, за допомогою якого, буде здійснюватись обмін даними між компонентами проекту та базою даних на сервері.

Рисунок 2.7 - Діаграма компонентів бази даних системи

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

При аналізі отриманих таблиць були усунуті дублювання полів, перевірялась умова атомарності кожного поля. Після цього база даних була приведена до першої нормальної форми.

У процесі розбиття на таблиці до кожної з них був доданий первинний ключ, що є унікальним. Усі інші поля таблиці залежать від нього. Це дало можливість привести базу даних до другої нормальної форми.

Далі реалізували зв’язки між таблицями додавши вторинні (зовнішні) ключі у підлеглі таблиці. Ці поля зв’язали із відповідними первинними ключами головних таблиць.

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

Проектування архітектури та структур даних системи показує, які основні компоненти будуть взаємодіяти в системі та як відбуватимуться дії, при певних діях користувача. На основі діаграми класів було розроблено структуру бази даних до створюваної системи з відповідними атрибутами та методами. На основі діаграм компонент визначено, які функції мають виконувати об’єкти системи. За допомогою діаграм визначено вхідні і вихідні дані до створюваної системи.

 

2.3 Проектування інтерфейсу


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

Інтерфейс програми- сукупність засобів для обробки та відображення інформації, максимально пристосованих для зручності користувача; у графічних системах інтерфейс користувача реалізовується багатовіконним режимом, змінами кольору, розміру, видимості (прозорість, напівпрозорість, невидимість) вікон, їх розташуванням, сортуванням елементів вікон, гнучкими налаштовуваннями як самих вікон, так і окремих їх елементів (файли, папки, ярлики, шрифти тощо), доступністю багатокористувацьких налаштувань.

Було розроблено ряд макетів форм, що дозволять якісно спроектувати інтерфейс.

Насамперед спроектуємо інтерфейс головної форми проекту. Для цього розділимо умовно цю форму на три частини:

-       заголовк форми, що має містити назву програмного продукту;

-       головне меню програми, що забезпечить виконання основних функціональних можливостей;

-       робоча область форми. Сюди будуть виводитись результуючі дані, завантажуватись додаткові форми, засоби керування ними.

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

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

 

 

 

3. ПРОГРАМНА РЕАЛІЗАЦІЯ ПРОЕКТНИХ РІШЕНЬ ТА ТЕСТУВАННЯ

 

3.1 Програмування структур даних


Для реалізації програмного виробу було обране IDE Microsoft Visual C# 2013 Express. Вибір цього середовища був не випадковим, оскільки він дозволяє розробляти як консольні додатки, так і додатки з графічним інтерфейсом, в тому числі з підтримкою технології Windows Forms для всіх платформ, які підтримують Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework і Microsoft Silverlight.Visual C# Express - інтегроване віртуальне середовище розробки додатків на мові програмування C# із закритим вихідним кодом, розроблене корпорацією Microsoft. У Microsoft Visual C# є всі інструменти для повноцінної розробки й налагодження програм на мові C# на платформі .NET Framework.C# Express є частиною продуктової лінійки Visual Studio Express family - вільного набору інструментів, які Windows розробники будь-якої кваліфікації можуть використовувати для створення власних додатків, використовуючи базові або розширені можливості. Visual C# створений для роботи над різними типами додатків, які виконуються в середовищі .NET Framework. Завдяки безлічі інновацій, Visual C# забезпечує швидку розробку додатків, при цьому зберігає виразність і елегантність, властиву мовам в стилі С:

-       підтримка платформи .NET Framework 4. Visual C# Express підтримує .NET Framework 4, що дозволяє застосувати безліч компонент та методів при створенні власного програмного продукту;

-       спрощений інтерфейс. У Visual Studio Express представлений спрощений користувальницький інтерфейс, що фокусується на найбільш часто використовуваних командах, приховуючи рідко використовувані розширені меню і панелі інструментів;

-       нове середовище розробки на основі WPF. Новий редактор забезпечує гнучкість при роботі з кодом, підсвічує методи і володіє іншими можливостями;

-       підтримка платформи розробки. Незалежно від досвіду розробника, Visual C# Express допоможе реалізувати ідеї для операційної системи Microsoft Windows;

-       всі продукти Microsoft Visual Studio версій Express є безкоштовними для людей, які навчаються.

C# - об'єктно-орієнтована мова програмування. Розроблена в 1998-2001 роках групою інженерів під керівництвом Андерса Хейлсберга в компанії Microsoft, як мова розробки програмного забезпечення для платформи Microsoft .NET Framework і згодом була стандартизована як ECMA-334 і ISO/IEC 23270.# відноситься до сім'ї мов з C-подібним синтаксисом. Мова має статичну типізацію, підтримує поліморфізм, перевантаження операторів (у тому числі операторів явного і неявного приведення типу), делегати, атрибути, події, властивості, узагальнені типи і методи, ітератори, анонімні функції з підтримкою замикань, LINQ, виключення, коментарі у форматі XML.

Перейнявши багато що від своїх попередників - мов C++, Java, Delphi, Модула і Smalltalk - С#, спираючись на практику їх використання, виключає деякі моделі, що зарекомендували себе як проблематичні при розробці програмних систем. Наприклад, C# на відміну від C++ не підтримує множинне успадкування класів (між тим допускається множинне спадкування інтерфейсів).# розроблявся як мова програмування прикладного рівня для CLR і, як така, залежить, насамперед, від можливостей самої CLR. Це стосується, перш за все, системи типів C#, яка відображає BCL. Присутність або відсутність тих чи інших виразних особливостей мови диктується тим, чи може конкретна мовна особливість бути трансльована у відповідні конструкції CLR. Так, з розвитком CLR від версії 1.1 до 2.0 значно розширились можливості і самої C#, подібної взаємодії слід чекати і надалі. Проте ця закономірність була порушена з виходом C# 3.0, що представляє собою розширення мови, не спираються на розширення платформи. NET. CLR надає C#, як і всім іншим .NET-орієнтованим мовам, багато можливостей, яких позбавлені «класичні» мови програмування. Наприклад, збірка сміття не реалізована в самому C#, а проводиться CLR для програм, написаних на C# точно так само, як це робиться для програм на VB.NET, J# та ін.

У Microsoft Visual C# інтегрована підтримка роботи із різними СУБД для побудови програмних додатків на основі роботи із базами даних. Розглянемо СУБД MySQL, що було б доцільно використати для реалізації АІС.- компактний багато потоковий сервер баз даних, що характеризується великою швидкістю, стійкістю і легкістю у використанні.- вільна система управління базами даних. Зазвичай MYSQL використовується як сервер, до якого звертаються локальні або віддалені клієнти, проте в дистрибутив входить бібліотека внутрішнього сервера, що дозволяє включати MYSQL в автономні програми.

Гнучкість СУБД MYSQL забезпечується підтримкою великої кількості типів таблиць: користувачі можуть вибрати як таблиці типу MYISAM, що підтримують повнотекстовий пошук, так і таблиці INNODB, що підтримують транзакції на рівні окремих записів. Більш того, СУБД MYSQL поставляється із спеціальним типом таблиць EXAMPLE, що демонструє принципи створення нових типів таблиць. Завдяки відкритій архітектурі і GPL-ліцензуванню, в СУБД MYSQL постійно з'являються нові типи таблиць.

У розділ проектування програмного забезпечення було спроектовано інфологічну модель бази даних системи. Нижче ж приведемо опис сутностей предметної області дипломного проекту, що будуть реалізовуємо у СУБД MYSQL.

Підстанції - зберігає інформацію про назву підсистеми, виконує зв’язну функцію у інших сутностях:

-       idStantion - ключове поле таблиці, зберігає порядковий номер запису;

-       name - назва підстанції.

Завдання - призначена для зберігання інформації про те, які роботи виконувались на підстанціях, коли це відбувалось та хто ці роботи виконував, вказуючи робітників:

-       Id - порядковий номер запису, ключове поле;

-       Type - тип роботи на підстанції, може набувати значення ремонтна або планова;

-       date - відповідає за значення дати, коли виконувалась робота;

-       about - детальний опис завдання, та що було зроблено, у разі ремонту вказується суть поломки;

-       idstantion - значення підстанції, на якій виконувалася робота;

-       header - заголовок завдання, дуже стислий опис роботи.

Бригади - призначення полягає у тому, що на кожне завдання формується бригада, що складається із невизначеної кількості робітників, яку контролює оператор:

-       Id - порядковий номер, ключове поле;

-       Idjob - значення порядкового номеру роботи, на яку направляється робітник;

-       Idworker - робітник, що напрявляється на завдання.

Кабелі - довідник для зберігання параметрів кабелів та проводів, що використовуються на підстанціях:

-       idKabel - порядковий номер запису, ключове поле;

-       Name - назва марки кабелю;

-       Value1 - значення першого параметру кабелю;

-       Value2 - значення другого параметру кабелю;

-       Value3 - значення іншого параметру кабелю;

-       Idtype - значення, що відповідає за відношення конкретного кабелю, до певного типу.

Коефіцієнти - довідник для зберігання коефіцієнтів та констант, які потрібні для виконання розрахунків на підстанціях:

-       idKoeficient - порядковий номер запису, ключове поле;

-       Name - назва коефіцієнта;

-       Value - значення коефіцієнта.

Лінія 10кВ - призначена для зберігання даних про лінії 10000 вольт, із зазначенням потужностей, протяжності лінії її типом та ін.:

-       idLine10kV - ключове поле, порядковий номер запису;

-       Name - назва лінії;

-       Number - номер лінії на підстанції;

-       ComutationAparate - значення комутаційного апарату;

-       PowerOfTransformator - значення потужності трансформатора;

-       TC - вибір силового трансформатора;

-       TypeLine - вибір типу лінії, що надасть можливість вибрати конкретний кабель за вибраним типом;

-       Length - значення довжини лінії;

-       Security - значення захисту лінії;

-       idStantion - вказання, до якої підстанції відноситиметься лінія;

-       MaxReleToka - значення максимального струму, що проходить через релейний захист.

Лінія 110кВ - призначена для зберігання даних про лінії 110000 вольт, із зазначенням потужностей, захисту лінії її типом та ін.:

-       idLine110kV - ключове поле, порядковий номер запису;

-       TypePowerOff- значення типу вимикача, який може набувати лише двох значень;

-       TC - значення силового трансформатора;

-       Security - захист лінії;

-       Idstantion - до якої підстанції відноситься дана лінія.

Оперативний струм- призначена для зберігання даних про силу струма, ампераж та ін.:

-       idOperatingTok - порядковий номер запису, ключове поле;

-       Amper - ампераж оперативного струму;

-       SecondaryLineTok - тип струму на другорядних лініях, може бути або змінний, або постійний.

Панель - зберігання назв панелей, що входять у склад ОПУ на конкретній підстанції:

-       idPanel - порядковий номер запису, ключове поле;

-       Name - назва панелі;

-       Idstantion - до якої підстанції відноситься.

Силовий трансформатор - призначена для зберігання інформації про параметри, які є у трансформатора:

-       Id - порядковий номер запису, ключове поле;

-       Marka - марка силового трансформатора, що використовується на підстанції;

-       Power - значення потужності трансформатора;

-       RPN - значення ручного перемикача напруги, який може набути значення від 1 до 19;

-       Securiry - релейний захист трансформатора;

-       ConnectingGroup - значення групи з’єднань, що присутні на силовому трансформаторі;

-       InTransformatorTok - значення вбудованих трансформаторів струму;

-       TransformatorCount - значення кількості обмоток, що присутнє на силовому трансформаторі;

-       TypeOfTransformator - значення типу трансформатора;

-       Idstantion - вказання, до якої підстанції відноситься силовий трансформатор.

Реле - призначення полягає у збережені інформації про релейні пристрої, що можуть бути використані на підстанціях:

-       idRele - порядковий номер запису, ключове поле;

-       Value1 - перше значення параметру реле;

-       Value2 - друге значення параметру реле;

-       Name - назва релейного пристрою.

Секційний вимикач - зберігає властивості вимикача, у якому вказується його тип, та який силовий трансформатор при цьому використовується:

-       idSV - ключове поле, порядковий номер запису;

-       Type - значення типу секційного вимикача;

-       TC - значення силового трансформатора.

Тип лінії - довідник, призначений для зберігання назв типів ліній, що використовуються на підстанціях:

-       idTypeLine - порядковий номер запису, ключове поле;

-       Name - назва типу лінії.

Трансформатор напруги-призначений для зберігання значення приводу комутаційного апарату на підстанції:

-       idVoltageTransformator - ключове поле, порядковий номер запису;

-       PKA - значення приводу комутаційного апарату;

-       Idstation - зазначення до якої підстанції відноситься трансформатор напруги.

Робітник - призначена для того, щоб зберігати дані про робітників електропостачальної компанії, з подальшим обліком їх виконаних робіт та завдань на підстанціях:

-       Id - порядковий номер запису, ключове поле;

-       Name - прізвище, ім’я та по батькові робітника;

-       Tel - номер його телефону для швидкого налагодження зв’язку із особою;

-       Adres - домашня адреса проживання робітника;

-       Posada - посада, яку займає у компанії даний співробітник.

Для збереження даних в програмній системі було вибрано реляційну базу даних. Як раніше зазначалося у якості СУБД використано Mу SQL.

Адміністрування та створення СУБД буде здійснюватись за допомогою програмного засобу MySQL Workbench, що є інструментом для візуального проектування баз даних, що інтегрує проектування, моделювання, створення й експлуатацію БД в єдине безшовне оточення для системи баз даних MySQL.

Отже, спершу запускаємо даний інструмент, та здійснюємо певні налаштування, для того щоб під’єднатися до серверу баз даних. Для цього натискаємо на додатку піктограму у вигляді «+», що сигналізуватиме створення нового підключення.

Якщо підключення здійснюється до локального серверу, по потрібно у властивість “HostName” ввести значення localhost, або 127.0.0.1, що є внутрішньою адресою сервера. Далі у поле “UserName” потрібно ввести назву користувача серверу, на локальному сервері початковий користувач має назву root, для якого при встановлені серверу можна було ввести персональний пароль, який у програмі потрібно надати у параметр “Password”.

Якщо ж при встановлені серверу ніяких налаштувань не було здійснено, то пароль є пустим, тобто не потребує введення. Параметр “Default Schema” відповідає за підключення автоматично до бази даних вказаної у цьому параметрі, але він не є обов’язковим для підключення до серверу, і він може бути не заповнений.

Після того, як було введено параметри підключення, закриваємо вікно та під’єднуємося до серверу. У головному вікні додатку натискаємо на піктограму під назвою “New Schema”, або вибираємо пункт контекстного меню на сервері БД, для створення нової бази даних, після чого у робочій області появляється нова вкладка, у якій потрібно ввести назву створюваної бази даних та тип кодування текстових даних.

Відразу після створення БД, можна перейти до створення таблиць, розгорнувши у дереві серверу створену базу, та викликавши контекстне меню на гілці “Tables”. Відразу після цих дій відкриється нова вкладка, у якій буде запропоновано ввести назву таблиці, тип кодування та створення необхідних полів таблиці, надавши кожному необхідний тип даних, відповідних до схеми даних, що була створена раніше.

Після заповнення усіх необхідних даних для створення таблиці, потрібно натиснути на кнопку “Apply” для того щоб, трансформувати введену інформацію в скрипт на мові запитів SQL. Вміст скрипта відобразиться у наступному вікні, яке автоматично появляється після перетворення.

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

Після створення усіх таблиць, залишилось розставити зв’язки між таблицями, після цього робота із сервером баз даних завершується.

 

3.2 Програмування інтерфейсу та логіки роботи проекту


Після завершення програмування структур даних необхідно перейти до реалізації інтерфейсу та логіки роботи програми. На цьому етапі потрібно за допомогою середовища розробки ПЗ та мови програмування по результатам проектних рішень здійснити виконання поставленого завдання.

Як зазначалося програмна система має використовувати тип проекту WindowsFormsApplication, який працює на платформі .NET Framework 4.0. Тому спершу потрібно у середовищі MS Visual Studio 2013 створити проект відповідного типу із зазначенням, що реалізація буде здійснюватись об’єктно-орієнтованою мовою програмування C#, та вказанням назви проекту.

Програмний додаток буде складатись із одного вікна, який у собі міститиме: рядок заголовку, робочу область та головне меню вибору дій. У робочу область, залежно від вибраної дії на панелі, буде завантажено нове вікно із необхідним вмістом.

Але, перш ніж перейти до створення вікон, підключимо до проекту бібліотеку, яка надасть можливість обмінюватись даними із сервером MySql, з можливостями технології ADO.NET. Для цього потрібно створити посилання на відповідну бібліотеку.

Отже, викликаємо вікно менеджера посилань, натиснувши на пункт відповідного контекстного меню “Add Reference…”, далі натискаємо на кнопку “Browse”, для виклику діалогового вікна вибору файлів, та вибираємо файл бібліотеки, для доступу даних, що має назву “MySql.Data.dll”, після чого маємо можливість пересвідчитись, що бібліотека приєднана до проекту, переглянувши структуру проекту.

Тепер для доступу до можливостей цієї бібліотеки потрібно лише прописати наступний рядок у директиві підключень об’єктів: using MySql.Data.MySqlClient;

Для зручності використання функціональних можливостей об’єктів, потрібно створити власний клас, який міститиме рядок підключення, що складається з адреси підключення до серверу бази даних, назви самої бази даних, до якої здійснюється підключення, та з персональних даних користувача серверу, тобто значення логіна та паролю, для отримання доступу до даних.

Структура створеного класу: class MySqlUsing

{ private string ConnectionStringDb; - рядок підключення до бази даних, в якому зберігається адреса серверу, назва облікового запису та пароль доступу до БД.static bool msg = false; - значення, яке сигналізує чи виводити повідомлення, чи не потрібно.MySqlUsing(); - конструктор класу, у якому автоматично завантажується рядок підключення.string getConnectingString(); - функція, що повертає рядок підключення.bool Connected(); - функція, що перевіряє наявність підключення із завантаженим рядком підключення.void SetConnectionString(string ConStr); - функція для встановлення рядка підключення до БД.ArrayList GetDataQuery(string query, bool nil); - функція для виконання запиту та повернення масиву записів, що підлягають умовам запиту.DataSet GetaDataQuery(string query); - функція для виконання запиту та повертає колекцію таблиць, що підлягають умовам запиту.void Insert(string Table, string Polya, string Value); - функція для занесення даних до БД, потрібно зазначити назву таблиці у яку будуть заноситись дані, перелік полів та відповідно їм значення.void Update(string Table, string Set, string Where); - функція для занесення змін до записів БД, де потрібно зазначити до якої таблиці потрібно застосувати зміни, які саме зміни, та умову під яку повинні відповідати записи.void Delete(string DBTable, string DBWhere); - функція для видалення записів із БД, де зазначається із якої таблиці та за яких критеріїв потрібно здійснити видалення запису.int GetId(string DBTable, string DBWhere); - функція для повернення ключового поля таблиці.}

Отже, налаштування обміну із базою даних є, далі потрібно створити вікна та розмістити елементи керування, які відповідатимуть за відображення даних із БД, та для виконання певних задач.

В програмі повинна бути реалізована можливість роботи користувача у багатовіконному режимі, тому було використано контейнерну технологію дочірніх вікон 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.

 

3.3 Тестування проекту


Тестування - це процес технічного дослідження, який виконується на вимогу замовників і призначений для визначення інформації про якість продукту відносно контексту, в якому він має використовуватись. До цього процесу входить виконання програми з метою пошуку помилок.

Тестування не може повністю забезпечити коректність програмного забезпечення, воно тільки порівнює стан і поведінку продукту зі вказаною специфікацією.

Для перевірки коду є наступні форми: інтеграційна та модульна. Спершу використовують стандарти (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 тестів «Випадки тестування користувацького інтерфейсу», із яких усі пройшли успішно, отже, тестування користувацького інтерфейсу розглядається, як успішне.

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

 

 

4. СПЕЦІАЛЬНИЙ РОЗДІЛ

 

4.1 Інструкція з інсталяції розробленого проекту


Для інсталяції та експлуатації автоматизованої інформаційної системидля обліку та обслуговування електричних силових підстанційслід забезпечити необхідні апаратні та програмні вимоги. Конфігурація системи для працеспроможності має відповідати наступним вимогам:

-       процесор - частотою не менше 1,5 ГГц;

-       оперативна пам’ять - 1ГБ;

-       монітор - підтримка розширення 1024х768;

-       жорсткий диск - місткістю не менше 20ГБ;

-       мережевий адаптер - FastEthernet/Wi-Fi;

-       наявність клавіатури;

-       наявність маніпулятора «миші».

Найпопулярнішими, серед звичайних користувачів, операційними системами є системи, що відносяться до сімейства Windows, які забезпечують зручність та легкість у користуванні програмним комплексом, надають широку палітру можливостей, великий вибір програмного забезпечення різних видів, надійність при оперування конфіденційними даними. Саме такі властивості системи потрібні для розроблювального програмного забезпечення, тому до конфігурації ПК потрібно віднести наявність ОС сімейства Windows із встановленим набором бібліотек(платформою) .NET Framework 4.0, яка надає значні можливості для використання програмних засобів.

Вона показує, що для роботи проекту, потрібна наявність Веб-сервера, на якому знаходитиметься база даних із даними. Під’єднання персонального комп’ютера до серверу буде відбуватиметься через мережу, через визначений порт системи, який по замовуванню рівний значенню 3066.

Визначивши мінімальну конфігурацію персонального комп’ютера, під яку розроблятиметься програмне забезпечення, здійснено перелік пристроїв, які потрібні для використання, можна перейти до експлуатації створеного програмного забезпечення.

 

4.2 Інструкція з експлуатації проекту


Щоб розпочати роботу із додатком, потрібно пересвідчитись, що система відповідає вимогам для використання, та встановлені всі додаткові програмні засоби, що використовуються програмною системою.

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

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

Якщо при створенні підстанції не було вказано обов’язкові налаштування, наприклад назви підстанції, тоді при закритті дочірнього вікна, перед користувачем появиться попереджувальне повідомлення із змістом, що не всі параметри введено.

Коли усі дані введено вірно, то при закритті вікна, автоматично зберігаються дані про підстанцію, або можна натиснути на кнопку «Зберегти», після чого відбудеться сповіщення повідомленням про успішно доданий запис.

Для роботи із робітниками системи, потрібно перейти на відповідний пункт меню «Файл - Робітники - Перегляд усіх», при натисненні на який відкриється вікно із вмістом. У вікні можна переглянути список усіх працівників, здійснити сортування інформації, знайти потрібний запис або ж перейти до створення нового.

При створені нового робітника, потрібно скористатись підписами на елементах керування, ввести відповідну інформацію та натиснути кнопку із назвою «Додати» для збереження інформації. При натисненні на кнопку із підписом «Відміна», не буде здійснено збереження введених даних.

У програмній системі співробітники фігурують для створення бригад, які відправляються на виконання певного завдання.

Завдання можна створити скориставшись головним меню додатку, та перейшовши на пункт «Файл-Перевірка-Нова перевірка», що забезпечить відкриття відповідного вікна у якому потрібно вибрати тип перевірки, яка може набувати двох значень(планова, ремонтна), далі вказати на якій підстанції буде здійснюватись виконання завдання, вибравши необхідне значення у списку. Також передбачена можливість введення суті роботи, яку потрібно виконати, із зазначенням деталей поломки чи несправностей.

Для виконання створюваного завдання назначаються працівники, що мають полагодити та виправити несправності. Працівники об’єднуються у бригади, склад яких не є сталим, а визначаються операторами, в залежності від завантаженості працівників.

У програмі для формування бригади потрібно вибрати працівника із списку та натиснути на кнопку «Додати». Після цієї дії у полі під кнопками повинно добавитись нове поле із значенням прізвища, ім’я та по батькові робітника, якого було вибрано до складу бригади на завдання. Щоб зберегти введену інформацію по перевірці, потрібно натиснути на кнопку «Додати».

При перегляді усіх завдань, можна швидко переглянути основну інформацію про перевірки, для зручності перегляду можна скористатись сортуванням даних, що впорядкує їх за певним критерієм(за завданням, за станцією, за типом перевірки), або використати фільтрування, яке залишить у таблиці тільки ті значення записів, які будуть відповідати введеному критерію.

Натиснувши на кнопку із назвою «Звіт», на панелі інструментів вікна роботи із перевірками, у додаток 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. ЕКОНОМІЧНИЙ РОЗДІЛ

 

5.1 Визначення витрат на створення програмного продукту


Для визначення економічної доцільності, економічного обгрунтування, виконання поставленого завдання створення автоматизованої інформаційної системи для обліку та обслуговування електричних силових підстанцій найдоцільнішим буде визначення кошторису розробки ПП.

Для цього спершу розглянемо основні етапи робіт при складанні програмного продукту, які наведені у таблиці 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 % (ставка ЄСВ) від суми основної та додаткової заробітної плати розробника.

 грн.

Обчислимо витрати на амортизацію обчислювальної техніки за наступною формулою:

                                       (5.2)


Амортизація основних фондів розраховується за формулою, грн.:

,                                       (5.3)

де, Ц - балансова вартість обладнання, грн. Для комп'ютерів Ц = 18500 грн.; На - річна норма амортизаційних відрахувань для даного виду обладнання, приміщень, %;

Тек - термін експлуатації обладнання, роки.

3700 грн.

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

Разом інші витрати становлять 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).

Похожие работы на - Створення баз даних для електричних силових підстанцій

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!