Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Розробка програмного забезпечення комп «ютерної системи управління процесом випалювання будівельних матеріалів з використанням об» єктно-орієнтованого програ

КурсоваДопомога в написанніДізнатися вартістьмоєї роботи

По мірі переміщення до завантажувача кінця печі і більш сильного охолодження продуктів горіння, щоб відновити об'єм працюючих газів, застосовують рециркуляцію, повертають частину відпрацьованих пічних газів. Таким чином, завантажений кінець печі на 10 — 12 м від початку за рахунок рециркуляції дозволяє підігріти садку виробів зверху і знизу з різницею не більше 30 °C — 40 °C. Без рециркуляції цей… Читати ще >

Розробка програмного забезпечення комп «ютерної системи управління процесом випалювання будівельних матеріалів з використанням об» єктно-орієнтованого програ (реферат, курсова, диплом, контрольна)

Міністерство освіти і науки, молоді та спорту України Вінницький національний технічний університет

Інститут автоматики електроніки та комп`ютерних систем управління Кафедра комп’ютерних систем управління

Курсова робота

Розробка програмного забеспечення комп’ютерної системи управління процесом випалювання будівельних матеріалів з використанням об'єктно-орієнтованого програмування

з дисципліни «Програмування»

за напрямом «Системна інженерія»

Керівники курсової роботи к. т. н., доц. Москвіна С.М.,

к. т. н., доц. Ковтун В.В.

Розробив студент гр.3СІ-11

Жук О.С.

Вінниця ВНТУ 2012

Індивідуальне завдання

на курсову роботу з дисципліни «Програмування»

студента ________________________________групи 3 СІ-11

на тему «Розробка програмного забезпечення комп’ютерної системи управління процесу випалювання будівельних матеріалів з використанням об'єктно-орієнтованого програмування. «

Розробити програмне забезпечення комп’ютерної системи управління процесу випалювання будівельних матеріалів з використанням принципів об'єктно-орієнтованого програмування.

Комплекс програм повинен складатися з:

— інтерфейсу;

— бази даних;

— програм роботи з базою даних;

— програм пошуку інформації в базі даних за заданими критеріями;

— програм для статистичної обробки даних (мінімальне, максимальне, середньо квадратичне відхилення, коефіцієнт кореляції тощо);

— програм виведення інформації в вигляді таблиць та графіків.

Комплекс програм повинен бути розроблений з використанням принципів структурного, модульного та об'єктно-орієнтованого програмування.

Середовище проектування: Turbo C.

Мова програмування: C++.

Особливості структури програмного комплексу:

— кількість класів не менше 5-ти;

— кількість модулів не менше 3-х;

— кількість рівнів ієрархії класів не менше 3-х;

— кількість обробок виняткових ситуацій не менше 3-х.

Таблиця 1 Вхідних та вихідних даних

вхідні дані

вихідні дані

назва

тип даних

назва

тип даних

температура зони випалювання

float

адреса команди управління

int

температура зони підігріву

float

зміст команди управління

char

температура зони охолодження

float

марка цегли

int

кількість подачі газу до горілок

float

кількість подачі повітря до горілок

float

вологість сирцю

float

тиск зони випалювання

float

тиск зони підігріву

float

тиск зони охолодження

float

вологість повітря

float

границя міцності на стиск п’яти цеглин з партії

int

Вхідні дані: представлені в таблиці 1.

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

Структура курсового проекту:

— технічне завдання;

— пояснювальна записка;

— програма та текст пояснювальної записки на диску.

Дата видачі «____» _________ 2012 р. Керівник ________________

(підпис)

Завдання отримав__________

(підпис)

Анотація

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

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

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

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

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

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

Показана можливість використання даного програмного комплексу як інтерфейсної частини даного АСУТП.

Зміст

  • Вступ
  • 1. Варіантний огляд та аналіз сучасних методів та засобів проектування сучасного програмного забезпечення комп’ютерних систем управління
  • 1.1 Опис технологічного процесу
  • 1.2 Класифікація сучасних об'єктно-орієнтованих мов програмування
  • 1.3 Огляд та аналіз сучасних технологій та засобів проектування комп’ютерних систем управління
  • 1.4 Універсальна мова програмування UML
  • 2. Розробка алгоритмічного та програмного забезпечення комп'ютерної системи управління процесом випалювання будівельних матеріалів
  • 2.1 Аналіз функцій системи
  • 2.2 Розробка UML діаграми варіантів використання комп’ютерної системи управління процесу випалювання будівельних матеріалів
  • 2.3 Структура програмного забезпечення
  • 2.4 Проектування структури бази даних
  • 3. Розробка програмного забеспечення компютерної системи управління процесом випалювання будівельних матеріалів
  • 3.1 Розробка модульної структури програмного забеспечення
  • 4. Тестування розробленого програмного забеспечення компютерної системи управління процесом випалювання будівельних матеріалів
  • 4.1 Розробка тестів
  • 5. Оцінка ефективності програмного забезпечення комп’ютерної системи управління випалювання будівельних матеріалів
  • 6. Розробка документів на супроводження програмного продукту
  • 6.1 Розробка інструкцій системному програмісту
  • Висновки
  • Список літератури
  • Додатки

Вступ

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

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

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

Апаратне забезпечення (англ. hardware) — комплекс технічних засобів, який включає ЕОМ: зовнішні пристрої, термінали, абонентські пункти тощо, які необхідні для функціонування тієї чи іншої системи; фізична частина ЕОМ.

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

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

1.1 Опис технологічного процесу

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

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

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

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

По мірі переміщення до завантажувача кінця печі і більш сильного охолодження продуктів горіння, щоб відновити об'єм працюючих газів, застосовують рециркуляцію, повертають частину відпрацьованих пічних газів. Таким чином, завантажений кінець печі на 10 — 12 м від початку за рахунок рециркуляції дозволяє підігріти садку виробів зверху і знизу з різницею не більше 30 °C — 40 °C. Без рециркуляції цей перепад температур досягає 100 °C і більше. Продукти горіння з температурою близько 100−150°С вентилятором викидається в атмосферу.

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

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

Біля вхідної частини тунелю «допоміжна» герметизована камера. Вона має двоє дверей — зовнішні і внутрішні, причому при проході вагонеток із сирцем одні з них повинні бути обов’язково закриті.

На рисунку 1.1 наведена схема об'єкта автоматизації.

Рисунок 1.1 — Схема тунельної печі

1.2 Класифікація сучасних об'єктно-орієнтованих мов програмування

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

Перше покоління (1954;1958): FORTRAN, ALGOL-58, Flowmatic — Математичні формули.

Друге покоління (1959;1961): FORTRAN II, ALGOL-60, COBOL, Lisp.

Третє покоління (1962;1970): PL/I, ALGOL-68, Pascal, Simula — класи, абстрактні дані.

Загублене покоління (1970;1980): Багато мов створених, але мало вижили.

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

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

70-і роки знаменувалися божевільним сплеском активності: було створено біля двох тисяч різних мов і їхніх діалектів. CLOS (объединивший Lisp, LOOPS і Flavors), C++ (нащадок від шлюбу С и Simula) і Eiffel (відбувся від Simula і Ada). Найбільший інтерес для подальшого викладу представляє клас мов, називаних об'єктними й об'єктно-орієнтованими, котрі найбільшою мірою відповідають задачі об'єктно-орієнтованої декомпозиції програмного забезпечення. До сучасних, найбільш популярних ОО мов програмування відносяться: C++, C#, Java.

Java (вимовляється Джава; у розмовному варіанті Ява) — об'єктно-орієнтована мова програмування, випущена компанією Sun Microsystems у 1995 році як основний компонент платформи Java. Синтаксис мови багато в чому походить від C та C++. У офіційній реалізації, Java програми компілюються у байткод, який при виконанні інтерпретується віртуальною машиною для конкретної платформи.

C++ (Сі-плюс-плюс) — універсальна мова програмування високого рівня з підтримкою декількох парадигм програмування: об'єктно-орієнтованої, узагальненої та процедурної.

C# (вимовляється Сі-шарп) — об'єктно-орієнтована мова програмування з безпечною системою типізації для платформи.net.

Генеалогічне дерево мов програмування представлено на рисунку 1.2.

Рисунок 1.2 — Генеалогічне дерево мов програмування

1.3 Огляд та аналіз сучасних технологій та засобів проектування комп’ютерних систем управління

RAD (Rapid Application Development) в перекладі з англійської значить «прискорена розробка програм». Ще цей термін називають «візуальним проектуванням». Найпоширенішими в наш час мовами програмування з візуальним проектуванням можна назвати С++ Builder, Delphi, Visual Basic, Visual C++.

Visual Basic — це середовище програмуваня в якому розроблено Office фірми Microsoft. Характеризується повільною швидкістю компіляції, але під час компіляції можна внести зміни до лістингу програми.

Visual C++ - це візуальне середовище проектування, що має компілятор, який працює повільніше ніж компілятор Object Pasсal, але однією з найкращих якостей цього середовища є відлагоджувальник програми, та готові компоненти бібліотеки MFC. Саме тому ми обираємо це середовище проектування для нашого проекту.

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

— зачне зменшення зусиль при програмуванні програм для Windows;

— швидкість виконання програм, написаних з використанням бібліотеки, повинна бути сумісна зі швидкістю виконання програм написаних на мові С з використанням Win32 API;

— розмір допоміжного коду повинен бути мінімальним;

— спроможність напряму визивати будь-яку С-функцію Win32 API;

— легкість використання Win32 API в С++ повинна бути така ж, що при використанні традиційної мови С.

1.4 Універсальна мова програмування UML

UML (англ. Unified Modeling Language) — уніфікована мова об'єктно-орієнтованого моделювання, використовується у парадигмі об'єктно-орієнтованого програмування. Є невід'ємною частиною уніфікованого процесу розробки програмного забезпечення.

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

Є такі основні uml-діаграми:

— діаграма варіантів використання (use case diagram);

— діаграма класів (class diagram);

— діаграма поведінки (behavior diagrams);

— діаграма стану (statechart diagram);

— діаграма діяльності (activity diagram);

— діаграма взаємодії (interaction diagrams);

— діаграма послідовності (sequence diagram);

— діаграма взаємодії (collaboration diagram);

— діаграма реалізації (implementation diagrams);

— діаграма компонентів (component diagram);

— діаграма розгортання (deployment diagram);

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

Діаграми підвищують супроводжуваність проекту і полегшують розробку документації.

Приклад UML діаграми діяльності представлено на рисунку 1.3.

Рисунок 1.3 — Приклад UML діаграми діяльності програмного забезпечення комп’ютерної системи управління

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

2.1 Аналіз функцій системи

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

— режим адміністратора;

— режим користувача;

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

Режим автоматизованої системи управління технологічний процесом включає:

— моніторинг технологічного процесу;

— запис характеристик стану технологічного процесу;

— контроль за станом технологічного процесу.

Режим адміністратора включає:

— адміністратор може вводити інформацію в базу даних;

— створювати файли бази даних;

— редагувати записи бази даних;

— додавати записи в базу даних;

— видаляти записи з бази даних;

— переглядати базу даних;

— здійснювати пошук в базі даних за температурою, тиском та вологістю;

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

— здійснювати обробку даних результатів контролю;

— виводити дані в формі графіків та таблиці;

— здійснювати реєстрацію користувачів.

Режим користувача включає:

— користувач може здійснювати пошук в базі даних за температурою, тиском та вологістю;

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

— здійснювати обробку даних результатів контролю;

— виводити дані в формі графіків та таблиці.

2.2 Розробка UML діаграми варіантів використання комп’ютерної системи управління процесу випалювання будівельних матеріалів

На основі функцій, що визначені в підрозділі 2.1 розробимо USE-CASE діаграму системи. Вона використовує 3 актора:

— адміністратор;

— користувач;

— автоматизована система управління технологічним процесом.

На рисунку 2.1 відображено UML діаграму варіантів використання.

2.3 Структура програмного забезпечення

На основі функцій системи, що визначені в підрозділі 2.1 та USE-CASE діаграми визначимо основні структурні елементи програмного забезпечення.

ПЗ КСУ процесу випалювання будівельних матеріалів складається з 5 підсистем (модулів): введення даних; робота з базою даних; контролю та обробки; організація інтерфейсу; виведення інформації.

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

Рисунок 2.1 — UML діаграма варіантів використання комп’ютерної системи

Рисунок 2.2 — UML діаграма структури програмного забезпечення

Розробка UML діаграми функціонування програмного забезпечення комп’ютерної системи управління процесу випалювання будівельних матеріалів

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

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

Головне меню складається з таких підменю:

— АСУТП;

— ведення бази даних;

— перегляд бази даних;

— пошук інформації;

— контроль;

— вивід інформації;

— вихід.

Підменю АСУТП призначене для імітування поступання інформації про стан технологічних процесів, і складається з таких підпунктів підменю:

— створення бази даних;

— додавання записів у базу даних.

Підменю ведення бази даних призначене для роботи адміністратора з базою даних, і складається з таких підпунктів підменю:

— редагування записів бази даних;

— видалення записів з бази даних.

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

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

— пошук за температурними параметрами;

— пошук за параметрами тиску;

— пошук за параметрами вологи;

Підменю контролю призначене для аналізу записів в базі даних та визначення відхилення параметрів від норми, і складається з таких підпунктів підменю:

— контроль температури;

— контроль тиску;

— контроль вологи;

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

— виведення в формі таблиць;

— виведення в формі графіків;

UML функціонування програмного забезпечення програмного забезпечення зображена на рисунку 2.3.

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

В даному курсовому база даних складається з двох файлів:

— STP. dat;

— BD. dat.

STP. dat файл містить межі зміни параметрів контролю технологічного процесу.

BD. dat файл містить інформацію про поточний стан параметрів технологічного процесу.

Структура файлу STP. dat

STP. dat файл параметрів контролю містить границі зміни трьох параметрів: температури

Рисунок 2.3 — UML діаграма функціонування програмного забезпечення

тиску

вологи

Для даного технологічного процесу

Tfire_min має бути 960° С

Tfire_max має бути 1135° С

Theat_min має бути 580° С

Theat_max має бути 600° С

Tcool_min має бути 620° С

Tcool_max має бути 640° С

Pfire_min має бути +1,4 мм рт. ст. відносно зовнішнього середовища

Pfire_max має бути +1,9 мм рт. ст. відносно зовнішнього середовища

Pheat_min має бути — 3,5 мм рт. ст. відносно зовнішнього середовища

Pheat_max має бути +1,4 мм рт. ст. відносно зовнішнього середовища

Pcool_min має бути +2 мм рт. ст. відносно зовнішнього середовища

Pcool_max має бути +2,7 мм рт. ст. відносно зовнішнього середовища

Mser_min має бути 10%

Mser_max має бути 15%

Mair_min має бути 3%

Mair_max має бути 5%

Інформація про відхилення параметрів записується в динамічний масив rezcontr.

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

Таблиця 2.1 — Таблиця структури запису файлу BD. dat бази даних

Ім'я

Ідентифікатор

Тип

Розмір поля

№ запису в БД

Info

Long

4b

Температура зони випалювання

tem_fire

Float

4b

Температура зони підігріву

tem_heat

Float

4b

Температура зони охолодження

tem_cool

Float

4b

Тиск зони випалювання

pressure_fire

Float

4b

Тиск зони підігріву

pressure_heat

Float

4b

Тиск зони охолодження

pressure_cool

Float

4b

Кількість подачі газу

fuel_gas

Float

4b

Кількість подачі повітря

fuel_air

Float

4b

Вологість сирцю

moisture_res

Float

4b

Вологість повітря

moisture_air

Float

4b

Границя на стиск готової цегли

lim_compres_str [5]

Int

10b

Марка цегли

mark

Int

2b

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

typedef struct record{

long info; /*порядковий номер запису файлу*/

// температурні показники в зонах

float tem_fire; /* Температура зони випалювання */

float tem_heat; /* Температура зони підігріву */

float tem_cool; /* Температура зони охолодження */

// показники тиску в зонах

float pressure_fire; /* Тиск зони випалювання */

float pressure_heat; /* Тиск зони підігріву */

float pressure_cool; /* Тиск зони охолодження */

// витрати палива

float fuel_gas; /* кількість подачі газу */

float fuel_air; /* кількість подачі повітря */

// вологість

float moisture_res; /* вологість сирцю */

float moisture_air; /* вологість повітря */

// параметри цегли

int lim_compres_str [5]; /* границя на стиск 5 цеглин*/

int mark; /* марка цегли */

}Record;

Все розроблене в даній роботі алгоритмічне забезпечення відповідає ГОСТам 19.701−90, 5807−85.

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

Таблиця 2.2 — Таблиця тестової бази даних

Температура зони

Тиск зони

Кількість подачі

Вологість

Границя на стиск готової цегли

Марка цегли

випалювання

нагрі вання

охолодження

випалю вання

нагрі вання

охолод-ження

газу

повітря

сирцю

повітря

1.66

— 0.75

1.93

12.5

2.93

1.72

— 1.21

2.01

12.9

2.98

1.83

— 2.69

2.05

12.3

3.05

1.81

— 2.57

2.11

11.8

3.09

1.89

— 1.20

2.15

12.7

3.12

1.94

— 0.43

2.25

11.5

3.18

1.82

0.21

2.30

11.3

3.25

1.80

0.84

2.39

11.9

3.34

1.78

1.26

2.40

12.3

3.48

1.72

1.48

2.48

12.5

3.50

1.69

0.75

2.51

12.6

3.60

1.62

0.01

2.37

12.9

3.79

1.57

— 0.5

2.43

13.1

3.87

1.45

— 0.75

2.51

13.9

3.99

1.38

— 0.23

2.67

12.8

4.25

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

Даний розділ призначений для розробки модуля структури програмного забезпечення

3.1 Розробка модульної структури програмного забеспечення

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

Структура програмного забезпечення представлена на рисунку 3.1.

Рисунок 3.1 — Структура програмного забезпечення

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

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

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

1.1 Розробка модуля меню

1.1.1 Структура модуля меню WINOW. CPP

Структура модуля меню WINOW. CPP представлена на рисунку 3.2.

1.1.2 Опис функцій модуля меню

Функція void menu () виконує роботу головного меню, та виклику підменю;

функція void Window (int x1, int y1, int x2, int y2, int bg, int rect, char ch) утворює вікна в яких подається інформація, де x1, y1, x2, y2 — координати кутків вікна, bg — колір фону вікна, rect — колір рамки вікна, ch — підтвердження малювання рамки;

Рисунок 3.2 — Структура модуля меню

функція void helpinfo (const char *str) виводить вміст рядку str в зону підказок користувачеві;

функція void MainMenu () ініціалізує початкові параметри головного меню;

функція void podmenu1 () організовує роботу з меню АСУТП;

функція void podmenu2 () організовує роботу меню з базою даних;

функція void podmenu3 () організовує роботу меню пошуку;

функція void podmenu4 () організовує роботу меню контролю;

функція void podmenu5 () організовує роботу меню виводу результатів контролю;

функція void podmenu6 () організовує вихід з програми;

функція void CreateNewBd () організовує діалоги для створення нової бази даних;

функція void AddDataInBd () виводить вікно з полями для запису даних, що будуть записуватись базу даних;

функція void EditData () виводить вміст вказаного запису бази даних, дозволяє його відредагувати та зберегти;

функція void DeleteData () вміст вказаного запису бази даних і при підтверджені надсилає запит на видалення вказаного запису з бази даних;

функція void BDwiev () в формі таблиці виводить вміст бази даних;

функція void Search_temp () організовує налаштування температурних параметрів пошуку за якими буде виведено вміст бази даних що відповідають вказаним параметрам;

функція void Search_presure () організовує налаштування параметрів пошуку по тиску за якими буде виведено вміст бази даних що відповідають вказаним параметрам;

функція void Search_moisture () організовує налаштування параметрів пошуку по вологості за якими буде виведено вміст бази даних що відповідають вказаним параметрам;

функція void Control_temp () порівнює вміст бази даних з еталонними значеннями температур, та виводить інформацію про відхилення;

функція void Control_pressure () порівнює вміст бази даних з еталонними значеннями тиску, та виводить інформацію про відхилення;

функція void Control_moisture () порівнює вміст бази даних з еталонними значеннями вологи, та виводить інформацію про відхилення;

функція void disptable () виводить вміст записів бази даних за якими було виявлено відхилення згідно останнього контролю;

функція void dispgraph () малює графік зміни параметрів згідно записів бази даних;

функція float* getMDG (int num, int *size) допоміжна функція що повертає масив значень параметрів що виводимуться в графіку, де num — код типу параметру, size — розмір масиву який функція повертатиме;

функція void getMIMAX (int num, float *min, float *max) функція що повертає еталонні значення по параметру який буде виводитись в графіку, де min, max — границі еталонних значень;

int CheakPasword () функція що перевіряє пароль, та за результатами надає доступ до захищених ресурсів

1.2 Розробка модуля бази даних

1.2.1 Структура модуля бази даних DB. CPP

Структура модуля бази даних DB. CPP представлена на рисунку 3.3.

Рисунок 3.3 — Структура модуля бази даних

1.2.2 Опис функцій бази даних

Функція int CreateDB (const char *path) створює файл бази даних з path іменем;

функція FILE *OpenDB (const char *path, Record *header) відкриває для роботи файл бази даних та зчитує заголовочний запис header;

функція int ReadRecord (FILE *f, long recnum, Record *recp) зчитує recnum запис в буфер recp;

функція int WriteRecord (FILE *f, long recnum, Record *recp) записує з буфера запис у вказану позицію;

функція int AppendRecord (FILE *f, long recnum, Record *recp) додає запису у кінець файлу;

функція int DeleteRecord (const char *f_name, long recnum) видаляє з файлу з іменем f_name вказаний запис за номером recnum;

функція int CreateSTPF (const char *path) створє файл за іменем path з еталонними значеннями параметрів;

функція void SetRecSTDP (RecSTDP *rec) функція що створює запис rec з еталонними параметрами;

функція int ReadSTPF (const char *path, RecSTDP *recp) функція для зчитування з файлу еталонних параметрів;

1.2.3 Алгоритм пошуку в базі даних за заданим критерієм

Схема алгоритму пошуку в базі даних представлено на рисунку 3.4.

1.3 Розробка модуля заставки

1.3.1 Структура модуля заставки ZAST. CPP

Структура модуля заставки ZAST. CPP представлена на рисунку 3.5.

Рисунок 3.4 — Схема алгоритму пошуку в базі даних за заданим критерієм

Рисунок 3.5 — Структура модуля заставки

1.3.2 Опис функцій модуля заставки

Функція void InitGraph () ініціалізує графічний режим;

функція CShape* CreateShape () повертає створений динамічний масив фігур;

функція void DrawShape (CShape *ArrCShape) виводить на екран масив фігур ArrCShape;

функція void OutInfo () виводить на екран інформацію про автора;

функція void CloseGraph (CShape *ArrCShape) звільняє динамічно виділену пам’ять під масив ArrCShape та завершує графічний режим.

Все розроблене програмне забезпечення в даній роботі відповідає ГОСТам 19.781−74, 19.101−77.

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

4.1 Розробка тестів

Все тестування програмного забезпечення розіб'ємо на дві групи тестів:

— тестування меню;

— тестування алгоритмічне.

Тестування інтерфейсу включає наступні тести:

Тест 1: перевірка правильності формування головного вікна меню.

Тест 2: перевірка правильності формування вікна підменю APCS.

Тест 3: перевірка правильності формування вікна підменю BD work.

Тест 4: перевірка правильності формування вікна BD view.

Тест 5: перевірка правильності формування вікна підменю Search.

Тест 6: перевірка правильності формування вікна підменю Control.

Тест 7: перевірка правильності формування вікна підменю Display.

Тест 8: перевірка правильності формування вікна Create BD.

Тест 9: перевірка правильності формування вікна Add Rec.

Тест 10: перевірка правильності формування вікна Edit REC.

Тест 11: перевірка правильності формування вікна Delete REC.

Алгоритмічне тестування включає наступні тести:

Тест 12: перевірка правильності створення бази даних.

Тест 13: перевірка правильності додавання записів.

Тест 14: перевірка правильності редагування записів.

Тест 15: перевірка правильності видалення записів.

Тест 16: перевірка правильності виведення записів.

Тест 17: перевірка алгоритму пошуку.

Тест 18: перевірка алгоритму контролю.

Тест 19: перевірка алгоритму перевірки паролю.

Тест 20: перевірка алгоритму виведення графіку.

4.1 Аналіз результатів тестування

Тест 1. Для перевірки правильності формування головного вікна меню необхідно запустити програму за допомогою файлу MAIN. exe, після виводу авторської заставки повинно з’явитись 7 пунктів головного меню в вигляді верхнього горизонтального рядка вікна головного меню.

Результати тестування представлено на рисунку 4.1

Рисунок 4.1 — Результати тестування за Тестом 1

Тест 2. Для перевірки правильності формування вікна підменю APCS необхідно за допомогою стрілок клавіатури підсвітити зеленим пункт APSC та натиснути ENTER, ввести пароль «1111», в результаті повинно з’явитись 2 пункти підменю в вигляді вертикального меню.

Результати тестування представлено на рисунку 4.2

Рисунок 4.2 — Результати тестування за Тестом 2

Тест 4. Для перевірки правильності формування вікна BD view необхідно за допомогою стрілок клавіатури підсвітити зеленим пункт BD view та натиснути ENTER. Повинна з’явитись таблиця із вмістом бази даних.

Результати тестування представлено на рисунку 4.3

Рисунок 4.3 — Результати тестування за Тестом 4

Тест 9. Для перевірки правильності формування вікна Add Rec необхідно за допомогою стрілок клавіатури підсвітити зеленим пункт APCS та натиснути ENTER, ввести пароль «1111», підсвітити зеленим пункт Add Rec натиснути ENTER. Повинна з’явитись таблиця з нульовими записами та двома кнопками.

Результати тестування представлено на рисунку 4.4

Рисунок 4.4 — Результати тестування за Тестом 9

Тест 17. Для перевірки алгоритму пошуку необхідно вибирати меню Search та підменю Temperature, змінити межі пошуку та активувати кнопку SEARCH. В результаті повинна з’явитись таблиця з записами бази даних, що відповідають вказаним параметрам.

Введені параметри представлено на рисунку 4.5 та результати пошуку на рисунку 4.6

Рисунок 4.5 — Таблиця введених значень для тестування за Тестом 17

Рисунку 4.6 — Результати пошуку за Тестом 17

Тест 18. Для перевірки алгоритму контролю необхідно вибирати меню Control та підменю Pressuree. В результаті повинна з’явитись таблиця з номерами записів бази даних, що не відповідають нормам технологічного процесу.

Результати тестування представлено на рисунку 4.7

Рисунку 4.7 — Результати тестування за Тестом 18

Тест 19. Для перевірки алгоритму перевірки паролю необхідно за допомогою стрілок клавіатури підсвітити зеленим пункт APCS та натиснути ENTER. При введенні паролю відмінного від «1111» має з’явитись вікно з попередженням і програма вийти в головне меню.

Результати тестування представлено на рисунку 4.8

Рисунку 4.8 — Результати тестування за Тестом 19

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

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

— швидкодія;

— розмір використання оперативної пам’яті.

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

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

За рахунок використання динамічних масивів програма виграє в швидкості та раціональному використанні пам’яті.

У таблиці 5.1 показана файлова структура проекту

Таблиця 5.1 — Таблиця ефективності

Ім'я файлу

Розширення

Розмір (б)

Час виконання (сек)

MAIN

CPP

ZAST

CPP

4 958

WINOW

CPP

56 530

DB

CPP

10 030

BD

DAT

STP

DAT

MAIN

EXE

112 784

0.1

6. Розробка документів на супроводження програмного продукту

6.1 Розробка інструкцій системному програмісту

СD диск містить 2 папки:

1. Program, що містить файли програмного забезпечення;

2. Text, що містить документацію до програмного забезпечення.

Для успішного запуску програми необхідно:

1. Створити директорію з довільним ім'ям на будь-якому диску (програма не прив’язана до імені диску).

2. В програмі використовуються функції стандартної бібліотеки «graphics. h», але успішного виконання графічної частини програми необхідно щоб файл egavga. bgi був розміщений в спільній директорії з MAIN. EXE.

3. Для використання шрифтів необхідно в директорію додати файл tscr. chr.

Для розширення можливостей модуля програми, що генерує меню необхідно:

1. Відкрити WINOW. CPP файл у середовищі Turbo C.

2. Доповнити необхідними функціями.

3. Зберегти змінений файл.

4. Перекомпілювати файл MAIN. CPP.

Для розширення можливостей роботи бази даних необхідно:

1. Відкрити DB. CPP файл у середовищі Turbo C.

2. Доповнити необхідними функціями.

3. Зберегти змінений файл.

4. Перекомпілювати файл MAIN. CPP.

Для розширення можливостей графічної заставки меню необхідно:

1. Відкрити ZAST. CPP файл у середовищі Turbo C.

2. Доповнити необхідними функціями.

3. Зберегти змінений файл.

4. Перекомпілювати файл MAIN. CPP.

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

СD диск містить 2 папки:

1. Program, що містить файли програмного забезпечення;

2. Text, що містить документацію до програмного забезпечення.

Для запуску програмного забезпечення необхідно:

1. Створити окрему директорію на будь-якому диску.

2. Скопіювати з CD диску вміст папки Program у виділену директорію.

3. Запустити MAIN. EXE із створеної директорії.

Для управління програми використовувати:

1. Після виведення заставки необхідно натиснути будь-яку клавішу для закриття заставки і переходу в головне меню.

2. Перехід між меню та підменю здійснюється за допомогою стрілок на клавіатурі: UP/DOWN — вертикального; LEFT/RIGHT — горизонтального.

3. Вибір пунктів меню, та підменю здійснюється клавішею ENTER.

4. Вихід з підпунктів меню здійснюється за допомогою клавіші ESC.

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

6. При перегляді графіку з кількістю записів більш ніж 10 необхідно рухати графік в ліво та право за допомогою клавіш A/D.

7. Для виходу з програми необхідно вибрати пункт головного меню EXIT або натиснути клавішу ESC в головному меню.

Висновки

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

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

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

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

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

В п’ятому розділі проведено дослідження ефективності програмного забезпечення.

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

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

Список літератури

1. Бушуев С. Д. Автоматика и автоматизация производственных процессов / С. Д. Бушуев В.С. Михайлов — М., 1990. — 256 с.

2. Бронхин А. С. Основы автоматики производства и контрольно-измерительные приборы на предприятиях промышленности строительных материалов / А. С. Бронхин, Ю. С. Гризак. — М., 1974. — 375 с.

3. Ковалюк Д. О. Моделювання тепло-технологічних об'єктів з розподіленими параметрами. / Д. О. Ковалюк, С.М. Москвіна. — Вінниця: КІВЦ ВНТУ, 2010. — 158 с.

4. Объектно-ориентированные технологии проектирования прикладных программных систем [Електронний ресурс] / С. С. Гайсарян // Библиотека on-line — Режим доступу до журн.: http://citforum.ru/programming/oop_rsis/index. shtml

5. Брой М. Информатика. Основополагающеее введение: в 4-х ч. Ч.1. — М.: Диалог-МИФИ, 1996. — 304 с.

6. Калянов Г. Н. Структурный системный анализ (автоматизация и применение). — М.: «Лори», 1996. — 242 с.

7. Електронна бібліотека Вікіпедія [Електронний ресурс] Smalltalk — Вікіпедія — [Режим доступу] http://uk. wikipedia.org/wiki/Smalltalk

8. Електронна бібліотека Вікіпедія [Електронний ресурс] Ада — Вікіпедія — [Режим доступу] http://ru. wikipedia.org/wiki/Ада

9. Л. А. Калиниченко Язык определения интерфейсов IDL в архитектуре / Калиниченко Л. А., Когаловский М. Р. CORBA. — М. — 176 с.

10. Подбельский В. В. Язык Си++ - М.: Финансы и статистика, 2001. — 560 с.

11. Герберт Шилдт. Сетевое программирование для профессионалов.

12. — М.: Наука, 2006. — 712 с.

13. Тихомиров Ю. В. Самоучитель MFC. — СПб.: БХВ-Петербург, 2002. — 640 с.

14. Шлеер С. Объектно-ориентированный анализ: моделирование мира в состояниях / Шлеер С., Меллор С. — К.: «Диалектика», 1993. — 240 с.

15. Електронна бібліотека Вікіпедія [Електронний ресурс] UML — Вікіпедія — [Режим доступу] http://ru. wikipedia.org/wiki/UML

16. ГОСТ 19.701 — 90 (ИСО 5807.85) — Схеми алгоритмів програм, даних та систем. — М.: Госстандарт, 1990.

17. ГОСТ 19.781 — 83 — Програмне забезпечення систем обробки даних. — М.: Госстандарт, 1983.

18. ГОСТ 19.101 — 77 — Розробка програмної документації, видів програм та програмних документів. — М.: Госстандарт, 1977.

19. ГОСТ 19.401 — 78 — Текст програми. Вимоги до змісту оформлення. — М.: Госстандарт, 1978.

20. ДСТУ 3008 — 95 — Розробка технічної документації. — К.: Держстандарт України, 1995.

21. ГОСТ 7.1 — 2003 — Система стандартів з інформації, бібліотечної та видавничої справи. Бібліографічний запис. Бібліографічний опис. Загальні вимоги та правила складання. — М.: Госстандарт, 2003.

Додатки

Додаток А

Міністерство освіти і науки, молоді та спорту України Вінницький національний технічний університет

Інститут автоматики, електроніки та комп’ютерних систем управління Керівник курсової роботи к. т. н., доц. Москвіна С.М.

_______________________

" ___"_____________2012р.

Розробив студент гр.3СІ-11

Жук О. С.

_______________________" ___"_____________2012р.

ТЕХНІЧНЕ ЗАВДАННЯ на курсову роботу на тему:

" Розробка програмного забезпечення комп’ютерної системи управління процесом випалювання будівельних матеріалів з використанням принципів об'єктно-орієнтованого програмування. «

1. Призначення та галузь застосування розробки.

1.1 Призначення — контроль процесів випалювання будівельних матеріалів.

1.2 Галузь застосування — промисловість будівельних матеріалів.

2. Основа розробки — робочий навчальний план дисципліни.

3. Мета розробки.

3.1 Мета курсової роботи — розробка програми для контролю теплових параметрів згідно технологічних процесів при випалюванні будівельних матеріалів.

3.2 Перелік головних функцій. Програмне забезпечення комп’ютерної системи управління повинне працювати в 2-х режимах:

— режим адміністратора;

— режим користувача;

режим адміністратора включає наступні функції:

— робота з базою даних;

— створення бази даних;

— перегляд бази даних;

— редагування бази даних;

— видалення бази даних.

режим користувача включає наступні функції:

— пошук інформації;

— пошук інформації в базі даних за заданими критеріями;

— статистична обробка даних (мінімальне, максимальне, середньо квадратичне відхилення, коефіцієнт кореляції тощо);

— програма виведення інформації в вигляді таблиць та графіків.

4. Вхідні дані представлені в індивідуальному завданні в вигляді таблиці.

5. Вихідні дані відповідають задачам, що розв’язує система.

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

— Лаура Томсон и Люк Веллинг: Москва, 2003. — 672 c.

— Гради Буч. Объектно-ориентированный анализ и проектирование с примерами применения. — М.: Конкорд, 1992 — 519 с.

— Леоненков А. В. Розробка UML-діаграм [Електронний ресурс] /Електронний посібник — [режим доступу] http://khpi-iip. mipk. kharkiv.edu/library/case/

7. Технічні вимоги.

7.1 Вимоги до програмної платформи

7.1.1 Наявність програмного середовища PHP.

5.1.2 Операційна система — WINDOWS.

5.1.3 ПЗ необхідно протестувати та зробити висновки щодо придатності його до використання.

Все програмне забезпечення та супроводжуюча технічна документація повинні задовольняти наступним ГОСТам:

ГОСТ 19.701−90

ИСО 5807−85 — ГОСТ на розробку програмних документів, схеми алгоритмів програм, даних та системи.

ГОСТ 19.781−74 — Вимоги до розробки програмного забезпечення ГОСТ 19.101−77 (СТ СЭВ 1626−79) — держстандарт на розробку програмної документації, видів програм та програмних документів.

ГОСТ 19.401−78 — Текст програми. Вимоги до змісту та оформлення.

ГОСТ 19.106−78 — Вимоги до програмної документації.

ГОСТ 7.1 — 84 та ДСТУ 3008−95 — Розробка технічної документації.

8. Стадії та етапи розробки.

8.1 Граничні терміни виконання.

— постановка задачі;

— аналіз сучасних методів проектування — 10.09.2012

— розробка алгоритмічного забезпечення — 01.11.2012

— розробка UML-діаграм проекту — 10.11.2012

— програмна реалізація модулів — 01.12.2012

— тестування та аналіз результатів — 05.12.2012

— розробка документів на супроводження програмного забезпечення 05.12.2012

9. Вимоги до надійності.

— надійність даного проекту забезпечується використанням структурного програмування;

— програма працює під керівництвом єдиного меню;

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

10. Порядок контролю і приймання.

Отримання завдання на виконання курсового проекту — 10.09.2012 р.

Термін здачі курсового проекту на перевірку — до 05.12.2012 р.

Термін захисту курсового проекту — до 15.12.2012 р.

11. Коректування технічного завдання допускається з дозволу керівника проекту.

Лістинг «DB. CPP»

Додаток Б

#include

#include

#include

#include

#include

#include

#define FALSE 0

#define TRUE 1

typedef struct record{

long info; /* кількість записів у файлі */

float tem_fire; /* Температура зони випалювання */

float tem_heat; /* Температура зони підігріву */

float tem_cool; /* Температура зони охолодження */

float pressure_fire; /* Тиск зони випалювання */

float pressure_heat; /* Тиск зони підігріву */

float pressure_cool; /* Тиск зони охолодження */

float fuel_gas; /* кількість подачі газу */

float fuel_air; /* кількість подачі повітря */

float moisture_res; /* вологість сирцю */

float moisture_air; /* вологість повітря */

int lim_compres_str [5]; /* границя на стиск 5 цеглин*/

int mark; /* марка цегли */

}Record;

typedef struct standartparam{

float Tfire_min;

float Tfire_max;

float Theat_min;

float Theat_max;

float Tcool_min;

float Tcool_max;

float Pfire_min;

float Pfire_max;

float Pheat_min;

float Pheat_max;

float Pcool_min;

float Pcool_max;

float Mres_min;

float Mres_max;

float Mair_min;

float Mair_max;

}RecSTDP;

#define MAXREC (LONG_MAX / sizeof (Record))

// Create new DB with name path. Returned FILE or NULL

int CreateDB (const char *path);

// Opened DB with name path. Returned FILE or NULL end header

FILE *OpenDB (const char *path, Record *header);

// Readed record with namber recnum in to rec. Returned TRUE/FALSE

int ReadRecord (FILE *f, long recnum, Record *recp);

// Writen record with namber recnum and rec. Returned TRUE/FALSE

int WriteRecord (FILE *f, long recnum, Record *recp);

// Added Record into end of file. Returned TRUE/FALSE

int AppendRecord (FILE *f, long recnum, Record *recp);

// Delete Record from file. Returned TRUE/FALSE

int DeleteRecord (const char *f_name, long recnum);

int CreateSTPF (const char *path);

void SetRecSTDP (RecSTDP *rec);

int ReadSTPF (const char *path, RecSTDP *recp);

int GetMarka (const int *arrey);

int GetMin (const int *arrey);

int SerArufm (const int *arrey);

void InitGraphika ();

int Grafik (float *y, float min, float max, int kilk, char *name);

float MAX (float *y, int kilk);

float MIN (float *y, int kilk);

float* setycoord (float *mas, float min, float max, int num);

float gety (float cur, float min, float max);

void drawLine (float x1, float y1, float x2, float y2, float ymin, float ymax);

// *********************** //

int CreateDB (const char *path)

{

FILE *f;

Record rec;

int result;

f=fopen (path," wb"); // creater new file db

if (! f) return FALSE;

memset (&rec, 0, sizeof (Record));

rec. info=0; // started param numrec=0, as db is empty

result=WriteRecord (f, 0,&rec);

fclose (f);

return result;

}

FILE *OpenDB (const char *path, Record *header)

{

FILE *f=fopen (path," r+b"); // opened file f

if (f) ReadRecord (f, 0, header); // reading info record, get numrec

return f;

}

// reading record with recnum from file f in Record, thet are point *recp.

int ReadRecord (FILE *f, long recnum, Record *recp) //

{

if (recnum>MAXREC) return FALSE;

if (fseek (f, recnum * sizeof (Record), SEEK_SET)! =0) return FALSE;

return (fread (recp, sizeof (Record), 1, f) ==1);

}

int WriteRecord (FILE *f, long recnum, Record *recp)

{

if (recnum > MAXREC) return FALSE;

// позиціювання покажчика

if (fseek (f, recnum* sizeof (Record), SEEK_SET)! =0) return FALSE;

return (fwrite (recp, sizeof (Record), 1, f) ==1);

}

int AppendRecord (FILE *f, long *recnum, Record *recp)

{

// установка файлового покажчика в кінець файлу

if (fseek (f, 0, SEEK_END)! =0) return FALSE;

// ftell (f) повертає значення покажчика у файлі

// визначення номера запису, що додається

*recnum = ftell (f) / sizeof (Record);

recp->info = *recnum;

return WriteRecord (f, *recnum, recp); // дозапис у кінець файлу

}

int DeleteRecord (const char *f_name, long recnum) {

FILE *f;

FILE *bf;

Record header, buf;

long curnum, wnum, size;

f = OpenDB (f_name,&header);

size=header. info;

if (! f) return 0;

if (! CreateDB («buferfile»)) return — 1;

if (! ReadRecord (f, 0, &buf)) return — 2;

for (curnum=1, wnum=1; curnum<=size; curnum++) {

if (! ReadRecord (f, curnum, &buf)) return — 3;

bf = OpenDB («buferfile» ,&header);

if (! bf) return — 4;

if (recnum! =curnum) {

if (! AppendRecord (bf, &wnum, &buf)) return — 5;

header. info=wnum;

if (! WriteRecord (bf, 0, &header)) return — 6;

if (fclose (bf)! =0) return — 7;

wnum++;

}

}

if (fclose (f)! =0) return — 8;

bf = OpenDB («oldata» ,&header);

if (bf) {

fclose (bf);

if (remove («oldata»)! =0) return — 9;

}

else fclose (bf);

if (rename (f_name," oldata")! =0) return — 10;

if (rename («buferfile», f_name)! =0) return — 11;

return 1;

}

// *********************** //

int CreateSTPF (const char *path)

{

FILE *f;

RecSTDP rec;

int result;

f=fopen (path," wb");

if (! f) return FALSE;

SetRecSTDP (&rec);

result = (fwrite (&rec, sizeof (RecSTDP), 1, f) ==1);

fclose (f);

return result;

}

int ReadSTPF (const char *path, RecSTDP *recp) //

{

FILE *f;

f=fopen (path," rb");

if (! f) return FALSE;

int rez= (fread (recp, sizeof (RecSTDP), 1, f) ==1);

fclose (f);

return rez;

}

void SetRecSTDP (RecSTDP *rec) {

rec->Tfire_min=960;

rec->Tfire_max=1135;

rec->Theat_min=580;

rec->Theat_max=600;

rec->Tcool_min=620;

rec->Tcool_max=640;

rec->Pfire_min=1.4;

rec->Pfire_max=1.9;

rec->Pheat_min=-3.5;

rec->Pheat_max=1.4;

rec->Pcool_min=2;

rec->Pcool_max=2.7;

rec->Mres_min=10;

rec->Mres_max=15;

rec->Mair_min=3;

rec->Mair_max=5;

}

int GetMarka (const int *arrey) {

int min = GetMin (arrey);

int ser = SerArufm (arrey);

if (ser

else return min;

}

int GetMin (const int *arrey) {

int min=arrey [0];

for (int i=1; i<5; ++i) {

if (min>arrey [i]) min=arrey [i];

}

min/=25;

min*=25;

if (min<50) return 0;

return min;

}

int SerArufm (const int *arrey) {

int rez=0;

for (int i=0; i<5; ++i) rez+=arrey [i];

rez/=125;

rez*=25;

if (rez<75) return 0;

return rez;

}

int Grafik (float *y, float min, float max, int kilk, char *name)

{

float minznach, maxznach;

minznach= MIN (y, kilk);

maxznach= MAX (y, kilk);

if (minznach>min) minznach=min;

if (maxznach

float delta = maxznach-minznach;

delta/=8;

minznach-=delta;

maxznach+=delta;

float *ycoord =setycoord (y, minznach, maxznach, kilk);

float ymax=gety (max, minznach, maxznach);

float ymin=gety (min, minznach, maxznach);

int knum=1;

InitGraphika ();

setbkcolor (3);

cleardevice ();

setcolor (15);

line (40,0,40,460);

line (40,460,640,460);

int i;

for (i=60; i<640; i+=60) line (i, 455, i, 465);

for (i=0; i<460; i+=46) line (37, i, 43, i);

char mes [10];

float kurzn=maxznach;

for (i=0; i<10; ++i) sprintf (mes [i]," % -6.2f", kurzn-=delta);

for (i=0; i<10; ++i) outtextxy (0, i*46+40,mes [i]);

for (i=0; i<10; ++i) {

sprintf (mes [0]," %5d", knum+i);

outtextxy (i*60+25,470,mes [0]);

}

outtextxy (160,8,name);

kurzn=0;

if (kilk<11) {

setcolor (1);

line (40,ymin, 640, ymin);

line (40,ymax, 640, ymax);

for (i=0; i

getch ();

}

else{

char chs;

int maxzn=kilk-10;

knum=0;

do{

setcolor (15);

setfillstyle (1,3);

bar (40,465,640,480);

bar (45,0,640,455);

for (i=0; i<10; ++i) {

sprintf (mes [0]," %5d", knum+i+1);

outtextxy (i*60+25,470,mes [0]);

}

outtextxy (160,8,name);

outtextxy (160,16," Use 'a' / 'd' to list graph ENTER to exit");

setcolor (1);

line (40,ymin, 640, ymin);

line (40,ymax, 640, ymax);

for (i=0; i<9; ++i) DrawLine (i*60+60, ycoord [i+knum], i*60+120, ycoord [i+knum+1], ymin, ymax);

chs=getch ();

switch (chs) {

case 'a': if (knum>0) — -knum; break;

case 'd': if (knum

default: break;

}

}while (chs! =13);

}

closegraph ();

free (ycoord);

return 0;

}

void InitGraphika () {/* request auto detection */

int gdriver = DETECT, gmode, errorcode;

/* initialize graphics mode */

initgraph (&gdriver, &gmode,". bgi");

/* read result of initialization */

errorcode = graphresult ();

if (errorcode! = grOk) /* an error occurred */

{

printf («Graphics error: %sn», grapherrormsg (errorcode));

printf («Press any key to halt: «);

getch ();

exit (1); /* return with error code */

}

}

float MAX (float *m, int n) {

float z;

z=m [0];

for (int i=1; iz) z=m [i];

return z;

}

float MIN (float *m, int n) {

float z;

z=m [0];

for (int i=1; i

return z;

}

float* setycoord (float *mas, float min, float max, int num) {

float *rez;

rez= (float*) calloc (num, sizeof (float));

for (int i=0; i

return rez;

}

float gety (float cur, float min, float max) {

float rez=460;

rez*= (max-cur) / (max-min);

return rez;

}

void drawLine (float X1, float Y1, float X2, float Y2, float ymin, float ymax) {

int x1=X1, y1=Y1, x2=X2, y2=Y2;

const int deltaX = abs (x2 — x1);

const int deltaY = abs (y2 — y1);

const int signX = x1 < x2? 1: — 1;

const int signY = y1 < y2? 1: — 1;

int color;

int error = deltaX — deltaY;

if (y2>ymin||y2

else color = YELLOW;

putpixel (x2, y2, color);

while (x1! = x2 || y1! = y2) {

if (y1>ymin||y1

else color = YELLOW;

putpixel (x1, y1, color);

const int error2 = error * 2;

if (error2 > - deltaY) {

error — = deltaY;

x1 += signX;

}

if (error2 < deltaX) {

error += deltaX;

y1 += signY;

}

}

}

Лістинг «ZAST. CPP» Додаток В

#include

#include

#include

#include

#include

class CShape{

public:

virtual void Draw () {};

};

class CPoint: public CShape{

protected:

int x;

int y;

int color;

public:

CPoint (int X, int Y, int Color) {x=X; y=Y; color=Color; }

void Draw () {putpixel (x, y, color); }

};

class CCircle: public CPoint{

protected:

int r;

public:

CCircle (int X, int Y, int R, int Color): CPoint (X, Y, Color) {r=R; }

void Draw () {setcolor (color); setfillstyle (1, color); fillellipse (x, y, r, r); }

};

class CRectangle: public CPoint{

protected:

int x1;

int y1;

public:

CRectangle (int X, int Y, int X1, int Y1, int Color): CPoint (X, Y, Color) {x1=X1; y1=Y1; }

void Draw () {setcolor (color); setfillstyle (1, color); bar (x, y, x1, y1); }

};

class CMoveblePoint: public CPoint{

protected:

int dx;

int xmodif;

int modcol;

public:

CMoveblePoint (int X, int Y, int Dx, int Xm, int Mc, int col): CPoint (X, Y, col) {dx=Dx; xmodif=Xm; modcol=Mc; }

void Draw () {x+=dx; if (x>xmodif) color=modcol; putpixel (x, y, color); }

};

class CMCircle: public CMoveblePoint{

protected:

int r;

public:

CMCircle (int X, int Y, int R, int Dx, int Xm, int Mc, int Color): CMoveblePoint (X, Y, Dx, Xm, Mc, Color) {r=R; }

void Draw () {x+=dx; if (x>xmodif) color=modcol; setcolor (color); setfillstyle (1, color); fillellipse (x, y, r, r); }

};

class CMRectangle: public CMoveblePoint{

protected:

int x1;

int y1;

public:

CMRectangle (int X, int Y, int X1, int Y1, int Dx, int Xm, int Mc, int Color): CMoveblePoint (X, Y, Dx, Xm, Mc, Color) {x1=X1; y1=Y1; }

void Draw () {x+=dx; x1+=dx; if (x>xmodif) color=modcol; setcolor (color); setfillstyle (1, color); bar (x, y, x1, y1); }

};

class CMLine: public CMRectangle{

public:

CMLine (int X, int Y, int X1, int Y1, int Dx, int Xm, int Mc, int Color): CMRectangle (X, Y, X1, Y1, Dx, Xm, Mc, Color) {};

void Draw () {x+=dx; x1+=dx; if (x>xmodif) color=modcol; setcolor (color); line (x, y, x1, y1); }

};

void InitGraph ();

CShape* CreateShape (); // створює масив фігур

void DrawShape (CShape *ArrCShape); // виводить фігури на екран

void OutInfo (); // виводить інформацію на екран

void CloseGraph (CShape *ArrCShape); // завершує графічний режим

int Zastavka ();

int Zastavka ()

{

InitGraph ();

CShape *arr= CreateShape ();

DrawShape (arr);

OutInfo ();

CloseGraph (arr);

return 0;

}

void InitGraph ()

{

/* request auto detection */

int gdriver = DETECT, gmode, errorcode;

/* initialize graphics mode */

initgraph (&gdriver, &gmode,". bgi");

/* read result of initialization */

errorcode = graphresult ();

if (errorcode! = grOk) /* an error occurred */

{

printf («Graphics error: %sn», grapherrormsg (errorcode));

printf («Press any key to halt: «);

getch ();

exit (1); /* return with error code */

}

}

CShape* CreateShape () {

int i=0;

CShape *p [100];

p [i++] =new CRectangle (0, 0, getmaxx (), getmaxy (),

9);

p [i++] =new CCircle (0, 0, 80, 14);

p [i++] =new CCircle (250, 50, 25, 15);

p [i++] =new CCircle (275, 35, 25, 15);

p [i++] =new CCircle (285, 65, 25, 15);

p [i++] =new CCircle (310, 50, 25, 15);

p [i++] =new CCircle (450, 50, 25, 15);

p [i++] =new CCircle (475, 45, 25, 15);

p [i++] =new CCircle (485, 55, 25, 15);

p [i++] =new CCircle (510, 50, 25, 15);

p [i++] =new CRectangle (0,399,getmaxx (), getmaxy (), BLACK);

p [i++] =new CRectangle (275,299,300,399,BLUE);

p [i++] =new CRectangle (285,309,300,399,RED);

// telega

p [i++] =new CMRectangle (5,380,95,385, 20,600,0,DARKGRAY);

p [i++] =new CMCircle (25, 392, 7, 20,600,0, LIGHTGRAY);

p [i++] =new CMCircle (75, 392, 7, 20,600,0, LIGHTGRAY);

p [i++] =new CMRectangle (10,343,90,379, 20,300,RED, YELLOW);

p [i++] =new CMLine (10,352,90,352, 20,600,RED, DARKGRAY);

p [i++] =new CMLine (10,361,90,361, 20,600,RED, DARKGRAY);

p [i++] =new CMLine (10,370,90,370, 20,600,RED, DARKGRAY);

int j, k;

k=1;

for (j=20; j<90; j+=10) {

if (k>0) {

p [i++] =new CMLine (j, 343, j, 352, 20,600,RED, DARKGRAY);

p [i++] =new CMLine (j, 361, j, 370, 20,600,RED, DARKGRAY);

}

else{

p [i++] =new CMLine (j, 352, j, 361, 20,600,RED, DARKGRAY);

p [i++] =new CMLine (j, 370, j, 379, 20,600,RED, DARKGRAY);

}

k=k*-1;

}

// end telega

p [i++] =new CRectangle (300,299,400,399,BLUE);

return p;

}

void DrawShape (CShape *ArrCShape) {

int t=0;

// Out rezult

while (t<25) {

t++;

i=0;

while ((i<100) && (ArrCShape [i]! =NULL)) {

ArrCShape [i] - > Draw ();

i++;

}

delay (50);

}

}

void OutInfo () {

setcolor (LIGHTGREEN);

int style=7;

int size=3;

settextstyle (style, HORIZ_DIR, size);

outtextxy (200, 100, «Kursova robota»);

outtextxy (100, 150, «Compuret system control proccec»);

outtextxy (150, 200, «burning of bricks»);

outtextxy (250, 250, «ZHUK O. S.3si-11»);

getch ();

}

void CloseGraph (CShape *ArrCShape) {

while ((i<100) && (ArrCShape [i]! =NULL)) {

delete ArrCShape [i];

i++;

}

сlosegraph ();

}

Лістинг «MAIN. CPP» Додаток Д

#include «. readyworkbdwinow. cpp»

#include «. readyworkbdZAST. CPP»

int main () {

Zastavka ();

menu ();

return 1;

}

Показати весь текст
Заповнити форму поточною роботою