Бакалавр
Дипломные и курсовые на заказ

Базы данных

ДипломнаяПомощь в написанииУзнать стоимостьмоей работы

Разработка алгоритмов работы программы После запуска программы происходит подключение модулей. Вход в БД происходит через главную форму. Далее пользователь необходимо выбрать нужную форму для работы с данными, либо для работы с отчетами. При открытии форм из меню «Справочники» перед пользователем отображается форма, где можно выбрать нужную запись и производить необходимые операции с данными. При… Читать ещё >

Базы данных (реферат, курсовая, диплом, контрольная)

Введение

Индустрия разработки автоматизированных информационных систем управления появилась в 50 — 60-х годах и к концу века приобрела вполне законченные формы.

Производительность является главным фактором, определяющим эффективность системы. Правильное проектное решение служит основой высокопроизводительной системы.

На этапе проектирования формируется модель данных. Проектировщики в качестве исходной информации получают результаты анализа. Конечным продуктом этапа проектирования являются:

· схема базы данных (на основании ER-модели, разработанной на этапе анализа);

· набор спецификаций модулей системы (они строятся на базе моделей функций).

Проектирование информационных систем охватывает три основные области:

· проектирование объектов данных, которые будут реализованы в базе данных;

· проектирование программ, экранных форм, отчетов, которые будут обеспечивать выполнение запросов к данным;

· учет конкретной среды или технологии, а именно: топологии сети, конфигурации аппаратных средств, используемой архитектуры (файл-сервер или клиент-сервер), параллельной обработки, распределенной обработки данных и т. п.

В реальных условиях проектирование — это поиск способа, который удовлетворяет требованиям функциональности системы средствами имеющихся технологий с учетом заданных ограничений.

В курсовой работе будет разработана информационная система «Электронный деканат». Данная система направлена на информационную поддержку деканата, автоматизирует такие виды деятельности как: сбор, хранение, анализ данных об успеваемости студентов и данных о преподавателях. В ходе проектирования информационной системы будет произведено проектирование объектов данных, проектирование экранных форм, отчетов, которые будут обеспечивать выполнение запросов к данным.

1. Словесное описание предметной области Автоматизированная система «Электронный деканат», основанная на современной базе данных, представляет собой программно-технический комплекс, предназначенный для автоматизации деятельности сотрудника деканата. Основной функцией Электронного деканата является хранение и обработка информации о ходе учебного процесса и его участниках. Электронный деканат позволяет выполнять ряд функций традиционного деканата на более технологичном уровне, значительно сокращая время выполнения определенной работы традиционного деканата.

Автоматизация деятельности деканата позволяет:

· Значительно сократить время, затрачиваемое сотрудниками деканата на выполнение регламентных процедур (например, редактирование информации, поиск личных данных студентов и т. д.);

· Упростить процедуру действий с данными, которые используются в период учебного процесса;

· Автоматизировать формирование и подготовку на печать необходимых документов.

База данных обеспечивает хранение, накопление и предоставление всей информации об учащихся, предметах, преподавателях, успеваемости учащихся.

Задачи Электронного деканата:

1. Учет контингента

2. Автоматизированная подготовка документов:

· формирование и печать ведомостей

· ведение карточек студентов

· печать (экспорт в MS Excel) любой таблицы с экрана

· формирование и печать справок, академических справок

· формирование и печать списков студентов, имеющих одну или более задолженностей по предметам

· подготовка сведений об отличниках (на повышенную стипендию), студентах, не имеющих троек (на стипендию)

3. Хранение и выдача информации по текущему состоянию и истории учебного процесса.

Потребителями информации из БД являются сотрудники деканата.

Входная информация поступает в БД в виде:

? данных о студентах;

? данных о преподавателях;

На выходе пользователи системы получают информацию в виде:

? списков студентов по группам;

? ведомостей;

? личных карточек студентов;

? справок;

? академических справок.

Проанализировав предметную область и сферу работы сотрудника деканата, можно сказать, что разработка рассматриваемой базы данных весьма актуальна и действительно позволит автоматизировать работу пользователя.

2. Построение схемы функциональных зависимостей На основе проведенного анализа предметной области строится схема функциональных зависимостей, включающая в себя все атрибуты, определенные на предыдущем этапе, и зависимости объединяющие их.

Схема функциональных зависимостей представлена на рисунке 2.1.

Рисунок 2.1 — Схема функциональных зависимостей Из приведенной схемы видно, что атрибуты «дата», «оценка» функционально зависят от атрибута «№ оценки». Аналогично атрибуты «ФИО», «Дата рождения», «Пол», «Курс», «Гражданство», «Форма обучения», «Основа» функционально зависят от атрибута «№ студента» .

Атрибут «Название» зависит от атрибута «№ специальности». Каждая специальность может включать в себя несколько групп.

Атрибут «Название» зависит от атрибута «№ группы». Каждая группа включает множество студентов.

Также атрибут «Название» зависит от атрибута «№ должности». Одну должность могут занимать несколько преподавателей.

Атрибуты «Название», «Кабинет», «Телефон» зависят от атрибута «№ кафедры». Каждая кафедра включает несколько преподавателей.

Атрибуты «ФИО», «Адрес» «Телефон» зависят от атрибута «№ преподавателя». Каждый преподаватель может вести несколько предметов.

2.1 Формирование 1НФ Исходное отношение, находящееся в 1НФ, строится из всех атрибутов, выделенных в предметной области, и представлено на рисунке 2.1.1.

Дата

Оценка

№ оценки *

№ предмета *

Название

№ преподавателя

ФИО

Адрес

Телефон

№ должности

Название

№ кафедры

Название

Кабинет

Телефон

№ специальности

Название

№ группы

Название

№ студента *

ФИО

Дата рождения

Пол

Курс

Гражданство

Форма обучения

Основа

Рисунок 2.1.1 — Исходное отношение в 1НФ Первичными ключами исходного отношения являются атрибуты: «№ оценки», «№ предмета», «№ студента». Все атрибуты, не вошедшие в первичный ключ, непосредственно или транзитивно, полностью или частично зависят от первичного ключа.

2.2 Нормализация отношений Для перевода отношения из 1НФ в 2НФ необходимо исключить из исходного отношения частичные функциональные зависимости неключевых атрибутов от первичного ключа. В представленном на рисунке 2.2 отношении в соответствии со схемой функциональных зависимостей присутствуют частичные функциональные зависимости одних атрибутов от других атрибутов, которые являются частью составного первичного ключа исходного отношения. Так присутствуют следующие частичные функциональные зависимости: атрибутов «ФИО», «Дата рождения», «Пол», «Курс», «№ группы», «Название», «Гражданство», «Форма обучения», «Основа» от атрибута «№ студента»; атрибутов «№ преподавателя», «№ студента», «№ предмета», «Оценка», «Дата» от атрибута «№ оценки»; атрибута «Название» от атрибута «№ предмета». Для исключения этих зависимостей по правилам декомпозиции исходное отношение R разбивается на четыре отношения R1, R2, R3, R4.

Рисунок 2.2.1 — Схема отношений в 2НФ Далее необходимо привести полученные отношения R1, R2, R3, R4 к 3НФ. Для этого требуется исключить присутствующие в них транзитивные зависимости. В отношении R3 атрибуты «Название группы», «№ специальности», «Название» зависят от первичного ключа транзитивно через атрибут «№ группы». Для перевода этого отношения в 3НФ его необходимо разбить по атрибуту «№ группы» на два отношения R3 и R5. В отношении R5 атрибут «Название» зависит от первичного ключа транзитивно через атрибут «№ специальности». Для перевода этого отношения в 3НФ его необходимо разбить по атрибуту «№ специальности» на два отношения R5 и R6. В отношении R1 атрибут «Название должности» зависит от первичного ключа транзитивно через атрибут «№ должности». Для перевода этого отношения в 3НФ его необходимо разбить по атрибуту «№ должности» на два отношения R1 и R7. В отношении R1 атрибуты «Название кафедры», «Кабинет», «Телефон» зависят от первичного ключа транзитивно через атрибут «№ кафедры». Для перевода этого отношения в 3НФ его необходимо разбить по атрибуту «№ кафедры» на два отношения R1 и R8.

В результате получим отношения R1, R2, R3, R4, R5, R6, R7, R8. Поскольку во всех полученных отношениях все функциональные зависимости сводятся к полной нетранзитивной зависимости от первичного ключа (т. е. отсутствуют зависимости частей составных первичных ключей от неключевых атрибутов) эта схема удовлетворяет всем требованиям НФБК и является конечным результатом концептуального проектирования (рисунок 2.2.2).

Рисунок 2.2.2 — Схема отношений в 3НФ

3. Реализация БД

3.1 Создание БД средствами утилиты Enterprise Manager в формате MS SQL

база данные утилита программа Запускается среда SQL Server Management Studio. Проводится соединение с сервером ADMIN. В обозревателе выбирается подкаталог Базы данных, в котором создается своя база данных (БД, рисунок 3.1).

Рисунок 3.1 — Создание базы данных После создания базы данных в ней формируются необходимые таблицы.

Первой создается таблица, которая будет хранить данные о кафедрах. Описываются поля, которые будут присутствовать в таблице, указывается тип поля, а при необходимости — спецификации идентификатора и будет ли поле ключевым.

Описанные поля:

— id_kafedra — уникальный номер кафедры, ключевое поле, тип — целое (int);

— nazvanie — название кафедры, текстовое поле (nvarchar), размер 50 символов;

— kabinet — номер кабинета, в котором располагается кафедра, текстовое поле (nvarchar), размер 50 символов;

— telephone — контактный телефон, текстовое поле (nvarchar), размер 50 символов;

Для всех полей отключается свойство «Разрешить значения NULL» (поля обязательны для ввода). Далее таблица сохраняется с именем «Kafedra» .

Таблица представлена на рисунке 3.2.

Рисунок 3.2 — Таблица «Кафедра»

Создается новая таблица, которая будет хранить данные о должностях. Описываются поля, которые будут присутствовать в таблице.

Описанные поля:

— id_dolzhnost — уникальный номер должности, ключевое поле, тип — целое (int);

— nazvanie — название должности, которую занимают преподаватели, тип — текстовый (varchar), размер 50 символов. Далее таблица сохраняется с именем «Dolzhnost» .

Таблица представлена на рисунке 3.3.

Рисунок 3.3 — Таблица «Должность»

Создается новая таблица, которая будет хранить данные о специальностях, которые есть на факультете. Описываются поля, которые будут присутствовать в таблице.

Описанные поля:

— id_spec — уникальный номер специальности, ключевое поле, тип — целое (int);

— nazvanie — название специальности, текстовое поле (varchar), размер 50 символов;

— opisanie — описание специальности, текстовое поле (varchar), размер 50 символов.

Для поля «Nazvanie» отключается свойство «Разрешить значения NULL» (поле обязательно для ввода). Далее таблица сохраняется с именем «Specialnost». Таблица представлена на рисунке 3.4.

Рисунок 3.4 — Таблица «Специальности»

Создается новая таблица, которая будет хранить данные о группах. Описываются поля, которые будут присутствовать в таблице.

Описанные поля:

— id_gruppi — уникальный номер группы, ключевое поле, тип — целое (int);

— id_spec — идентификатор специальности, тип — целое (int);

— nazvanie — название группы, текстовое поле (char), размер 50 символов;

Для всех полей отключается свойство «Разрешить значения NULL» (поля обязательны для ввода). Далее таблица сохраняется с именем «Gruppa» .

Таблица представлена на рисунке 3.5.

Рисунок 3.5 — Таблица «Группа»

Создается новая таблица, которая будет хранить данные о преподавателях. Описываются поля, которые будут присутствовать в таблице.

Описанные поля:

— id_prepod — уникальный номер преподавателя, ключевое поле, тип — целое (int);

— id_dolzhnost — идентификатор должности, тип — целое (int);

— id_kafedri — идентификатор кафедры, тип — целое (int);

— FIO — ФИО преподавателя, текстовое поле (varchar), размер 250 символов;

— Adres — адрес преподавателя, текстовое поле (varchar), размер 50 символов;

— Telephone — контактный телефон преподавателя, текстовое поле (varchar), размер 50 символов.

Для всех полей кроме «Telephone» отключается свойство «Разрешить значения NULL» (поля обязательны для ввода). Далее таблица сохраняется с именем «Prepodavatel». Таблица представлена на рисунке 3.6.

Рисунок 3.6 — Таблица «Преподаватель»

Создается новая таблица, которая будет хранить данные о предметах. Описываются поля, которые будут присутствовать в таблице.

Описанные поля:

— id_predmeta — уникальный номер предмета, ключевое поле, тип — целое (int);

— prepodavatel — идентификатор преподавателя, тип — целое (int);

— nazvanie — название предмета, текстовое поле (varchar), размер 20 символов;

Для всех полей отключается свойство «Разрешить значения NULL» (поля обязательны для ввода). Далее таблица сохраняется с именем «Predmet» .

Таблица представлена на рисунке 3.7.

Рисунок 3.7 — Таблица «Предмет»

Создается новая таблица, которая будет хранить данные о студентах. Описываются поля, которые будут присутствовать в таблице.

Описанные поля:

— id_student — уникальный номер студента, ключевое поле, тип — целое (int);

— id_gruppi — идентификатор группы, тип — целое (int);

— Familiya — фамилия студента, текстовое поле (varchar), размер 30 символов;

— Imya — имя студента, текстовое поле (varchar), размер 30 символов;

— Otchestvo — отчество студента, текстовое поле (varchar), размер 30 символов;

— Data_r — дата рождения студента, тип — дата (datetime);

— Pol — пол студента, текстовое поле (varchar), размер 30 символов;

— Kurs — текущий курс, тип — целое (int);

— Forma — форма обучения, текстовое поле (varchar), размер 50 символов;

— Osnova — основа обучения, текстовое поле (varchar), размер 50 символов.

Для всех полей, отключается свойство «Разрешить значения NULL» (поля обязательны для ввода). Далее таблица сохраняется с именем «Student» .

Таблица представлена на рисунке 3.8.

Рисунок 3.8 — Таблица «Студенты»

Создается новая таблица, которая будет хранить данные об оценках студентов. Описываются поля, которые будут присутствовать в таблице.

Описанные поля:

— id_zapisi — уникальный номер выставленной оценки, ключевое поле, тип — целое (int);

— id_student — идентификатор студента, тип — целое (int);

— id_predmeta — идентификатор предмета, тип — целое (int);

— ocenka — оценка, тип — целое (int);

— data — дата, тип — дата (datetime).

Для всех полей, отключается свойство «Разрешить значения NULL» (поля обязательны для ввода). Далее таблица сохраняется с именем «Ocenka» .

Таблица представлена на рисунке 3.9.

Рисунок 3.9 — Таблица «Оценка»

После создания всех необходимых таблиц создается диаграмма базы данных. Для этого в поле создания диаграммы данных добавляются все таблицы. Затем указываются связи между таблицами. Связь ведется от неподчиненной таблицы к подчиненной. Диаграмма базы данных представлена на рисунке 3.10.

Рисунок 3.10 — Диаграмма базы данных

4. Разработка алгоритмов работы программы После запуска программы происходит подключение модулей. Вход в БД происходит через главную форму. Далее пользователь необходимо выбрать нужную форму для работы с данными, либо для работы с отчетами. При открытии форм из меню «Справочники» перед пользователем отображается форма, где можно выбрать нужную запись и производить необходимые операции с данными. При открытии формы «Студенты» можно произвести поиск по указанным характеристикам. При переводе в другую группу или повышении курса происходит обновление текущей записи. При переходе на форму «Группа» пользователь может открыть отчеты, которые отображают информацию о статистике групп и составе текущей. На форме «Оценки» пользователь может увидеть успеваемость студентов по различным категориям и получить соответствующую печатную форму.

Блок-схема данного процесса представлена в приложении, А на рисунке А.1.

5. Разработка приложения пользователя БД

5.1 Форма «Main»

Навигационная форма, с помощью которой можно перейти на дочерние формы для работы с данными и отчетами. На ней расположены следующие компоненты: таблица — Button (при нажатии переход на дочернюю форму), MainMenu (для перехода на дочерние формы и выхода).

Рисунок 5.1.1 — Форма «Main»

5.2 Форма «Data»

Форма содержит компоненты для подключения к базе. Компонент ADOConnection (для создания соединения с БД, расположенной на сервере); компонент DataSource, обеспечивающий связь таблиц с соответствующими компонентами ADOTable, который, в свою очередь, необходим для доступа к таблицам базы данных.

Рисунок 5.2.1 — Форма «Дата»

Чтобы создать соединение необходимо в свойстве ConnectionString компонента ADOConnection указать источник БД (рисунок 5.2.2, рисунок 5.2.3).

Рисунок 5.2.2 — Окно ADOConnection ConnectionString

Рисунок 5.2.3 — Создание соединения Для компонента ADOTable указывается свойство Connection:=ADOConnection1, а для того чтобы осуществить доступ к необходимой таблице указывается в свойстве TableName.

5.3 Форма «Результаты выборки»

Форма отображает результаты поиска, параметры для которого указываются на форме «Студенты». Для отображения данных используется DBGrid1, который связан с запросом на форме «Студенты» (Form2.DataSource1). Компонент Button1 позволяет закрыть форму.

Рисунок 5.3 -Форма «Результаты выборки»

5.4 Форма «Студенты»

На рисунке 5.4.1 приведена форма программы — «Студенты» (несет информацию о студентах деканата). На ней расположены следующие компоненты: таблица — DBGrid1 (таблица «Студенты»), компоненты DBNavigator, позволяющие пользователю перемещаться по записям в таблице и изменять их; компонент DataSource1, обеспечивающий связь таблиц с соответствующими компонентами ADOQuery1, который, в свою очередь, необходим для доступа к таблице базы данных, кнопки: Button1, Button2, Button3, Button4, Button5 — для удаления текущей записи, перевода студента на следующий курс, перевод в другую группу, поиска по группе, специальности соответственно; MainMenu — для перехода на главную форму.

Рисунок 5.4.1 -Форма «Студенты»

Для компонента ADOQuery3 задается следующие SQL-запрос:

DELETE FROM Ocenka

DELETE FROM Student

Перед выполнением запроса в него добавляется условие, которое указывает идентификатор студента (текущая запись). Запрос сначала удаляет все оценки студента, а потом удаляет данные студента.

Для компонента ADOQuery2 задается следующие SQL-запрос:

Update Student Set Kurs = Kurs+1

Перед выполнением запроса в него добавляется условие, которое указывает идентификатор студента (текущая запись). Запрос увеличивает для текущего студента курс на 1.

Для компонента ADOQuery1 задается следующий SQL-запрос:

Select Student. Famailiya, Student. Imya, Student. Otchestvo, Student. Data_r, Gruppa. Nazvanie, Student. Pol, Student. Kurs

FROM Student INNER JOIN Gruppa ON Student. Id_gruppi=Gruppa.Id_gruppi

Из запроса видно, что выбираются все поля из таблицы «Студент», связанные с главной таблицей «Группа» через поле Id_gruppi. Перед открытием формы «Результат выборки» компоненту DBGrid1 (форма «Результат выборки») свойству DataSource указывается ADOQuery1.

Для студента можно распечатать академическую справку (рис 5.4.2) и справку с места учебы (рис 5.4.3.)

Рисунок 5.4.2 — Отчет «Академическая справка»

Рисунок 5.4.3 — Отчет «Справка»

Кнопка «Печать» предназначена для активирования SQL запроса и формирования списка студентов группы. Данный отчет формируется в MS Excel (рисунок 5.4.4).

Рисунок 5.4.4 — Отчет «Студенты группы»

5.5 Форма «Специальность»

Создается новая форма. На рисунке 5.5 приведена форма программы — «Специальность» (несет информацию о специальностях деканата). На ней расположены следующие компоненты: два поля — DBEdit (таблица «Специальность»), компоненты DBNavigator, позволяющие пользователю перемещаться по записям в таблице и изменять их; label1 и label2 отображают на форме надписи: «Название» и «Описание» соответственно.

Рисунок 5.5 — Форма «Специальность»

5.6 Форма «Преподаватели»

Создается новая форма. На рисунке 5.6 приведена форма программы — «Преподаватели» (несет информацию о преподавателях). На ней расположены следующие компоненты: таблица — DBGrid1 (таблица «Преподаватели»), компоненты DBNavigator1, позволяющие пользователю перемещаться по записям в таблице и изменять их.

Рисунок 5.6 — Форма «Преподаватели»

5.7 Форма «Предмет»

Создается новая форма. На рисунке 5.7 приведена форма программы — «Преподаватели» (несет информацию о преподавателях). На ней расположены следующие компоненты: поле — DBEdit1 (таблица «Предмет»), компоненты DBNavigator1, позволяющие пользователю перемещаться по записям в таблице и изменять их. label1 отображает на форме надпись «Название» .

Рисунок 5.7 — Форма «Предмет»

5.8 Форма «Кафедра»

Создается новая форма. На рисунке 5.8 приведена форма программы — «Кафедра» (несет информацию о кафедрах). На ней расположены следующие компоненты: таблица — DBGrid1 (таблица «Кафедра»), компоненты DBNavigator1, позволяющие пользователю перемещаться по записям в таблице и изменять их.

Рисунок 5.8 — Форма «Кафедра»

5.9 Форма «Должности»

Создается новая форма. На рисунке 5.9 приведена форма программы — «Должности» (несет информацию о должностях). На ней расположены следующие компоненты: таблица — DBGrid1 (таблица «Должности»), компоненты DBNavigator1, позволяющие пользователю перемещаться по записям в таблице и изменять их.

Рисунок 5.9 — Форма «Должности»

5.10 Форма «Перевод студента в группу»

Создается новая форма. На рисунке 5.10 приведена форма программы — «Перевод студента в группу». На ней расположены следующие компоненты: таблица — DBLookupComboBox1 (список групп); компонент label1, отображающий надпись «Укажите название группы»; кнопка осуществляет изменение данных.

Рисунок 5.10 — Форма «Перевод студента в группу»

Для компонента ADOQuery1 задается следующий SQL-запрос:

'Update Student Set Id_gruppi = '+IntToStr (DBLookupComboBox1.KeyValue) +' Where Student. id_student = '+Form2.DBGrid1.DataSource.DataSet.FieldByName ('id_student').AsString);

Перед выполнением запроса передаются параметры о текущем студенте на форме «Студенты» и новую выбранную группу.

5.11 Форма «Оценка»

Создается новая форма. На рисунке 5.11 приведена форма программы — «Экзаменационные оценки» (несет информацию об оценках). На ней расположены следующие компоненты: DBLookupComboBox1 отображает данные о группе, DBLookupComboBox2 отображает данные о предмете, DateTimePicker позволяет выбрать временной диапазон для отчетов; компоненты DBNavigator1, позволяющие пользователю удалять данные. MainMenu — позволяет перейти на главную форму. Button’ы открывают запросы ADOQuery (для отчетов) и отображают данные в виде отчета (frxReport). Для передачи данных в отчет используется frxDBDataSet.

Рисунок 5.11.1 — Форма «Экзаменационные оценки»

Отчеты «Статистика по дисциплине», «Статистика по группе», «Статистика деканата» формируются на основании однотипных запросов (рисунок 5.11.2). Обработчики событий на нажатие соответствующих кнопок имеет следующий вид:

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add ('Select AVG (Ocenka) AS Sred, Student. Famailiya,');

ADOQuery1.SQL.Add (' (case when AVG (Ocenka)>=4 and AVG (Ocenka)<5 THEN ''Стипендия''');

ADOQuery1.SQL.Add (' when AVG (Ocenka)=5 THEN ''Повышенная стипендия''');

ADOQuery1.SQL.Add (' when AVG (Ocenka)<4 THEN ''Без стипендии''');

ADOQuery1.SQL.Add (' end) AS Стипендия');

ADOQuery1.SQL.Add (' From Ocenka INNER JOIN Student ON Ocenka. id_student=Student.id_student');

ADOQuery1.SQL.Add (' WHERE Data BETWEEN: ff AND: ll');

ADOQuery1.SQL.Add (' GROUP BY Student. id_student, Student. Famailiya');

ADOQuery1.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker5.Date);

ADOQuery1.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker6.Date);

ADOQuery1.Open;

frxReport2.Variables['pred']: =QuotedStr ('Успеваемость в деканате');

frxReport2.PrepareReport;

frxReport2.ShowPreparedReport;

Закрытие запроса Очистка Формирование sql-запроса для выборки Задаем параметры для отчета Подготовка отчета Открытие отчета

Рисунок 5.11.2 — Отчет «Успеваемость по деканату»

Отчет об успеваемости группы имеет следующий вид:

Рисунок 5.11.3 — Отчет «Успеваемость по группе»

5.12 Форма «Группа»

Создается новая форма. На рисунке 5.12.1 приведена форма программы — «Группа» (несет информацию о группах). На ней расположены следующие компоненты: DBLookupComboBox1 отображает данные о специальности, к которой относиться группа, поле — DBEdit (таблица «Группа»), компоненты DBNavigator1, позволяющие пользователю удалять данные. MainMenu — позволяет перейти на главную форму. Button1 и Button2 открывают запросы ADOQuery1 (для списка студентов группы) и ADOQuery2, ADOQuery3 (Для отображения успеваемости группы) и отображает данные в виде отчета (frxReport1 и frxReport2). Для передачи данных в отчет используется frxDBDataSet.

Рисунок 5.12.1 — Форма «Группа»

Для компонента ADOQuery1 задается следующий SQL-запрос:

Select Famailiya, Imya, Otchestvo, Data_r

FROM Student

ORDER BY Famailiya, Imya, Otchestvo

Перед открытием запроса передается параметр о текущей группе. После формирования отчета пользователю отображается отчет о списке студентов группы (рисунок 5.12.2).

Рисунок 5.12.2 — Отчет «Список группы»

Для компонента ADOQuery2 задается следующий SQL-запрос:

Select Gruppa. Nazvanie,(Select Count (*)FROM Student WHERE Pol = 'Муж' and Student. Id_gruppi = Gruppa. Id_gruppi) AS Unoshi,

(Select Count (*)FROM Student WHERE Pol = 'Жен' and Student. Id_gruppi = Gruppa. Id_gruppi) AS Devus,

(Select Count (*)FROM Student WHERE Student. Id_gruppi = Gruppa. Id_gruppi) AS Vsego

FROM Student INNER JOIN Gruppa ON Student. Id_gruppi = Gruppa. Id_gruppi

Group by Gruppa. Nazvanie, Gruppa. Id_gruppi

Для компонента ADOQuery3 задается следующий SQL-запрос:

Select (Select Count (*)FROM Student WHERE Pol = 'Муж') AS U_all,

(Select Count (*)FROM Student WHERE Pol = 'Жен') AS D_all,

(Select Count (*)FROM Student) AS All_

FROM Student

ADOQuery2 формирует данные о статистике по каждой группе, а ADOQuery3 формирует суммирующую информацию. Перед открытием запросов передается параметр о текущей группе. После формирования отчета пользователю отображается отчет о статистике групп (рисунок 5.12.3).

Рисунок 5.12.3 — Отчет «Статистика групп»

Заключение

Данная курсовая работа является актуальной и отвечает предъявленным к ней требованиям. В ходе работы была разработана база данных, автоматизирующая работу сотрудника деканата.

Программа предназначена для ведения в базы данных. В ней пользователю предлагаются следующие возможности: вести учет успеваемости студентов, а также получать отчеты о текущем положении дел в разрезе предметов, групп; учет преподавателей на кафедре, а так же идентифицирующая информация о должности преподавателей.

1. Базы данных: модели, разработки, реализация / Т. С. Карпова. — СПб.: Питер, 2002.

2. Работа с базами данных в Delphi. / Гофман В. Э., Хомоненко А. Д. — СПб.: БХВ — Петербург, 2000. — 656с.: ил.

3. Базы данных: Учебник для ВУЗов / Под ред. проф. А. Д. Хомоненко. — СПб. КОРОНА принт, 2004

Приложение, А Общая блок-схема программы Процедура «Работа с данными»

Процедура «Поиск»

Приложение Б Листинг программы Форма «Главная»

unit Main;

interface

uses

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

Dialogs, Menus, StdCtrls;

type

TForm1 = class (TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

N6: TMenuItem;

N7: TMenuItem;

N8: TMenuItem;

N9: TMenuItem;

procedure N2Click (Sender: TObject);

procedure N3Click (Sender: TObject);

procedure N4Click (Sender: TObject);

procedure N5Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure N6Click (Sender: TObject);

procedure N7Click (Sender: TObject);

procedure N8Click (Sender: TObject);

procedure N9Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Stud, Gruppa, Predmet, Spec, Ocenka, Prepod, Kafedra, Dolzh;

{$R *.dfm}

procedure TForm1. N2Click (Sender: TObject);

begin

Form1.Hide;

Form2.Show;

end;

procedure TForm1. N3Click (Sender: TObject);

begin

Form1.Hide;

Form3.Show;

end;

procedure TForm1. N4Click (Sender: TObject);

begin

Form1.Hide;

Form10.Show;

end;

procedure TForm1. N5Click (Sender: TObject);

begin

Application.Terminate;

end;

procedure TForm1. N6Click (Sender: TObject);

begin

Form1.Hide;

Form11.Show;

end;

procedure TForm1. N7Click (Sender: TObject);

begin

Form1.Hide;

Form12.Show;

end;

procedure TForm1. N8Click (Sender: TObject);

begin

Form1.Hide;

Form13.Show;

end;

procedure TForm1. N9Click (Sender: TObject);

begin

Form1.Hide;

Form14.Show;

end;

procedure TForm1. Button1Click (Sender: TObject);

begin

Form1.Hide;

Form4.Show;

end;

procedure TForm1. Button2Click (Sender: TObject);

begin

Form1.Hide;

Form5.Show;

end;

procedure TForm1. Button3Click (Sender: TObject);

begin

Form1.Hide;

Form6.Show;

end;

procedure TForm1. Button4Click (Sender: TObject);

begin

Form1.Hide;

Form7.Show;

end;

end.

Форма «Студент»

unit Stud;

interface

uses

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

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

type

TForm2 = class (TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

GroupBox3: TGroupBox;

DBLookupComboBox1: TDBLookupComboBox;

DBLookupComboBox2: TDBLookupComboBox;

Edit1: TEdit;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button6: TButton;

Button7: TButton;

DataSource1: TDataSource;

ADOQuery1: TADOQuery;

ADOQuery2: TADOQuery;

ADOQuery3: TADOQuery;

procedure N1Click (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure Button7Click (Sender: TObject);

procedure Button6Click (Sender: TObject);

procedure Button5Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Main, Data, Viborka, perevod;

{$R *.dfm}

procedure TForm2. N1Click (Sender: TObject);

begin

Form2.Close;

Form1.Show;

end;

procedure TForm2. FormClose (Sender: TObject; var Action: TCloseAction);

begin

Form1.Show;

end;

procedure TForm2. Button1Click (Sender: TObject);

begin

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add ('Select Student. Famailiya, Student. Imya, Student. Otchestvo, Student. Data_r, Gruppa. Nazvanie, Student. Pol, Student. Kurs');

ADOQuery1.SQL.Add (' FROM Student INNER JOIN Gruppa ON Student. Id_gruppi=Gruppa.Id_gruppi');

ADOQuery1.SQL.Add (' WHERE Student. Famailiya like'+#39+Edit1.Text+#39);

ADOQuery1.Open;

Form8.Show;

Form8.DBGrid1.Columns.Items[0]. Width:=80;

Form8.DBGrid1.Columns.Items[1].Width:=80;

Form8.DBGrid1.Columns.Items[2].Width:=80;

Form8.DBGrid1.Columns.Items[3].Width:=80;

Form8.DBGrid1.Columns.Items[4].Width:=80;

Form8.DBGrid1.Columns.Items[5].Width:=80;

Form8.DBGrid1.Columns.Items[6].Width:=80;

end;

procedure TForm2. Button2Click (Sender: TObject);

begin

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add ('Select Student. Famailiya, Student. Imya, Student. Otchestvo, Student. Data_r, Gruppa. Nazvanie, Student. Pol, Student. Kurs');

ADOQuery1.SQL.Add (' FROM Student INNER JOIN Gruppa ON Student. Id_gruppi=Gruppa.Id_gruppi');

ADOQuery1.SQL.Add (' WHERE Gruppa. Nazvanie like'+#39+DBLookupComboBox2.Text+#39);

ADOQuery1.Open;

Form8.Show;

Form8.DBGrid1.Columns.Items[0]. Width:=80;

Form8.DBGrid1.Columns.Items[1].Width:=80;

Form8.DBGrid1.Columns.Items[2].Width:=80;

Form8.DBGrid1.Columns.Items[3].Width:=80;

Form8.DBGrid1.Columns.Items[4].Width:=80;

Form8.DBGrid1.Columns.Items[5].Width:=80;

Form8.DBGrid1.Columns.Items[6].Width:=80;

end;

procedure TForm2. Button3Click (Sender: TObject);

begin

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add ('Select Student. Famailiya, Student. Imya, Student. Otchestvo, Student. Data_r, Gruppa. Nazvanie, Student. Pol, Student. Kurs');

ADOQuery1.SQL.Add (' FROM Student INNER JOIN Gruppa ON Student. Id_gruppi=Gruppa.Id_gruppi');

ADOQuery1.SQL.Add (' WHERE Gruppa. id_spec = '+FloatToStr (DBLookupComboBox1.KeyValue));

ADOQuery1.Open;

Form8.Show;

Form8.DBGrid1.Columns.Items[0]. Width:=80;

Form8.DBGrid1.Columns.Items[1].Width:=80;

Form8.DBGrid1.Columns.Items[2].Width:=80;

Form8.DBGrid1.Columns.Items[3].Width:=80;

Form8.DBGrid1.Columns.Items[4].Width:=80;

Form8.DBGrid1.Columns.Items[5].Width:=80;

Form8.DBGrid1.Columns.Items[6].Width:=80;

end;

procedure TForm2. Button4Click (Sender: TObject);

begin

if (DBGrid1.DataSource.DataSet.FieldByName ('Forma').AsString='очная') then

if (DBGrid1.DataSource.DataSet.FieldByName ('Kurs').AsInteger<5) then

begin

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Update Student Set Kurs = Kurs+1 Where Student. id_student = '+DBGrid1.DataSource.DataSet.FieldByName ('id_student').AsString);

ADOQuery2.ExecSQL;

DataModule1.Student.Close;

DataModule1.Student.Open;

end

else

Application.MessageBox ('Невозможно перевести студента на курс старше (очная форма до 5 курса)','Ошибка', MB_OK);

if (DBGrid1.DataSource.DataSet.FieldByName ('Forma').AsString='очно-заочная') then

if (DBGrid1.DataSource.DataSet.FieldByName ('Kurs').AsInteger<6) then

begin

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Update Student Set Kurs = Kurs+1 Where Student. id_student = '+DBGrid1.DataSource.DataSet.FieldByName ('id_student').AsString);

ADOQuery2.ExecSQL;

DataModule1.Student.Close;

DataModule1.Student.Open;

end

else

Application.MessageBox ('Невозможно перевести студента на курс старше (очно-заочная форма до 6 курса)','Ошибка', MB_OK);

end;

procedure TForm2. Button7Click (Sender: TObject);

begin

ADOQuery3.Close;

ADOQuery3.SQL.Clear;

ADOQuery3.SQL.Add (' DELETE FROM Ocenka WHERE id_student = '+DBGrid1.DataSource.DataSet.FieldByName ('id_student').AsString);

ADOQuery3.ExecSQL;

ADOQuery3.Close;

ADOQuery3.SQL.Clear;

ADOQuery3.SQL.Add (' DELETE FROM Student WHERE id_student = '+DBGrid1.DataSource.DataSet.FieldByName ('id_student').AsString);

ADOQuery3.ExecSQL;

DataModule1.Student.Close;

DataModule1.Student.Open;

end;

procedure TForm2. Button8Click (Sender: TObject);

begin

frxReport1.Variables['FIO']: =QuotedStr (DBGrid1.DataSource.DataSet.FieldByName ('Famailiya').AsString

+' '+DBGrid1.DataSource.DataSet.FieldByName ('Imya').AsString

+' '+DBGrid1.DataSource.DataSet.FieldByName ('Otchestvo').AsString

+' '+DBGrid1.DataSource.DataSet.FieldByName ('Data_r').AsString);

frxReport1.Variables['Kurs']: =QuotedStr (DBGrid1.DataSource.DataSet.FieldByName ('Kurs').AsString);

ADOQuery4.SQL.Text:='SELECT Specialnost. Nazvanie'

+' FROM Specialnost INNER JOIN Gruppa ON Specialnost. id_spec=Gruppa.id_spec'

+' INNER JOIN Student ON Student. id_gruppi = Gruppa. id_gruppi'

+' WHERE id_student='+DBGrid1.DataSource.DataSet.FieldByName ('id_student').AsString;

ADOQuery4.Open;

frxReport1.Variables['Spec']: =QuotedStr (ADOQuery4.Fields[0].AsString);

frxReport1.PrepareReport;

frxReport1.ShowPreparedReport;

end;

procedure TForm2. Button9Click (Sender: TObject);

begin

frxReport2.Variables['FIO']: =QuotedStr (DBGrid1.DataSource.DataSet.FieldByName ('Famailiya').AsString

+' '+DBGrid1.DataSource.DataSet.FieldByName ('Imya').AsString

+' '+DBGrid1.DataSource.DataSet.FieldByName ('Otchestvo').AsString);

frxReport2.Variables['DataR']: =QuotedStr (DBGrid1.DataSource.DataSet.FieldByName ('Data_r').AsString);

ADOQuery4.SQL.Text:='SELECT Specialnost. Nazvanie'

+' FROM Specialnost INNER JOIN Gruppa ON Specialnost. id_spec=Gruppa.id_spec'

+' INNER JOIN Student ON Student. id_gruppi = Gruppa. id_gruppi'

+' WHERE id_student='+DBGrid1.DataSource.DataSet.FieldByName ('id_student').AsString;

ADOQuery4.Open;

frxReport2.Variables['Spec']: =QuotedStr (ADOQuery4.Fields[0].AsString);

frxReport2.PrepareReport;

frxReport2.ShowPreparedReport;

end;

procedure TForm2. Edit2Change (Sender: TObject);

begin

if Length (Edit2.Text)>0 then

begin

DataModule1.Student.Filtered:=false;

DataModule1.Student.Filter:='Famailiya like '+QuotedStr (Edit2.Text+'%')+' or Imya like '+QuotedStr (Edit2.Text+'%')+' or Otchestvo like '+QuotedStr (Edit2.Text+'%');

DataModule1.Student.Filtered:=true;

end

else

DataModule1.Student.Filtered:=false;

end;

procedure TForm2. Button6Click (Sender: TObject);

begin

ADOQuery3.Close;

ADOQuery3.SQL.Clear;

ADOQuery3.SQL.Add (' INSERT INTO Arhiv (Famailiya, Imya, Otchestvo, Data_r, Id_gruppi, Pol, Kurs) VALUES ');

ADOQuery3.SQL.Add (' ('+#39+DBGrid1.DataSource.DataSet.FieldByName ('Famailiya').AsString+#39);

ADOQuery3.SQL.Add (' ,'+#39+DBGrid1.DataSource.DataSet.FieldByName ('Imya').AsString+#39);

ADOQuery3.SQL.Add (' ,'+#39+DBGrid1.DataSource.DataSet.FieldByName ('Otchestvo').AsString+#39);

ADOQuery3.SQL.Add (' ,'+#39+DBGrid1.DataSource.DataSet.FieldByName ('Data_r').AsString+#39);

ADOQuery3.SQL.Add (' ,'+#39+DBGrid1.DataSource.DataSet.FieldByName ('Id_gruppi').AsString+#39);

ADOQuery3.SQL.Add (' ,'+#39+DBGrid1.DataSource.DataSet.FieldByName ('Pol').AsString+#39);

ADOQuery3.SQL.Add (' ,'+#39+DBGrid1.DataSource.DataSet.FieldByName ('Kurs').AsString+#39+')');

ADOQuery3.ExecSQL;

ADOQuery3.Close;

ADOQuery3.SQL.Clear;

ADOQuery3.SQL.Add (' DELETE FROM Ocenka WHERE id_student = '+DBGrid1.DataSource.DataSet.FieldByName ('id_student').AsString);

ADOQuery3.ExecSQL;

ADOQuery3.Close;

ADOQuery3.SQL.Clear;

ADOQuery3.SQL.Add (' DELETE FROM Student WHERE id_student = '+DBGrid1.DataSource.DataSet.FieldByName ('id_student').AsString);

ADOQuery3.ExecSQL;

DataModule1.Student.Close;

DataModule1.Student.Open;

end;

procedure TForm2. Button5Click (Sender: TObject);

begin

Form9.Show;

Form2.Hide;

Form9.Caption:='Перевод студента '+DBGrid1.DataSource.DataSet.FieldByName ('Famailiya').AsString +DBGrid1.DataSource.DataSet.FieldByName ('Imya').AsString + DBGrid1.DataSource.DataSet.FieldByName ('Otchestvo').AsString;

end;

end.

Форма «Группа»

unit Gruppa;

interface

uses

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

Dialogs, Menus, ExtCtrls, DBCtrls, StdCtrls, Mask,

DB, ADODB, frxClass, frxDBSet;

type

TForm3 = class (TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

DBLookupComboBox1: TDBLookupComboBox;

DBEdit1: TDBEdit;

Label1: TLabel;

Label2: TLabel;

DBNavigator1: TDBNavigator;

Button1: TButton;

Button2: TButton;

ADOQuery1: TADOQuery;

ADOQuery2: TADOQuery;

ADOQuery2Nazvanie: TStringField;

ADOQuery2Unoshi: TIntegerField;

ADOQuery2Devus: TIntegerField;

ADOQuery2Vsego: TIntegerField;

ADOQuery3: TADOQuery;

frxReport1: TfrxReport;

frxDBDataset1: TfrxDBDataset;

ADOQuery1Famailiya: TStringField;

ADOQuery1Imya: TStringField;

ADOQuery1Otchestvo: TStringField;

ADOQuery1Data_r: TDateTimeField;

frxDBDataset2: TfrxDBDataset;

frxDBDataset3: TfrxDBDataset;

frxReport2: TfrxReport;

procedure N1Click (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Main, Data;

{$R *.dfm}

procedure TForm3. N1Click (Sender: TObject);

Приложение Б

(продолжение)

begin

Form3.Close;

Form1.Show;

end;

procedure TForm3. FormClose (Sender: TObject; var Action: TCloseAction);

begin

Form1.Show;

end;

procedure TForm3. Button1Click (Sender: TObject);

begin

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add (' Select Famailiya, Imya, Otchestvo, Data_r');

ADOQuery1.SQL.Add (' FROM Student');

ADOQuery1.SQL.Add (' WHERE Id_gruppi ='+DBEdit1.DataSource.DataSet.FieldByName ('Id_gruppi').AsString);

ADOQuery1.SQL.Add (' order by Famailiya, Imya, Otchestvo');

ADOQuery1.Open;

frxReport1.Variables['Gr']: =QuotedStr (DBEdit1.Text);

frxReport1.PrepareReport;

frxReport1.ShowPreparedReport;

end;

procedure TForm3. Button2Click (Sender: TObject);

begin

ADOQuery2.Open;

ADOQuery3.Open;

frxReport2.PrepareReport;

frxReport2.ShowPreparedReport;

end;

end

Форма «Выборка»

unit Viborka;

interface

uses

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

Dialogs, StdCtrls, Grids, DBGrids;

type

TForm8 = class (TForm)

DBGrid1: TDBGrid;

Button1: TButton;

procedure Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form8: TForm8;

implementation

uses Stud;

{$R *.dfm}

procedure TForm8. Button1Click (Sender: TObject);

begin

Form8.Close;

end;

end.

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

procedure FormClose (Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form14: TForm14;

implementation

{$R *.dfm}

uses Main, Data;

procedure TForm14. FormClose (Sender: TObject; var Action: TCloseAction);

begin

Form1.Show;

end;

end.

Форма «Специальность»

unit Spec;

interface

uses

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

Dialogs, Menus, ExtCtrls, DBCtrls, StdCtrls, Mask;

type

TForm5 = class (TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

DBEdit1: TDBEdit;

DBMemo1: TDBMemo;

Label1: TLabel;

Label2: TLabel;

DBNavigator1: TDBNavigator;

procedure N1Click (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses Main, Data;

{$R *.dfm}

procedure TForm5. N1Click (Sender: TObject);

begin

Form5.Close;

Form1.Show;

end;

procedure TForm5. FormClose (Sender: TObject; var Action: TCloseAction);

begin

Form1.Show;

end;

end.

Форма «Преподаватели»

unit Prepod;

interface

uses

Winapi.Windows, Winapi. Messages, System. SysUtils, System. Variants, System. Classes, Vcl. Graphics,

Vcl.Controls, Vcl. Forms, Vcl. Dialogs, Vcl. Menus, Vcl. ExtCtrls, Vcl. DBCtrls,

Vcl.Grids, Vcl. DBGrids;

type

TForm11 = class (TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure N1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form11: TForm11;

implementation

{$R *.dfm}

uses Data, Main;

procedure TForm11. FormClose (Sender: TObject; var Action: TCloseAction);

begin

Form1.Show;

end;

procedure TForm11. N1Click (Sender: TObject);

begin

Form11.Close;

end;

end.

Форма «Предметы»

unit Predmet;

interface

uses

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

Dialogs, Menus, StdCtrls, ExtCtrls, DBCtrls, Mask;

type

TForm4 = class (TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

DBEdit1: TDBEdit;

DBNavigator1: TDBNavigator;

Label1: TLabel;

procedure N1Click (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

uses Main, Data;

{$R *.dfm}

procedure TForm4. N1Click (Sender: TObject);

begin

Form4.Close;

Form1.Show;

end;

procedure TForm4. FormClose (Sender: TObject; var Action: TCloseAction);

begin

Form1.Show;

end;

end.

Форма «Перевод студента»

unit perevod;

interface

uses

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

Dialogs, StdCtrls, DBCtrls, DB, ADODB;

type

TForm9 = class (TForm)

DBLookupComboBox1: TDBLookupComboBox;

Button1: TButton;

Label1: TLabel;

ADOQuery1: TADOQuery;

procedure Button1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form9: TForm9;

implementation

uses Data, Stud;

{$R *.dfm}

procedure TForm9. Button1Click (Sender: TObject);

begin

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add ('Update Student Set Id_gruppi = '+IntToStr (DBLookupComboBox1.KeyValue) +' Where Student. id_student = '+Form2.DBGrid1.DataSource.DataSet.FieldByName ('id_student').AsString);

ADOQuery1.ExecSQL;

DataModule1.Student.Close;

DataModule1.Student.Open;

Form9.Close;

Form2.Show;

end;

end.

Форма «Кафедра»

unit Kafedra;

interface

uses

Winapi.Windows, Winapi. Messages, System. SysUtils, System. Variants, System. Classes, Vcl. Graphics,

Vcl.Controls, Vcl. Forms, Vcl. Dialogs, Vcl. ExtCtrls, Vcl. DBCtrls, Vcl. Grids,

Vcl.DBGrids;

type

TForm12 = class (TForm)

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

procedure FormClose (Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form12: TForm12;

implementation

{$R *.dfm}

uses Data, Main;

procedure TForm12. FormClose (Sender: TObject; var Action: TCloseAction);

begin

Form1.Show;

end;

end.

Форма «Оценка»

unit Ocenka;

interface

uses

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

Dialogs, Menus, Grids, DBGrids, DB, ADODB, StdCtrls, DBCtrls, ExtCtrls,

ComCtrls, frxClass, frxDBSet;

type

TForm10 = class (TForm)

MainMenu1: TMainMenu;

Yfpfl1: TMenuItem;

GroupBox1: TGroupBox;

ADOQuery1: TADOQuery;

DataSource1: TDataSource;

DBGrid2: TDBGrid;

Panel1: TPanel;

Label1: TLabel;

Label2: TLabel;

DBLookupComboBox1: TDBLookupComboBox;

DBLookupComboBox2: TDBLookupComboBox;

Button1: TButton;

Button2: TButton;

ADOQuery2: TADOQuery;

GroupBox2: TGroupBox;

Label7: TLabel;

Label8: TLabel;

DateTimePicker1: TDateTimePicker;

DateTimePicker2: TDateTimePicker;

GroupBox3: TGroupBox;

Label3: TLabel;

Label4: TLabel;

DateTimePicker3: TDateTimePicker;

DateTimePicker4: TDateTimePicker;

Button3: TButton;

GroupBox4: TGroupBox;

Label5: TLabel;

Label6: TLabel;

DateTimePicker5: TDateTimePicker;

DateTimePicker6: TDateTimePicker;

Button4: TButton;

frxReport1: TfrxReport;

frxReport2: TfrxReport;

frxDBDataset1: TfrxDBDataset;

procedure Yfpfl1Click (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure DBLookupComboBox1CloseUp (Sender: TObject);

procedure DBLookupComboBox2CloseUp (Sender: TObject);

procedure FormShow (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form10: TForm10;

implementation

uses Main, Data;

{$R *.dfm}

procedure TForm10. Yfpfl1Click (Sender: TObject);

begin

Form10.Close;

Form1.Show;

end;

procedure TForm10. FormClose (Sender: TObject; var Action: TCloseAction);

begin

Form1.Show;

end;

procedure TForm10. DBLookupComboBox1CloseUp (Sender: TObject);

begin

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add ('Select Student. Famailiya, Student. Imya, Predmet. Nazvanie, AVG (Ocenka.Ocenka)AS itog');

ADOQuery1.SQL.Add (' FROM Student LEFT JOIN (Predmet FULL JOIN Ocenka ON Ocenka. id_predmeta = Predmet. id_predmeta)');

ADOQuery1.SQL.Add (' ON Student. id_student = Ocenka. id_student');

ADOQuery1.SQL.Add ('WHERE Student. Id_gruppi ='+IntToStr (DBLookupComboBox1.KeyValue)+ ' AND Predmet. Nazvanie = '+#39+DBLookupComboBox2.Text+#39);

ADOQuery1.SQL.Add (' Group by Student. Famailiya, Student. Imya, Predmet. Nazvanie');

ADOQuery1.Open;

end;

procedure TForm10. DBLookupComboBox2CloseUp (Sender: TObject);

begin

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add ('Select Student. Famailiya, Student. Imya, Predmet. Nazvanie, AVG (Ocenka.Ocenka)AS itog');

ADOQuery1.SQL.Add (' FROM Student LEFT JOIN (Predmet FULL JOIN Ocenka ON Ocenka. id_predmeta = Predmet. id_predmeta)');

ADOQuery1.SQL.Add (' ON Student. id_student = Ocenka. id_student');

ADOQuery1.SQL.Add ('WHERE Student. Id_gruppi ='+IntToStr (DBLookupComboBox1.KeyValue)+ ' AND Predmet. Nazvanie = '+#39+DBLookupComboBox2.Text+#39);

ADOQuery1.SQL.Add (' Group by Student. Famailiya, Student. Imya, Predmet. Nazvanie');

ADOQuery1.Open;

end;

procedure TForm10. FormShow (Sender: TObject);

begin

DBLookupComboBox1.KeyValue:=1;

DBLookupComboBox2.KeyValue:=1;

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add ('Select Student. Famailiya, Student. Imya, Predmet. Nazvanie, AVG (Ocenka.Ocenka)AS itog');

ADOQuery1.SQL.Add (' FROM Student LEFT JOIN (Predmet FULL JOIN Ocenka ON Ocenka. id_predmeta = Predmet. id_predmeta)');

ADOQuery1.SQL.Add (' ON Student. id_student = Ocenka. id_student');

ADOQuery1.SQL.Add ('WHERE Student. Id_gruppi ='+IntToStr (DBLookupComboBox1.KeyValue)+ ' AND Predmet. Nazvanie = '+#39+DBLookupComboBox2.Text+#39);

ADOQuery1.SQL.Add (' Group by Student. Famailiya, Student. Imya, Predmet. Nazvanie');

ADOQuery1.Open;

end;

procedure TForm10. Button1Click (Sender: TObject);

begin

frxReport2.Variables['pred']: =QuotedStr (DBLookupComboBox1.Text);

frxReport2.PrepareReport;

frxReport2.ShowPreparedReport;

end;

procedure TForm10. Button2Click (Sender: TObject);

var

p, ch, tr, dva, vsego: integer;

ot, xo, ud, pl: real;

begin

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka), id_student');

ADOQuery2.SQL.Add ('From Ocenka');

ADOQuery2.SQL.Add (' WHERE ((id_predmeta ='+ IntToStr (DBLookupComboBox2.KeyValue)+') AND (Data BETWEEN: ff AND: ll))');

ADOQuery2.SQL.Add (' GROUP BY id_student');

ADOQuery2.SQL.Add (' HAVING AVG (Ocenka) = 2');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker1.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker2.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

dva:= ADOQuery2. RecordCount

else

dva:=0 ;

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka), id_student');

ADOQuery2.SQL.Add ('From Ocenka');

ADOQuery2.SQL.Add (' WHERE ((id_predmeta ='+ IntToStr (DBLookupComboBox2.KeyValue)+') AND (Data BETWEEN: ff AND: ll))');

ADOQuery2.SQL.Add (' GROUP BY id_student');

ADOQuery2.SQL.Add (' HAVING AVG (Ocenka)=3 OR AVG (Ocenka)=4 OR AVG (Ocenka)=5');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker1.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker2.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

tr:= ADOQuery2. RecordCount

else

tr:=0 ;

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka), id_student');

ADOQuery2.SQL.Add ('From Ocenka');

ADOQuery2.SQL.Add (' WHERE ((id_predmeta ='+ IntToStr (DBLookupComboBox2.KeyValue)+') AND (Data BETWEEN: ff AND: ll))');

ADOQuery2.SQL.Add (' GROUP BY id_student');

ADOQuery2.SQL.Add (' HAVING (AVG (Ocenka) = 4 OR AVG (Ocenka) =5)');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker1.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker2.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

ch:= ADOQuery2. RecordCount

else

ch:=0 ;

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka), id_student');

ADOQuery2.SQL.Add ('From Ocenka');

ADOQuery2.SQL.Add (' WHERE ((id_predmeta ='+ IntToStr (DBLookupComboBox2.KeyValue)+') AND (Data BETWEEN: ff AND: ll))');

ADOQuery2.SQL.Add (' GROUP BY id_student');

ADOQuery2.SQL.Add ('HAVING AVG (Ocenka) = 5 ');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker1.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker2.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

p:= ADOQuery2. RecordCount

else

p:=0 ;

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka), id_student');

ADOQuery2.SQL.Add ('From Ocenka');

ADOQuery2.SQL.Add (' WHERE ((id_predmeta ='+ IntToStr (DBLookupComboBox2.KeyValue)+') AND (Data BETWEEN: ff AND: ll))');

ADOQuery2.SQL.Add (' GROUP BY id_student');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker1.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker2.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

vsego:= ADOQuery2. RecordCount

else

vsego:=0;

if p>0 then

ot:=(p*100)/vsego;

if ch>0 then

xo:=(ch*100)/vsego;

if tr>0 then

ud:=(tr*100)/vsego;

if dva>0 then

pl:=(dva*100)/vsego;

frxReport1.Variables['pred']: =QuotedStr ('Успеваемость студентов по предмету '+DBLookupComboBox2.Text);

frxReport1.Variables['pyat']: =FloatToStr (ot);

frxReport1.Variables['chet']:=FloatToStr (xo);

frxReport1.Variables['tri']:=FloatToStr (ud);

frxReport1.Variables['dva']:=FloatToStr (pl);

frxReport1.PrepareReport;

frxReport1.ShowPreparedReport;

end;

procedure TForm10. Button3Click (Sender: TObject);

var

p, ch, tr, dva, vsego: integer;

ot, xo, ud, pl: real;

begin

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka.Ocenka), Ocenka. id_student');

ADOQuery2.SQL.Add ('From Ocenka INNER JOIN Student ON Ocenka. id_student = Student. id_student');

ADOQuery2.SQL.Add ('WHERE ((Id_gruppi = '+ IntToStr (DBLookupComboBox1.KeyValue)+') AND (Data BETWEEN: ff AND: ll))');

ADOQuery2.SQL.Add (' GROUP BY Ocenka. id_student');

ADOQuery2.SQL.Add (' HAVING AVG (Ocenka.Ocenka) = 2');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker3.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker4.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

dva:= ADOQuery2. RecordCount

else

dva:=0 ;

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka.Ocenka), Ocenka. id_student');

ADOQuery2.SQL.Add ('From Ocenka INNER JOIN Student ON Ocenka. id_student = Student. id_student');

ADOQuery2.SQL.Add ('WHERE ((Id_gruppi = '+ IntToStr (DBLookupComboBox1.KeyValue)+') AND (Data BETWEEN: ff AND: ll))');

ADOQuery2.SQL.Add (' GROUP BY Ocenka. id_student');

ADOQuery2.SQL.Add (' HAVING AVG (Ocenka.Ocenka)=3 OR AVG (Ocenka.Ocenka)=4 OR AVG (Ocenka.Ocenka)=5');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker3.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker4.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

tr:= ADOQuery2. RecordCount

else

tr:=0 ;

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka.Ocenka), Ocenka. id_student');

ADOQuery2.SQL.Add ('From Ocenka INNER JOIN Student ON Ocenka. id_student = Student. id_student');

ADOQuery2.SQL.Add ('WHERE ((Id_gruppi = '+ IntToStr (DBLookupComboBox1.KeyValue)+') AND (Data BETWEEN: ff AND: ll))');

ADOQuery2.SQL.Add (' GROUP BY Ocenka. id_student');

ADOQuery2.SQL.Add (' HAVING (AVG (Ocenka.Ocenka) = 4 OR AVG (Ocenka.Ocenka) =5)');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker3.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker4.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

ch:= ADOQuery2. RecordCount

Приложение Б

(продолжение)

else

ch:=0 ;

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka.Ocenka), Ocenka. id_student');

ADOQuery2.SQL.Add ('From Ocenka INNER JOIN Student ON Ocenka. id_student = Student. id_student');

ADOQuery2.SQL.Add ('WHERE ((Id_gruppi = '+ IntToStr (DBLookupComboBox1.KeyValue)+') AND (Data BETWEEN: ff AND: ll))');

ADOQuery2.SQL.Add (' GROUP BY Ocenka. id_student');

ADOQuery2.SQL.Add ('HAVING AVG (Ocenka.Ocenka) = 5 ');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker3.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker4.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

p:= ADOQuery2. RecordCount

else

p:=0 ;

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka.Ocenka), Ocenka. id_student');

ADOQuery2.SQL.Add ('From Ocenka INNER JOIN Student ON Ocenka. id_student = Student. id_student');

ADOQuery2.SQL.Add ('WHERE ((Id_gruppi = '+ IntToStr (DBLookupComboBox1.KeyValue)+') AND (Data BETWEEN: ff AND: ll))');

ADOQuery2.SQL.Add (' GROUP BY Ocenka. id_student');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker3.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker4.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

vsego:= ADOQuery2. RecordCount

else

vsego:=0;

ot:=(p*100);

xo:=(ch*100);

ud:=(tr*100);

pl:=(dva*100);

frxReport1.Variables['pred']: =QuotedStr ('Успеваемость студентов группы '+DBLookupComboBox1.Text);

frxReport1.Variables['pyat']: =FloatToStr (ot);

frxReport1.Variables['chet']:=FloatToStr (xo);

frxReport1.Variables['tri']:=FloatToStr (ud);

frxReport1.Variables['dva']:=FloatToStr (pl);

frxReport1.PrepareReport;

frxReport1.ShowPreparedReport;

end;

procedure TForm10. Button4Click (Sender: TObject);

var

p, ch, tr, dva, vsego: integer;

ot, xo, ud, pl: real;

begin

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka), Ocenka. id_student');

ADOQuery2.SQL.Add ('From Ocenka');

ADOQuery2.SQL.Add ('WHERE Data BETWEEN: ff AND: ll');

ADOQuery2.SQL.Add (' GROUP BY id_student');

ADOQuery2.SQL.Add (' HAVING AVG (Ocenka) = 2');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker5.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker6.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

dva:= ADOQuery2. RecordCount

else

dva:=0 ;

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka), Ocenka. id_student');

ADOQuery2.SQL.Add ('From Ocenka');

ADOQuery2.SQL.Add ('WHERE Data BETWEEN: ff AND: ll');

ADOQuery2.SQL.Add (' GROUP BY id_student');

ADOQuery2.SQL.Add (' HAVING AVG (Ocenka)=3 OR AVG (Ocenka)=4 OR AVG (Ocenka)=5');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker5.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker6.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

tr:= ADOQuery2. RecordCount

else

tr:=0 ;

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka), Ocenka. id_student');

ADOQuery2.SQL.Add ('From Ocenka');

ADOQuery2.SQL.Add ('WHERE Data BETWEEN: ff AND: ll');

ADOQuery2.SQL.Add (' GROUP BY id_student');

ADOQuery2.SQL.Add (' HAVING (AVG (Ocenka) = 4 OR AVG (Ocenka) =5)');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker5.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker6.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

ch:= ADOQuery2. RecordCount

else

ch:=0 ;

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka), Ocenka. id_student');

ADOQuery2.SQL.Add ('From Ocenka');

ADOQuery2.SQL.Add ('WHERE Data BETWEEN: ff AND: ll');

ADOQuery2.SQL.Add (' GROUP BY id_student');

ADOQuery2.SQL.Add ('HAVING AVG (Ocenka) = 5 ');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker5.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker6.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

p:= ADOQuery2. RecordCount

else

p:=0 ;

ADOQuery2.Close;

ADOQuery2.SQL.Clear;

ADOQuery2.SQL.Add ('Select AVG (Ocenka), Ocenka. id_student');

ADOQuery2.SQL.Add ('From Ocenka');

ADOQuery2.SQL.Add ('WHERE Data BETWEEN: ff AND: ll');

ADOQuery2.SQL.Add (' GROUP BY id_student');

ADOQuery2.Parameters.ParamByName ('ff').Value:=DateToStr (DateTimePicker5.Date);

ADOQuery2.Parameters.ParamByName ('ll').Value:=DateToStr (DateTimePicker6.Date);

ADOQuery2.Open;

if ADOQuery2. RecordCount>0 then

vsego:= ADOQuery2. RecordCount

else

vsego:=0;

if p>0 then

ot:=(p*100)/vsego;

if ch>0 then

xo:=(ch*100)/vsego;

if tr>0 then

ud:=(tr*100)/vsego;

if dva>0 then

pl:=(dva*100)/vsego;

frxReport1.Variables['pred']: =QuotedStr ('Успеваемость в деканате');

frxReport1.Variables['pyat']: =FloatToStr (ot);

frxReport1.Variables['chet']:=FloatToStr (xo);

frxReport1.Variables['tri']:=FloatToStr (ud);

frxReport1.Variables['dva']:=FloatToStr (pl);

frxReport1.PrepareReport;

frxReport1.ShowPreparedReport;

end;

end.

Форма «Должности»

unit Dolzh;

interface

uses

Winapi.Windows, Winapi. Messages, System. SysUtils, System. Variants, System. Classes, Vcl. Graphics,

Vcl.Controls, Vcl. Forms, Vcl. Dialogs, Vcl. ExtCtrls, Vcl. DBCtrls, Vcl. Grids,

Vcl.DBGrids;

type

TForm13 = class (TForm)

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

procedure FormClose (Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end; var

Form13: TForm13;

implementation

{$R *.dfm}

uses Data, Main;

procedure TForm13. FormClose (Sender: TObject; var Action: TCloseAction);

begin

Form1.Show;

end; end.

Форма «Дата»

unit Data;

interface

uses

SysUtils, Classes, DB, ADODB;

type

TDataModule1 = class (TDataModule)

ADOConnection1: TADOConnection;

Gruppa: TADOTable;

Predmet: TADOTable;

Spec: TADOTable;

Student: TADOTable;

Ocenka: TADOTable;

DGruppa: TDataSource;

DPredmet: TDataSource;

DSpec: TDataSource;

DStudent: TDataSource;

DOcenka: TDataSource;

Studentid_student: TIntegerField;

StudentFamailiya: TStringField;

StudentImya: TStringField;

StudentOtchestvo: TStringField;

StudentData_r: TDateTimeField;

StudentId_gruppi: TIntegerField;

StudentPol: TStringField;

StudentGr: TStringField;

Ocenkaid_zapisi: TIntegerField;

OcenkaOcenka: TIntegerField;

Ocenkaid_student: TIntegerField;

Ocenkaid_predmeta: TIntegerField;

OcenkaData: TDateTimeField;

OcenkaStud: TStringField;

OcenkaDisci: TStringField;

Predmetid_predmeta: TAutoIncField;

PredmetNazvanie: TStringField;

PredmetPrepodavatel: TIntegerField;

Kafedra: TADOTable;

Dolzhnost: TADOTable;

DKafedra: TDataSource;

DDolzhnost: TDataSource;

Prepodavatel: TADOTable;

DPrepodavatel: TDataSource;

StudentKurs: TIntegerField;

Prepodavatelid_Prepod: TAutoIncField;

PrepodavatelFIO: TStringField;

PrepodavatelTelephone: TStringField;

Prepodavatelid_dolzhnost: TIntegerField;

Prepodavatelid_stepen: TIntegerField;

Prepodavatelid_kafedri: TIntegerField;

PrepodavatelDol: TStringField;

PrepodavatelStepen: TStringField;

PrepodavatelKafedri: TStringField;

private

{ Private declarations }

public

{ Public declarations }

end;

var

DataModule1: TDataModule1;

implementation

{$R *.dfm}

end.

Показать весь текст
Заполнить форму текущей работой