В таблиці «Транспорт» йде опис транспортів, які є в автошколі.
В таблиці «Клієнти» йде опис всіх клієнтів(учнів) автошколи.
Під час проектування програмного
додатку, до нього були добавлені компоненти 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.
. Орлов С. А. Технології розробки програмного забезпечення: Розробка складних програмних систем (Вид. 3), 2004.
. Ерік Дж. Брауде. Технологія розробки програмного забезпечення, 2004.
. Липаев, В. В. Програмна інженерія. Методологічні основи [Текст]: Учеб. / В. В. Липаев; Держ. ун-т - Вища школа економіки. - М. : ТЕИС, 2006. - 608 с. - 1000 екз. - ISBN 5-7598-0424-3, УДК 004,41 (075,8), ББК 32.973.26-018я73, Липаев, Вища школа економіки, ТЕИС, 2006, PDF, економіка, програмування.
. Лапланте, Філ (2009). Вимоги Техніка для програмного забезпечення і систем (вид. 1). Редмонд, штат Вашингтон: CRC Press. ISBN 1-42006-467-3.
. Макконнелл Стів (1996). Швидкий розвиток: Приборкання Дикого Software Розклади (. Вид 1). Редмонд, штат Вашингтон: Microsoft Press. ISBN 1-55615-900-5.
. Віджерс, Карл Е. (2003). Вимоги до програмного забезпечення (вид. 2). Редмонд, штат Вашингтон: Microsoft Press. ISBN 0-7356-1879-8.
. Андрій Стельман і Дженніфер Грін (2005). Прикладне програмне забезпечення для управління проектами. Кембридж, Массачусетс: O'Reilly Media. ISBN 0-596-00948-8.
. Брайан Беренбач, Даніель Пауліш, Юрген Катзмеєр, Арнольд Рудофер (2009). Програмне забезпечення та системи технічних вимог: на практиці. Нью-Йорк: McGraw-Hill Професійний. ISBN 0-07-1605479.
. Вальтер
Собків (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"*regedit;
__fastcall Tregedit::Tregedit(TComponent* Owner)
: TForm(Owner)
{ }__fastcall Tregedit::FormCreate(TObject *Sender)
{->Clear(); Memo2->Clear(); Memo3->Clear();->Clear(); Memo5->Clear(); Memo6->Clear();->Visible = false; Memo2->Visible = false; Memo3->Visible = false;->Visible = false; Memo5->Visible = false; Memo6->Visible = false;
}__fastcall Tregedit::Button2Click(TObject *Sender)
{->Clear();_work->Klient_table->Active=false;text[]={"INSERT INTO Клієнти([Код клієнта], [Прізвище та ім'я],Категорія)",
" VALUES ( \""+Edit6->Text+"\",\""+Edit5->Text+"\",\""+Edit4->Text+"\")"};(unsigned t=0; t<sizeof(text)/sizeof(int); t++)->Lines->Add(text[t]);_work->Klient_table->Close();_work->Klient_table->SQL->Clear();_work->Klient_table->SQL->Add(Memo1->Text);_work->Klient_table->ExecSQL();text2[]={"SELECT *", "FROM Клієнти;"};->Clear();(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)->Lines->Add(text2[t]);_work->Klient_table->Close();_work->Klient_table->SQL->Clear();_work->Klient_table->SQL->Add(Memo1->Text);_work->Klient_table->Open();_work->Klient_table->Active=true;
}__fastcall Tregedit::Button1Click(TObject *Sender)
{->Clear();_work->Klient_table->Active=false;text[]={"DELETE FROM Клієнти",
" WHERE Клієнти.[Код клієнта]=\""+Edit1->Text+"\"",
" OR Клієнти.[Прізвище та ім'я]=\""+Edit2->Text+"\" OR",
"Клієнти.Категорія=\""+Edit3->Text+"\""};(unsigned t=0; t<sizeof(text)/sizeof(int); t++)->Lines->Add(text[t]);_work->Klient_table->Close();_work->Klient_table->SQL->Clear();_work->Klient_table->SQL->Add(Memo2->Text);_work->Klient_table->ExecSQL();text2[]={"SELECT *", "FROM Клієнти;"};->Clear();(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)->Lines->Add(text2[t]);_work->Klient_table->Close();_work->Klient_table->SQL->Clear();_work->Klient_table->SQL->Add(Memo2->Text);_work->Klient_table->Open();_work->Klient_table->Active=true;
}__fastcall Tregedit::Button4Click(TObject *Sender)
{->Clear();_work->Teach_table->Active=false;text[]={"INSERT INTO Вчителі([Код вчителя], [Прізвище та ім'я],[Код паспорту],[Телефонний номер])",
" VALUES ( \""+Edit12->Text+"\",\""+Edit11->Text+"\",\""+Edit10->Text+"\",\""+Edit19->Text+"\")"};(unsigned t=0; t<sizeof(text)/sizeof(int); t++)->Lines->Add(text[t]);_work->Teach_table->Close();_work->Teach_table->SQL->Clear();_work->Teach_table->SQL->Add(Memo3->Text);_work->Teach_table->ExecSQL();text2[]={"SELECT *", "FROM Вчителі;"};->Clear();(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)->Lines->Add(text2[t]);_work->Teach_table->Close();_work->Teach_table->SQL->Clear();_work->Teach_table->SQL->Add(Memo3->Text);_work->Teach_table->Open();_work->Teach_table->Active=true;
}__fastcall Tregedit::Button3Click(TObject *Sender)
{->Clear();_work->Teach_table->Active=false;text[]={"DELETE FROM Вчителі",
" WHERE [Код вчителя] = \""+Edit9->Text+"\" or ",
"[Прізвище та ім'я] = \""+Edit8->Text+"\" or",
"[Код паспорту] = \""+Edit7->Text+"\" or",
"[Телефонний номер] = \""+Edit20->Text+"\"" };(unsigned t=0; t<sizeof(text)/sizeof(int); t++)->Lines->Add(text[t]);_work->Teach_table->Close();_work->Teach_table->SQL->Clear();_work->Teach_table->SQL->Add(Memo3->Text);_work->Teach_table->ExecSQL();text2[]={"SELECT *", "FROM Вчителі;"};->Clear();(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)->Lines->Add(text2[t]);_work->Teach_table->Close();_work->Teach_table->SQL->Clear();_work->Teach_table->SQL->Add(Memo3->Text);_work->Teach_table->Open();_work->Teach_table->Active=true;
}__fastcall Tregedit::Button5Click(TObject *Sender)
{->Clear();_work->Teach_table->Active=false;text[]={"INSERT INTO Транспорт([Код транспорту], Модель, [Кількість кінських сил], [Об'єм двигуна])",
" VALUES ( \""+Edit15->Text+"\",\""+Edit14->Text+"\",\""+Edit13->Text+"\",\""+Edit21->Text+"\")"};(unsigned t=0; t<sizeof(text)/sizeof(int); t++)->Lines->Add(text[t]);_work->Auto_table->Close();_work->Auto_table->SQL->Clear();_work->Auto_table->SQL->Add(Memo3->Text);_work->Auto_table->ExecSQL();text2[]={"SELECT *", "FROM Транспорт;"};->Clear();(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)->Lines->Add(text2[t]);_work->Auto_table->Close();_work->Auto_table->SQL->Clear();_work->Auto_table->SQL->Add(Memo3->Text);_work->Auto_table->Open();_work->Auto_table->Active=true;
}__fastcall Tregedit::Button6Click(TObject *Sender)
{->Clear();_work->Teach_table->Active=false;text[]={"DELETE FROM Транспорт",
" WHERE [Код транспорту] = \""+Edit18->Text+"\" or", "Модель = \""+Edit17->Text+"\" or ",
"[Кількість кінських сил] = \""+Edit16->Text+"\" or ",
"[Об'єм двигуна] = \""+Edit22->Text+"\" "};(unsigned t=0; t<sizeof(text)/sizeof(int); t++)->Lines->Add(text[t]);_work->Auto_table->Close(); bd_work->Auto_table->SQL->Clear();_work->Auto_table->SQL->Add(Memo3->Text);_work->Auto_table->ExecSQL();text2[]={"SELECT *", "FROM Транспорт;"};->Clear(); for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)->Lines->Add(text2[t]);_work->Auto_table->Close(); bd_work->Auto_table->SQL->Clear();_work->Auto_table->SQL->Add(Memo3->Text);_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 "Redagyvannya_dannih.h"
#include "Teach_form.h"
#include "ZVIT_auto.h"
#include "Zvit_teach.h"
#pragma package(smart_init)
#pragma resource "*.dfm"*tran;
__fastcall Ttran::Ttran(TComponent* Owner)
: TForm(Owner)
{ }__fastcall Ttran::Button1Click(TObject *Sender)
{((ComboBox1->Text=="Скинути фільтри")||(Edit1->Text==""))
{ bd_work->Auto_table->Filtered = false; ComboBox1->Text="Фільтри"; }if((ComboBox1->Text=="Код транспорту")&&(Edit1->Text!=""))
{_work->Auto_table->Filtered = false;_work->Auto_table->Filter = "[Код транспорту] like '"+Edit1->Text+"*'";_work->Auto_table->Filtered = true;
}if((ComboBox1->Text=="Модель")&&(Edit1->Text!=""))
{_work->Auto_table->Filtered = false;_work->Auto_table->Filter = "Модель like '"+Edit1->Text+"*'";_work->Auto_table->Filtered = true;
}if((ComboBox1->Text=="Кількість кінських сил")&&(Edit1->Text!=""))
{_work->Auto_table->Filtered = false;_work->Auto_table->Filter = "[Кількість кінських сил] like '"+Edit1->Text+"*'";_work->Auto_table->Filtered = true;
}if((ComboBox1->Text=="Об'єм двигуна")&&(Edit1->Text!=""))
{_work->Auto_table->Filtered = false;_work->Auto_table->Filter = "[Об'єм двигуна] like '"+Edit1->Text+"*'";_work->Auto_table->Filtered = true;
}
}__fastcall Ttran::FormClose(TObject *Sender, TCloseAction &Action)
{->Close();
}__fastcall Ttran::ToolButton1Click(TObject *Sender)
{>Visible = true;
}__fastcall Ttran::ToolButton4Click(TObject *Sender)
{>Visible = true;
}__fastcall Ttran::ToolButton5Click(TObject *Sender)
{>Visible = true;
}__fastcall Ttran::ToolButton6Click(TObject *Sender)
{->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"_work *bd_work;
__fastcall Tbd_work::Tbd_work(TComponent* Owner)
: TDataModule(Owner)
{ }__fastcall Tbd_work::N111Click(TObject *Sender)
{>Visible = true;
}__fastcall Tbd_work::N4Click(TObject *Sender)
{>Close();
}__fastcall Tbd_work::N2Click(TObject *Sender)
{>Visible = true; Form1->Visible = false;
}__fastcall Tbd_work::N3Click(TObject *Sender)
{>Visible = true; Form1->Visible = false;
}__fastcall Tbd_work::N6Click(TObject *Sender)
{>Visible = true; Teach->Visible = false;
}__fastcall Tbd_work::N5Click(TObject *Sender)
{>Visible = false; Form1->Visible = true;
}__fastcall Tbd_work::N8Click(TObject *Sender)
{>Visible = false; Form1->Visible = true;
}__fastcall Tbd_work::N9Click(TObject *Sender)
{>Visible = true; tran->Visible = false;
}__fastcall Tbd_work::N10Click(TObject *Sender)
{>Visible = true;
}__fastcall Tbd_work::N11Click(TObject *Sender)
{_zvit->QuickRep1->Preview();
}__fastcall Tbd_work::N12Click(TObject *Sender)
{>Visible = true;
}__fastcall Tbd_work::N13Click(TObject *Sender)
}__fastcall Tbd_work::N14Click(TObject *Sender)
{->Close();
}__fastcall Tbd_work::N15Click(TObject *Sender)
{>Visible = true;
}__fastcall Tbd_work::N16Click(TObject *Sender)
{_ZVIT->QuickRep1->Preview();
}__fastcall Tbd_work::N17Click(TObject *Sender)
{>Visible = true;
}__fastcall Tbd_work::N18Click(TObject *Sender)
{>Visible = true;
}__fastcall Tbd_work::N19Click(TObject *Sender)
{->Close();
}__fastcall Tbd_work::N20Click(TObject *Sender)
{_klienti->QuickRep1->Preview();
}__fastcall Tbd_work::N21Click(TObject *Sender)
{>Visible = true;
}__fastcall Tbd_work::N22Click(TObject *Sender)
{>Visible = true;
}__fastcall Tbd_work::N23Click(TObject *Sender)
{->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"*Teach;
__fastcall TTeach::TTeach(TComponent* Owner)
: TForm(Owner)
{ }__fastcall TTeach::Button1Click(TObject *Sender)
{((ComboBox1->Text=="Скинути фільтри")||(Edit1->Text==""))
{bd_work->Teach_table->Filtered = false; ComboBox1->Text="Фільтри";}if((ComboBox1->Text=="Код вчителя")&&(Edit1->Text!=""))
{_work->Teach_table->Filtered = false;_work->Teach_table->Filter = "[Код вчителя] like '"+Edit1->Text+"*'";_work->Teach_table->Filtered = true;
}if((ComboBox1->Text=="Прізвище та ім'я")&&(Edit1->Text!=""))
{_work->Teach_table->Filtered = false;_work->Teach_table->Filter = "[Прізвище та ім'я] like '"+Edit1->Text+"*'";_work->Teach_table->Filtered = true;
}if((ComboBox1->Text=="Код паспорту")&&(Edit1->Text!=""))
{_work->Teach_table->Filtered = false;_work->Teach_table->Filter = "[Код паспорту] like '"+Edit1->Text+"*'";_work->Teach_table->Filtered = true;
}if((ComboBox1->Text=="Телефонний номер")&&(Edit1->Text!=""))
{_work->Teach_table->Filtered = false;_work->Teach_table->Filter = "[Телефонний номер] like '"+Edit1->Text+"*'";_work->Teach_table->Filtered = true;
}
}__fastcall TTeach::FormClose(TObject *Sender, TCloseAction &Action)
{->Close();
}__fastcall TTeach::ToolButton1Click(TObject *Sender)
{>Visible = true;
}__fastcall TTeach::ToolButton3Click(TObject *Sender)
{_ZVIT->QuickRep1->Preview();
}__fastcall TTeach::ToolButton4Click(TObject *Sender)
{>Visible = true;
}__fastcall TTeach::ToolButton7Click(TObject *Sender)
{>Visible = true;
}__fastcall TTeach::ToolButton9Click(TObject *Sender)
{->Close();
}
//Data1.h
//---------------------------------------------------------------------------
#ifndef Data1H
#define Data1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <DB.hpp>
#include <Menus.hpp>
#include <ADODB.hpp>
#include <ImgList.hpp>
//---------------------------------------------------------------------------Tbd_work : public TDataModule
{
__published:*Auto_data;*Teach_data;*Klient_data;*ADOConnection1;*Auto_table;*Teach_table;*Klient_table;*Menu_auto;*Menu_teach;*Menu_klient;*Auto_tableDSDesigner;*Auto_tableDSDesigner2;*Auto_tableDSDesigner3;*Auto_tableDSDesigner4;*Teach_tableDSDesigner;*Teach_tableDSDesigner2;*Teach_tableDSDesigner3;*Teach_tableDSDesigner4;*Teach_tableDSDesigner5;*Teach_tableKod_transp;*Klient_tableDSDesigner;*Klient_tableDSDesigner2;*Klient_tableDSDesigner3;*Klient_tableDSDesigner4;*Klient_tableDSDesigner5;*Klient_tableDSDesigner6;*Klient_tableKod_teach;*ImageList1;
// IDE-managed Components__fastcall N111Click(TObject *Sender);__fastcall N4Click(TObject *Sender);__fastcall N2Click(TObject *Sender);__fastcall N3Click(TObject *Sender);__fastcall N6Click(TObject *Sender);__fastcall N5Click(TObject *Sender);__fastcall N8Click(TObject *Sender);__fastcall N9Click(TObject *Sender);__fastcall N10Click(TObject *Sender);__fastcall N11Click(TObject *Sender);__fastcall N12Click(TObject *Sender);__fastcall N13Click(TObject *Sender);__fastcall N14Click(TObject *Sender);__fastcall N15Click(TObject *Sender);__fastcall N16Click(TObject *Sender);__fastcall N17Click(TObject *Sender);__fastcall N18Click(TObject *Sender);__fastcall N19Click(TObject *Sender);__fastcall N20Click(TObject *Sender);__fastcall N21Click(TObject *Sender);__fastcall N22Click(TObject *Sender);__fastcall N23Click(TObject *Sender);__fastcall DataModuleCreate(TObject *Sender);: // User declarations: // User declarations
__fastcall Tbd_work(TComponent* Owner);*N1;*N2;*N3;*N111;*N4;*N5;*N6;*N7;*N8;*N9;*N10;*N11;*N12;*N13;*N14;*N15;*N16;*N17;*N18;*N19;*N20;*N21;*N22;*N23;
};
//---------------------------------------------------------------------------PACKAGE Tbd_work *bd_work;
//---------------------------------------------------------------------------
#endif
ДОДАТОК 2
Результат роботи
Рис. 1 - Вікно контролю над таблицею
БД «Клієнти»
Рис. 2 - Вікно контролю над таблицею
БД «Вчителі»
Рис. 3 - Вікно контролю над таблицею
БД «Транспорт»
Рис. 4 - Вікно додавання/видалення
даних в таблицях БД «Клієнти», «Вчителі», «Транспорт»
Рис. 5 - Вікна звітів таблиць БД
«Транспорт», «Клієнти», «Вчителі»
Рис. 6 - Вікно інформації про
розробника