
- •Аналіз сучасного стану питання та обгрунтування завдання на роботу
- •Предметна область
- •Існуючі реалізації
- •1.3 Розробка технічного завдання на роботу
- •1.4 Обгрунтування вибор умови програмування
- •2 Розробка інтерфейсу програми та прикладів використання
- •2.1 Розробка інтерфейсу програми
- •2.2 Приклади використання
- •3 Розробка діаграм класів
- •4 Розробка підсистеми графічного відображення
- •4.1 Модель графічного відображення
- •4.2 Графічні процедури підсистеми графічного відображення
- •ФункціяLoadImage:
- •5 Використання засобів програмування winapi
- •6 Розробка підсистеми серіалізації/десеріалізації даних
- •6.1 Розробка формату файлу
- •7 Керівництво користувача
- •7.1 Встановлення програми та необхідні файли/каталоги
- •7.2 Запуск програми
- •7.3 Користувацький інтерфейс
5 Використання засобів програмування winapi
Для правильної роботи программи потрібно настроїти початкові данні. Для цього в функції WndProc ми створили секцію, яка виконуєтся лише раз при старті программи. В ній створюются декілька початкових об’єктів і запускаєтся таймер[5].
Так як программа повинна реагувати на команди користувача, тоді необхідно забеспечити обробку параметра message в функції WndProc. Було забезпечено реакцію на
Таймер,
Клік лівою кнопкою миші,
Натиснення клавіш.
У відповідь на повідомлення про таймер студенти будуть рухатися по аудиторії.
У відповідь на повідомлення про клік лівою кнопкою миші виконується перевірка на виділення/де виділення студентів.
Обробка натиснень клавіш описана у розділі 2.1. Одразу після обробки сигналу конкретної клавіші відбувається рух студентів за командою, якщо така поступила і перевірка чи не змінює мікроорганізм свій макрооб’єкт.
Також у функції WndProс виконується обробка меню, яке містить пункти «Файл», що містить підпункти «Відкрити», «Зберегти як…» і «Вихід», і пункт «Справка», який містить підпункт «Про програму».
В якості діалогових вікон для реалізації збереження та завантаження з файлу використані стандартні діалоги із бібліотеки «commdlg.h» а також функції «GetOpenFileName» та «GetSaveFileName». Для використання данних процедур необхідною є структура «OPENFILENAME».
Для створення нових мікрооб’єктів було створено новий діалог, який окрім кнопок «Ок» та «Відміна». Для отримання інформації із діалогового вікна виконані такі кроки:
Отримання дескриптору вікна за допомогою функції «GetDlgItem», яка повертає дескриптор обраного вікна, що належить діалоговому вікну.
Отримання тексту із полів для вводу тексту, використана функція «GetWindowTextA», яка дозволяє дізнатись текст вікна.
6 Розробка підсистеми серіалізації/десеріалізації даних
6.1 Розробка формату файлу
Серіалізація (в програмуванні) — процесперетворення будь-якої структуриданих в послідовність бітів. Зворотною до операціїсеріалізації є операціядесеріалізації - відновлення початкового стану структуриданих з бітовоїпослідовності.
Серіалізаціявикористовується для передачі об'єктів по мережі і для збереженняїх у файли. Наприклад, потрібностворитирозподілений додаток, різнічастиниякогомаютьобмінюватисяданимизі складною структурою. У такому випадку для типівданих, якіпередбачаєтьсяпередавати, пишеться код, якийздійснюєсеріалізацію[5] і десеріалізацію.Об'єктзаповнюєтьсяпотрібнимиданими, потімвикликається код серіалізації, в результатівиходить, наприклад, XML-документ. Результат серіалізаціїпередаєтьсяприймаючійстороні, наприклад, по електроннійпошті або HTTP. Додаток-одержувачстворюєоб'єкт того ж типу і викликає код десеріалізації, в результатіотримуючиоб'єкт з тими ж даними, щобуливоб'єктіпрограми-відправника. За такою схемою працює,наприклад, серіалізаціяоб'єктів через SOAP в Microsoft.NET.
Таблиця 6.1 - Формат файлу
Стрічка |
Опис |
1686 380 |
Координати х /у студента. |
105 63 |
Довжина /висота студента. |
0.3 |
Розміри студента |
123 |
Швидкість студента. |
R5 |
Ім’ястудента. |
3 |
Номер студента. |
false |
Чи виділений студент |
Water |
Означає, що далі описані студента в аудиторії. |
1500 5 400 |
Довжина / поточна позиція / розмір аудиторії. |
0 |
Кількість студентів в аудиторії. |
Важливо, щоб спочатку був опис студентів в аудиторії, потім студентів у деканаті. Якщо послідовність змінити правильна серіалізація не гарантуєтся. Дані в файлі можна змінювати, але так, щоб вони відповідали типу змінної, яка буде зчитана з тієї позиції.
6.2 Механізми введення виведення мови С++/Сі
Для роботи з файлами необхідно підключити заголовний файл «fstream». У «fstream» визначені кілька класів і підключені заголовні файли «ifstream» - файловий ввід і «ofstream» - файлове виведеннях[5].
Файловий ввід / вивід аналогічний стандартному вводу / виводу, єдина відмінність - це те, що введення / висновок виконані не на екран, а у файл. Якщо введення / виведення на стандартні пристрої виконується за допомогою об'єктів «cin» і «cout», то для організації файлового введення / виведення досить створити власні об'єкти, які можна використовувати аналогічно операторам «cin» і «cout».
Для виведення даних в файл необхідно створити об’єкт класу «ofstream», потім його можна використовувати як «cout».
Для введення даних з файлу необхідно створити об’єкт класу «ifstream», потім його можна використовувати як «cin».