Представление знаний в информационных системах

Разработка структуры реляционной базы данных для информационной системы "Распределение учебной нагрузки". Требования к информации, надежности, составу и параметрам технических средств. Нормализация информационных объектов, логическая модель данных.

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

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

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

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

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

«ГРОДНЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ ЯНКИ КУПАЛЫ»

ФИЗИКО-ТЕХНИЧЕСКИЙ ФАКУЛЬТЕТ

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

Представление знаний в информационных системах

СТУДЕНТА:

4 курса, 1 группы, заочного полного отделения

Специальности: ИИТ Кедук Д.И.

РУКОВОДИТЕЛЬ: Садовская О.И

Гродно,2014

Содержание

Введение

1. Анализ предметной области

1.1 Назначение проектируемой базы данных

1.1.1 Требования к информации

1.1.2 Требования к надежности

1.1.3 Требования к составу и параметрам технических средств

2. Инфологическая (концептуальная) модель предметной области

2.1 Описание информационных объектов

2.2 Нормализация информационных объектов

3. Логическая модель данных

4. Физическая модель базы данных

4.1 Описание выбранной СУБД

4.2 Создание структуры БД в СУБД MS ACCESS

5. Программирование приложения

6. Описание работы с системой

Заключение

Список использованных источников

Приложение

Введение

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

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

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

Цель курсового проекта - приобретение студентом практических навыков по формулированию требований к разрабатываемым базам данных и построению их моделей. Для ее достижения необходимо разработать структуру реляционной базы данных для информационной системы «Распределение учебной нагрузки». Эта система предназначена для отслеживания распределения часов для преподавателей.

Объектом управления является процесс распределения нагрузки.

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

Цель управления состоит в создании модели информационной системы учебного заведения.

Задачи данного курсового проекта:

Сформулировать и проанализировать исходные данные;

Построить инфологическую модель;

Построить логическую модель;

Спроектировать и построить в среде выбранной СУБД физическую компьютерную структуру данных.

1. Анализ предметной области

Предметная область: Распределение учебной нагрузки.

Описание предметной области

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

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

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

База данных будет разработана в СУБД MS Access, как наиболее удобной и популярной. Содержание создаваемой базы данных не повлияет на её структуру и является примерным.

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

Целью создания БД " Распределение учебной нагрузки " является автоматизация деления учебных часов между преподавателями.

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

1.1 Назначение проектируемой базы данных

Необходимо разработать базу данных для автоматизации учета распределения учебной нагрузки.

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

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

Функции проектируемой БД:

хранение информации о преподавателях,

хранение информации о предметах,

хранения информации о нагрузке,

обновление и добавление информации,

анализ информации по различным срезам (информация по абоненту),

выдача итоговой информации в виде отчетов.

1.1.1 Требования к информации

Ниже приведенные таблицы можно изменять и дополнять непосредственно в базе данных.

Таблицы «Преподаватели», «Предметы», «Нагрузка» могут заполняться непосредственно в программном приложении либо в базе данных.

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

Данная база данных предоставляет следующие возможности:

Закрытый доступ: только для сотрудников организации.

Просмотр интересующей информации в специальных формах.

Изменение информации, добавление новой.

Поиск информации по заданным критериям.

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

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

1.1.2 Требования к надежности

Защита базы данных от несанкционированного доступа осуществляется с помощью создания роли Администратора, которая используется для доступа к приложению.

1.1.3 Требования к составу и параметрам технических средств

Для успешной эксплуатации программного продукта необходим персональный компьютер со следующими характеристиками: процессор Intel Pentium с тактовой частотой 800 МГц и выше, оперативная память - не менее 256 Мбайт, свободное дисковое пространство - не менее 700 Мбайт, устройство для чтения компакт-дисков, монитор типа Super VGA (число цветов - 256) с диагональю не менее 15?, принтер.

2. Инфологическая (концептуальная) модель предметной области

2.1 Описание информационных объектов

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

Рассмотрим каждый из этих структурных элементов и выделим сущности.

Таблица 2.1. Сущности и их атрибуты

Сущность

Атрибут

Тип данных

Преподаватели

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

Числовой

Фамилия

Текстовый

Имя

Текстовый

Отчество

Текстовый

Ученая степень

Текстовый

Должность

Текстовый

Стаж

Текстовый

Предметы

Код предмета

Числовой

Название

Текстовый

Количество часов

Числовой

Нагрузка

Код занятия

Счетчик

Дата

Дата/время

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

Числовой

Код предмета

Числовой

Тип занятия

Текстовый

Количество часов

Числовой

Номер группы

Числовой

2.2 Нормализация информационных объектов

Нормализацией называется формальная процедура, в ходе которой атрибуты данных группируются в таблицы, а таблицы группируются в базу данных (БД).

Результатами анализа проведенного в предыдущем разделе стали 3 сущности: Преподаватели, Предметы, Нагрузка. Каждая сущность характеризуется группой атрибутов, часть из которых может дублироваться в других сущностях. Для оптимизации данных необходимо провести процедуру нормализации, которая выполняется поэтапно.

Первая нормальная форма (1НФ). Для нее требуется, чтобы таблица была плоской и не содержала повторяющихся групп. У плоской таблицы есть только две характеристики - длина (количество записей или строк) и ширина (количество полей или столбцов). Такая таблица не должна содержать ячеек, включающих несколько значений. Т.е. в одну ячейку не должны помещаться несколько атрибутов.

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

Для второй нормальной формы (2НФ) требуется, чтобы все поля таблицы зависели от первичного ключа, то есть, чтобы первичный ключ однозначно определял запись и не был избыточен. Значение первичного ключа в таблице БД должно быть уникальным, т.е. в таблице не должно существовать двух и более записей с одинаковым значением первичного ключа. Те поля, которые зависят только от части первичного ключа, должны быть выделены в составе отдельных таблиц. Примером приведение таблиц ко второй нормальной форме, является разделение сведений об клиентах в таблице Клиенты.

Для третьей нормальной формы (ЗНФ) требуется, чтобы все не ключевые столбцы таблицы зависели от первичного ключа таблицы, но были независимы друг от друга. Для этого требуется, чтобы таблицы были приведены к 1НФ и 2НФ.

3. Логическая модель данных

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

С учетом требований к содержанию реляционных таблиц получен список полей для каждой таблицы. В построенной ER-диаграмме нет многозначных атрибутов и связей «многие ко многим».

Модель “сущность - связь” (МСС) (entity-relation diagram) является неформальной моделью предметной области и используется на этапе инфологического проектирования БД. Моделируются объекты предметной области и их взаимоотношения. В данном курсовом проекте представлена модель «сущность - связь» для сетевой базы данных «Распределение учебной нагрузки».

Рисунок 1 ER-диаграмма для базы данных «Распределение учебной нагрузки»

4. Физическая модель базы данных

4.1 Описание выбранной СУБД

Реляционная база данных представляет собой множество взаимосвязанных таблиц, каждая из которых содержит информацию об объектах определенного типа.

Наиболее удобной и популярной системой управления базой данных (СУБД), которая позволит реализовать все необходимые задачи по разработке базы данных и программного приложения является продукт компании Microsoft - Access.

Microsoft Access является настольной СУБД реляционного типа. Достоинством Access является то, что она имеет очень простой графический интерфейс, который позволяет не только создавать собственную базу данных, но и разрабатывать простые и сложные приложения. В отличие от других настольных СУБД, Access хранит все данные в одном файле, хотя и распределяет их по разным таблицам.

Access позволяет не только вводить данные в таблицы, но и контролировать правильность вводимых данных. Для этого необходимо установить правила проверки прямо на уровне таблицы. Тогда каким бы образом не вводились данные -- прямо в таблицу, через экранную форму или на странице доступа к данным, Access не позволит сохранить в записи те данные, которые не удовлетворяют заданным правилам.

Таблицы баз данных могут включать в себя огромное количество записей, и при этом СУБД обеспечивает удобные способы извлечения из этого множества нужной информации.

В Access возможно создание связей между таблицами, что позволяет совместно использовать данные из разных таблиц. При этом для пользователя они будут представляться одной таблицей.

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

Access может поддерживать одновременную работу с базой данных 50 пользователей, при этом все пользователи гарантировано будут работать с актуальными данными.

4.2 Создание структуры БД в СУБД MS ACCESS

На рисунках ниже представлены разработанные таблицы:

Рисунок 2 - Таблица «Нагрузка»

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

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

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

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

Готовая схема базы данных приведена ниже:

Рисунок 5 - Схема данных

5. Программирование приложения

информационная система база данные

Последовательность действий

Создадим меню из нескольких форм. Для этого разместим на форме приложения компонент MainMenu и отредактируем его.

Организуем доступ к БД через ADOConnection, ADOTable, DataSource. Разместим следующие компоненты (Рис. 6):

Рисунок 6 - Компоненты

Настройка компонентов:

AdoConnection:

свойство ConnectionString - открывается окно, в нем по нажатию кнопки Build выбираем Microsoft Jet 4.0v OLE DB Provider, потом по кнопке Next - выбираем нашу БД

свойство Login Promt: False

свойство Connected: True

DataSource

свойство DataSet - выбираем соответствующий компонент AdoQuery;

Если всё сделано правильно, то после задания таблицы компонент DBGrid1 заполнится данными (рис. 7).

Рисунок 7 Приложение для просмотра таблицы базы данных Access

Для большего удобства при создании приложений баз данных реализовано добавление данных

void __fastcall TForm3::Btn2Click2(TObject *Sender)

{

ADOTable2->Insert();

ADOTable2->FieldByName("Код преподавателя")->AsString = Edit4->Text;

ADOTable2->FieldByName("Фамилия")->AsString = Edit5->Text;

ADOTable2->FieldByName("Имя")->AsString = Edit6->Text;

ADOTable2->FieldByName("Отчество")->AsString = Edit7->Text;

ADOTable2->FieldByName("Ученая степень")->AsString = Edit8->Text;

ADOTable2->FieldByName("Должность")->AsString = Edit9->Text;

ADOTable2->FieldByName("Стаж")->AsString = Edit10->Text;

ADOTable2->Post();

Edit4->Text = "";

Edit5->Text = "";

Edit6->Text = "";

Edit7->Text = "";

Edit8->Text = "";

Edit9->Text = "";

Edit10->Text = "";

}

Рисунок 8

Экспорт данных в Excel

Экспортирование данных из базы данных реализован следующим образом

void __fastcall TForm3::N1Click(TObject *Sender)

{

TDataSet * DataSet = DBGrid1->DataSource->DataSet;

if (!DataSet->Active)

try

{DataSet->Open();}

catch(...)

{

Application->MessageBox(L"Ошибка при открытии Набора Данных(DataSet)!",L"Ошибка", MB_ICONERROR);

return;

}

Cursor = crHourGlass;

Variant Excel, Cells;

try

{Excel = CreateOleObject("Excel.Application");}

catch(...)

{Excel = Unassigned;

Cursor = crDefault;

Application->MessageBox(L"Ошибка при открытии сервера Excel!",L"Ошибка", MB_OK + MB_ICONERROR);

return;}

Excel.OlePropertySet("DisplayAlerts", false);

Excel.OlePropertySet("Visible",false);

Excel.OlePropertySet("WindowState",-4137);

try

{Excel.OlePropertyGet("Workbooks").OleProcedure("Add");}

catch(...)

{Excel.OleProcedure("Quit");

Excel = Unassigned;

Cursor = crDefault;

Application->MessageBox(L"Ошибка при создании книги!",L"Ошибка", MB_OK + MB_ICONERROR);

return;}

Cells = Excel.OlePropertyGet("Cells");

short n(0);//VisibleColumnsCount

try

{

for (int i=0; i < DBGrid1->Columns->Count; i++)

if (DBGrid1->Columns->Items[i]->Visible)

{n++;

Cells.OlePropertyGet("Item",1,n).OlePropertySet("Value", DBGrid1->Columns->Items[i]->Title->Caption.c_str());

//Горизонтальное выравнивание -> По центру

Cells.OlePropertyGet("Item", 1, n).OlePropertySet("HorizontalAlignment", -4108);

//Шрифт -> Жирный

Cells.OlePropertyGet("Item",1,n).OlePropertyGet("Font").OlePropertySet("Bold", True);

}

}

catch(...)

{Excel.OleProcedure("Quit");

if (DataSet->ControlsDisabled()) DataSet->EnableControls();

Cursor = crDefault;

Application->MessageBox(L"Ошибка при передачи данных столбцов!",L"Ошибка", MB_OK + MB_ICONERROR);

Excel = Unassigned; Cells = Unassigned;

return;}

TBookmark m = DataSet->GetBookmark();

DataSet->DisableControls();

DataSet->First();

try

{

while(!DataSet->Eof)

{n = 0;

for (int i=0; i < DBGrid1->Columns->Count; i++)

if (DBGrid1->Columns->Items[i]->Visible)

{n++;

Cells.OlePropertyGet("Item",DataSet->RecNo + 1, n).

OlePropertySet("Value", DBGrid1->Columns->Items[i]->Field->AsString.c_str());

if (i!= 2)

Cells.OlePropertyGet("Item", DataSet->RecNo + 1, n).OlePropertySet("HorizontalAlignment", -4108);

else

//С левого края

Cells.OlePropertyGet("Item", DataSet->RecNo + 1, n).OlePropertySet("HorizontalAlignment", -4131);

}

DataSet->Next();

}

//Cтиль линии

Excel.OlePropertyGet("Range",Cells.OlePropertyGet("Item", 1, 1),

Cells.OlePropertyGet("Item", DataSet->RecordCount + 1, n)).

OlePropertyGet("Borders").OlePropertySet("LineStyle", 1);

}

catch(...)

{Excel.OleProcedure("Quit");

DataSet->GotoBookmark(m); DataSet->FreeBookmark(m);

if (DataSet->ControlsDisabled()) DataSet->EnableControls();

Excel = Unassigned; Cells = Unassigned;

Cursor = crDefault;

Application->MessageBox(L"Ошибка при передачи данных",L"Ошибка", MB_OK + MB_ICONERROR);

return;}

//Ставим АвтоФильтр

Excel.OlePropertyGet("Range",Cells.OlePropertyGet("Item",1,1),

Cells.OlePropertyGet("Item",1,n)).OleProcedure("AutoFilter");

//АвтоФит

for (int i=1; i <= n; i++)

Excel.OlePropertyGet("Columns").OlePropertyGet("Item",i).OleProcedure("AutoFit");

DataSet->GotoBookmark(m); DataSet->FreeBookmark(m);

if (DataSet->ControlsDisabled()) DataSet->EnableControls();

Cursor = crDefault;

Excel.OlePropertySet("Visible",true);

Excel = Unassigned;

Cells = Unassigned;

}

Поиск записей

Для поиска записей использован методом Locate. К примеру, поиск будет производиться по заданному полю. Для поиска необходимо поместить на форму компонент для ввода критерия поиска и кнопку.

В обработчик события нажатия кнопки «Поиск» записываем:

void __fastcall TMainForm::btnSearchClick(TObject *Sender)

{

if(editSearch->Text.IsEmpty())

return;

TLocateOptions Options;

Options.Clear();

Options << loCaseInsensitive << loPartialKey;

if(!DataSource->DataSet->Locate(boxSearch->Text,editSearch->Text, Options))

MessageBoxA(Application->Handle, "По вашему запросу ничего не найдено!", "Поиск", MB_ICONINFORMATION);

}

6. Описание работы с системой

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

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

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

При запуске программы появляется окно

Рисунок 9 - Окно загрузки

Рисунок 10 - Окно авторизации

Рисунок 11 - Главное окно

Главное окно, которое содержит

главное меню,

вкладки,

возможность поиска записей,

область отображения и редактирования данных,

экспорт в Excel

справку (рис. 12-15):

Ввод данных максимально автоматизирован.

Рисунок 12

Рисунок 13

Рисунок 14

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

Рисунок 15

Поиск в программе работает корректно согласно предъявляемым требованиям.

В данном приложении организован диалог с пользователем в виде сообщений системы:

Рисунок 16

Рисунок 17

Рисунок 18

Рисунок 19

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

Заключение

В ходе выполнения курсового проекта:

были закреплены знания по курсу «Представление знаний в информационных системах»;

приобретен опыт при проектировании и программировании баз данных;

приобретен опыт при разработке объектно-ориентированных программ;

освоены методы передачи данных между приложениями;

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

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

Решены следующие задачи: возможность просматривать, редактировать, добавлять данные, получать результаты запросов. Так же обеспечена удобная работа для персонала организации. Следует отметить что:

при проектировании использовалась точка зрения самого разработчика;

пользователи БД равноправны;

среда разработки -Microsoft Access и Borland C++ Builder.

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

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

Список использованных источников

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

2. Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. Базы данных. Учебник для ВУЗов /под ред. проф.А.Д. Хомоненко СПб.:КОРОНА принт, 2000.- 416

3. Корнеев В.В. и др. Базы данных. Интеллектуальная обработка информации // М.:Нолидж, 2000.- 352 с.

4. Ханcен Г., Ханcен Д. Базы данных. Разработка и управление/М.: Бином, 1999-704С.

5. Глушаков С.В., Ломотько Д.В. Базы данных. Учебный курс // Харьков: Фолио; Ростов н/Д: Феникс; Киев: Абрис, 2000. - 504 с.

6. Игорева, Е.Л., Основы алгоритмизации и программирования (3-е издание)./ И.И. Попов, О.Л. Игорева - М.: Инфа-М, 2006 - 432 с.

7. Гражданский кодекс РФ Части первая, вторая. М.: Норма. - 2000.

Приложение

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

void __fastcall TForm1::TabControl1Change(TObject *Sender)

{

switch(TabControl1->TabIndex)

{

case 0:

DataSource1->DataSet = ADOTable1;

break;

case 1:

DataSource1->DataSet = ADOTable2;

break;

case 2:

DataSource1->DataSet = ADOTable3;

break;

case 3:

DataSource1->DataSet = ADOTable4;

break;

}

DBGrid1->Columns->Clear();

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Form1->Hide();

Form2->Show();

}

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

#include <vcl.h>

#pragma hdrstop

#include "Unit3.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit1.h"

#include "Office_2K.h"

#include <sysvari.h>

#include "ComObj.hpp"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm3 *Form3;

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

__fastcall TForm3::TForm3(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm3::TabControl1Change(TObject *Sender)

{

switch(TabControl1->TabIndex)

{

case 0:

DataSource1->DataSet = ADOTable1;

break;

case 1:

DataSource1->DataSet = ADOTable2;

break;

case 2:

DataSource1->DataSet = ADOTable3;

break;

case 3:

DataSource1->DataSet = ADOTable4;

break;

}

DBGrid1->Columns->Clear();

ComboBox2->Clear();

short iColWidth[3][6] = {45, 80, 70, 90, 30, 50, 45, 146, 30, 70, 70, 50, 45, 248, 30, 90, 0, 0};

for(int i = 0; i < DataSource1->DataSet->FieldCount; i++)

{

ComboBox2->Items->Add(DataSource1->DataSet->Fields->Fields[i]->FieldName);

TColumn *Column;

Column = DBGrid1->Columns->Add();

Column->Field = DataSource1->DataSet->Fields->Fields[i];

Column->Width = iColWidth[TabControl1->TabIndex][i];

}

ComboBox2->ItemIndex = 0;

DBGrid1->Columns->Clear();

for(int i = 0; i < DataSource1->DataSet->FieldCount; i++)

{

TColumn *Column;

Column = DBGrid1->Columns->Add();

Column->Field = DataSource1->DataSet->Fields->Fields[i];

Column->Width = 100;

}

}

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

void __fastcall TForm3::TabControl2Change(TObject *Sender)

{

switch(TabControl2->TabIndex)

{

case 0:

GroupBox1->Visible = true;

GroupBox2->Visible = false;

GroupBox3->Visible = false;

break;

case 1:

GroupBox1->Visible = false;

GroupBox2->Visible = true;

GroupBox3->Visible = false;

break;

case 2:

GroupBox1->Visible = false;

GroupBox2->Visible = false;

GroupBox3->Visible = true;

break;

}

}

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

void __fastcall TForm3::Btn2Click2(TObject *Sender)

{

ADOTable2->Insert();

ADOTable2->FieldByName("Код преподавателя")->AsString = Edit4->Text;

ADOTable2->FieldByName("Фамилия")->AsString = Edit5->Text;

ADOTable2->FieldByName("Имя")->AsString = Edit6->Text;

ADOTable2->FieldByName("Отчество")->AsString = Edit7->Text;

ADOTable2->FieldByName("Ученая степень")->AsString = Edit8->Text;

ADOTable2->FieldByName("Должность")->AsString = Edit9->Text;

ADOTable2->FieldByName("Стаж")->AsString = Edit10->Text;

ADOTable2->Post();

Edit4->Text = "";

Edit5->Text = "";

Edit6->Text = "";

Edit7->Text = "";

Edit8->Text = "";

Edit9->Text = "";

Edit10->Text = "";

}

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

void __fastcall TForm3::Button3Click(TObject *Sender)

{

ADOTable3->Insert();

ADOTable3->FieldByName("Дата")->AsString = Edit12->Text;

ADOTable3->FieldByName("Код преподавателя")->AsString = Edit13->Text;

ADOTable3->FieldByName("Код предмета")->AsString = Edit14->Text;

ADOTable3->FieldByName("Тип занятия")->AsString = Edit15->Text;

ADOTable3->FieldByName("Количество часов")->AsString = Edit16->Text;

ADOTable3->FieldByName("Номер группы")->AsString = Edit17->Text;

ADOTable3->Post();

Edit11->Text = "";

Edit12->Text = "";

Edit13->Text = "";

Edit14->Text = "";

Edit15->Text = "";

Edit16->Text = "";

Edit17->Text = "";

}

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

void __fastcall TForm3::Button4Click(TObject *Sender)

{

ADOTable1->Insert();

ADOTable1->FieldByName("Код предмета")->AsString = Edit1->Text;

ADOTable1->FieldByName("Название")->AsString = Edit2->Text;

ADOTable1->FieldByName("Количество часов")->AsString = Edit3->Text;

ADOTable1->Post();

Edit1->Text = "";

Edit2->Text = "";

Edit3->Text = "";

}

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

void __fastcall TForm3::Button5Click(TObject *Sender)

{

if(Edit11->Text.IsEmpty())

return;

TLocateOptions Options;

Options.Clear();

Options << loCaseInsensitive << loPartialKey;

if(!DataSource1->DataSet->Locate(ComboBox2->Text,Edit11->Text, Options))

MessageBoxA(Application->Handle, "По вашему запросу ничего не найдено!", "Поиск", MB_ICONINFORMATION);

}

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

void __fastcall TForm3::N4Click(TObject *Sender)

{

ShellExecute(Handle,L"open",L"help.chm",NULL,NULL,SW_RESTORE);

}

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

void __fastcall TForm3::N5Click(TObject *Sender)

{

if (MessageBoxA(Application->Handle, "Вы действительно хотите выйти?", "Выход из программы", MB_YESNO + MB_ICONQUESTION) == IDYES)

Form1->Close();

}

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

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

{

if(ADOTable1->Modified)

{

ADOTable1->Post();

}

if(ADOTable2->Modified)

{

ADOTable2->Post();

}

if(ADOTable3->Modified)

{

ADOTable3->Post();

}

Form1->Close();

}

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

void __fastcall TForm3::Button6Click(TObject *Sender)

{

TDataSet * DataSet = DBGrid1->DataSource->DataSet;

if (!DataSet->Active)

try

{DataSet->Open();}

catch(...)

{

Application->MessageBox(L"Ошибка при открытии Набора Данных(DataSet)!",L"Ошибка", MB_ICONERROR);

return;

}

Cursor = crHourGlass;

Variant Excel, Cells;

try

{Excel = CreateOleObject("Excel.Application");}

catch(...)

{Excel = Unassigned;

Cursor = crDefault;

Application->MessageBox(L"Ошибка при открытии сервера Excel!",L"Ошибка", MB_OK + MB_ICONERROR);

return;}

Excel.OlePropertySet("DisplayAlerts", false);

Excel.OlePropertySet("Visible",false);

Excel.OlePropertySet("WindowState",-4137);

try

{Excel.OlePropertyGet("Workbooks").OleProcedure("Add");}

catch(...)

{Excel.OleProcedure("Quit");

Excel = Unassigned;

Cursor = crDefault;

Application->MessageBox(L"Ошибка при создании книги!",L"Ошибка", MB_OK + MB_ICONERROR);

return;}

Cells = Excel.OlePropertyGet("Cells");

short n(0);//VisibleColumnsCount

try

{

for (int i=0; i < DBGrid1->Columns->Count; i++)

if (DBGrid1->Columns->Items[i]->Visible)

{n++;

Cells.OlePropertyGet("Item",1,n).OlePropertySet("Value", DBGrid1->Columns->Items[i]->Title->Caption.c_str());

//Горизонтальное выравнивание -> По центру

Cells.OlePropertyGet("Item", 1, n).OlePropertySet("HorizontalAlignment", -4108);

//Шрифт -> Жирный

Cells.OlePropertyGet("Item",1,n).OlePropertyGet("Font").OlePropertySet("Bold", True);

}

}

catch(...)

{Excel.OleProcedure("Quit");

if (DataSet->ControlsDisabled()) DataSet->EnableControls();

Cursor = crDefault;

Application->MessageBox(L"Ошибка при передачи данных столбцов!",L"Ошибка", MB_OK + MB_ICONERROR);

Excel = Unassigned; Cells = Unassigned;

return;}

TBookmark m = DataSet->GetBookmark();

DataSet->DisableControls();

DataSet->First();

try

{

while(!DataSet->Eof)

{n = 0;

for (int i=0; i < DBGrid1->Columns->Count; i++)

if (DBGrid1->Columns->Items[i]->Visible)

{n++;

Cells.OlePropertyGet("Item",DataSet->RecNo + 1, n).

OlePropertySet("Value", DBGrid1->Columns->Items[i]->Field->AsString.c_str());

if (i!= 2)

Cells.OlePropertyGet("Item", DataSet->RecNo + 1, n).OlePropertySet("HorizontalAlignment", -4108);

else

//С левого края

Cells.OlePropertyGet("Item", DataSet->RecNo + 1, n).OlePropertySet("HorizontalAlignment", -4131);

}

DataSet->Next();

}

//Cтиль линии

Excel.OlePropertyGet("Range",Cells.OlePropertyGet("Item", 1, 1),

Cells.OlePropertyGet("Item", DataSet->RecordCount + 1, n)).

OlePropertyGet("Borders").OlePropertySet("LineStyle", 1);

}

catch(...)

{Excel.OleProcedure("Quit");

DataSet->GotoBookmark(m); DataSet->FreeBookmark(m);

if (DataSet->ControlsDisabled()) DataSet->EnableControls();

Excel = Unassigned; Cells = Unassigned;

Cursor = crDefault;

Application->MessageBox(L"Ошибка при передачи данных",L"Ошибка", MB_OK + MB_ICONERROR);

return;}

//Ставим АвтоФильтр

Excel.OlePropertyGet("Range",Cells.OlePropertyGet("Item",1,1),

Cells.OlePropertyGet("Item",1,n)).OleProcedure("AutoFilter");

//АвтоФит

for (int i=1; i <= n; i++)

Excel.OlePropertyGet("Columns").OlePropertyGet("Item",i).OleProcedure("AutoFit");

DataSet->GotoBookmark(m); DataSet->FreeBookmark(m);

if (DataSet->ControlsDisabled()) DataSet->EnableControls();

Cursor = crDefault;

Excel.OlePropertySet("Visible",true);

Excel = Unassigned;

Cells = Unassigned;

}

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

void __fastcall TForm3::N1Click(TObject *Sender)

{

TDataSet * DataSet = DBGrid1->DataSource->DataSet;

if (!DataSet->Active)

try

{DataSet->Open();}

catch(...)

{

Application->MessageBox(L"Ошибка при открытии Набора Данных(DataSet)!",L"Ошибка", MB_ICONERROR);

return;

}

Cursor = crHourGlass;

Variant Excel, Cells;

try

{Excel = CreateOleObject("Excel.Application");}

catch(...)

{Excel = Unassigned;

Cursor = crDefault;

Application->MessageBox(L"Ошибка при открытии сервера Excel!",L"Ошибка", MB_OK + MB_ICONERROR);

return;}

Excel.OlePropertySet("DisplayAlerts", false);

Excel.OlePropertySet("Visible",false);

Excel.OlePropertySet("WindowState",-4137);

try

{Excel.OlePropertyGet("Workbooks").OleProcedure("Add");}

catch(...)

{Excel.OleProcedure("Quit");

Excel = Unassigned;

Cursor = crDefault;

Application->MessageBox(L"Ошибка при создании книги!",L"Ошибка", MB_OK + MB_ICONERROR);

return;}

Cells = Excel.OlePropertyGet("Cells");

short n(0);//VisibleColumnsCount

try

{

for (int i=0; i < DBGrid1->Columns->Count; i++)

if (DBGrid1->Columns->Items[i]->Visible)

{n++;

Cells.OlePropertyGet("Item",1,n).OlePropertySet("Value", DBGrid1->Columns->Items[i]->Title->Caption.c_str());

//Горизонтальное выравнивание -> По центру

Cells.OlePropertyGet("Item", 1, n).OlePropertySet("HorizontalAlignment", -4108);

//Шрифт -> Жирный

Cells.OlePropertyGet("Item",1,n).OlePropertyGet("Font").OlePropertySet("Bold", True);

}

}

catch(...)

{Excel.OleProcedure("Quit");

if (DataSet->ControlsDisabled()) DataSet->EnableControls();

Cursor = crDefault;

Application->MessageBox(L"Ошибка при передачи данных столбцов!",L"Ошибка", MB_OK + MB_ICONERROR);

Excel = Unassigned; Cells = Unassigned;

return;}

TBookmark m = DataSet->GetBookmark();

DataSet->DisableControls();

DataSet->First();

try

{

while(!DataSet->Eof)

{n = 0;

for (int i=0; i < DBGrid1->Columns->Count; i++)

if (DBGrid1->Columns->Items[i]->Visible)

{n++;

Cells.OlePropertyGet("Item",DataSet->RecNo + 1, n).

OlePropertySet("Value", DBGrid1->Columns->Items[i]->Field->AsString.c_str());

if (i!= 2)

Cells.OlePropertyGet("Item", DataSet->RecNo + 1, n).OlePropertySet("HorizontalAlignment", -4108);

else

//С левого края

Cells.OlePropertyGet("Item", DataSet->RecNo + 1, n).OlePropertySet("HorizontalAlignment", -4131);

}

DataSet->Next();

}

//Cтиль линии

Excel.OlePropertyGet("Range",Cells.OlePropertyGet("Item", 1, 1),

Cells.OlePropertyGet("Item", DataSet->RecordCount + 1, n)).

OlePropertyGet("Borders").OlePropertySet("LineStyle", 1);

}

catch(...)

{Excel.OleProcedure("Quit");

DataSet->GotoBookmark(m); DataSet->FreeBookmark(m);

if (DataSet->ControlsDisabled()) DataSet->EnableControls();

Excel = Unassigned; Cells = Unassigned;

Cursor = crDefault;

Application->MessageBox(L"Ошибка при передачи данных",L"Ошибка", MB_OK + MB_ICONERROR);

return;}

//Ставим АвтоФильтр

Excel.OlePropertyGet("Range",Cells.OlePropertyGet("Item",1,1),

Cells.OlePropertyGet("Item",1,n)).OleProcedure("AutoFilter");

//АвтоФит

for (int i=1; i <= n; i++)

Excel.OlePropertyGet("Columns").OlePropertyGet("Item",i).OleProcedure("AutoFit");

DataSet->GotoBookmark(m); DataSet->FreeBookmark(m);

if (DataSet->ControlsDisabled()) DataSet->EnableControls();

Cursor = crDefault;

Excel.OlePropertySet("Visible",true);

Excel = Unassigned;

Cells = Unassigned;

}

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

void __fastcall TForm3::N2Click(TObject *Sender)

{

switch(TabControl1->TabIndex)

{

case 0:

ADOTable1->Edit();

ADOTable1->FieldByName("Код предмета")->AsString = Edit1->Text;

ADOTable1->FieldByName("Название")->AsString = Edit2->Text;

ADOTable1->FieldByName("Количество часов")->AsString = Edit3->Text;

ADOTable1->Post();

MessageDlg("Запись отредактирована!", mtInformation, TMsgDlgButtons()<< mbYes, 0);

Edit1->Text = "";

Edit2->Text = "";

Edit3->Text = "";

break;

case 1:

ADOTable2->Edit();

ADOTable2->FieldByName("Код преподавателя")->AsString = Edit4->Text;

ADOTable2->FieldByName("Фамилия")->AsString = Edit5->Text;

ADOTable2->FieldByName("Имя")->AsString = Edit6->Text;

ADOTable2->FieldByName("Отчество")->AsString = Edit7->Text;

ADOTable2->FieldByName("Ученая степень")->AsString = Edit8->Text;

ADOTable2->FieldByName("Должность")->AsString = Edit9->Text;

ADOTable2->FieldByName("Стаж")->AsString = Edit10->Text;

ADOTable2->Post();

MessageDlg("Запись отредактирована!", mtInformation, TMsgDlgButtons()<< mbYes, 0);

Edit4->Text = "";

Edit5->Text = "";

Edit6->Text = "";

Edit7->Text = "";

Edit8->Text = "";

Edit9->Text = "";

Edit10->Text = "";

break;

case 2:

ADOTable3->Edit();

ADOTable3->FieldByName("Дата")->AsString = Edit12->Text;

ADOTable3->FieldByName("Код преподавателя")->AsString = Edit13->Text;

ADOTable3->FieldByName("Код предмета")->AsString = Edit14->Text;

ADOTable3->FieldByName("Тип занятия")->AsString = Edit15->Text;

ADOTable3->FieldByName("Количество часов")->AsString = Edit16->Text;

ADOTable3->FieldByName("Номер группы")->AsString = Edit17->Text;

ADOTable3->Post();

MessageDlg("Запись отредактирована!", mtInformation, TMsgDlgButtons()<< mbYes, 0);

Edit11->Text = "";

Edit12->Text = "";

Edit13->Text = "";

Edit14->Text = "";

Edit15->Text = "";

Edit16->Text = "";

Edit17->Text = "";

break;

}

}

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


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

  • Разработка структуры реляционной базы данных, предназначенной для отслеживания финансовой стороны работы компании. Требования к составу и параметрам технических средств. Нормализация информационных объектов. Физическая модель базы данных приложения.

    курсовая работа [1,4 M], добавлен 11.11.2014

  • Этапы решения задачи классификации цифр арабского алфавита на основе нейронных сетей: выбор класса, структуры и пакета нейронной сети, ее обучение, требования к информационной и программной совместимости, составу и параметрам технических средств.

    реферат [111,6 K], добавлен 19.10.2010

  • Использование средств вычислительной техники в информационных системах. Программно-аппаратные средства, обеспечивающие сбор, обработку и выдачу информации. Модели данных - списки (таблицы), реляционные базы данных, иерархические и сетевые структуры.

    реферат [105,1 K], добавлен 08.11.2010

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

    реферат [403,8 K], добавлен 02.02.2014

  • Определение автоматизированных информационных систем. Обоснование выбора среды разработки информационной системы. Создание запросов для выбора информации. Логическая и физическая структура реляционной базы данных. Разработка интерфейса пользователя.

    курсовая работа [2,1 M], добавлен 16.04.2017

  • Требования к составу и параметрам технических средств. Инфологическая (концептуальная) модель предметной области. Физическая и логическая модель базы данных. Создание структуры БД в СУБД MS ACCESS. Программирование приложения. Описание работы с системой.

    курсовая работа [572,2 K], добавлен 17.11.2014

  • Модели данных как формальный аппарат для описания информационных потребностей пользователей. Структура информационной базы. Типы взаимосвязей. Разработка логической структуры базы для хранения данных о пяти поставщиках. Детализация реляционной модели.

    презентация [28,9 K], добавлен 07.12.2013

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

    курсовая работа [1,5 M], добавлен 07.06.2013

  • Выделение информационных объектов и их инфологическая модель. Логическая структура реляционной базы данных. Разработка таблиц в системе управления базами данных Access. Создание запросов, форм и отчетов в СУБД Access. Разработка приложения пользователя.

    курсовая работа [2,8 M], добавлен 05.02.2018

  • Классификация информационных систем. Использование баз данных в информационных системах. Проектирование и реализация информационной системы средствами MS Access. Анализ входной информации предметной области и выделение основных информационных объектов.

    курсовая работа [2,5 M], добавлен 09.08.2012

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