Разработка информационной системы "Аптека"

 

Введение


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

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

После проведения анализа, были выявлены следующие задачи:

·Список лекарств;

·Количество лекарств;

·Описание лекарств

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

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

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



Специальная часть


Постановка задачи

Поставленная задача курсовой работы: работа аптеки.

Целью курсовой работы является реализация автоматизированной системы управления работой аптеки.

Требуется создать в среде Delphi 7 приложение. База данных состоит из нескольких таблиц.. Отношение между таблицами «один ко многим».

Перечень задач для реализации:

·спроектировать базу данных;

·создать формы для работы с базой;

·организовать пользовательское меню;

·создать поисковые системы ;

·организовать отчеты.

Необходимо разработать базу данных, которая отвечает следующим показателям:

·полнота;

·достоверность;

·актуальность;

·эффективность;

·оперативность;

·удобный интерфейс.


Решение задачи


Разработка информационной системы «Аптека» была разделена на два этапа: на разработку информационной базы данных, и на разработку самого приложения.

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

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

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

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

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

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

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

Для того, чтобы достигнуть цель приложения в соответствии с поставленной задачей были использованы литературные источники и лекции, которые посвящены СУБД Microsoft SQL Server 2008, SQL запросам, средствам проектирования баз данных. Так же были освоена среда разработки Delphi для разработки моего приложения.


Разработка базы данных


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

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

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

С проектированием базы данных непосредственно связано понятие нормализации. Отношение называется нормализованным, если значение каждого атрибута в каждом кортеже является атомарным (неделимым).

В реляционной модели данных поддерживаются только нормализованные отношения:

·такой подход не налагает ограничений на то, что можно описывать с помощью нормализованных отношений;

·полученное упрощение в структуре данных ведет к соответствующим упрощениям в операторах манипулирования данными.

Е. Кодд первоначально определил три уровня нормализации, которые он назвал первой, второй и третьей нормальными формами. Все нормализованные отношения находятся в первой нормальной форме (1НФ).

Некоторые отношения 1НФ находятся также во второй нормальной форме (2НФ), некоторые отношения 2НФ находятся в третьей нормальной форме (ЗНФ). Имеется механизм, позволяющий любое отношение преобразовать к третьей нормальной форме. В процессе таких преобразований могут выделяться новые отношения.

Отношение R находится в 1НФ тогда и только тогда, когда все входящие в него значения (домены) содержат только атомарные(неделимые) значения.

Отношение находится во 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от составного ключа.

Отношение R находится в ЗНФ, если оно находится в 2НФ и каждый не ключевой атрибут нетранзитивно зависит от первичного ключа.

Процесс построения информационной модели состоит из следующих шагов:

·определение сущностей;

·определение связей;

·задание первичных и альтернативных ключей;

·определение атрибутов сущностей;

·приведение модели к требуемому уровню нормальной формы;

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

Построение базы данных в СУБД Microsoft SQL Server 2008 означает прямое отображение фактов из реальной жизни. Например, люди, столы, отделы, собаки и компьютеры являются реальными объектами. Они именуются на естественном языке, с любыми разделителями слов (пробелы, запятые и т.д.).В результате разработки спроектированная схема базы данных (рис. 1a,b).


Рис. 1а (SQL Server 2008)


Разработка прикладной программы


Данное программное обеспечение разработано на языке программирования Delphi7 с использованием СУБД Microsoft SQL Server 2008. Данное СУБД позволяет быстро и качественно проектировать и создавать реляционную модель Базы Данных. Основной используемый язык запросов - Transact-SQL <#"justify">В данной работе для соединения с базой данных используется технология ADO, которая позволяет соединиться с базой данных без задания псевдонимов. ADO компоненты могут связываться с провайдером напрямую или с помощью компонента ADO Conection.

Для установки связи с ADO у этого компонента необходимо задать свойство Connection String, которое определяет провайдер и расположение базы данных.

Далее для установки связи необходимо выбрать:

File-New-Data Module на вкладке ADO выбрать ADO Connection. После чего, необходимо настроить подключение приложения к БД в свойстве ConnectionString (рис. 2).


Рис. 2


Нажав на кнопку Build, выбираем провайдера «Microsoft OLE DB Provider for SQL Server», и указываем сведения для подключения к БД. Вводим имя сервера, базу данных, и выполняем подключение (Рис. 3,4).

Рис. 3 Рис. 4


Для формирования запросов и наборов данных из базы данных был использован компонент ADOQuery с вкладки ADO. Для промежуточных звений между наборами данных Query и визуальными таблицами на форме был использован компонент DataSource с вкладки Data Access, как бы являются источниками данных для этих таблиц.

Добавив все размещенные на модуле данных объекты, получили следующий состав объектов (Рис. 5)


Рис. 5

Для формирования набора данных в свойствах SQL, для каждого набора данных написан запрос на языке Transact-SQL (T-SQL) (Рис. 6)


Рис. 6


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



Для того Чтобы объекты Модуля данных (модуля Unit2) стали доступны в модуле Unit1, в подразделе Uses раздела Implementation модуля Unit1 было прописано подключения модуля Unit2 ( uses Unit2)

Источники данных (ТDataSource) связаны с соответствующими наборами данных (TADOQuery) через свойство DataSet у источников данных.


Рис. 7


Для отображения содержимого наборов данных на форме были размещены такие компоненты как таблица cxGrid (с вкладки Dev Express), стандартные компоненты DBEdit, DBNavigator

Связанные через свойство DataSource с соответствующими источниками данных. А также, для компонентов DBEdit через свойство DataField - с соответствующими полями таблиц БД.

Для отражения полей данных, которые будут отражаться при выполнении приложения, в свойствае таблицы (cxGrid) были добавлены нужные поля, нажав на кнопку «Retrieve Fields» (Рис. 8)

базы данный информационный

Рис.8


В базе данных присутствует фильтр, компонент RadioGroup с двумя (Рис. 9 ) переключателями (все, по содержанию)

Рис. 9


Этот фильтр-переключатель будет давать возможность отображать (запрашивать из БД), или:

§все записи из таблицы заказ, цена базы данных,

§только те, которые будут соответствовать выбранной пользователем строке в таблице заказчик на экранной форме.

Используемый код фильтра.


Рис. 10


В таблице услуги было создано поле Фото

Для его создания в таблице услуги в SQL Server было добавлено поле с типом Varbinary(MAX)

При добавлении в программу этого поля, в его свойствах был указан тип Properties-Imag (Рис. 11).


Рис.11


Чтобы иметь возможность добавлять изображения в формате BMP в Базу данных было размещено на форме компонент OpenPictureDialog (Рис. 12).


Рис. 12


Для удобства в последствии выбора BMP-файлов в свойстве Filter этого компонента устанановили фильтр на выбор файлов (Рис. 13).


Рис. 13

Далее, был создан обработчик на событие OnClick у кнопки Button и вписан следующий программный код:


procedure TForm1.Button1Click(Sender: TObject);DM do begindlgOpenPic1.Execute then beginnot (T1.State in [dsInsert,dsEdit]) then.Edit;

//cxgrdbclmnGrid1DBTableView1photo.LoadFromFile(dlgOpenPic1.FileName);;;;


Стандартным компонентом для управления записями БД через Delphi-приложение служит компонент DBNavigator с закладки Data Controls (Рис. 14)


Рис 14


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

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

Обработчик события OnClick, выполняемый при нажатии на кнопку «Добавить» (это еще не сохранение записи в базу данных)


with DM do beginzakazchik.State=dsBrowse then begin.Append;.SetFocus;;

end;


Обработчик события OnClick, выполняемый при нажатии на кнопку «Сохранить»


with DM do beginzakazchik.State in [dsInsert,dsEdit] then.Post;;


Бывает, что при сохранении информации в БД возникают ошибки, например, обязательное поле не заполнено, или БД доступна только для чтения. Действия по исправлению ошибок, выдаче окон-комментариев и пр. можно предусмотреть в обработчике события OnPostError у набора данных, предварительно подключив модули Controls и Dialogs.


MessageDlg('Ошибка. Проверьте поля кодзаказчика и кодцены', mtError,[mbOK],0);

if MessageDlg('Отменить изменения?',

mtConfirmation,[mbYes,mbNo],0)=mrYeszakazchik.Cancel Form1.DBEdit1.SetFocus;


Обработчик события OnClick, выполняемый при нажатии на кнопку «Отменить».


with DM do beginzakazchik.State in [dsInsert,dsEdit] then.Cancel;

end;


Метод Cancel набора данных отменяет внесенные изменения, не сохраненные пока в БД

Обработчик события OnClick, выполняемый при нажатии на кнопку «Удалить».


with DM do beginzakazchik.State=dsBrowse then

if MessageDlg('Удалить запись?'+#10#13+

'При этом соответствующие записи в '+

'подчиненных таблицах средствами СУБД будут удалены! ',,[mbYes,mbNo],0)=mrYes then.Delete;

end;


Метод Delete набора данных удаляет выбранную запись из БД. Удаление в данном обработчике произойдет только при ответе «Yes» в появившемся окне диалога. При этом средствами СУБД возможно каскадное удаление записей в подчиненных таблицах. (Рис. 15)


Рис. 15


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

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

С целью выполнения в разрабатываемом приложении инструкций (операторов) языка T-SQL для обработки транзакций был размещен компонент ADOQuery (с вкладки ADO) на модуле данных и переименован в TRAN.

Создан обработчик события BeforePost для набора данных Цена, который будет срабатывать непосредственно перед сохранением записи в Заказ (как новой записи, так и уже существующей исправленной записи)

Ккод обработчика :

TDM.beforpost(DataSet: TDataSet);DM.zakaz.State=dsInsert then_v_cenu:=true;.SQL.Clear;.SQL.Add('BEGIN TRAN');.ExecSQL;

end;


Приведенный программный код в случае добавления в ЗАКАЗ именно новой записи установит для глобальной переменной Dobavit_v_cenu значение True, чтобы при срабатывании следом события AfterPost автоматически бы добавилась и сохранилась запись в Цена. В противном случае, если Dovabit_v_cenu=false, что говорит о том, что была исправлена уже существующая запись в ЗАКАЗ, то автоматически добавляться новая запись в Цена не будет.

Создан обработчик события AfterPost для набора данных ЗАКАЗ, который сработает сразу после сохранения текущей записи набора данных ЗАКАЗ.

Код обработчика

TDM.aftepost(DataSet: TDataSet);DM do beginDobavit_v_cenu=true then begin.Append;.FieldByName('kodzakaz').AsVariant:=zakaz.FieldByName('kodzakaz').AsVariant;.FieldByName('koducluga').AsVariant:=uclugi.FieldByName('koducluga').AsVariant;.Post;('Äîáàâèëè çàïèñü â Öåíó');_v_cenu:=false;;.SQL.Clear;.SQL.Add('COMMIT TRAN');.ExecSQL;.SQL.Clear;.SQL.Add('ROLLBACK TRAN');.ExecSQL;.Close;.Open;;;;


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

§если при выполнении операторов блока TRY возникает исключение, то управление передается первому оператору блока EXCEPT;

§если исключения не возникло, то операторы блока EXCEPT не выполняются.

Если в блоке TRY возникает исключение, выполняется инструкция «ROLLBACK TRAN» языка T-SQL, производящая откат всех изменений в БД, которые были выполнены с начала транзакции.

Создан обработчик события OnPostError для набора данных ЗАКАЗ

Код обработчика:

TDM.error(DataSet: TDataSet; E: EDatabaseError;Action: TDataAction);.SQL.Clear;.SQL.Add('ROLLBACK TRAN');.ExecSQL;.Close;.Open;

end;


Приведенный программный код срабатывает при возникновении ошибки сохранения текущей записи в ЗАКАЗ, выполняет инструкцию «ROLLBACK TRAN» языка T-SQL, производящую откат всех изменений в БД, которые были выполнены с начала транзакции.

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

Для этого был размещен на Модуле данных (DM) новый набор данных (компонент класса TADOQuery) с именем, VHOD (от слов «входимость», «применимость») и в его свойство SQL написан приблизительный статический запрос на языке T-SQL (рис. 16).


Рис. 16


Назначение набора данных VHOD заключается в формировании из таблицы Цена базы данных только тех записей, поле связи КОДЦЕНА которых равно полю КОДЦЕНА выбранной записи в наборе данных УСЛУГИ (посредством работы динамического запроса).

Поскольку в дальнейшем необходимо отобразить содержимое набора данных VHOD в визуальной таблице на экранной форме,был размещен на Модуле данных (DM) соответствующий источник данных DSVHOD (компонент класса TDataSource) и связан с набором данных VHOD через свойство DataSet. (Рис. 17)


Рис. 17


Далее:

§Была создана новая экранную форма Form3 (меню File -> New -> Form);

§


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

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2019 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ