Автоматизована інформаційна система автошколи

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 11.09.2015
Размер файла 2,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ВСТУП

Виробництво програмного забезпечення (ПЗ) сьогодні - це найбільша галузь світової економіки, в якій зайнято більше семи мільйонів фахівців. Саме приголомшливий прогрес в області ПЗ допоміг впоратися з інформаційним бумом кінця 20 століття.

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

Потреба контролювати процес розробки ПЗ, прогнозувати і гарантувати вартість розробки, терміни і якість результатів призвела до необхідності переходу від кустарних до індустріальних способам створення ПЗ і появі сукупності інженерних методів і засобів створення ПЗ, об'єднаних загальною назвою програмна інженерія (software engineering).

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

Виконання курсової роботи має на меті:

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

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

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

1. СИСТЕМНИЙ АНАЛІЗ

1.1 Вимоги до продукту(Визначення С, D-вимог)

Специфікація вимог до ПЗ «Autoschool»

Вступ

Призначення, мета

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

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

Загальний опис

Характеристики

Веде облік клієнтів.

Веде облік категорій водія клієнтів.

Виконує фільтрацію даних.

Друкує звіти.

Користувачі

Директор автошколи.

Вчителі.

Середовище функціонування

Даний продукт працює на операційній системі Windows 95 / 98 / 2003 / Vista / 7 / 8 / 8.1 / 10.

Апаратна платформа: Клавіатура, миша, монітор, системний блок(материнська плата, вінчестер, процесор, блок живлення, відеоадаптер 16Mb).

Характеристики системи

Функціональні вимоги

Продукт повинен дозволяти вводити дані: Клієнти(Код клієнта, прізвище та ім'я, дата вступу, термін навчання, категорія, код вчителя), Вчителі(Код вчителя, прізвище та ім'я, код паспорту, телефонний номер, код транспорту), Транспорти(Код транспорту, модель, кількість кінських сил, об'єм двигуна);

Продукт повинен дозволяти виводити дані: Клієнти(Код клієнта, прізвище та ім'я, дата вступу, термін навчання, категорія, код вчителя), Вчителі(Код вчителя, прізвище та ім'я, код паспорту, телефонний номер, код транспорту), Транспорти(Код транспорту, модель, кількість кінських сил, об'єм двигуна);

Продукт повинен дозволяти видаляти дані: Клієнти(Код клієнта, прізвище та ім'я, дата вступу, термін навчання, категорія, код вчителя), Вчителі(Код вчителя, прізвище та ім'я, код паспорту, телефонний номер, код транспорту), Транспорти(Код транспорту, модель, кількість кінських сил, об'єм двигуна);

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

Продукт повинен дозволяти друкувати звіти усіх полів таблиць: Клієнти, Вчителі, Транспорти.

Вимоги до зовнішніх інтерфейсів

Користувацькі інтерфейси

Інтерфейс системи складається з:

Головне меню.

Таблиця бази даних.

Вікно додавання та видалення даних.

Меню швидкого доступу.

Апаратні інтерфейси

Взаємодіє з принтером.

Не функціональні вимоги

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

Програма повинна бути розроблена на мові С++.

2. РОЗРОБКА ІНТЕРФЕЙСУ ПРОГРАМИ

2.1 Кроки розробки призначених для користувача інтерфейсів

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

програма лістинг інтерфейс автошкола

Табл. 2.1 - Характеристика користувача

Характеристика

Градації

Рівень знань і досвід

Комп'ютерна грамотність

Середній. Користувач повинен володіти елементарними навиками користування комп'ютером

Системний досвід

Середній

Досвід роботи з подібними програмами

Середній

Освіта

Закінчена середня освіта

Рівень читання

12 років в школі

Машинопис

135 слів за хвилину

Фізичні характеристики користувача

Вік

Молодий, середнього віку, літній

Стать

Чоловіча, жіноча

Розвиненість рук

Лівша, правша, володіє однаково обома руками

Фізичні вади

Бажано без фізичних вад

Характеристики завдань і роботи користувача

Спосіб використання цієї програми

Ознайомлення з інформацією, яка в ній знаходиться

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

Проектування інтерфейсу виконано в середовищі C++Builder 6 таким чином:

Головне вікно - вікно «Клієнти»:

Додаю на форму Form1 Panel1.

На Panel1 розміщую DBGrid1 - для відображення таблиці Клієнти, в властивостях встановлюю DataSource = «bd_work->Klient_data»; DBNavigator1 - для управління таблицею, в властивостях встановлюю DataSource = «bd_work->Klient_data»; StatusBar1 - створюю TStatusPanel[0](для виведення підказок при наведенні мишею на певний компонент), в властивостях встановлюю AutoHint = true, ShowHint = true; MainMenu1 - підключаю форму до нього в подіях встановлюю Menu = bd_work->Menu_klient, в ньому створюю кнопки та приписую до них назви; ToolBar1 - панель швидкого доступу, на якій створюю 5 кнопок, в подіях встановлюю HotImages = bd_work->ImageList1, Images = bd_work->ImageList1; Panel2(Button1 - для фільтрації по полю Edit1, який орієнтується на атрибут вибраний в ComboBox1; ComboBox1 - для вибору фільтрації по «Код клієнта» або «Прізвище та ім'я» або «Категорія» або «Код вчителя» або зняття фільтрації; Edit1 - текстове поле для введення певних символів для фільтрації по таблиці Клієнти). Результат створеної форми показано в додатку 2 рис.1.

Вікно «Вчителі»:

Додаю на форму Tech Panel1.

На Panel1 розміщую DBGrid1 - для відображення таблиці Вчителі, в властивостях встановлюю DataSource = «bd_work->Tech_data»; DBNavigator1 - для управління таблицею, в властивостях встановлюю DataSource = «bd_work->Tech_data»; StatusBar1 - створюю TStatusPanel[0](для виведення підказок при наведенні мишею на певний компонент), в властивостях встановлюю AutoHint = true, ShowHint = true; MainMenu1 - підключаю форму до нього в подіях встановлюю Menu = bd_work->Menu_tech, в ньому створюю кнопки та приписую до них назви; ToolBar1 - панель швидкого доступу, на якій створюю 5 кнопок, в подіях встановлюю HotImages = bd_work->ImageList1, Images = bd_work->ImageList1; Panel2(Button1 - для фільтрації по полю Edit1, який орієнтується на атрибут вибраний в ComboBox1; ComboBox1 - для вибору фільтрації по «Код вчителя» або «Прізвище та ім'я» або «Код паспорту» або «Телефонний номер» або зняття фільтрації; Edit1 - текстове поле для введення певних символів для фільтрації по таблиці Вчителі). Результат створеної форми показано в додатку 2 рис.2.

Вікно «Транспорт»:

Додаю на форму transp Panel1.

На Panel1 розміщую DBGrid1 - для відображення таблиці Транспорт, в властивостях встановлюю DataSource = «bd_work->transp_data»; DBNavigator1 - для управління таблицею, в властивостях встановлюю DataSource = «bd_work->transp_data»; StatusBar1 - створюю TStatusPanel[0](для виведення підказок при наведенні мишею на певний компонент), в властивостях встановлюю AutoHint = true, ShowHint = true; MainMenu1 - підключаю форму до нього в подіях встановлюю Menu = bd_work->Menu_transp, в ньому створюю кнопки та приписую до них назви; ToolBar1 - панель швидкого доступу, на якій створюю 5 кнопок, в подіях встановлюю HotImages = bd_work->ImageList1, Images = bd_work->ImageList1; Panel2(Button1 - для фільтрації по полю Edit1, який орієнтується на атрибут вибраний в ComboBox1; ComboBox1 - для вибору фільтрації по «Код транспорту» або «Модель» або «Кількість кінських сил» або «Об'єм двигуна» або зняття фільтрації; Edit1 - текстове поле для введення певних символів для фільтрації по таблиці Транспорт). Результат створеної форми показано в додатку 2 рис.3.

Вікно «Додавання / Видалення даних»:

Додаю на форму regedit Panel1.

На Panel1 розміщую PageControl1 на якому міститься 3 вкладки - Клієнти (розміщує в собі PageControl2 на якому міститься 2 вкладки - Додавання даних(містить в собі Label1->Caption = «Введіть код клієнта», Label2->Caption = «Введіть прізвище та ім'я клієнта», Label3->Caption = «Введіть категорію клієнта», Кнопку «Ок» - для підтвердження додавання даних в таблицю «Клієнти»), Видалення даних(містить в собі Label1->Caption = «Введіть код клієнта», Label2->Caption = «Введіть прізвище та ім'я клієнта», Label3->Caption = «Введіть категорію клієнта», Кнопку «Ок» - для підтвердження видалення даних в таблиці «Клієнти»)), Вчителі(розміщує в собі PageControl3 на якому міститься 2 вкладки - Додавання даних(містить в собі Label1->Caption = «Введіть код вчителя», Label2->Caption = «Введіть прізвище та ім'я вчителя» , Label3->Caption = «Введіть код паспорту вчителя» , Label4->Caption = «Введіть телефон вчителя», Кнопку «Ок» - для підтвердження додавання даних в таблицю «Вчителі»), Видалення даних(містить в собі Label1->Caption = «Введіть код вчителя», Label2->Caption = «Введіть прізвище та ім'я вчителя» , Label3->Caption = «Введіть код паспорту вчителя» , Label4->Caption = «Введіть телефон вчителя», Кнопку «Ок» - для підтвердження видалення даних в таблиці «Вчителі»)), Транспорт(розміщує в собі PageControl4 на якому міститься 2 вкладки - Додавання даних(містить в собі Label1->Caption = «Введіть код транспорту», Label2->Caption = «Введіть модель транспорту», Label3->Caption = «кількість кінських сил», Label4->Caption = «Об'єм двигуна (см3)», Кнопку «Ок» - для підтвердження додавання даних в таблицю «Транспорт»), Видалення даних(містить в собі Label1->Caption = «Введіть код транспорту», Label2->Caption = «Введіть модель транспорту», Label3->Caption = «кількість кінських сил», Label4->Caption = «Об'єм двигуна (см3)», Кнопку «Ок» - для підтвердження видалення даних в таблиці «Транспорт»)). Результат створеної форми показано в додатку 2 рис.4.

Вікно «Auto_zvit»:

Додаю на форму Auto_zvit QuickRep1

На QuickRep1 розміщую QRBand1(QRLabel1 - в властивостях встановлюю Caption = «Код транспорту»; QRLabel2 - в властивостях встановлюю Caption = «Модель»; QRLabel3 - в властивостях встановлюю Caption = «Кількість кінських сил», QRLabel4 - в властивостях встановлюю Caption = «Об'єм двигуна (см3)»), QRBand2(QRDBText1 - в властивостях встановлюю DataSet = bd_work->Auto_table, DataField = «Код транспорту»; QRDBText2 - в властивостях встановлюю DataSet = bd_work->Auto_table, DataField = «Модель» ; QRDBText3 - в властивостях встановлюю DataSet = bd_work->Auto_table, DataField = «Кількість кінських сил»; QRDBText4 - в властивостях встановлюю DataSet = bd_work->Auto_table, DataField = «Об'єм двигуна»); QRLabel5 - в властивостях встановлюю Caption = «Транспорт». Властивість компоненту QuickRep1 встановлюю DataSet = bd_work->Auto_table, властивість компоненту QRBand2 встановлюю BandType = rbDetail. Результат створеної форми показано в додатку 2 рис.5.

Вікно «Teach_zvit»:

Додаю на форму Teach_zvit QuickRep1

На QuickRep1 розміщую QRBand1(QRLabel1 - в властивостях встановлюю Caption = «Код вчителя»; QRLabel2 - в властивостях встановлюю Caption = «Код паспорту»; QRLabel3 - в властивостях встановлюю Caption = «Код транспорту» , QRLabel4 - в властивостях встановлюю Caption = «Прізвище та ім'я» , QRLabel5 - в властивостях встановлюю Caption = «Телефонний номер»), QRBand2(QRDBText1 - в властивостях встановлюю DataSet = bd_work->Teach_table, DataField = «Код вчителя»; QRDBText2 - в властивостях встановлюю DataSet = bd_work->Teach_table, DataField = «Код паспорту» ; QRDBText3 - в властивостях встановлюю DataSet = bd_work->Teach_table, DataField = «Код транспорту» ; QRDBText4 - в властивостях встановлюю DataSet = bd_work->Teach_table, DataField = «Прізвище та ім'я» ; QRDBText5 - в властивостях встановлюю DataSet = bd_work->Teach_table, DataField = «Телефонний номер»), QRLabel5 - в властивостях встановлюю Caption = «Вчителі». Властивість компоненту QuickRep1 встановлюю DataSet = bd_work->Teach_table, властивість компоненту QRBand2 встановлюю BandType = rbDetail. Результат створеної форми показано в додатку 2 рис.5.

Вікно «ZVIT_klienti»:

Додаю на форму ZVIT_klienti QuickRep1

На QuickRep1 розміщую QRBand1(QRLabel1 - в властивостях встановлюю Caption = «Код клієнта»; QRLabel2 - в властивостях встановлюю Caption = «Прізвище та ім'я»; QRLabel3 - в властивостях встановлюю Caption = «Дата вступу»; QRLabel4 - в властивостях встановлюю Caption = «Термін навчання»; QRLabel5 - в властивостях встановлюю Caption = «Код вчителя»; QRLabel6 - в властивостях встановлюю Caption = «Категорія»), QRBand2(QRDBText1 - в властивостях встановлюю DataSet = bd_work->Klient_table, DataField = «Код клієнта»; QRDBText2 - в властивостях встановлюю DataSet = bd_work->Klient_table, DataField = «Прізвище та ім'я» ; QRDBText3 - в властивостях встановлюю DataSet = bd_work->Klient_table, DataField = «Дата вступу» ; QRDBText4 - в властивостях встановлюю DataSet = bd_work->Klient_table, DataField = «Термін навчання»; QRDBText5 - в властивостях встановлюю DataSet = bd_work->Klient_table, DataField = «Код вчителя»; QRDBText6 - в властивостях встановлюю DataSet = bd_work->Klient_table, DataField = «Категорія»;), QRLabel7 - в властивостях встановлюю Caption = «Клієнти». Властивість компоненту QuickRep1 встановлюю DataSet = bd_work->Klient_table, властивість компоненту QRBand2 встановлюю BandType = rbDetail. Результат створеної форми показано в додатку 2 рис.5.

Вікно «Про нас» :

Додаю на форму Me Panel1.

На Panel1 розміщую Label1 - в властивостях Caption = «http://radiotex.org.ua/»; Label2 - в властивостях Caption = «© 2015 made by Gylionenko V. D.». Результат створеної форми показано в додатку 2 рис.6.

Вікно «Довідка»:

Додаю на форму Help Panel1.

Ha Panel1 розміщую Label1 - в властивостях встановлюю Caption = «Autoscool (version: 1.0)»; Label2 - в властивостях встановлюю Caption = «Програма призначена для:»; Label3 - в властивостях встановлюю Caption = «зберігання;»; Label4 - в властивостях встановлюю Caption = «редагування;»; Label5 - в властивостях встановлюю Caption = «видалення даних;»; Label6 - в властивостях встановлюю Caption = «фільтрація та пошук даних»; Результат створеної форми показано в додатку 2 рис.7.

3. ВИБІР АРХІТЕКТУРИ

3.1 Функціональна структура програми(Типи моделі розробки)

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

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

Для з'єднання БД з середовищем C++ Builder я використовую декілька компонентів з вкладки ADO: TADOConnection, TDataSource, TADOTable.

Для зв'язку з базою даних використовується компонент ADOConnection, в якому вказується шлях до потрібної бази даних та використовується драйвер «Microsoft Jet 4.0 OLE DB Provider», через нього здійснюється підключення до бази даних «Автошкола», Рис.3.1.1.

Рис 3.1.1 - Встановлення зв'язку з БД

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

З'єдную проект з базою даних «Автошкола»:

Додаємо на форму DataModule, на ній розміщуємо такі компоненти: ADOConnection, DataSource, ADOTable.

Натиснувши 2 рази на ADOConnection вибираю потрібний драйвер, та підключаю базу даних. У властивостях DataSource : DataSet=ADOTable2 (підключив одну з таблиць бази даних до DataSource ). У властивостях ADOTable : Connection=ADOConnection; Active=true; TableName=Клієнти (підключили таблицю «Клієнти»).

3.2 Генерація схеми бази даних

Драйвер Microsoft ODBC для SQL Server - це ізольований драйвер, який надає API-інтерфейс, який реалізує стандартні інтерфейси ODBC з Microsoft SQL Server. Генерацію схеми бази даних було зроблено для СУБД Аксес, використовуючи ODBC.

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

За допомогою програми ER-Win було згенеровоно код для майбутньої бази даних, а вже потім за допомогою програми BatchAccess (консольна утиліта для управління базами MS Access) , в яку був занесений код з ER-Win була створена база даних «Автошколи», генерацію бази даних наведено в рис. 3.2.1.

Рис. 3.2.1 - Створення Бази даних

4. ДЕТАЛЬНЕ ПРОГРАМУВАННЯ

4.1 Логічна структура бази даних проекту

Основними об'єктами бази даних автошколи є: Клієнти, Вчителі, Транспорт.

Таблиця «Вчителі» зв'язана з таблицею «Транспорт» полем «Код транспорту». Таблиця «Клієнти» зв'язана з таблицею «Вчителі» полем «Код вчителя». Схему показано в додатку 3 рис.11.

В таблиці «Вчителі» йде опис вчителів, що працюють в автошколі.

В таблиці «Транспорт» йде опис транспортів, які є в автошколі.

В таблиці «Клієнти» йде опис всіх клієнтів(учнів) автошколи.

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

4.2 Розробка структури таблиць бази даних

Таблиця «Клієнти» містить такі поля:

Код клієнта - дане поле містить дані про код кожного клієнта автшколи.

Прізвище та ім'я - дане поле містить дані про прізвище та ім'я кожного клієнта автошколи.

Дата вступу - дане поле містить дані про дату вступу в автошколу кожного клієнта.

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

Категорія - дане поле містить дані про категорія навчання на водія.

Код вчителя - дане поле містить дані про код вчителя до якого відноситься певний клієнт.

Таблиця «Вчителі» містить такі поля:

Код вчителя - дане поле містить дані про код кожного вчителя автошколи.

Прізвище та ім'я - дане поле містить дані про прізвище та ім'я кожного вчителя автошколи.

Код паспорту - дане поле містить дані про код паспорту кожного вчителя автошколи.

Телефонний номер - дане поле містить дані про телефонні номера вчителів автошколи.

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

Таблиця «Транспорт» містить такі поля:

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

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

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

Об'єм двигуна(см3) - дане поле містить дані про об'єм двигуна кожного транспорту автошколи.

Налаштовую цілісність даних в схемі бази даних проекту. Схему показано в додатку 3 рис. 11.

ВИСНОВОК

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

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

Створений додаток було з'єднано за базою даних за допомогою компонента ADOConection та драйвера «Microsoft Jet 4.0 OLE DB Provider». Таблиці бази даних були підключені до програмного додатку за допомогою компонентів DataSource та ADOTable, а виведення даних було здійснено за допомогою компоненту DBGrid.

Було створено меню швидкого запуску за допомогою компонента ToolBar та MainMenu.

Для розробки програмного додатку знадобилось створити схему функціональної діяльності проектованої системи (IDEF0), яка наведена в додатку 3 рис. 8; діаграму потоків даних проектованої системи (DFD), яка наведена в додатку 3 рис. 9; діаграма варіантів використання проектованої системи, яка наведена в додатку 3 рис. 10; логічну модель бази даних проектованої системи в ERwin, яка наведена в додатку 3 рис. 11.

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

СПИСОК ЛІТЕРАТУРИ

1. Іан Соммервілла. Інженерія програмного забезпечення 2002.

2. Орлов С. А. Технології розробки програмного забезпечення: Розробка складних програмних систем (Вид. 3), 2004.

3. Ерік Дж. Брауде. Технологія розробки програмного забезпечення, 2004.

4. Липаев, В. В. Програмна інженерія. Методологічні основи [Текст]: Учеб. / В. В. Липаев; Держ. ун-т - Вища школа економіки. - М. : ТЕИС, 2006. - 608 с. - 1000 екз. - ISBN 5-7598-0424-3, УДК 004,41 (075,8), ББК 32.973.26-018я73, Липаев, Вища школа економіки, ТЕИС, 2006, PDF, економіка, програмування.

5. Лапланте, Філ (2009). Вимоги Техніка для програмного забезпечення і систем (вид. 1). Редмонд, штат Вашингтон: CRC Press. ISBN 1-42006-467-3.

6. Макконнелл Стів (1996). Швидкий розвиток: Приборкання Дикого Software Розклади (. Вид 1). Редмонд, штат Вашингтон: Microsoft Press. ISBN 1-55615-900-5.

7. Віджерс, Карл Е. (2003). Вимоги до програмного забезпечення (вид. 2). Редмонд, штат Вашингтон: Microsoft Press. ISBN 0-7356-1879-8.

8. Андрій Стельман і Дженніфер Грін (2005). Прикладне програмне забезпечення для управління проектами. Кембридж, Массачусетс: O'Reilly Media. ISBN 0-596-00948-8.

9. Брайан Беренбач, Даніель Пауліш, Юрген Катзмеєр, Арнольд Рудофер (2009). Програмне забезпечення та системи технічних вимог: на практиці. Нью-Йорк: McGraw-Hill Професійний. ISBN 0-07-1605479.

10. Вальтер Собків (2008). Сталий розвиток можливий при Creative System Engineering. Нью-Джерсі: CassBeth. ISBN 0615216307.

ДОДАТОК 1

Лістинг програми

//Redagyvannya_dannih.cpp

#include <vcl.h>

#pragma hdrstop

#include "Redagyvannya_dannih.h"

#include "Data1.h"

#include "Help_client.h"

#include "Klients.h"

#include "Me_info.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tregedit *regedit;

__fastcall Tregedit::Tregedit(TComponent* Owner)

: TForm(Owner)

{ }

void __fastcall Tregedit::FormCreate(TObject *Sender)

{

Memo1->Clear(); Memo2->Clear(); Memo3->Clear();

Memo4->Clear(); Memo5->Clear(); Memo6->Clear();

Memo1->Visible = false; Memo2->Visible = false; Memo3->Visible = false;

Memo4->Visible = false; Memo5->Visible = false; Memo6->Visible = false;

}

void __fastcall Tregedit::Button2Click(TObject *Sender)

{

Memo1->Clear();

bd_work->Klient_table->Active=false;

AnsiString text[]={"INSERT INTO Клієнти([Код клієнта], [Прізвище та ім'я],Категорія)",

" VALUES ( \""+Edit6->Text+"\",\""+Edit5->Text+"\",\""+Edit4->Text+"\")"};

for(unsigned t=0; t<sizeof(text)/sizeof(int); t++)

Memo1->Lines->Add(text[t]);

bd_work->Klient_table->Close();

bd_work->Klient_table->SQL->Clear();

bd_work->Klient_table->SQL->Add(Memo1->Text);

bd_work->Klient_table->ExecSQL();

AnsiString text2[]={"SELECT *", "FROM Клієнти;"};

Memo1->Clear();

for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)

Memo1->Lines->Add(text2[t]);

bd_work->Klient_table->Close();

bd_work->Klient_table->SQL->Clear();

bd_work->Klient_table->SQL->Add(Memo1->Text);

bd_work->Klient_table->Open();

bd_work->Klient_table->Active=true;

}

void __fastcall Tregedit::Button1Click(TObject *Sender)

{

Memo2->Clear();

bd_work->Klient_table->Active=false;

AnsiString text[]={"DELETE FROM Клієнти",

" WHERE Клієнти.[Код клієнта]=\""+Edit1->Text+"\"",

" OR Клієнти.[Прізвище та ім'я]=\""+Edit2->Text+"\" OR",

"Клієнти.Категорія=\""+Edit3->Text+"\""};

for(unsigned t=0; t<sizeof(text)/sizeof(int); t++)

Memo2->Lines->Add(text[t]);

bd_work->Klient_table->Close();

bd_work->Klient_table->SQL->Clear();

bd_work->Klient_table->SQL->Add(Memo2->Text);

bd_work->Klient_table->ExecSQL();

AnsiString text2[]={"SELECT *", "FROM Клієнти;"};

Memo2->Clear();

for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)

Memo2->Lines->Add(text2[t]);

bd_work->Klient_table->Close();

bd_work->Klient_table->SQL->Clear();

bd_work->Klient_table->SQL->Add(Memo2->Text);

bd_work->Klient_table->Open();

bd_work->Klient_table->Active=true;

}

void __fastcall Tregedit::Button4Click(TObject *Sender)

{

Memo3->Clear();

bd_work->Teach_table->Active=false;

AnsiString text[]={"INSERT INTO Вчителі([Код вчителя], [Прізвище та ім'я],[Код паспорту],[Телефонний номер])",

" VALUES ( \""+Edit12->Text+"\",\""+Edit11->Text+"\",\""+Edit10->Text+"\",\""+Edit19->Text+"\")"};

for(unsigned t=0; t<sizeof(text)/sizeof(int); t++)

Memo3->Lines->Add(text[t]);

bd_work->Teach_table->Close();

bd_work->Teach_table->SQL->Clear();

bd_work->Teach_table->SQL->Add(Memo3->Text);

bd_work->Teach_table->ExecSQL();

AnsiString text2[]={"SELECT *", "FROM Вчителі;"};

Memo3->Clear();

for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)

Memo3->Lines->Add(text2[t]);

bd_work->Teach_table->Close();

bd_work->Teach_table->SQL->Clear();

bd_work->Teach_table->SQL->Add(Memo3->Text);

bd_work->Teach_table->Open();

bd_work->Teach_table->Active=true;

}

void __fastcall Tregedit::Button3Click(TObject *Sender)

{

Memo3->Clear();

bd_work->Teach_table->Active=false;

AnsiString text[]={"DELETE FROM Вчителі",

" WHERE [Код вчителя] = \""+Edit9->Text+"\" or ",

"[Прізвище та ім'я] = \""+Edit8->Text+"\" or",

"[Код паспорту] = \""+Edit7->Text+"\" or",

"[Телефонний номер] = \""+Edit20->Text+"\"" };

for(unsigned t=0; t<sizeof(text)/sizeof(int); t++)

Memo3->Lines->Add(text[t]);

bd_work->Teach_table->Close();

bd_work->Teach_table->SQL->Clear();

bd_work->Teach_table->SQL->Add(Memo3->Text);

bd_work->Teach_table->ExecSQL();

AnsiString text2[]={"SELECT *", "FROM Вчителі;"};

Memo3->Clear();

for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)

Memo3->Lines->Add(text2[t]);

bd_work->Teach_table->Close();

bd_work->Teach_table->SQL->Clear();

bd_work->Teach_table->SQL->Add(Memo3->Text);

bd_work->Teach_table->Open();

bd_work->Teach_table->Active=true;

}

void __fastcall Tregedit::Button5Click(TObject *Sender)

{

Memo3->Clear();

bd_work->Teach_table->Active=false;

AnsiString text[]={"INSERT INTO Транспорт([Код транспорту], Модель, [Кількість кінських сил], [Об'єм двигуна])",

" VALUES ( \""+Edit15->Text+"\",\""+Edit14->Text+"\",\""+Edit13->Text+"\",\""+Edit21->Text+"\")"};

for(unsigned t=0; t<sizeof(text)/sizeof(int); t++)

Memo3->Lines->Add(text[t]);

bd_work->Auto_table->Close();

bd_work->Auto_table->SQL->Clear();

bd_work->Auto_table->SQL->Add(Memo3->Text);

bd_work->Auto_table->ExecSQL();

AnsiString text2[]={"SELECT *", "FROM Транспорт;"};

Memo3->Clear();

for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)

Memo3->Lines->Add(text2[t]);

bd_work->Auto_table->Close();

bd_work->Auto_table->SQL->Clear();

bd_work->Auto_table->SQL->Add(Memo3->Text);

bd_work->Auto_table->Open();

bd_work->Auto_table->Active=true;

}

void __fastcall Tregedit::Button6Click(TObject *Sender)

{

Memo3->Clear();

bd_work->Teach_table->Active=false;

AnsiString text[]={"DELETE FROM Транспорт",

" WHERE [Код транспорту] = \""+Edit18->Text+"\" or", "Модель = \""+Edit17->Text+"\" or ",

"[Кількість кінських сил] = \""+Edit16->Text+"\" or ",

"[Об'єм двигуна] = \""+Edit22->Text+"\" "};

for(unsigned t=0; t<sizeof(text)/sizeof(int); t++)

Memo3->Lines->Add(text[t]);

bd_work->Auto_table->Close(); bd_work->Auto_table->SQL->Clear();

bd_work->Auto_table->SQL->Add(Memo3->Text);

bd_work->Auto_table->ExecSQL();

AnsiString text2[]={"SELECT *", "FROM Транспорт;"};

Memo3->Clear(); for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)

Memo3->Lines->Add(text2[t]);

bd_work->Auto_table->Close(); bd_work->Auto_table->SQL->Clear();

bd_work->Auto_table->SQL->Add(Memo3->Text);

bd_work->Auto_table->Open(); bd_work->Auto_table->Active=true;

}

//Auto_form.cpp

#include <vcl.h>

#pragma hdrstop

#include "Auto_form.h"

#include "Data1.h"

#include "Klients.h"

#include "Help_client.h"

#include "Klienti_zvit.h"

#include "Me_info.h"

#include "Redagyvannya_dannih.h"

#include "Teach_form.h"

#include "ZVIT_auto.h"

#include "Zvit_teach.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Ttran *tran;

__fastcall Ttran::Ttran(TComponent* Owner)

: TForm(Owner)

{ }

void __fastcall Ttran::Button1Click(TObject *Sender)

{

if((ComboBox1->Text=="Скинути фільтри")||(Edit1->Text==""))

{ bd_work->Auto_table->Filtered = false; ComboBox1->Text="Фільтри"; }

else if((ComboBox1->Text=="Код транспорту")&&(Edit1->Text!=""))

{

bd_work->Auto_table->Filtered = false;

bd_work->Auto_table->Filter = "[Код транспорту] like '"+Edit1->Text+"*'";

bd_work->Auto_table->Filtered = true;

}

else if((ComboBox1->Text=="Модель")&&(Edit1->Text!=""))

{

bd_work->Auto_table->Filtered = false;

bd_work->Auto_table->Filter = "Модель like '"+Edit1->Text+"*'";

bd_work->Auto_table->Filtered = true;

}

else if((ComboBox1->Text=="Кількість кінських сил")&&(Edit1->Text!=""))

{

bd_work->Auto_table->Filtered = false;

bd_work->Auto_table->Filter = "[Кількість кінських сил] like '"+Edit1->Text+"*'";

bd_work->Auto_table->Filtered = true;

}

else if((ComboBox1->Text=="Об'єм двигуна")&&(Edit1->Text!=""))

{

bd_work->Auto_table->Filtered = false;

bd_work->Auto_table->Filter = "[Об'єм двигуна] like '"+Edit1->Text+"*'";

bd_work->Auto_table->Filtered = true;

}

}

void __fastcall Ttran::FormClose(TObject *Sender, TCloseAction &Action)

{

Form1->Close();

}

void __fastcall Ttran::ToolButton1Click(TObject *Sender)

{

regedit->Visible = true;

}

void __fastcall Ttran::ToolButton4Click(TObject *Sender)

{

Me->Visible = true;

}

void __fastcall Ttran::ToolButton5Click(TObject *Sender)

{

Help->Visible = true;

}

void __fastcall Ttran::ToolButton6Click(TObject *Sender)

{

Form1->Close();

}

//Data1.cpp

#include <vcl.h>

#pragma hdrstop

#include "Data1.h"

#include "Klients.h"

#include "Help_client.h"

#include "Me_info.h"

#include "Redagyvannya_dannih.h"

#include "Teach_form.h"

#include "Auto_form.h"

#include "Klienti_zvit.h"

#include "ZVIT_auto.h"

#include "Zvit_teach.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tbd_work *bd_work;

__fastcall Tbd_work::Tbd_work(TComponent* Owner)

: TDataModule(Owner)

{ }

void __fastcall Tbd_work::N111Click(TObject *Sender)

{

regedit->Visible = true;

}

void __fastcall Tbd_work::N4Click(TObject *Sender)

{

regedit->Close();

}

void __fastcall Tbd_work::N2Click(TObject *Sender)

{

Teach->Visible = true; Form1->Visible = false;

}

void __fastcall Tbd_work::N3Click(TObject *Sender)

{

tran->Visible = true; Form1->Visible = false;

}

void __fastcall Tbd_work::N6Click(TObject *Sender)

{

tran->Visible = true; Teach->Visible = false;

}

void __fastcall Tbd_work::N5Click(TObject *Sender)

{

Teach->Visible = false; Form1->Visible = true;

}

void __fastcall Tbd_work::N8Click(TObject *Sender)

{

tran->Visible = false; Form1->Visible = true;

}

void __fastcall Tbd_work::N9Click(TObject *Sender)

{

Teach->Visible = true; tran->Visible = false;

}

void __fastcall Tbd_work::N10Click(TObject *Sender)

{

regedit->Visible = true;

}

void __fastcall Tbd_work::N11Click(TObject *Sender)

{

Auto_zvit->QuickRep1->Preview();

}

void __fastcall Tbd_work::N12Click(TObject *Sender)

{

Me->Visible = true;

}

void __fastcall Tbd_work::N13Click(TObject *Sender)

{

Help->Visible = true;

}

void __fastcall Tbd_work::N14Click(TObject *Sender)

{

Form1->Close();

}

void __fastcall Tbd_work::N15Click(TObject *Sender)

{

regedit->Visible = true;

}

void __fastcall Tbd_work::N16Click(TObject *Sender)

{

Teach_ZVIT->QuickRep1->Preview();

}

void __fastcall Tbd_work::N17Click(TObject *Sender)

{

Me->Visible = true;

}

void __fastcall Tbd_work::N18Click(TObject *Sender)

{

Help->Visible = true;

}

void __fastcall Tbd_work::N19Click(TObject *Sender)

{

Form1->Close();

}

void __fastcall Tbd_work::N20Click(TObject *Sender)

{

ZVIT_klienti->QuickRep1->Preview();

}

void __fastcall Tbd_work::N21Click(TObject *Sender)

{

Me->Visible = true;

}

void __fastcall Tbd_work::N22Click(TObject *Sender)

{

Help->Visible = true;

}

void __fastcall Tbd_work::N23Click(TObject *Sender)

{

Form1->Close();

}

//Teach_form.cpp

#include <vcl.h>

#pragma hdrstop

#include "Teach_form.h"

#include "Data1.h"

#include "Help_client.h"

#include "Klients.h"

#include "Me_info.h"

#include "Redagyvannya_dannih.h"

#include "Auto_form.h"

#include "Klienti_zvit.h"

#include "ZVIT_auto.h"

#include "Zvit_teach.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TTeach *Teach;

__fastcall TTeach::TTeach(TComponent* Owner)

: TForm(Owner)

{ }

void __fastcall TTeach::Button1Click(TObject *Sender)

{

if((ComboBox1->Text=="Скинути фільтри")||(Edit1->Text==""))

{bd_work->Teach_table->Filtered = false; ComboBox1->Text="Фільтри";}

else if((ComboBox1->Text=="Код вчителя")&&(Edit1->Text!=""))

{

bd_work->Teach_table->Filtered = false;

bd_work->Teach_table->Filter = "[Код вчителя] like '"+Edit1->Text+"*'";

bd_work->Teach_table->Filtered = true;

}

else if((ComboBox1->Text=="Прізвище та ім'я")&&(Edit1->Text!=""))

{

bd_work->Teach_table->Filtered = false;

bd_work->Teach_table->Filter = "[Прізвище та ім'я] like '"+Edit1->Text+"*'";

bd_work->Teach_table->Filtered = true;

}

else if((ComboBox1->Text=="Код паспорту")&&(Edit1->Text!=""))

{

bd_work->Teach_table->Filtered = false;

bd_work->Teach_table->Filter = "[Код паспорту] like '"+Edit1->Text+"*'";

bd_work->Teach_table->Filtered = true;

}

else if((ComboBox1->Text=="Телефонний номер")&&(Edit1->Text!=""))

{

bd_work->Teach_table->Filtered = false;

bd_work->Teach_table->Filter = "[Телефонний номер] like '"+Edit1->Text+"*'";

bd_work->Teach_table->Filtered = true;

}

}

void __fastcall TTeach::FormClose(TObject *Sender, TCloseAction &Action)

{

Form1->Close();

}

void __fastcall TTeach::ToolButton1Click(TObject *Sender)

{

regedit->Visible = true;

}

void __fastcall TTeach::ToolButton3Click(TObject *Sender)

{

Teach_ZVIT->QuickRep1->Preview();

}

void __fastcall TTeach::ToolButton4Click(TObject *Sender)

{

Me->Visible = true;

}

void __fastcall TTeach::ToolButton7Click(TObject *Sender)

{

Help->Visible = true;

}

void __fastcall TTeach::ToolButton9Click(TObject *Sender)

{

Form1->Close();

}

//Data1.h

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

#ifndef Data1H

#define Data1H

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

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <DB.hpp>

#include <Menus.hpp>

#include <ADODB.hpp>

#include <ImgList.hpp>

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

class Tbd_work : public TDataModule

{

__published:

TDataSource *Auto_data;

TDataSource *Teach_data;

TDataSource *Klient_data;

TADOConnection *ADOConnection1;

TADOQuery *Auto_table;

TADOQuery *Teach_table;

TADOQuery *Klient_table;

TMainMenu *Menu_auto;

TMainMenu *Menu_teach;

TMainMenu *Menu_klient;

TWideStringField *Auto_tableDSDesigner;

TWideStringField *Auto_tableDSDesigner2;

TWideStringField *Auto_tableDSDesigner3;

TWideStringField *Auto_tableDSDesigner4;

TWideStringField *Teach_tableDSDesigner;

TWideStringField *Teach_tableDSDesigner2;

TWideStringField *Teach_tableDSDesigner3;

TWideStringField *Teach_tableDSDesigner4;

TWideStringField *Teach_tableDSDesigner5;

TStringField *Teach_tableKod_transp;

TWideStringField *Klient_tableDSDesigner;

TWideStringField *Klient_tableDSDesigner2;

TDateTimeField *Klient_tableDSDesigner3;

TDateTimeField *Klient_tableDSDesigner4;

TWideStringField *Klient_tableDSDesigner5;

TWideStringField *Klient_tableDSDesigner6;

TStringField *Klient_tableKod_teach;

TImageList *ImageList1;

// IDE-managed Components

void __fastcall N111Click(TObject *Sender);

void __fastcall N4Click(TObject *Sender);

void __fastcall N2Click(TObject *Sender);

void __fastcall N3Click(TObject *Sender);

void __fastcall N6Click(TObject *Sender);

void __fastcall N5Click(TObject *Sender);

void __fastcall N8Click(TObject *Sender);

void __fastcall N9Click(TObject *Sender);

void __fastcall N10Click(TObject *Sender);

void __fastcall N11Click(TObject *Sender);

void __fastcall N12Click(TObject *Sender);

void __fastcall N13Click(TObject *Sender);

void __fastcall N14Click(TObject *Sender);

void __fastcall N15Click(TObject *Sender);

void __fastcall N16Click(TObject *Sender);

void __fastcall N17Click(TObject *Sender);

void __fastcall N18Click(TObject *Sender);

void __fastcall N19Click(TObject *Sender);

void __fastcall N20Click(TObject *Sender);

void __fastcall N21Click(TObject *Sender);

void __fastcall N22Click(TObject *Sender);

void __fastcall N23Click(TObject *Sender);

void __fastcall DataModuleCreate(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall Tbd_work(TComponent* Owner);

TMenuItem *N1;

TMenuItem *N2;

TMenuItem *N3;

TMenuItem *N111;

TMenuItem *N4;

TMenuItem *N5;

TMenuItem *N6;

TMenuItem *N7;

TMenuItem *N8;

TMenuItem *N9;

TMenuItem *N10;

TMenuItem *N11;

TMenuItem *N12;

TMenuItem *N13;

TMenuItem *N14;

TMenuItem *N15;

TMenuItem *N16;

TMenuItem *N17;

TMenuItem *N18;

TMenuItem *N19;

TMenuItem *N20;

TMenuItem *N21;

TMenuItem *N22;

TMenuItem *N23;

};

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

extern PACKAGE Tbd_work *bd_work;

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

#endif

ДОДАТОК 2

Результат роботи

Рис. 1 - Вікно контролю над таблицею БД «Клієнти»

Рис. 2 - Вікно контролю над таблицею БД «Вчителі»

Рис. 3 - Вікно контролю над таблицею БД «Транспорт»

Рис. 4 - Вікно додавання/видалення даних в таблицях БД «Клієнти», «Вчителі», «Транспорт»

Рис. 5 - Вікна звітів таблиць БД «Транспорт», «Клієнти», «Вчителі»

Рис. 6 - Вікно інформації про розробника

Рис. 7 - Вікно довідки програми

ДОДАТОК 3

Схеми проекту

Рис. 8 - Функціональна діяльність проектованої системи (IDEF0)

Рис. 9 - Діаграма потоків даних проектованої системи (DFD)

Рис. 10 - Діаграма варіантів використання проектованої системи

Рис. 11 - Логічна модель бази даних проектованої системи в ERwin

Рис. 12 - Вікно генерованого коду бази даних в ERwin

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.