Розробити прикладення "Вантажоперевезення"

Розробити прикладення "Вантажоперевезення"

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ,

МОЛОДІ ТА СПОРТУ УКРАЇНИ

ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД

«ПРИАЗОВСЬКИЙ ДЕРЖАВНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ»

МАРІУПОЛЬСКИЙ МЕХАНІКО-МЕТАЛЛУРГІЙНИЙ КОЛЕДЖ

Розробити прикладення

«Вантажоперевезення»

КУРСОВИЙ ПРОЕКТ

з дисципліни: «Об’єктно-орієнтоване програмування»

2011



Реферат

Зміст

Вступ

1. Специфікація проекту 

1.1 Призначення розробки та основи для її виконання

1.2 Постановка задачі 

1.3 Вимоги до програми

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

1.5 Структура програми

2. Програмна документація 

2.1 Керівництво системного програміста 

2.1.1 Архітектура програми

2.1.2 Встановлення і перевірка програми 

2.2 Керівництво користувача 

2.2.1 Призначення програми

2.2.2 Виконання програми

2.2.3 Повідомлення оператору 

Висновки

Перелік використаних джерел

Додатки



РЕФЕРАТ

Тема курсового проекту: «Розробити прикладення «Вантажоперевезення». Метою курсового проекту є створення програми «Вантажоперевезення» в середовищі програмування Borland C++ Builder.

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

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

У першій частині «Специфікація проекту» викладено призначення розробки та підстави для її виконання, дана постановка завдання з описом того, що повинна виконувати майбутня програма, описані взаємозв'язки між таблицями і подано фізичний опис моделі. Крім того, розглянуто вимоги до програми і програмної документації. Описані структура програми, тобто використовувані класи і розробляється графічний інтерфейс.

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

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

Проект містить 22 рисунків, 7 таблиць, виконаний в обсязі 43 аркушів.

ОБ’ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ, C++ BUILDER, АВТОМАТИЗОВАНА СИСТЕМА, ПРОГРАММА, БАЗА ДАНИХ, UML-ДІАГРАМА, МЕТОД, КЛАС, ПРОГРАМНИЙ КОД, ІНТЕРФЕЙС



ЗМІСТ

Вступ

1. Специфікація проекту

1.1 Призначення розробки та підстави для її виконання

1.2 Постановка завдання 

1.3 Вимоги до програми

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

1.5 Структура програми

2. Програмна документація 

2.1 Керівництво системного програміста

2.1.1 Архітектура програми 

2.1.2 Установка і перевірка програми 

2.2 Керівництво користувача

2.2.1 Призначення програми

2.2.2 Виконання програми

2.2.3 Повідомлення оператору

Висновки

Перелік використаних джерел

Додаток А Вихідний код програми



ВСТУП

Новітня система об'єктно-орієнтованого програмування C + + Builder виробництва корпорації Borland призначена для операційних систем Windows 95 і NT. Інтегрована середовище C + + Builder забезпечує швидкість візуальної розробки, продуктивність повторно використовуваних компонентів у поєднанні з міццю мовних засобів C + +, вдосконаленими інструментами і різномасштабними засобами доступу до баз даних. C + + Builder може бути використаний скрізь, де потрібно доповнити існуючі програми розширеним стандартом мови C + +, підвищити швидкодію і надати для користувача інтерфейсу якості професійного рівня. 

Інтегроване середовище розробки об'єднує Редактор форм. Інспектор об'єктів. Палітру компонент. Адміністратор проекту і повністю інтегровані Редактор коду і Відладчик - інструменти швидкої розробки програмних додатків, що забезпечують повний контроль над кодом і ресурсами. Професійні засоби мови C + + інтегровані в візуальне середовище розробки. C + + Builder надає швидкодіючий компілятор з мови Borland C + +, ефективний інкрементальний завантажувач і гнучкі засоби налагодження як на рівні вихідних інструкцій, так і на рівні ассемблерних команд - у розрахунку задовольнити високі вимоги програмістів-професіоналів. Конструювання за способом “drag-and-drop” дозволяє створювати додаток простим перетягуванням захоплених мишею візуальних компонент з Палітри на форму додатку. Інспектор об'єктів надає можливість оперувати з властивостями і подіями компонент, автоматично створюючи заготовки функцій обробки подій, які наповнюються кодом і редагуються в процесі розробки . Механізми двонаправленої розробки (two-way-tools) усувають бар'єри між програмістом і його кодом. Технологія двонаправленої розробки забезпечує контроль за вашим кодом за допомогою гнучкого, інтегрованого та синхронізованого взаємодії між інструментами візуального проектування і Редактором коду.

Темою даного курсового проекту є розробка прикладення «Вантажоперевезення».

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



1. СПЕЦІФІКАЦІЯ ПРОЕКТУ

1.1 Призначення розробки та основи для її виконання

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

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

1.2 Постановка завдання 

Розробити автоматизовану програму «Вантажоперевезення».

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

База даних складається з чотирьох таблиць: «Вантаж», «Автомобіль», «Замовлення», «Графік». 

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

Фізичний опис бази даних представлено в таблицях 1-4.

Таблиця 1 – Вантаж (gruz)

Назва поля

Атрибут

Тип поля

Обмеження

Unikey_gruza

Код вантажу

Лічильник



Tip_gruza

Тип вантажу

Текстовий



Stoim_perevozki

Вартість превезення

Числовий

>0

Strahovka

Вартість страховки

Числовий

>0

Таблица 2 – Автомобіль (avto)

Назва поля

Атрибут

Тип поля

Обмеження

Unikey_avto

Код автомобіля

Лічильник



Marka_avto

Марка автомобіля

Текстовий



Model_avto

Модель автомобіля

Текстовий



Fio_vladelca

ПІБ власника

Текстовий



Data_texosmotra

Дата тех огляду

Дата



Strahovka

Вартість страховки авто

Числовий

>0

Gos_nomera

Держ номер

Текстовий



Таблица 3 – Замовлення (zakaz)

Назва поля

Атрибут

Тип поля

Обмеження

Unikey_zakaza

Код замовлення

Счетчик



Unikey_gruza

Код вантажу

Числовий

>0

Zakazchik

Замовник

Текстовий



Adress_zakazchik

Адреса замовника

Текстовий



Telefon_zakazchik

Номер телефону

Текстовий



Data_zakaza

Дата замовлення

Дата



Kol_vo_zakaza

Кількість замовлення

Числовой

>0

Unikey_gruz_st

Код вантажу

Числовой

>0

Unikey_gruz_tp

Код вантажу

Числовой

>0



Таблица 4 – Графік (grafik)

Назва поля

Атрибут

Тип поля

Обмеження

Unikey_grafik

Код тарифу

Счетчик



Unikey_zakaza

Посада

Числовий

>0

Unikey_avto

Тариф

Числовий

>0

Data_otpravleniya

Дата відправлення

Дата



Vremya_otpravleniya

Час відправлення

Часовий



Data_prib

Дата прибуття

Дата



Vremya_prib

Час прибуття

Часовий



Kol_vo_gruza

Кількість вантажу

Числовий

>0

Unikey_avto_dat

Код автомобіля

Числовий

>0

Unikey_zak_dat

Код замовлення

Числовий

>0

Unikey_gruz_dat

Код вантажу

Числовий

>0

1.3 Вимоги до програми

Мова реалізації – C++ Builder.

Вимоги до графічного інтерфейсу користувача:

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

-          Головне вікно програми – фрейм з наступними елементами:

а) панель меню з підтримкою «акселератів»;

б) користувальницька піктограма системного меню;

в) панель інструментів з підтримкою спливаючих «підказок»

г) рядок стану, в якому повинна відображатися інформація про основні режими роботи програми;

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

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

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

Вимоги до функціональності програми:

-          створення файлу бази даних (ім’я файлу бази та каталог файлової системи для його зберігання обираються користувачем с використанням відповідного діалогового вікна); 

-          додавання елемента даних до файлу бази; 

-          оновлення будь-якого елементу даних у файлі базі; 

-          видалення будь-якого елементу даних у файлі базі;

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

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

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

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

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

-          розробка звіту.

Вимоги до вихідного коду програми:

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

-          наявність коментарів (для класів – призначення класів; для методів – призначення методів, опис параметрів та призначення, яке повертається);

-          виконання угод щодо запису тексту програм мовою програмування C++ Builder.

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

Програмна документація складається з двох документів: «Керівництво програміста» та «Керівництво користувача».

Програмна документація повинна бути складена відповідно до ДСТУ-3008-95 і стандарту підприємства – Маріупольського механіко-металургійного коледжу ПДТУ.

1.5 Структура програми

Створення бази даних. База даних буде створена в Paradox 7 і буде складатися з чотирьох таблиць:

- gruz: Unikey_gruza, Tip_gruza, Stoim_perevozki;

- avto: Unikey_avto, Marka_avto, Model_avto, Fio_vladelca, Data_texosmotra, Strahovka, Gos_nomera;

- zakaz: Unikey_zakaza, Unikey_gruza, Zakazchik, Adress_zakazchik, Telefon_zakazchik, Data_zakaza, Kol_vo_zakaza, Unikey_gruz_st, Unikey_gruz_tp;

- grafik: Unikey_grafik, Unikey_zakaza, Unikey_avto, Data_otpravleniya, Data_prib, Vremya_prib, Kol_vo_gruza, Unikey_avto_dat, Unikey_zak_dat, Unikey_gruz_dat.

Таблиці будуть взаємопов'язані типом «один до багатьох» в C++ згідно постановки завдання.

Використання класів 

В програмі будуть використовуватись вісім класів.

У першому класі використовується метод вибору пункту меню головної форми для відкриття відповідної форми для роботи з даними. При цьому реалізована можливість відкриття форм «Автомобіль», «Вантаж», «Замовлення-Графік», «Автомобіль-Графік», «Вантаж-Замовлення», «Розробник» за допомогою натискання на кнопки з назвами форм, які знаходяться на головній формі та за допомогою комбінацій клавіш F1, F2, F3, F4, F5 та F6 відповідно. 

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

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

В четвертому класі буде вводитись, переглядатись, видалятись інформація про замовлення та графік, при цьому обирається інформація про тип вантажу та вартість з таблиці Gruz, ПІБ власника з таблиці Avto. Використовується організація введення даних для фільтрування за датою. Використовуються кнопки: «Фільтрувати» для виконання фільтрації за датою, «Скасування» для відміни фільтрації та «Звіт» для формування текстового документу про замовлення перевезень вантажу.

В п’ятому класі буде вводитись, переглядатись, видалятись інформація про автомобіль та про графік, при цьому обирається інформація про замовника з таблиці Zakaz, та тип вантажу із таблиці Gruz. Використовується організація введення даних для приблизного пошуку за держ номером. Використовуються кнопки: «Пошук» для виконання приблизного пошуку за держ номером. 

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

В восьмому класі описаний метод формування звіту про замовлення перевезень вантажу.

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

Графічний інтерфейс

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

На другій формі в DBGrid1 будуть відображатись дані для роботи з таблицею Avto, та також для зручності роботи з даними буде використатись DBNavigator1. Також на формі будуть знаходитись RadioButton1 та RadioButton2 для вибору за яким полем виконувати пошук, поле Edit1 для вводу прізвища або держ номеру та кнопка Button1 для приблизного пошуку прізвища та держ номеру. 

На третій формі будуть знаходитись DBGrid1, в яких будуть відображатись дані для роботи з таблицею Gruz, для зручності роботи з даними будуть використовуватись DBNavigator1. Також на формі будуть знаходитись: поле Edit1 для вводу типу, кнопка Button1 для приблизного пошуку записів за типом, кнопка Button2 для сортування записів за вартістю . 

На четвертій формі будуть знаходитись DBGrid1 та DBGrid2, в яких будуть відображатись дані для роботи з таблицями Zakaz та Grafik, для зручності роботи з даними будуть використовуватись DBNavigator1 та DBNavigator2. Дані про тип та вартість вантажу будуть обиратися із списку шляхом підстановки в таблицю Zakaz із таблиці Gruz, данні про ПІБ власника автомобіля обиратимуться із списку шляхом підстановки в таблицю Grafik із таблиці Avto. Також на формі будуть знаходитись поля Edit1 для вводу дати, та кнопка Button1 для фільтрації за датою, кнопка Button2 для скасування фільтрації та кнопка Button3 для формування звіту про замовлення перевезень вантажів . 

На п’ятій формі будуть знаходитись DBGrid1 та DBGrid2, в яких будуть відображатись дані для роботи з таблицями Avto та Grafik, для зручності роботи з даними будуть використовуватись DBNavigator1 та DBNavigator2. Дані про замовлення будуть обиратися із списку шляхом підстановки в таблицю Grafik із таблиці Zakaz, данні про тип вантажу обиратимуться із списку шляхом підстановки в таблицю Grafik із таблиці Gruz . Також на формі будуть знаходитись поле Edit1 для вводу держ номеру та кнопка Button1 для приблизного пошуку держ номеру. 

На сьомій формі будуть знаходитись DBGrid1 та DBGrid2, в яких будуть відображатись дані для роботи з таблицями Gruz та Zakaz, для зручності роботи з даними будуть використовуватись DBNavigator1 та DBNavigator2. 

На восьмій формі буде формуватись звіт – «Замовлення перевезення вантажу».

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



2. ПРОГРАМНА ДОКУМЕНТАЦІЯ

2.1 Керівництво системного програміста 

2.1.1 Архітектура програми 

Була створена база даних в Paradox 7, яка складається з чотирьох таблиць. Таблиці, властивості їх полів представлені на рисунках 1-4.



Рисунок 1 – Таблиця «Вантаж»



Рисунок 2 – Таблиця «Автомобіль»



Рисунок 3 – Таблиця «Замовлення»



Рисунок 4 – Таблиця «Графік»

Дві таблиці можуть бути пов’язані одна за одною по ключу. Одна з цих пов’язаних таблиць є головною (master), а інша – допоміжною, деталізуючей (detail).

 Схема взаємозв’язків між таблицями в С++ Builder у вигляді діаграми даних, створеної в Проектувальнику Модуля Даних, представлена на рисунку 5.

При розробці програми автоматизованої системи «Нарахування заробітної плати по засобах» був використаний язик модулювання Unified Modeling Language (UML), заснований на технології об'єктного моделювання (CASE-технології проектування програмних комплексів в області розробки програмного забезпечення). Мова UML дозволяє відобразити всі взаємозв'язки модельованого об'єкта, його інтерфейси, а також особливості реалізації, які визначають внутрішню структуру і функції.



Рисунок 5 – Діаграма даних

Діаграма класів (class diagram) використовується для моделювання статичної структури класів системи. Діаграма реалізована в ПП Sparx Systems Enterprise Architect 7.5. На діаграмі відображаються статичні аспекти структурної побудови системи (малюнок 6).

Дана діаграма є логічною моделлю, яка складається з восьми класів. Сім з них: ТForm1, ТForm2, ТForm3, ТForm4, ТForm5, ТForm7, ТForm8, ТForm9 мають графічний інтерфейс. Клас TDataModule6 не має графічного інтерфейсу.

Клас ТForm1 є головним вікном програми автоматизованої системи, містить методи для вибору дії, пов’язаної з обробником подій вибору пункту меню для роботи з формами. Метод void __fastcall TForm1::N3Click для роботи з формою ТForm2, метод void __fastcall TForm1::N4Click - з формою ТForm3, метод void __fastcall TForm1::N5Click - з формою ТForm4, метод void __fastcall TForm1::N6Click - з формою ТForm5, метод void __fastcall TForm1::N7Click - з формою ТForm7, метод void __fastcall TForm1::N8Click - з формою ТForm9, метод void __fastcall TForm1::N2Click – Вихід із програми. Також Клас ТForm1містить методи для вибору дії, пов’язаної з обробником подій натискання на кнопки для роботи з формами. Метод void __fastcall TForm1:: Button1Click для роботи з формою ТForm2, метод void __fastcall TForm1:: Button2Click - з формою ТForm3, метод void __fastcall TForm1:: Button3Click - з формою ТForm4, метод void __fastcall TForm1:: Button4Click - з формою ТForm5 та метод void __fastcall TForm1::Button5Click - з формою ТForm7.



Рисунок 6 – Діаграма класів



Клас ТForm2 містить елемент управління DBGrid1 з таблицею Avto, яка відображає дані про автомобілі. Має DBNavigator1, дозволяючий працювати з записами таблиці. Призначен для формування інформації про автомобілі. На формі міститься поле для приблизного пошуку за прізвищем або держ номером, яке використовує метод void __fastcall TForm2::Edit1Change та вибір поля за яким будемо викнувати пошук який використовує метод void __fastcall TForm2::RadioButton1Click та TForm2::RadioButton2Click. Форма має кнопки для приблизного пошуку за прізвищем, яка використовує метод void __fastcall TForm2::Button1Click.

Клас ТForm3 містить елемент управління DBGrid1 з таблицею Gruz, яка відображає дані про вантаж. Має DBNavigator1, дозволяючий працювати з записами таблиці. Також на формі знаходяться кнопки: пошук за типом вантажу, яка використовує метод void __fastcall TForm3::Button2Click , сортування записів за вартістю з методом void __fastcall TForm3::Button1Click.

Клас ТForm4 містить два елементи управління DBGrid1 та DBGrid2 з таблицями Zakaz та Grafik, які відображають дані про замовлення та згідний з ним графік, при цьому обирається інформація про тип та вартість вантажу із таблиці Gruz, ПІБ власника автомобіля із таблиці Avto. Має DBNavigator1 та DBNavigator2, які дозволяють працювати з записами таблиці. На формі міститься поле Edit1 для фільтрації за датою, яке використовує метод void __fastcall TForm4::Edit1Change. Форма має кнопки для фільтрації за датою, яка використовує метод void __fastcall TForm4::Button1Click, скасування фільтрації з методом void __fastcall TForm4::Button2Click та кнопку для формування звіту з методом void __fastcall TForm4::Button3Click.

Клас ТForm5 містить два елементи управління DBGrid1 та DBGrid2 з таблицями Avto та Grafik, які відображають дані про автомобіль та згідний з ним графік, при цьому обирається інформація про замовника із таблиці Zakaz та про тип вантажу із таблиці Gruz. Має DBNavigator1 та DBNavigator2, які дозволяють працювати з записами таблиці. На формі міститься поле Edit1 для виконання пошуку за держ номером, яке використовує метод void __fastcall TForm5::Edit1Change. Форма має кнопку для приблизного пошуку за держ номером, яка використовує метод void __fastcall TForm5: Button1Click.

Клас TDataModule6 зберігає властивості всіх таблиць бази даних, та опис полів. Клас використовує метод void __fastcall TDataModule6::Table4CalcFields для того, щоб у обчислювальному полі Оbsch_st з таблиці Zakaz поле Stoim_perevozki із таблиці Gruz додавалось до поля Kol_vo_gruza із таблиці Grafik. 

Клас ТForm7 містить два елементи управління DBGrid1 та DBGrid2 з таблицями Gruz та Zakaz, які відображають дані про вантаж та згідне з ним замовлення. Має DBNavigator1 та DBNavigator2, які дозволяють працювати з записами таблиці.

Клас ТForm8 призначений для складання звіту про замовлення вантажоперевезень. В классі використовуються методи void __fastcall TForm8::QRDBTextPrint для додання записів із таблиць на форму звіту. 

Клас ТForm9 призначений для подання інформації щодо розробника програми.

2.1.2 Установка та перевірка програми

Для нормального функціонування програми необхідно виконання наступних вимог до параметрів ПК: процесор Intel Pentium, AMD Athlon, AMD Sempron, оперативний запам'ятовуючий пристрій - 256 Mб, 20 Мб вільного дискового простору, відеокарта з можливістю відображення 256 кольорів. Якщо ці вимоги не будуть виконані, програма може функціонувати некоректно.

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

-          операційна система Microsoft Windows (98, ME, 2000, XP, Vista, Windows 7);

платформа Microsoft.NET (версія 2.0 або вище). S 7);

Перед початком роботи з програмою необхідно встановити програму на комп'ютері користувача: в BDE administrator прописати alias «ВВ» із зазначенням шляху до папки, де зберігаються таблиці бази даних (рисунок 7).

Запуск програми в операційній системі сімейства Windows відбувається одним із стандартних способів:

-            подвійним клацанням лівою кнопкою мишки по ярлику програми;

-            викликом контекстного меню з вибором його пункту «Відкрити»;

- натисканням кнопки «Пуск» панелі завдань з наступним вибором пункту «Усі програми» і подвійним клацанням лівою кнопкою мишки по ярлику програми.



Рисунок 7 – Створення псевдоніма бази даних

Робота з програмою починається з відкриття файлу програми Borland C Builder 6 (рисунок 8).





Рисунок 8 – Відкриття програми

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

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

Таблиця 5- Текстовий приклад 1

№

п/п

Крок сценарію

Очікуваний результат

Отриманий результат

Відмітка про проходження кроку сценарію (Так / Ні)

1

Запустити програму

Повинна запуститися програма

Програма запустилася

Так

Продовження таблиці 5

№

п/п

Крок сценарію

Очікуваний результат

Отриманий результат

Відмітка про проходження кроку сценарію (Так / Ні)

2

Відкрити форми з головного меню форми «Вантажо перевезення», або за допомогою кнопок, які містя-ться на цій формі, або за допомогою комбінацій клавіш: F1, F2, F3, F4 та F5

Повинні запуститися форми

Відкрились форми

Так

3

Додати/видалити запис на формах

Після введення запису до строки і натиснення на навігаторі «Ö»/«-» запис вводиться/видаляється

Додається/

видаляється запис

Так

4

Пересування по записах за допо-могою навігатора, або за допомогою повзунка вгору / вниз

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

Пересуваємося по записах

Так

Відмітка о проходженні тесту: Пройдено.

Текстовий приклад 2: перевірка того, що на формах «Замовлення-Графік» та «Автомобіль-Графік» дані про тип вантажу, вартість вантажу, ПІБ власника авто, замовника будуть обиратися із випадаючого списку. Критерій проходження тесту: при натисненні на полі випадає список, що розкривається с записами, запис можна обирати, обрана запис додається до бази даних. Результат представлений в таблиці 6. 



Таблиця 6 – Текстовий приклад 2

№

п/п

Крок сценарію

Очікуваний результат

Отриманий результат

Відмітка про проходження кроку сценарію (Так / Ні)

1

Натиснути на поле «Тип вантажу» на формі «Замовлення-Графік»

Повинен випасти список, що розкривається з відповідними записами з таблиці «Вантаж»

Список, що розкривається випав с записами

Так

2

Натиснути на поле «Вартість» на формі «Замовлення-Графік»

Повинен випасти список, що розкривається з відповідними записами з таблиці «Вантаж»

Список, що розкривається випав с записами

Так

3

Натиснути на поле «ПІБ власника» на формі «Замовлення-Графік »

Повинен випасти список, що розкривається з відповідними записами з таблиці «Автомобіль»

Список, що розкривається випав с записами

Так

4

Натиснути на поле «Замовник» на формі «Автомобіль-Графік»

Повинен випасти список, що розкривається з відповідними записами з таблиці «Замовлення»

Список, що розкривається випав с записами

Так

5

Натиснути на поле «Тип вантажу» на формі «Автомобіль-Графік»

Повинен випасти список, що розкривається з відповідними записами з таблиці «Вантаж»

Список, що розкривається випав с записами

Так

Текстовий приклад 3: перевірка того, що на формах «Автомобіль», «Вантаж», «Замовлення-Графік» та «Автомобіль-Графік» за допомогою відповідних кнопок відбувається пошук даних, фільтрація даних, сортування даних та по них формується звіт. Критерій проходження тесту: в вільне поле записуємо прізвище, фільтрація відбувається, формується звіт. Результат текстового прикладу 3 представлений в таблиці 7. 



Таблиця 7 – Текстовий приклад 3

№

п/п

Крок сценарію

Очікуваний результат

Отриманий результат

Відмітка про проходження кроку сценарія (Так/Ні)

1

На формі «Автомобіль» проводимо пошук прізвища держ номеру

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

Переключателів, натисенні на кнопку «Пошук» курсор повинен перейти 

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

При натисненні на кнопку курсор 

переходить на шуканого власника або держ номеру. 

Так

2

 На формі «Замовлення-Графік» натискаємо на кнопку «Звіт»

При натисненні на кнопку «Звіт» повинен відкритись звіт «Замовлення перевезень вантажу» у режимі попереднього перегляду

Звіт відкривається при натисненні на кнопку «Звіт»

Так

3

На формі «Замовлення-Графік» відфільтруємо записи

При натисненні на кнопку «Фільтрувати» повинні залишитися записи на формі, що відповідають зазначеній у фільтрі даті

При натисненні на кнопку курсор 

переходить на шуканого працівника

Так

4

На формі «Автомобіль-Графік» проводимо пошук держ номеру

При натисненні на кнопку «Пошук» курсор повинен перейти на

шуканий держ номер

При натисненні на кнопку курсор 

переходить на шуканий держ номер

Так

5

На формі «Вантаж» проводимо пошук типу вантажу

При натисненні на кнопку «Пошук» курсор повинен перейти на

шуканий тип

При натисненні на кнопку курсор 

переходить на шуканий тип

Так

6

На формі «Вантаж» проводимо сортування вартості

При натисненні на кнопку «Сортувати » записи повинні відсортуватися по збільшуванню.

При натисненні на кнопку записи сортуються по збільшуванню.

Так













Відмітка о проходженні тестових прикладів 2 та 3: Пройдені.



2.2 Посібник користувача

2.2.1 Призначення програми 

Дана програма призначена для введення записів в:

-          вантаж: тип вантажу, вартість перевезення, вартість страховки;

-          автомобіль: марка авто, модель авто, ПІБ власника, дата тех огляду, вартість страховки, держ номер;

-          замовлення: замовник, адреса, телефон, дата замовлення, кількість замовлення;

-          графік: дата відправлення, час відправлення, дата прибуття, час прибуття, кількість вантажу.

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

2.2.2 Виконання програми

Для роботи з автоматизованою системо «вантажоперевезення» необхідно запустити відповідну програму. Після запуску програми на екрані монітора з’явиться головне вікно програми «Вантажоперевезення» (рисунок 9).



Рисунок 9 – Головне вікно програми

Основні елементи графічного інтерфейсу програми:

Графічний інтерфейс складається з головного вікна та додаткових вікон. Головне вікно програми має панель меню, яке дозволяє переходити на форми для роботи з даними та має структуру: «Таблиці:», «Розробник», «Вихід». При цьому на формі містяться кнопки з назвами форм, за допомогою яких також можна переходити на форми програми. Також перехід на форми «Автомобіль», «Вантаж», «Замовлення-Графік», «Автомобіль-Графік», «Вантаж-Замовлення», «Розробник» можна здійснити за допомогою комбінацій клавіш F1, F2, F3, F4, F5 та F6 відповідно. 

При виборі пункту меню «Таблиці: Автомобіль» або за допомогою комбінації клавіш F1, або при натисканні на кнопку «Автомобіль» відкривається відповідна форма (рисунок 10). На даній формі можемо вводити дані про автомобіль, видаляти, пересуватися по записах за допомогою навігатора, здійсняти пошук за прізвищем (рисунок 11) та за держ номером (рисунок 12).



Рисунок 10 – Вигляд форми «Працівник»



Рисунок 11 – Результат приблизного пошуку за прізвищем





Рисунок 12 – Результат приблизного пошуку за держ номером



Рисунок 13 – Вигляд форми «Вантаж»

При виборі пункту меню «Таблиці: Вантаж» або за допомогою комбінації клавіш F2, або при натисканні на кнопку «Вантаж» відкривається відповідна форма (рисунок 13). На даній формі можемо вводити дані про тип вантажу, вартість перевезення, вартість страховки, пересуватися по записах за допомогою навігатора. Також на формі маємо можливість здійсняти пошук за типом вантажу(рисунок 14) та сортувати за вартістю (рисунок 15) . 



Рисунок 14 – Результат пошуку записів за типом





Рисунок 15 – Результат сортування записів за вартістю

При виборі пункту меню «Таблиці: Замовлення-Графік» або за допомогою комбінації клавіш F3, або при натисканні на кнопку «Замовлення-Графік» відкривається відповідна форма (рисунок 16). При цьому дані про тип вантажу, вартість ПІБ власника обираємо із випадаючого списку. На даній формі можемо вводити дані про замовника, видаляти, пересуватися по записах за допомогою навігатора, здійсняти фільтрацію за датою (рисунок 17).



Рисунок 16 – Вигляд форми «Замовлення-Графік»



Рисунок 17 – Вигляд форми після фільтрації «Замовлення-Графік»



При натисненні на кнопку «Звіт» формується документ «Замовлення перевезення вантажів» (рисунок 18). У цьому діалоговому вікні є можливість зберегти звіт у файл або відправити його на друк.



Рисунок 18 – Вигляд звіту «Замовлення перевезення вантажів»

При виборі пункту меню «Таблиці: Автомобіль-Графік» або за допомогою комбінації клавіш F4, або при натисканні на кнопку «Автомобіль-Графік» відкривається відповідна форма (рисунок 19). При цьому дані про тип вантажу та замовника обираємо із випадаючого списку. На даній формі можемо, пересуватися по записах за допомогою навігатора, здійсняти пошук за держ номером (рисунок 20). 



Рисунок 19 – вигляд форми «Автомобіль-Графік»



Рисунок 20 – результат приблизного пошуку за держ номером



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



Рисунок 21 – Вигляд форми «Вантаж-Замовлення»

При виборі пункту меню «Розробник» або при натисненні на кнопку «Розробник» відкривається форма, на якій відображена інформація про розробника програми (Рисунок 22).



Рисунок 22 – Вигляд форми «Розробник»

2.2.3 Повідомлення оператору 

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

На головній формі передбачені спливаючи підказки: підказка «Вибрати форму Автомобіль» при наведенні курсору на кнопку з назвою «Автомобіль»; підказка «Вибрати форму Вантаж» при наведенні на кнопку «Вантаж»; підказка «Вибрати форму Замовлення-Графік» при наведенні на кнопку «Замовлення-Графік»; підказка «Вибрати форму Автомобіль-Графік» при наведенні на кнопку «Автомобіль-Графік» та підказка «Вибрати форму Вантаж-Замовлення» при наведенні курсору на кнопку «Вантаж-Замовлення».

На другій формі передбачені спливаючи підказки: підказка «Виберете що будемо шукати» при наведенні на кнопку «Пошук».

На третій формі передбачені підказки: підказка «Сортування за зростанням» при наведенні на кнопку «Сортувати».

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

вантажоперевезення програма інформаційний



ВИСНОВКИ

Під час написання курсового проекту я детальніше вивчила і отримала навички роботи в середовищі програмування Borland C + + Builder.

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

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

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

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

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

Під час розробка курсового проекту я досягла всіх поставлених цілей на початку: закріпила знання дисципліни «Об'єктно-орієнтоване програмування», склала досить просту у використанні й працездатну автоматизовану систему. Закріпила навички роботи з текстовим редактором Word, навички оформлення звітів, навички розробки автоматизованих систем, а також роботи в середовищі об'єктно-орієнтованої мови програмування Borland C Builder.

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



ПЕРЕЛІК ВИКОРИСТОВАНИХ ДЖЕРЕЛ

- Архангельський А.Я. Програмування у C++ Builder –М.: Бином, 2003.– 1152 с.

- ДСТУ 3008-95. Документація. Звіти у сфері науки і техніки. Структура і правила оформлення. – К.: Держстандарт України, 1995. – 38 с.

- Чарли Калверт. Borland C++ Builder. Энциклопедия пользователя: Пер. с англ./ – К.: Издательство «ДиаСофт», 1997. – 848 с.

- Шамис В.А. Borland C++ Builder. Программирование на С++ без проблем – М.: “Нолидж”, 1997. – 266 с., с ил.



ДОДАТОК А

Вихідний код програми

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

//---------------------------------------------------------------------------

USEFORM("Unit1.cpp", Form1);

USEFORM("Unit2.cpp", Form2);

USEFORM("Unit3.cpp", Form3);

USEFORM("Unit4.cpp", Form4);

USEFORM("Unit5.cpp", Form5);

USEFORM("Unit6.cpp", DataModule6); /* TDataModule: File Type */

USEFORM("Unit7.cpp", Form7);

USEFORM("Unit8.cpp", Form8);

USEFORM("Unit9.cpp", Form9);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

 try

 {

 Application->Initialize();

 Application->CreateForm(__classid(TForm1), &Form1);

 Application->CreateForm(__classid(TForm2), &Form2);

 Application->CreateForm(__classid(TForm3), &Form3);

 Application->CreateForm(__classid(TForm4), &Form4);

 Application->CreateForm(__classid(TForm5), &Form5);

 Application->CreateForm(__classid(TDataModule6), &DataModule6);

 Application->CreateForm(__classid(TForm7), &Form7);

 Application->CreateForm(__classid(TForm8), &Form8);

 Application->CreateForm(__classid(TForm9), &Form9);

 Application->Run();

 }

 catch (Exception &exception)

 {

 Application->ShowException(&exception);

 }

 catch (...)

 {

 try

 {

 throw Exception("");

 }

 catch (Exception &exception)

 {

 Application->ShowException(&exception);

 }

 }

 return 0;

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit7.h"

#include "Unit8.h"

#include "Unit9.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

 : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N3Click(TObject *Sender)

{

Form2->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N5Click(TObject *Sender)

{

Form4->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N4Click(TObject *Sender)

{

Form3->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N6Click(TObject *Sender)

{

Form5->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N7Click(TObject *Sender)

{

 Form7->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)

{

Form1->Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Form2->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Form3->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

Form4->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

Form5->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)

{

Form7->Show();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N8Click(TObject *Sender)

{

 Form9->Show(); 

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit2.h"

#include "Unit1.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm2 *Form2;

//---------------------------------------------------------------------------

__fastcall TForm2::TForm2(TComponent* Owner)

 : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)

{

 if (RadioButton1->Checked){

DataModule6->Table1->IndexFieldNames = "Fio_vladelca";

DataModule6->Table1->FindNearest(ARRAYOFCONST((Edit1->Text)));

}

if (RadioButton2->Checked){

DataModule6->Table1->IndexFieldNames = "Gos_nomera";

DataModule6->Table1->FindNearest(ARRAYOFCONST((Edit1->Text)));

 }

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit3.h"

#include "Unit1.h"

#include "Unit2.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit6.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm3 *Form3;

//---------------------------------------------------------------------------

__fastcall TForm3::TForm3(TComponent* Owner)

 : TForm(Owner)

{

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

void __fastcall TForm3::Button2Click(TObject *Sender)

{

 DataModule6->Table3->IndexFieldNames = "Tip_gruza";

DataModule6->Table3->FindNearest(ARRAYOFCONST((Edit2->Text)));

}

//---------------------------------------------------------------------------

void __fastcall TForm3::GroupBox1Click(TObject *Sender)

{

GroupBox1->ShowHint = true;

GroupBox1->Hint = "Пошук типу вантажу";

}

//---------------------------------------------------------------------------

void __fastcall TForm3::Button1Click(TObject *Sender)

{

DataModule6->Table3->Active = false;

DataModule6->Table3->IndexName = "index_stoimost";

DataModule6->Table3->Active = true;

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit4.h"

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit8.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm4 *Form4;

//---------------------------------------------------------------------------

__fastcall TForm4::TForm4(TComponent* Owner)

 : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm4::Button1Click(TObject *Sender)

{

DataModule6->Table4->Filter="Data_zakaza='"+Edit1->Text+"'";

DataModule6->Table4->Filtered=True ;

}

//---------------------------------------------------------------------------

void __fastcall TForm4::Button2Click(TObject *Sender)

{

DataModule6->Table4->Filtered=False ;

}

//---------------------------------------------------------------------------

void __fastcall TForm4::Button3Click(TObject *Sender)

{

Form8->QuickRep1->Preview();

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit5.h"

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit6.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm5 *Form5;

//---------------------------------------------------------------------------

__fastcall TForm5::TForm5(TComponent* Owner)

 : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm5::Button1Click(TObject *Sender)

{

DataModule6->Table1->IndexFieldNames = "Gos_nomera";

DataModule6->Table1->FindNearest(ARRAYOFCONST((Edit1->Text))); 

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit6.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TDataModule6 *DataModule6;

//---------------------------------------------------------------------------

__fastcall TDataModule6::TDataModule6(TComponent* Owner)

 : TDataModule(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TDataModule6::Table4CalcFields(TDataSet *DataSet)

{

 DataModule6->Table4obsch_st->Value=DataModule6->Table3Stoim_perevozki->Value+DataModule6->Table5Kol_vo_gruza->Value;

}

//---------------------------------------------------------------------------

//---------------------------------------------------------------------------