Створення бази даних РЕО-ДАІ

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Міністерство освіти і науки Республіки Казахстан

Карагандинський державний технічний університет

Кафедра САПР

ПОЯСНЮВАЛЬНА

ЗАПИСКА

до курсової роботи

з дисципліни "Технологія розробки баз даних"

Тема: "Створення бази даних" РЕО-ДАІ "

Керівники:

(Підпис) (дата)

(Підпис) (дата)

Студенти

(Група)

_____________________

(Підпис) (дата)

Караганда 2009

Зміст

Введення

1. Постановка завдання

2. Структура бази даних

2.1 Структура таблиць

2.2 Структура інформації, що зберігається

2.3 Нормалізація відносин

3. Структура програми

3.1 Опис модулів

3.2 Опис запитів виконуваних у програмі

Висновок

Додаток

Введення

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

Метою виконання даного курсового проекту є розробка системи "РЕО-ДАІ" та відповідної їй бази даних, що дозволяє документувати в електронному вигляді автоматизаци ю обліку рухів автомобілів та надавати необхідні звіти.

В якості середовища розробки бази даних була обрана СУБД MSSQL Server 2000. Ця СКБД була обрана в якості інструменту тому, що вона здатна працювати на серверній основі, і має великі функціональні можливості. В якості мови програмування була обрана мова Borland Delphi. Дане середовище дозволяє легко працювати з базою даних, створеної в MSSQL Server 2000, редагувати і доповнювати її.

Мова SQL (Structured Query Language) в даний час став фактично стандартною мовою доступу до реляційних баз даних. Метою стандартизації є переносимість додатків між різними СУБД.

Реалізація в SQL концепції операції, орієнтованих на табличне представлення даних, дозволило створити компактний мову з невеликим (менше 30) набором пропозицій. SQL може використовуватися як інтерактивний (для виконання запитів) і як вбудований (для побудови прикладних програм). У ньому існує:

пропозиція визначення даних (визначення баз даних, а також визначення і знищення таблиць та індексів);

пропозиція на вибір даних;

пропозиція управління даними (надання та скасування привілеї на доступ даними тощо);

пропозицію на модифікацію даних (додавання, видалення, зміна даних).

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

арифметичні обчислення, обробку текстових рядків;

упорядкування рядків, стовпців при виведенні вмісту таблиць;

запам'ятовування виведеного за запитом вмісту таблиці;

створення уявлень (віртуальних таблиць);

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

До інструментальних засобів, що дозволяє забезпечити просте і ефективне використання MSSQL Server можна віднести:

Enterprise Manager;

Service Manager;

Query Analyzer.

База даних SQL Server - це контейнер об'єктів, призначених для зберігання, запису та вилучення даних в безпечному режимі - містить наступні компоненти:

Таблиці;

Збережені процедури;

Індекси;

Подання.

1. Постановка завдання

Завданням даного курсового проекту є розробка системи "РЕО - ДАІ", що включає в себе 9 таблиць:

Автомобілі (№ автомобіля, код району обліку, код марки автомобіля, код типу кузова, № двигуна, № шасі, код кольору, РНН власника, дата випуску);

Власники (РНН власника, ознака власника, адреса власника, ПІБ / найменування, телефон, адреса стоянки авто, стать, рік народження, № посвідчення особи, дата видачі, професія);

Рух (№ авто, код операції, код району обліку, РНН власника, дата операції);

Категорія кольору (код категорії кольору, найменування категорії);

Марка автомобіля (код марки авто, найменування);

Операції (код операції, найменування операції);

Райони обліку (код обліку району, найменування району);

Тип кузова (код типу кузова, найменування);

Кольори (код кольору, код категорії кольору, найменування).

При роботі з системою працівник ДАІ повинен мати можливість вирішувати такі завдання:

Реєструвати нові автомобілі в системі.

Відносити автомобілі до районів обліку.

Проводити каталогізацію автомобілів.

Вести облік кількості автомобілів, що належать власникам.

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

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

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

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

Адміністрація управління дорожньої поліції повинно мати можливість отримувати відомості

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

Про перереєстрацію автомобілів на інших власників.

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

2. Структура бази даних

2.1 Структура таблиць

Інформаційна система призначена для автоматизації обліку рухів автомобілів в "РЕО_ГАІ". Система повинна передбачати режими ведення системного каталогу, що відображає список районів обліку рухів автомобілів, марок, типів кузова, категорій кольору, а також квітів автомобілів. У русі аавтомобіля може відбуватися три операції - постановка на облік, зняття з обліку, перереєстрація. У системному каталозі операція має код і повне найменування, кожен автомобіль характеризується наступними параметрами: марка автомобіля, тип кузова, категорія кольору, Квет; ці параметри мають унікальні коди.

Також кожен автомобіль характерізауется наступними параметрами:

№ автомобіля;

код району обліку,

код марки,

код типу кузова,

№ двигуна,

№ шасі,

№ кузова,

дата випуску,

код кольору,

РНН власника.

У "РЕО_ГАІ" ведеться облік власників автомобілів. Власник може бути юридичною та фізичною особою. Якщо власник - юридична особа, то він характеризується наступними параметрами:

РНН

ПІБ / найменування власника

адреса

телефон

адреса стоянки автомобіля

На власника - фізична особа заносяться такі дані:

РНН

підлогу

рік народження

№ посвідчення особи

дата видачі

професія

Передбачити наступні обмеження на інформацію в системі:

У кожного власника може бути одночасно кілька автомобілів, тоді як в одного автомобіля не може бути більше одного власника.

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

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


2.2 Структура інформації, що зберігається

Вся інформація, яка надходить від користувача, записується в основні таблиці бази даних ("Власники", "Автомобілі", "Рух", "Категорії кольору", Марки автомобіля "," Операції "," Райони обліку "," Типи кузова "і" Кольори "). Для забезпечення цілісності даних між таблицями існують суворі зв'язку. Поле" РНН власника "таблиці" Власники "пов'язане ставленням один до багатьох з відповідними полями таблиць" Рух "і" Автомобілі ".

Поле "№ автомобіля" таблиці "Автомобілі" пов'язане ставленням один до багатьох з відповідним полем таблиці "Рух".

Поле "Код обліку району" таблиці "Райони обліку" пов'язане ставленням один до багатьох з відповідними полями таблиць "Рух" і "Автомобілі".

Поле "Код операції" таблиці "Операції" пов'язане ставленням один до багатьох з відповідним полем таблиці "Рух".

Поле "Код марки авто" таблиці "Марки автомобіля" пов'язане ставленням один до багатьох з відповідним полем таблиці "Автомобілі". Поле "Код типу кузова" таблиці "Типи кузова" пов'язане ставленням один до багатьох з відповідним полем таблиці "Автомобілі". Поле "Код категорії кольору" таблиці "Категорія квітів" пов'язане ставленням один до багатьох з відповідним полем таблиці "Кольори". Поле "Код кольору" таблиці "Кольори" пов'язане ставленням один до багатьох з відповідним полем таблиці "Автомобілі". Більш наочно зв'язок між таблицями зображена на ріс.2.2.1

Ріс.2.2.1 - Діаграма зв'язків таблиць у базі даних

2.3 Нормалізація відносин

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

Перша нормальна форма

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

Друга нормальна форма

Розглянемо схему відносини:

Власники (РНН власника, Ознака власника, ПІБ / Найменування, Адреса власника, Телефон, Адреса стоянки авто, Пол, Рік народження, № уд. Особистості, Дата видачі, Професія)

Первинний ключ: РНН власника, Ознака власника

Можливі функціональні залежності

РНН власника - ПІБ

РНН власника - Адреса власника

РНН власника - Адреса стоянки авто

РНН власника - Пол

РНН власника - Рік народження

РНН власника - № уд. особистості

РНН власника - Дата видачі

РНН власника - Професія

№ уд. особи - Дата видачі

Ознака власника - Найменування

Видно, що, хоча первинним ключем є складовою атрибут РНН власника, Ознака власника, атрибут ПІБ / Найменування залежить від частини первинного ключа. У результат при ознаках власника - юридична особа, ми не зможемо вставити кортеж, з Полом, Роком народження і Професією власника. Можна провести наступну декомпозицію відносини Власники на два відношення: Власники - юр_ліца і Власники-фіз_ліца.

Власники-юр_ліца (РНН власника, Ознака власника, Найменування, Адреса власника, Адреса стоянки авто, Телефон)

Первинний ключ

РНН власника, Ознака власника

Функціональні залежності:

РНН власника, Ознака власника - Найменування

РНН власника, Ознака власника - Адреса власника

РНН власника, Ознака власника - Телефон

РНН власника, Ознака власника - Адреса стоянки авто

Власники-фіз_ліца (РНН власника, Ознака власника, ПІБ, Адреса власника, Телефон, Адреса стоянки авто, Пол, Рік народження, № уд. Особистості, Дата видачі, Професія)

РНН власника, Ознака власника - ПІБ

РНН власника, Ознака власника - Адреса власника

РНН власника, Ознака власника - Телефон

РНН власника, Ознака власника - Адреса стоянки авто

РНН власника, Ознака власника - Пол

РНН власника, Ознака власника - Рік народження

РНН власника, Ознака власника - № уд. особистості

РНН власника, Ознака власника - Дата видачі

РНН власника, Ознака власника - Професія

№ уд. особи - Дата видачі

Кожне з цих двох відносин знаходяться в 2 NF

Третя нормальна форма

Розглянемо відношення Власники-фіз_ліца. Функціональна залежність РНН власника - Дата видачі є транзитивної; вона є наслідком функціональних залежностей РНН власника - № уд. особистості і № уд. особи - Дата видачі. Тобто, дата видачі є характеристикою посвідчення особи власника.

Можна декомпозіровать ставлення Власники-фіз_ліца в два відносини Власники-фіз_ліца-уд. особистості і Посвідчення особи:

Власники-фіз_ліца-уд. особистості (РНН власника, Ознака власника, ПІБ, Адреса власника, Телефон, Адреса стоянки авто, Пол, Рік народження, № уд. особистості, Професія)

Первинний ключ:

Можливі функціональні залежності:

РНН власника, Ознака власника - ПІБ

РНН власника, Ознака власника - Адреса власника

РНН власника, Ознака власника - Телефон

РНН власника, Ознака власника - Адреса стоянки авто

РНН власника, Ознака власника - Пол

РНН власника, Ознака власника - Рік народження

РНН власника, Ознака власника - № уд. особистості

РНН власника, Ознака власника - Професія

Посвідчення особи (№ посвідчення особи, Дата видачі)

Первинний ключ:

№ уд. особистості

Можливі функціональні залежності:

№ уд. особи - Дата видачі

Кожне з цих двох відносин знаходиться в 3 NF.

Нормальна форма Бойса-Кодда

Розглянемо схему відносини Власники-фіз_ліца-уд. особистості (РНН власника, Ознака власника, ПІБ, Адреса власника, Телефон, Адреса стоянки авто, Пол, Рік народження, № уд. особистості, Професія)

Тут особистість власника може повністю визначаться як ім'ям, так і його РНН.

Можна зробити декомпозицію відносини в два відношення: Власники-фіз_ліца-імена та

Власники-фіз_ліца-імена (РНН власника, ПІБ)

Первинний ключ: РНН власника

Функціональні залежності:

РНН власника - ПІБ

Власники-фіз_ліца-атрибути (РНН власника, Ознака власника, Адреса власника, Телефон, Адреса стоянки авто, Пол, Рік народження, № уд. Особистості, Професія)

Первинний ключ: РНН власника, Ознака власника

Можливі функціональні залежності:

РНН власника, Ознака власника - Адреса власника

РНН власника, Ознака власника - Телефон

РНН власника, Ознака власника - Адреса стоянки авто

РНН власника, Ознака власника - Пол

РНН власника, Ознака власника - Рік народження

РНН власника, Ознака власника - № уд. особистості

РНН власника, Ознака власника - Професія

Четверта нормальна форма

Бачимо, що кожному власнику відповідає безліч, що складається з нуля або більше значень атрибуту телефон (А → В), також як і відповідає безліч, що складається з нуля або більше значень атрибуту адресу стоянки авто (А → С). Але телефон власника авто не залежить від адреси стоянки авто.

Багатозначні залежності:

РНН власника → → Телефон

РНН власника → → Адреса стоянки авто

Можна зробити декомпозицію відносини:

Власники-фіз_ліца-телефони (РНН власника, Ознака власника, Адреса власника, Телефон, Пол, Рік народження, № уд. Особистості, Професія

Первинний ключ: РНН власника, Ознака власника

Можливі функціональні залежності:

РНН власника, Ознака власника - Адреса власника

РНН власника, Ознака власника - Телефон

РНН власника, Ознака власника - Пол

РНН власника, Ознака власника - Рік народження

РНН власника, Ознака власника - № уд. особистості

РНН власника, Ознака власника - Професія

Власники-фіз_ліца-адреси стоянок (РНН власника, Ознака власника, Адреса власника, Адреса стоянки авто, Пол, Рік народження, № уд. Особистості, Професія)

Первинний ключ: РНН власника, Ознака власника

Можливі функціональні залежності:

РНН власника, Ознака власника - Адреса власника

РНН власника, Ознака власника - Адреса стоянки авто

РНН власника, Ознака власника - Пол

РНН власника, Ознака власника - Рік народження

РНН власника, Ознака власника - № уд. особистості

РНН власника, Ознака власника - Професія

Відносини знаходяться в 4 NF

П'ята нормальна форма

Таблиця знаходиться в п'ятій нормальній формі 5 NF, тоді і тільки тоді, коли в кожній її повної декомпозиції всі проекції містять можливий ключ.

Декомпозиція отношеній6

Власники-юр_ліца_наіменованія (РНН власника, Ознака власника, Найменування)

Первинний ключ

РНН власника, Ознака власника

Функціональні залежності:

РНН власника, Ознака власника - Найменування

Власники-юр_ліца_адреса власників (РНН власника, Ознака власника, Адреса власника)

Первинний ключ

РНН власника, Ознака власника

Функціональні залежності:

РНН власника, Ознака власника - Адреса власника

Власники-юр_ліца_адреса стоянок авто (РНН власника, Ознака власника, Адреса стоянки авто, Телефон)

Первинний ключ

РНН власника, Ознака власника

Функціональні залежності:

РНН власника, Ознака власника - Адреса стоянки авто

Власники-юр_ліца_телефони (РНН власника, Ознака власника, Телефон)

Первинний ключ

РНН власника, Ознака власника

Функціональні залежності:

РНН власника, Ознака власника - Телефон

Власники-фіз_ліца-імена (РНН власника, ПІБ)

Первинний ключ: РНН власника

Функціональні залежності:

РНН власника - ПІБ

Власники-фіз_ліца_адреса власників (РНН власника, Ознака власника, Адреса власника)

Первинний ключ: РНН власника, Ознака власника

РНН власника, Ознака власника - Адреса власника

Власники-фіз_ліца-телефони (РНН власника, Ознака власника, Телефон, народження)

Первинний ключ: РНН власника, Ознака власника

Можливі функціональні залежності:

РНН власника, Ознака власника - Телефон

Власники-фіз_ліца-адреси стоянок (РНН власника, Ознака власника, Адреса стоянки авто)

Первинний ключ: РНН власника, Ознака власника

Можливі функціональні залежності:

РНН власника, Ознака власника - Адреса стоянки авто

Власники-фіз_ліца-пол (РНН власника, Ознака власника, Пол)

Первинний ключ: РНН власника, Ознака власника

Можливі функціональні залежності:

РНН власника, Ознака власника - Пол

Власники-фіз_ліца-рік народження (РНН власника, Ознака власника, Рік народження)

Первинний ключ: РНН власника, Ознака власника

Можливі функціональні залежності:

РНН власника, Ознака власника - Рік народження

Власники-фіз_ліца-уд. особистості (РНН власника, Ознака власника, № уд. особистості)

Первинний ключ: РНН власника, Ознака власника

Можливі функціональні залежності:

РНН власника, Ознака власника - № уд. особистості

Власники-фіз_ліца-професії (РНН власника, Ознака власника, Професія)

Первинний ключ: РНН власника, Ознака власника

Можливі функціональні залежності:

РНН власника, Ознака власника - професія

3. Структура програми

Програма "РЕО-ДАІ" реалізована на мові програмування Borland Delphi з підключенням MSSQL Server 2000. Структуру програми складають 4 класу та 6 програмних модулів.

3.1 Опис модулів

Модулі даної програми поділяються на:

1. Модуль Unit1, який знаходиться у файлі Unit1. pas містить інформацію про всіх таблицях даної бази даних.

2. У модулі Unit2, що знаходиться у файлі Unit2. pas відбувається реалізація класу T Zaprosy (запити).

3. Модуль Unit3 розташований у файлі Unit3. pas, в якому перебуває реалізація класу TOtchety (звіти).

4. Модуль Unit4 розташований у файлі Unit4. pas, в ньому знаходиться код опису класу TProcedury (процедури).

5. Модуль Unit5, який розташований у файлі Unit5. pas містить реалізацію класу TSpravka (довідка).

6. Модуль Unit6 знаходиться у файлі Unit6. pas і містить інформацію про звіти.

3.2 Опис запитів виконуваних у програмі

Запит 1. Кількість автотранспортних засобів, що належать кожному з власників.

SELECT [РНН власника], COUNT ([№ автомобіля])

FROM Автомобілі

GROUP BY [РНН власника]

ORDER BY [РНН власника];

Запит 2. Знайти автомобіль за неповним номером двигуна <...>

SELECT [№ автомобіля], [№ двигуна]

FROM Автомобілі

WHERE [№ двигуна] LIKE '% 111%';

Запит 3. Обчислити "вік" кожного з автомобілів, що стоять на обліку на поточну дату.

SELECT Рух. [№ автомобіля], 'Вік =', datediff (yy, Автомобілі. [Дата випуску], getdate ())

FROM Рух, Автомобілі, Операції

WHERE Автомобілі. [№ автомобіля] = Рух. [№ автомобіля]

and Операції. [Код операції] = Рух. [Код операції]

and Операції. [Найменування] like '% Постан%'

and [Дата операції] <getdate ();

Запит 4. Які операції проводилися з автомобілями за <i-му> району обліку в поточному місяці.

SELECT Рух. [№ автомобіля], Райони_учета. [Найменування району обліку], Операції. [Найменування операції]

FROM Операції, Райони_учета, Рух

WHERE Райони_учета. [Код району обліку] = Рух. [Код району обліку]

AND Операції. [Код операції] = Рух. [Код операції]

AND Райони_учета. [Найменування району обліку] = 'Казибек-Бійськ'

AND month ([Дата операції]) = month (getdate ());

Запит 5. Автомобілі, яких категорій квітів поставлені на облік в поточному році.

SELECT Рух. [№ автомобіля], Категоріі_цвета. [Найменування категорії кольору]

FROM Категоріі_цвета, Кольори, Автомобілі, Операції, Рух

WHERE Категоріі_цвета. [Код категорії кольору] = Кольори. [Код категорії кольору]

AND Кольори. [Код кольору] = Автомобілі. [Код кольору]

AND Автомобілі. [№ автомобіля] = Рух. [№ автомобіля]

AND Операції. [Найменування операції] = 'Постановка на облік'

AND year (Двіженіе. [Дата операції]) = year (getdate ());

Звіт 1. Картка обліку автотранспортного засобу

SELECT Рух. [№ автомобіля],

Рух. [РНН власника],

Операції. [Найменування операції],

Райони_учета. [Найменування району обліку],

Рух. [Дата операції]

FROM Рух, Операції, Райони_учета

WHERE Райони_учета. [Код району обліку] = Рух. [Код району обліку]

AND Операції. [Код операції] = Рух. [Код операції];

Звіт 2. Звіт про рух транспортних засобів на "I-ю" дату

SELECT Рух. [Дата операції],

Рух. [№ автомобіля],

Рух. [РНН власника],

Райони_учета. [Найменування району обліку],

Операції. [Найменування операції]

FROM Рух, Райони_учета, Операції

WHERE Райони_учета. [Код району обліку] = Рух. [Код району обліку]

AND Операції. [Код операції] = Рух. [Код операції]

AND year (Двіженіе. [Дата операції]) = year ('13 October 2007 ')

and month (Рух. [Дата операції]) = month ('13 October 2007 ')

and day (Рух. [Дата операції]) = day ('13 October 2007 ');

Звіт 3. Список автомобілів, власниками яких є фізичні особи

SELECT Рух. [№ автомобіля],

Категоріі_цвета. [Найменування категорії кольору]

FROM Категоріі_цвета, Кольори, Автомобілі, Операції, Рух

WHERE Категоріі_цвета. [Код категорії кольору] = Кольори. [Код категорії кольору]

AND Кольори. [Код кольору] = Автомобілі. [Код кольору]

AND Автомобілі. [№ автомобіля] = Рух. [№ автомобіля]

AND Операції. [Найменування операції] = 'Постановка на облік'

AND year (Двіженіе. [Дата операції]) = year (getdate ());

Опис процедур виконуваних у програмі

Процедура 1. Необхідно вибрати автомобілі, вік яких не перевищує 10 років.

USE РЕО _ ДАІ

GO

CREATE PROCEDURE Vyboravto1

AS

SELECT *

FROM Автомобілі

WHERE year ([Дата випуску])> year ("01 January 1997")

GO

execute Vyboravto1

go

Процедура 2. Необхідно вибрати автомобілі певної марки і з певним типом кузова.

USE РЕО _ ДАІ

GO

CREATE PROCEDURE Vyboravto2 @ marka_id int, @ kuzov_id int

AS

SELECT *

FROM Автомобілі

WHERE [Код марки авто] = @ marka_id

and [Код типу кузова] = @ kuzov_id

GO

USE РЕО _ ДАІ

GO

EXECUTE Vyboravto2 2, 2

GO

Висновок

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

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

У четвертому розділі була описана структура програми, її класи та модулі.

У п'ятому розділі було представлено докладний посібник з використання програми.

Додаток

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, DB, ADODB, ExtCtrls, DBCtrls, Grids, DBGrids, ComCtrls;

type

TForm1 = class (TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: 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;

ADOTable1: TADOTable;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

StatusBar1: TStatusBar;

N17: TMenuItem;

procedure N15Click (Sender: TObject);

procedure N3Click (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure N5Click (Sender: TObject);

procedure N16Click (Sender: TObject);

procedure N6Click (Sender: TObject);

procedure N7Click (Sender: TObject);

procedure N8Click (Sender: TObject);

procedure N9Click (Sender: TObject);

procedure N10Click (Sender: TObject);

procedure N11Click (Sender: TObject);

procedure N12Click (Sender: TObject);

procedure N13Click (Sender: TObject);

procedure N14Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

implementation

uses Unit2, Unit3, Unit4, Unit5;

{$ R *. dfm}

procedure TForm1. N15Click (Sender: TObject);

begin

Spravka. Show; / / close;

end;

procedure TForm1. N3Click (Sender: TObject);

begin

Zaprosy. Show;

end;

procedure TForm1. N4Click (Sender: TObject);

begin

Otchety. Show;

end;

procedure TForm1. N5Click (Sender: TObject);

begin

Procedury. Show;

end;

procedure TForm1. N16Click (Sender: TObject);

begin

close;

end;

procedure TForm1. N6Click (Sender: TObject);

begin

ADOTable1. Active: = false;

ADOTable1. TableName: = 'Райони _ обліку';

ADOTable1. Active: = true;

StatusBar1. SimpleText: = n6. Caption;

end;

procedure TForm1. N7Click (Sender: TObject);

begin

ADOTable1. Active: = false;

ADOTable1. TableName: = "Операції ';

ADOTable1. Active: = true;

StatusBar1. SimpleText: = n7. Caption;

end;

procedure TForm1. N8Click (Sender: TObject);

begin

ADOTable1. Active: = false;

ADOTable1. TableName: = 'Марки _ автомобіля ";

ADOTable1. Active: = true;

StatusBar1. SimpleText: = n8. Caption;

end;

procedure TForm1. N9Click (Sender: TObject);

begin

ADOTable1. Active: = false;

ADOTable1. TableName: = 'Типи _ кузова';

ADOTable1. Active: = true;

StatusBar1. SimpleText: = n9. Caption;

end;

procedure TForm1. N10Click (Sender: TObject);

begin

ADOTable1. Active: = false;

ADOTable1. TableName: = 'Категорії _ кольору';

ADOTable1. Active: = true;

StatusBar1. SimpleText: = n10. Caption;

end;

procedure TForm1. N11Click (Sender: TObject);

begin

ADOTable1. Active: = false;

ADOTable1. TableName: = 'Кольори';

ADOTable1. Active: = true;

StatusBar1. SimpleText: = n11. Caption;

end;

procedure TForm1. N12Click (Sender: TObject);

begin

ADOTable1. Active: = false;

ADOTable1. TableName: = 'Автомобілі';

ADOTable1. Active: = true;

StatusBar1. SimpleText: = n12. Caption;

end;

procedure TForm1. N13Click (Sender: TObject);

begin

ADOTable1. Active: = false;

ADOTable1. TableName: = 'Рух';

ADOTable1. Active: = true;

StatusBar1. SimpleText: = n13. Caption;

end;

procedure TForm1. N14Click (Sender: TObject);

begin

ADOTable1. Active: = false;

ADOTable1. TableName: = 'Власники';

ADOTable1. Active: = true;

StatusBar1. SimpleText: = n14. Caption;

end;

end.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB, Mask, Buttons;

type

TZaprosy = class (TForm)

ADODataSet1: TADODataSet;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

MaskEdit1: TMaskEdit;

ComboBox1: TComboBox;

Label6: TLabel;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

SpeedButton3: TSpeedButton;

SpeedButton4: TSpeedButton;

SpeedButton5: TSpeedButton;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

procedure SpeedButton1Click (Sender: TObject);

procedure SpeedButton2Click (Sender: TObject);

procedure SpeedButton3Click (Sender: TObject);

procedure SpeedButton4Click (Sender: TObject);

procedure SpeedButton5Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Zaprosy: TZaprosy;

implementation

{$ R *. dfm}

procedure TZaprosy. SpeedButton1Click (Sender: TObject);

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'SELECT Автомобілі. [РНН власника], COUNT (Автомобілі. [№ автомобіля])' +

'FROM Автомобілі' +

/ / 'WHERE Власники. [РНН власника] = Автомобілі. [РНН власника] ';

'GROUP BY Автомобілі. [РНН власника] '+

'ORDER BY Автомобілі. [РНН власника]; ';

adodataset1. Active: = true;

end;

procedure TZaprosy. SpeedButton2Click (Sender: TObject);

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'SELECT [№ автомобіля], [№ двигуна]' +

'FROM Автомобілі' +

'WHERE [№ двигуна] LIKE'+''''+'%'+ MaskEdit1. Text +'%'+'''';

adodataset1. Active: = true;

end;

procedure TZaprosy. SpeedButton3Click (Sender: TObject);

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'SELECT Рух. [№ автомобіля], datediff (yy, Автомобілі. [Дата випуску], getdate ())' +

'FROM Рух, Автомобілі, Операції' +

'WHERE Автомобілі. [№ автомобіля] = Рух. [№ автомобіля] '+

'And Операції. [Код операції] = Рух. [Код операції] '+

'And Операції. [Найменування операції] like''% Постан %'''+

'And [Дата операції] <getdate ();';

adodataset1. Active: = true;

end;

procedure TZaprosy. SpeedButton4Click (Sender: TObject);

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'SELECT Рух. [№ автомобіля], Райони_учета. [Найменування району обліку], Операції. [Найменування операції] '+

'FROM Операції, Райони_учета, Рух' +

'WHERE Райони_учета. [Код району обліку] = Рух. [Код району обліку] '+

'AND Операції. [Код операції] = Рух. [Код операції] '+

'AND Райони_учета. [Найменування району обліку] like'+''''+'%'+ combobox1. Text +'%'+'''' +

'AND month ([Дата операції]) = month (getdate ()); ';

adodataset1. Active: = true;

end;

procedure TZaprosy. SpeedButton5Click (Sender: TObject);

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'SELECT Рух. [№ автомобіля], Категоріі_цвета. [Найменування категорії кольору] '+

'FROM Категоріі_цвета, Кольори, Автомобілі, Операції, Рух' +

'WHERE Категоріі_цвета. [Код категорії кольору] = Кольори. [Код категорії кольору] '+

'AND Кольори. [Код кольору] = Автомобілі. [Код кольору] '+

'AND Автомобілі. [№ автомобіля] = Рух. [№ автомобіля] '+

'AND Операції. [Найменування операції] =''Постановка на облік'''+

'AND year (Двіженіе. [Дата операції]) = year (getdate ());';

adodataset1. Active: = true;

end;

end.

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, Grids, DBGrids, DB, ADODB, Mask, Menus,

Word2000, OleServer;

type

TOtchety = class (TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

ADODataSet2: TADODataSet;

DBGrid1: TDBGrid;

DataSource1: TDataSource;

Label4: TLabel;

ComboBox1: TComboBox;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

SpeedButton3: TSpeedButton;

Label5: TLabel;

Label6: TLabel;

ComboBox2: TComboBox;

Label7: TLabel;

N2: TMenuItem;

WordDocument1: TWordDocument;

WordApplication1: TWordApplication;

SaveDialog1: TSaveDialog;

procedure N1Click (Sender: TObject);

procedure SpeedButton1Click (Sender: TObject);

procedure SpeedButton2Click (Sender: TObject);

procedure SpeedButton3Click (Sender: TObject);

procedure N2Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Otchety: TOtchety;

otchetnum: integer;

implementation

uses Unit6;

{$ R *. dfm}

procedure TOtchety. N1Click (Sender: TObject);

var

c, n: integer;

s, rs: string;

begin

form6. Show;

/ / Leep (10);

for n: = 0 to adodataset2. RecordCount-1 do

begin

rs: ='';

s: ='';

if n = 0 then

begin

for c: = 0 to DBGrid1. Columns. Count-1 do

begin

s: = DBGrid1. Columns [c]. FieldName +'';

rs: = rs + s;

end;

form6. Memo1. Lines. Add (rs);

rs: ='';

s: ='';

end;

for c: = 0 to DBGrid1. Columns. Count-1 do

begin

s: = DBGrid1. Columns [c]. Field. AsString +'';

rs: = rs + s;

end;

form6. memo1. Lines. Add (rs);

adodataset2. Next;

end;

begin

if form6. savedialog1. Execute then

form6. memo1. Lines. SaveToFile (form6. savedialog1. FileName);

end;

end;

procedure TOtchety. SpeedButton1Click (Sender: TObject);

begin

adodataset2. Active: = false;

adodataset2.commandText: = 'SELECT Рух. [№ автомобіля], Рух. [РНН власника], '+

"Операції. [Найменування операції], Райони_учета. [Найменування району обліку], '+

'Рух. [Дата операції] '+

'FROM Рух, Операції, Райони_учета' +

'WHERE Рух. [№ автомобіля] like'+''''+'%'+ combobox1. Text +'%'+'''' +

'AND Райони_учета. [Код району обліку] = Рух. [Код району обліку] '+

'AND Операції. [Код операції] = Рух. [Код операції]; ';

adodataset2. Active: = true;

end;

procedure TOtchety. SpeedButton2Click (Sender: TObject);

begin

adodataset2. Active: = false;

adodataset2.commandText: = 'SELECT [№ автомобіля], Автомобілі. [РНН власника], Власники. [ПІБ / найменування] '+

'FROM Автомобілі, Власники' +

'WHERE Власники. [РНН власника] = Автомобілі. [РНН власника] '+

'AND [Ознака власника] =''ф''' +

'Order by Власники. [ПІБ / найменування] ';

adodataset2. Active: = true;

end;

procedure TOtchety. SpeedButton3Click (Sender: TObject);

begin

/ / QuotedStr (Maskedit2. Text);

adodataset2. Active: = false;

adodataset2.commandText: = 'SELECT Рух. [Дата операції], Рух. [№ автомобіля], Рух. [РНН власника], '+

'Райони_учета. [Найменування району обліку], Операції. [Найменування операції] '+

'FROM Рух, Райони_учета, Операції' +

'WHERE Райони_учета. [Код району обліку] = Рух. [Код району обліку] '+

'AND Операції. [Код операції] = Рух. [Код операції] '+

'And Рух. [Дата операції] ='''+ ComboBox2. Text +'''';

/ / 'AND year (Рух. [Дата операції]) = year (''13 October 2007'') '+

/ / 'And month (Рух. [Дата операції]) = month (''13 October 2007'') '+

/ / 'And day (Рух. [Дата операції]) = day (''13 October 2007''); ';

/ / 'And SHTRAFI. Oplacheno =''Оплачено''AND dbo. SHTRAFI. Data BETWEEN'''+ MaskEdit3. Text +'''AND''' + MaskEdit4. Text +'''' +

/ / 'AND Aaeea? aoee. "Aaoa iiaa? E "='''+ ComboBox2. Text +''''+

adodataset2. Active: = true;

end;

procedure TOtchety. N2Click (Sender: TObject);

var filename, ran1: Olevariant;

rowcount, colcount, i, j: integer;

temp: string;

begin

savedialog1. FileName: = 'otchet' + inttostr (otchetnum) + '. doc '; / / ім'я файлу

otchetnum: = otchetnum +1; ​​/ / формування слід звіту

wordapplication1. Connect; / / з'єднання

filename: = savedialog1. FileName;

wordapplication1. Documents. Add (emptyparam, emptyparam, emptyparam, emptyparam); / / створення нового файлу

worddocument1. connectto (wordapplication1. activedocument); / / звернеться до новому файлу

/ / Ran1: = worddocument1. Range;

rowcount: = adodataset2. RecordCount; / / скільки рядків потрібно створити у файлі

colcount: = dbgrid1. Columns. Count; / / скільки стовпців потрібно створити у файлі

worddocument1. Tables. Add (worddocument1. Range, rowcount, colcount, emptyparam, emptyparam); / / ство - е рядків і стовпців

for i: = 1 to rowcount do

begin

for j: = 1 to colcount do

begin

temp: = dbgrid1. Fields [j-1]. AsString; / / зміст комірки в таблиці

worddocument1. Tables. Item (1). cell (i, j). range. text: = temp; / / занести в doc

end;

adodataset2. Next; / / наступна рядок

end;

WordApplication1. Visible: = True; / / зробити документ дивись

worddocument1. SaveAs (filename); / / зберегти документ

end;

end.

procedure TForm3. BitBtn1Click (Sender: TObject);

begin

QuotedStr (maskedit1. Text);

QuotedStr (maskedit2. Text);

adodataset2. Active: = false;

adodataset2.commandText: = 'SELECT dbo. UDOSTOVERENIYA. N_udostovereniya, dbo. UDOSTOVERENIYA. Data_vipiski, dbo. UDOSTOVERENIYA. Srok_deistviya, dbo. INSPEKTOR. FIO '+

'FROM dbo. UDOSTOVERENIYA INNER JOIN '+

'Dbo. INSPEKTOR ON dbo. UDOSTOVERENIYA. Kod_inspectora = dbo. INSPEKTOR. Kod_inspektora '+

'WHERE (dbo. INSPEKTOR. FIO LIKE'+'''%'+ Edit3. Text +'%'+''' AND dbo. UDOSTOVERENIYA. Data_vipiski BETWEEN''' + MaskEdit1. Text +'''AND''' + MaskEdit2. Text +''') ';

adodataset2. Active: = true;

end.

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB, Buttons;

type

TProcedury = class (TForm)

ADODataSet1: TADODataSet;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

Label1: TLabel;

Label2: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

ComboBox1: TComboBox;

Label8: TLabel;

ComboBox2: TComboBox;

ComboBox3: TComboBox;

ComboBox4: TComboBox;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

Label10: TLabel;

Label11: TLabel;

procedure ComboBox1KeyPress (Sender: TObject; var Key: Char);

procedure ComboBox3KeyPress (Sender: TObject; var Key: Char);

procedure ComboBox2KeyPress (Sender: TObject; var Key: Char);

procedure ComboBox3Change (Sender: TObject);

procedure ComboBox4Change (Sender: TObject);

procedure SpeedButton1Click (Sender: TObject);

procedure SpeedButton2Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Procedury: TProcedury;

implementation

{$ R *. dfm}

procedure TProcedury.comboBox1KeyPress (Sender: TObject; var Key: Char);

begin

if not (key in [0 ". '9 ', # 8]) then key: = # 0;

end;

procedure TProcedury.comboBox3KeyPress (Sender: TObject; var Key: Char);

begin

if not (key in [0 ". '9 ', # 8]) then key: = # 0;

end;

procedure TProcedury.comboBox2KeyPress (Sender: TObject; var Key: Char);

begin

if not (key in [0 ". '9 ', # 8]) then key: = # 0;

end;

procedure TProcedury.comboBox3Change (Sender: TObject);

var

i: integer;

begin

for i: = 0 to ComboBox3. Items. Count do

if ComboBox3. ItemIndex = i then ComboBox1. ItemIndex: = i;

end;

procedure TProcedury.comboBox4Change (Sender: TObject);

var

i: integer;

begin

for i: = 0 to ComboBox4. Items. Count do

if ComboBox4. ItemIndex = i then ComboBox2. ItemIndex: = i;

end;

procedure TProcedury. SpeedButton1Click (Sender: TObject);

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'execute Vyboravto1';

adodataset1. Active: = true;

end;

procedure TProcedury. SpeedButton2Click (Sender: TObject);

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'execute Vyboravto2''' + combobox1. Text +''',''' + combobox2. Text +'''';

adodataset1. Active: = true;

end;

end.

unit Unit5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, Buttons;

type

TSpravka = class (TForm)

DataSource1: TDataSource;

DBGrid1: TDBGrid;

ADODataSet1: TADODataSet;

Label5: TLabel;

Label8: TLabel;

Label3: TLabel;

ComboBox4: TComboBox;

Label11: TLabel;

Label12: TLabel;

ComboBox5: TComboBox;

Label14: TLabel;

Label15: TLabel;

ComboBox6: TComboBox;

BitBtn1: TBitBtn;

procedure BitBtn1Click (Sender: TObject);

{Private declarations}

public

{Public declarations}

end;

var

Spravka: TSpravka;

sum1, sum2, sum3: boolean;

implementation

{$ R *. dfm}

procedure TSpravka. BitBtn1Click (Sender: TObject);

begin

sum1: = false;

sum2: = false;

sum3: = false;

if ComboBox4. Text <>''then sum1: = true;

if ComboBox5. Text <>''then sum2: = true;

if ComboBox6. Text <>''then sum3: = true;

if (sum1) and (sum2) and (sum3) then

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'SELECT Автомобілі. *' +

'FROMАвтомобілі, Маркі_автомобіля, Кольори, Тіпи_кузова' +

'WHERE Автомобілі. [Код типу кузова] = Тіпи_кузова. [Код типу кузова] '+

'AND Автомобілі. [Код марки авто] = Маркі_автомобіля. [Код марки авто] '+

'AND Автомобілі. [Код кольору] = Кольори. [Код кольору] '+

'AND Тіпи_кузова. [Найменування] ='''+ ComboBox4. Text +''''+

'AND Маркі_автомобіля. [Найменування] ='''+ ComboBox5. Text +''''+

'AND Кольори. [Найменування] ='''+ ComboBox6. Text +'''';

adodataset1. Active: = true;

end;

if (not sum1) and (not sum2) and (not sum3) then

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'SELECT *' +

'FROM Автомобілі';

adodataset1. Active: = true;

end;

if (not sum1) and (not sum2) and (sum3) then

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'SELECT Автомобілі. *' +

'FROMАвтомобілі, Кольори' +

'WHERE Автомобілі. [Код кольору] = Кольори. [Код кольору] '+

'AND Кольори. [Найменування] ='''+ ComboBox6. Text +'''';

adodataset1. Active: = true;

end;

if (not sum1) and (sum2) and (not sum3) then

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'SELECT Автомобілі. *' +

'FROMАвтомобілі, Маркі_автомобіля' +

'WHERE Автомобілі. [Код марки авто] = Маркі_автомобіля. [Код марки авто] '+

'AND Маркі_автомобіля. [Найменування] ='''+ ComboBox5. Text +'''';

adodataset1. Active: = true;

end;

if (sum1) and (not sum2) and (not sum3) then

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'SELECT Автомобілі. *' +

'FROMАвтомобілі, Тіпи_кузова' +

'WHERE Автомобілі. [Код типу кузова] = Тіпи_кузова. [Код типу кузова] '+

'AND Тіпи_кузова. [Найменування] ='''+ ComboBox4. Text +'''';

adodataset1. Active: = true;

end;

if (not sum1) and (sum2) and (sum3) then

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'SELECT Автомобілі. *' +

'FROMАвтомобілі, Маркі_автомобіля, Кольори' +

'WHERE Автомобілі. [Код марки авто] = Маркі_автомобіля. [Код марки авто] '+

'AND Автомобілі. [Код кольору] = Кольори. [Код кольору] '+

'AND Маркі_автомобіля. [Найменування] ='''+ ComboBox5. Text +''''+

'AND Кольори. [Найменування] ='''+ ComboBox6. Text +'''';

adodataset1. Active: = true;

end;

if (sum1) and (not sum2) and (sum3) then

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'SELECT Автомобілі. *' +

'FROMАвтомобілі, Маркі_автомобіля, Кольори, Тіпи_кузова' +

'WHERE Автомобілі. [Код типу кузова] = Тіпи_кузова. [Код типу кузова] '+

'AND Автомобілі. [Код кольору] = Кольори. [Код кольору] '+

'AND Тіпи_кузова. [Найменування] ='''+ ComboBox4. Text +''''+

'AND Кольори. [Найменування] ='''+ ComboBox6. Text +'''';

adodataset1. Active: = true;

end;

if (sum1) and (sum2) and (not sum3) then

begin

adodataset1. Active: = false;

adodataset1.commandText: = 'SELECT Автомобілі. *' +

'FROMАвтомобілі, Маркі_автомобіля, Тіпи_кузова' +

'WHERE Автомобілі. [Код типу кузова] = Тіпи_кузова. [Код типу кузова] '+

'AND Автомобілі. [Код марки авто] = Маркі_автомобіля. [Код марки авто] '+

'AND Тіпи_кузова. [Найменування] ='''+ ComboBox4. Text +''''+

'AND Маркі_автомобіля. [Найменування] ='''+ ComboBox5. Text +'''';

adodataset1. Active: = true;

end;

end;

end.

unit Unit6;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm6 = class (TForm)

Memo1: TMemo;

SaveDialog1: TSaveDialog;

Button1: TButton;

procedure Button1Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form6: TForm6;

implementation

{$ R *. dfm}

procedure TForm6. Button1Click (Sender: TObject);

begin

memo1. Lines. Text: ='';

form6. Hide;

end; end.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
117.5кб. | скачати


Схожі роботи:
Створення бази даних РЕО ДАІ
Створення бази даних РЕО ДАІ 2
Створення бази даних критичних властивостей речовин в редакторі баз даних MS Access
Створення бази даних
Створення бази даних для накладної
Створення бази даних для організації
Алгоритм створення бази даних складського обліку
Створення таблиці бази даних в Microsoft Access
Система баз даних MS Access Створення бази
© Усі права захищені
написати до нас