Рисунок 2.4 – Диаграмма ER-екземпляров для связи «Мероприятие – Работник»
По данным диаграммам и с учётом правил составления таблиц можно сделать вывод, что для разрабатываемого приложения нужны следующие таблицы.
Заказчик (Id_заказчика, Наименование, Адрес, Телефон, ФИО директора).
Проект (Id_проекта, Id_заказчика, Название, Дата начала работ, Дата окончания, Статус, Дата поступления заказа).
Мероприятия (Id_мероприятия, Id_проекта, Наименование, Вид работы).
Участие (№ наряда, Id_мероприятия, Id_работника, Дата, Количество отработанных часов).
Работник (Id_работника, Фамилия, Имя, Отчество, Вид деятельности, Стаж, Домашний адрес, Телефон).
После составления таблиц следует определить какого типа будут поля в данных таблицах. Данная процедура рассмотрена в табл.2.1.
Таблица 2.1
Типы полей таблиц разрабатываемого приложения.
Заказчик | Проект | ||
Название поля | Тип поля | Название поля | Тип поля |
Id_заказчика | Числовой (ключ) | Id_проекта | Числовой (ключ) |
Наименование | Текстовый | Id_заказчика | Числовой |
Адрес | Текстовый | Название | Текстовый |
Телефон | Текстовый | Дата начала работ | Дата/время |
ФИО директора | Текстовый | Дата окончания | Дата/время |
Мероприятия | Статус | Текстовый | |
Id_мероприятия | Числовой (ключ) | Дата поступления заказа | Дата/время |
Id_проекта | Числовой | Участие | |
Наименование | Текстовый | (№ наряда | Числовой (ключ) |
Вид работы | Текстовый | Id_мероприятия | Числовой |
Id_работника | Числовой | ||
Дата | Дата/время | ||
Работник | |||
Название поля | Тип поля | ||
Id_работника | Числовой (ключ) | ||
Фамилия | Текстовый | ||
Имя | Текстовый | ||
Отчество | Текстовый | ||
Вид деятельности | Текстовый | ||
Стаж | Числовой | ||
Домашний адрес | Текстовый | ||
Телефон | Текстовый |
2.2 Концептуальное моделирование
Объектно-ориентированное проектирование программной системы выполнялось в виде построения UML-диаграмм [10]. Унифицированный язык моделирования UML (UnifiedModelingLanguage) предназначен для описания, визуализации и документирования объектно-ориентированных программных систем и бизнес-процессов с ориентацией на их последующую реализацию в виде программного обеспечения. Проектирование системы на языке UML выполнялось с использованием CASE-средств IBMRationalRose.
Для спецификации, визуализации, проектирования и документирования компонентов программного обеспечения была разработана диаграмма вариантов использования, представленная на рис. 2.5.
Рисунок 2.5 – Диаграмма вариантов использования
На данной диаграмме показано, что основной задачей пользователя разрабатываемой системы является приём заявок, работа с базами данных и получение результатов по этим данным. В работу с БД входит работа с данными и обработка заявок. Под обработкой заявок подразумевается возможность их создания, редактирования и удаления. В работу с данными входит возможность создания записей, запросов к системе и отчётов по ним.
3. РЕАЛИЗАЦИЯ АВТОМАТИЗИРОВАННОЙ ИНФОРМАЦИОННОЙ СИСТЕМЫ
3.1 Разработка интерфейса приложения
Создание таблиц для АИС. Для этого шага использовался такой пакет как MicrosoftAccess. Таблицы создавать в этом приложении удобней, чем в Database Desktop, приложении на базе платформы для создания программ Delphi. Таблицы хранятся не отдельно каждая в своём файле, а сразу в одном, что обеспечивает целостность базы, поскольку для этого файла не нужны дополнительные компоненты.
Наряду с традиционными инструментами доступа к данным Borland Database Engine и ODBC в приложениях Delphi можно применять технологию Microsoft ActiveX Data Objects (ADO), которая основана на возможностяхСОМ, а именно интерфейсов OLE DB. OLE DB представляет собой набор специализированных объектов СОМ, инкапсулирующих стандартные функции обработки данных, и специализированные функции конкретных источников данных и интерфейсов, обеспечивающих передачу данных между объектами. Технология ADO в целом включает в себя не только сами объекты OLE DB, но и механизмы, обеспечивающие взаимодействие объектов с данными и приложениями. На этом уровне важнейшую роль играют провайдеры ADO, координирующие работу приложений с хранилищами данных различных типов. Так как технология ADO основана на стандартных интерфейсах СОМ, которые являются системным механизмом Windows, это сокращает общий объем работающего программного кода и позволяет распространять приложения БД без вспомогательных программ и библиотек. Данная АИС сделана с помощью ADO-технологии, что позволяет данным динамически обновляться во время работы приложения. База данных подключена через системный драйвер Microsoft.Jet.OLEDB.4.0.В данном ПП при разработке использовался компонент ADOConnection. К его классу относятся также используемые компоненты: ADOQuery и ADOTable.
Таблицы, созданные в MicrosoftAccess 2007, представлены на рис.3.1-3.5.
Рисунок 3.1 – Структура таблицы «Заказчик»
Рисунок 3.2 – Структура таблицы «Проект»
Рисунок 3.3 – Структура таблицы «Мероприятия»
Рисунок 3.4 – Структура таблицы «Участие»
Рисунок 3.5 – Структура таблицы «Работник»
Данные таблицы соответствуют таблицам, полученным при проектировании данной автоматизированной информационной системы. Таблицы могут связываться в Access.
Ниже на рисунке 3.6 приведена логическая связь таблиц, спроектированных в Access.
Рисунок 3.6 – Связи между таблицами
На данном рисунке (см.рис.3.6) детально показаны все таблицы, созданные для данного ПП. Связи в таблицах осуществляются через ключи в одних таблицах и идентичным им записям в других.
Создание интерфейса. В данном программном продукте разрабатывался интерфейс, который будет ориентирован на неопытного пользователя. Выбор нужной формы осуществляется с помощью контекстного меню (рис.3.7).
На главной форме предоставлены 2 таблицы: Проект и Мероприятия. Предусмотрена сортировка кликом мышки по на званию какого-либо столбца таблиц. Также система содержит справку пользователя.
Рисунок 3.7 – Главная форма ПП
3.2 Создание SQL-запросов
В данном проекте были использованы различные SQL-запросы, для оптимизации работы и увеличения эффективности. Список этих запросов предоставлен ниже.
1) Сортировка
При нажатии на заголовок поля производится сортировка по этому полю, обработчики событий предоставлены ниже. Пример предоставлен на рис.3.8.
procedure TForm1.DBGid1TitleClick(Column: TColumn);
var s:string;
begin
s:=Column.Title.Caption;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from проект order by '+s);
ADOQuery1.Active:=false;
ADOQuery1.Active:=true;
end;
procedure TForm1.DBGrid2TitleClick(Column: TColumn);
var s:string;
begin
s:=Column.Title.Caption;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from Мероприятия order by '+s);
ADOQuery2.Active:=false;
ADOQuery2.Active:=true;
end;
Рисунок 3.8 – Пример сортировки
2) Выбор завершённых проектов за период, определяемый пользователем.
procedure TForm7.Button1Click(Sender: TObject);
function DateConv(date: tdate):string;
var i: integer;
begin
result:=datetostr(date);
for i:=1 to length(result) do if result[i]='.' then result[i]:='/';
end;
begin
adoquery1.SQL.Clear;
OutputQuery:='SELECT * FROM Проект WHERE ([Дата_начала_работ] Between #'+
DateConv(DateTimePicker1.Date)+'# And #'+DateConv(DateTimePicker2.Date)+
'#) And (статус='+#39+'завершен'+#39+')';
adoquery1.SQL.add(OutputQuery);
adoquery1.Active:=false;
adoquery1.Active:=true;
end;
Пример запроса приведен на рис.3.9.
Рисунок 3.9 – Запрос по проектам
3) Создание заявки на новый проект в пустой таблице «Заявки»
Данный шаг сделан потому, что для разработки проекта требуется определённое время. Так как задача администратора заключается в том, чтобы принять заявку, то таким способом она регистрируется в базе данных. Поскольку специалисту необходимо просчитать время, за которое проект будет закончен, какие работники будут выполнять мероприятия по данному проекту, то есть разработать проект.
procedure TForm8.Button1Click(Sender: TObject);
var s:string;
function DateConv(date: tdate):string;
var i: integer;
begin
result:=datetostr(date);
for i:=1 to length(result) do if result[i]='.' then result[i]:='/';
end;
begin
s:='INSERT into Заявки values ('+#39+combobox1.text+#39+', '+#39+edit1.text+#39+','+#39+combobox2.text+#39+', #'+dateConv(DateTimePicker1.Date)+'#)';
form1.ExecSQL(s);
Form9.ShowModal;
Form8.Close;
end;
Пример регистрации заявки предоставлен на рис 3.10-3.11.
Рисунок 3.10 – Регистрация заявки
Рисунок 3.11 – Заполнение формы заявок
4) запрос, показывающий сколько часов и по какому проекту отработал определённый работник
procedure TForm10.Button1Click(Sender: TObject);
var s: string;
begin
adoquery1.SQL.Clear;
s:='SELECT Работник.Фамилия, Работник.Имя, Проект.Название, Участие.[Кол-во_отработ_часов] FROM '+
Работник INNER JOIN (Проект INNER JOIN (Мероприятия INNER JOIN Участие ON Мероприятия.Id_мероприятия '+