Разработка базы данных и прикладных программ для автоматизации процесса закупки лекарственных препаратов
Автоматизация учета закупки лекарственных препаратов в аптеке. Разработка базы данных и прикладных программ для работы с ней. Анализ предметной области и формирование требований пользователей. Выбор архитектуры программно-технологической реализации.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 10.09.2015 |
Размер файла | 4,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Федеральное казенное профессиональное образовательное учреждение
"Новочеркасский технологический техникум-интернат"
Министерства труда и социальной защиты Российской Федерации
(ФКПОУ "НТТИ" Минтруда России)
Курсовой проект
по МДК 02.2 Технология разработки и защиты баз данных профессионального модуля
ПМ.02 Разработка и администрирование баз данных
Тема: Разработка базы данных и прикладных программ для автоматизации процесса закупки лекарственных препаратов
Выполнил студент группы А.Г. Глушков
Руководитель, преподаватель О.В. Полякова
Новочеркасск, 2013
Задание
на курсовое проектирование по МДК.02.2 Технология разработки и защиты баз данных профессионального модуля ПМ,02 Разработка и администрирование баз данных
Исполнитель, студент: ________________________ Группа: _________
Тема проекта:
_________________________________________________________________________________________________________________________________________________________________________________________________
График выполнения проекта
Наименование раздела |
Объем, % |
Срок выполнения |
|
Анализ предметной области и формирование требований пользователей |
10% |
||
Проектирование и создание базы данных |
20% |
||
Разработка прикладных программ |
20% |
||
Технология обработки информации |
10% |
||
Тестирование |
15% |
||
Оформление документации |
15% |
||
Всего: |
100% |
Содержание
- Задание
- Реферат
- Введение
- 1. Анализ предметной области и формирование требований пользователей
- 1.1 Анализ предметной области
- 1.2 Запросы пользователей
- 1.3 Информационные процессы
- 2. Проектирование и создание базы данных
- 2.1 Разработка концептуальной модели предметной области
- 2.1.1 Сущности
- 2.1.2 Первичные ключи
- 2.1.3 Атрибуты сущностей
- 2.1.4 Спецификация связей
- 2.1.5 Обрабатываемые транзакции
- 2.2 Выбор архитектуры программно-технологической реализации АИС и используемой СУБД
- 2.3 Логическое проектирование базы данных
- 2.3.1 Логическая структура
- 2.3.2 Анализ транзакций
- 2.4 Создание базы данных
- 3. Разработка клиентского программного обеспечения
- 3.1 Структура прикладного программного обеспечения
- 3.2 Описание интерфейса и алгоритмов работы программных модулей
- 3.2.1 Модуль данных
- 3.2.2 Главная форма "FPassword"
- 3.2.3 Форма "FProdavec"
- 3.2.4 Форма "FManager"
- 3.2.5 Форма "FDirector"
- 3.2.6 Форма "FTorgPredApteki"
- 3.2.7 Форма "FNewTorgPredApteki"
- 3.2.8 Форма "FZayavkaPostavka"
- 3.2.9 Форма "FNewPreparat"
- 3.2.10 Форма "FManagerOtchet"
- 3.2.11 Форма "FNewApteka"
- 3.2.12 Форма "FNewPostavshik"
- 3.2.13 Форма "FNewTorgPred"
- end;
- 4. Тестирование программного продукта
- 4.1 Организация процесса тестирования
- 4.2 Методы тестирования программного продукта
- 4.2.1 Модульное тестирование программного продукта
- 4.2.1.1 Модуль "Авторизация пользователя" (UnitAuth. pas)
- 4.2.1.2 Модуль "Продавец" (UnitProdavec. pas)
- 4.2.1.3 Модуль "Менеджер" (UnitManager. pas)
- 4.2.1.4 Модуль "Управляющий" (UnitDirector. pas)
- 4.2.1.5 Модуль "Торговое предложение в аптеке" (UnitTorgPredApteki. pas)
- 4.2.1.6 Модуль "Формирование торгового предложения в аптеке" (UnitNewTorgPredApteki. pas)
- 4.2.1.7 Модуль "Оформление заказа на товар" (UnitZayavkaPostavka. pas)
- 4.2.1.8 Модуль "Отчёт менеджера (заявки на поставку)" (UnitZayavkaPostavka. pas)
- 4.2.1.9 Модуль "Новый препарат" (UnitNewPreparat. pas)
- 4.2.1.10 Модуль "Добавление новой аптеки" (UnitNewApteka. pas)
- 4.2.1.11 Модуль "Новый поставщик" (UnitNewPostavshik. pas)
- 4.2.1.12 Модуль "Торговое предложение" (UnitNewTorgPred. pas)
- 4.2.2 Тестирование интеграции
- 4.2.3 Тестирование правильности
- 5. Технологическая часть
- 5.1 Руководство пользователя
- Заключение
- Список использованных источников
- Приложение А
- Приложение Б
Реферат
Проект _____ с., 21 рис., 32 табл., 11 источников, 2 прил. БАЗА ДАННЫХ, АВТОМАТИЗАЦИЯ УЧЕТА ЗАКУПКИ ЛЕКАРСТВЕННЫХ ПРЕПАРАТОВ.
Объектом проектирования являются база данных и прикладные программы для работы с ней.
Цель разработки автоматизация учета закупки лекарственных препаратов в аптеке.
В процессе работы проводились разработка инфологической, логической и физической модели базы данных.
В результате проектирования создана база данных и пакет прикладных программ для конечных пользователей, которые позволяют автоматизировать учет закупки лекарственных препаратов в аптеке.
Разработанный программный продукт может быть внедрен после проведения дополнительного тестирования.
Введение
Бурное развитие информационных технологий обусловило необходимость выработки новых подходов к решению проблем автоматизации деятельности различных организаций, служб, предприятий. Работа таких организаций связана с накоплением большого количества информации.
В недавнем прошлом информацию такого рода хранили в картотеках, используя "бумажные" технологии. И, разумеется, они занимали довольно большие объёмы. Вся информация заносилась вручную на бумажные карточки, что создавало большие неудобства, и требовало огромных временных затрат на поиск нужной информации, добавление и редактирование данных. Естественно, работа такого вида являлась очень кропотливой. Кроме того, сама картотека довольно быстро изнашивалась по ходу работы.
Сейчас, в век компьютерных технологий и большого прогресса в этой сфере, имеются очень удобные, надёжные, быстродействующие компьютерные системы, выполняющие задачи качественного структурированного хранения информации.
Однако при осуществлении поиска данных в подобных системах пользователь часто сталкивается с проблемами, связанными с невысокой скоростью обработки запросов, недостаточными критериями поиска информации и т.д.
Кроме того, чрезвычайно важным представляется вопрос надёжности хранения и конфиденциальности различных сведений.
Для решения этих и многих других задач в настоящее время используется специальное программное обеспечение, часто объединяемое в крупные информационно-справочные системы.
база учет закупка аптека
В рамках данного курсового проекта разрабатывается информационная система аптеки, предназначенная для автоматизации процесса закупки лекарственных препаратов.
Разрабатываемая программная система предполагает учёт многочисленной информации, регламентирующей деятельность аптеки, например:
данные о содержащихся в аптеке препаратах;
данные о движении лекарственных препаратах;
данные о поставщиках;
данные об аптеках.
Основными требованиями, предъявляемыми к такого рода программным продуктам, можно отнести:
обеспечение возможностей для просмотра, добавления, удаления и редактирования записей базы данных (БД) системы;
организация поиска информации БД по запросам пользователей;
обеспечение безопасности и целостности данных БД;
организация сетевого доступа к БД ИС для пользователей различных категорий в соответствие с правами, установленными администратором БД;
обеспечение удобного интуитивно понятного графического пользовательского интерфейса (GUI), доступного пользователю любой квалификации.
Потребность в автоматизированном рабочем месте продавца, менеджера и управляющего аптеки возникла в первую очередь из-за большого количества информации (разного рода сведений о лекарственных препаратах, поставщиках и т.п.), с которой им регулярно необходимо оперативно работать.
Актуальность разработки данного ПО обусловлена высокой потребностью аптек в относительно недорогих, нетребовательных к системным и аппаратным ресурсам программным продуктам, предоставляющим возможности для удобного и, главное, надёжного хранения информации.
Данная АИС должна представлять собой совокупность программных средств, наборов данных и справочной информации, позволяющих максимально увеличить производительность труда, иметь приемлемую экономическую эффективность.
Очевидно, решение задачи такого масштаба требует тщательного планирования и выработки общей стратегии процесса разработки в соответствие с основными принципами и рекомендациями профессионального модуля ПМ.03 Участие в интеграции программных модулей.
1. Анализ предметной области и формирование требований пользователей
1.1 Анализ предметной области
В соответствии с заданием необходимо спроектировать базу данных для автоматизации процесса закупки лекарственных средств. Система предназначена для фирм c розничной сетью аптек.
Управляющий заключает договоры с поставщиками. В договор входит: номер, наименование поставщика, адрес, телефон, поставляемые товары.
Менеджер заказывает препараты на основании данных из аптек. Менеджеру необходима информация о количестве товара. На основании этих данных менеджер формирует заказ определенным поставщикам в зависимости от перечня поставляемых по договору препаратов.
Продавец осуществляет продажу, поэтому ему требуется информация о количестве того или иного лекарственного препарата.
При формировании заказа, указывается номер документа, наименование препарата, необходимое количество, даты заказа и оплаты. По мере поступления препарата в аптеку, заполняются дата поставки и количество поступившего товара.
В аптеках постоянно должно находиться определённое количество жизненно важных лекарственных препаратов, при достижении минимального количества которых, оно немедленно должно поставляться в аптеку. Поэтому данное количество важных препаратов постоянно поддерживается на определённом уровне и при достижении минимального количества указывается в заказе.
Поставщик поставляет заказанный препарат непосредственно каждой аптеке в соответствии с заказом, в котором указывается аптека, сделавшая заказ.
Управляющему необходима оперативная информация о поставщиках и выполненных поставках, а именно о сумме выполненных и невыполненных поставок. Данная система предназначена для того, чтобы значительно упростить процесс получения данной информации путём автоматизации соответствующих процессов.
Цель создания базы данных информационной системы: автоматизация учета закупки лекарственных препаратов.
Список пользователей базы данных:
- Управляющий;
- Менеджер;
- Продавец.
1.2 Запросы пользователей
Запросы продавца представлены в соответствии с рисунком 1.
Рисунок 1 - Форма отчета "Сведения о наличии товара"
Запросы менеджера представлены в соответствии с рисунком 2.
Рисунок 2 - Форма отчёта "Заявка на поставку"
Запросы управляющего представлены в соответствии с рисунками 3-4.
Рисунок 3 - Форма отчёта "Объёмы выполненных поставок"
Рисунок 4 - Форма отчёта "Объёмы выполненных поставок по договору"
1.3 Информационные процессы
Заключение договора с поставщиками;
Формирование торгового предложения от поставщика;
Формирование заказа на поставку препаратов;
Получение лекарственных препаратов;
Информацию о количестве того или иного товара, необходимая продавцу.
Менеджеру для формирования заказа требуется информация о количестве товара в аптеке:
Остаток на начало периода, который подсчитывается в начале каждого месяца;
Поступление (приход) товара на склад от поставщика;
Продажа (расход) товара в розничной сети аптек;
Остаток на конец периода, подсчитываемый в конце каждого месяца.
Управляющий запрашивает информацию об объёмах выполненных поставок в определённый срок.
2. Проектирование и создание базы данных
2.1 Разработка концептуальной модели предметной области
2.1.1 Сущности
Выделим следующие сущности:
Поставщики;
Торговое предложение;
Заказ;
Справочник препаратов;
Аптеки;
Товар в аптеке.
2.1.2 Первичные ключи
Выберем первичные ключи для каждой сущности (первичный ключ должен быть уникальным):
Поставщики - Код поставщика;
Торговое предложение - Порядковый номер;
Заказ - Номер заказа;
Справочник препаратов - Код товара;
Аптеки - Номер аптеки;
Товар в аптеке - Код расхода.
2.1.3 Атрибуты сущностей
Определим описательные атрибуты сущностей:
Поставщики - Название поставщика, Адрес, Телефон;
Торговое предложение - Оптовая цена;
Заказ - Количество заказанного товара, Дата заказа, Дата оплаты, Дата поставки, Количество поставленного товара, Номер документа;
Справочник препаратов - Группа препарата, Наименование препарата, Единица измерения, Жизненно необходимый препарат;
Аптеки - Адрес, Телефон;
Товар в аптеке - Остаток товара, Продано товара, Розничная цена (цена 1 ед. товара), Минимальный запас жизненно необходимых препаратов.
2.1.4 Спецификация связей
Выполним спецификацию связей:
Поставщик (1) предоставляет Торговое предложение (М);
На основании Торгового предложения (1) формируется Заказ (М) на поставку товара;
Торговое предложение (М) формируется на основании Справочника препаратов (1);
Товар в аптеке (1) формируется из Заказа (М);
Справочник препаратов (1) служит приложением к Торговому предложению (М) и Заказу (М).
Учитывая всё вышесказанное, составил ER-модель данных в соответствии с рисунком 5.
Рисунок 5 - ER-модель данных
2.1.5 Обрабатываемые транзакции
Т1: Ввод информации об аптеках, добавляется запись в таблицу "Apteki";
Т2: Ввод справочной информации о препарате - добавляется запись в таблицу "PreparSprav";
Т3.1: Ввод договора с поставщиком - добавляется запись в таблицу "Postavshiki";
Т3.2: Формирование торгового предложения - добавляется запись в таблицу "TorgPred";
Т4: Формирование товара в аптеке - добавляется запись в таблицу "TovarApt";
Т5.1: Заказ товара у поставщика - добавляется запись в таблицу "Zakaz";
Т5.2: Ввод поставки (указание даты поставки и количества товара при поступлении) - изменение записи в таблице "Zakaz";
Т6.1: Формирование отчёта для продавца о наличии товара в аптеке - выбираются таблицы PreparSprav и TovarApt;
Т6.2: Формирование отчёта для менеджера "Заявка на поставку" - выбираются таблицы Postavshik, PreparSprav и TorgPred;
Т6.3: Формирование отчёта для управляющего "Объёмы выполненных поставок" - выбираются таблицы Postavshik, Zakaz и TorgPred;
Т6.4: Формирование отчёта для управляющего "Объёмы выполненных поставок по договору" - выбираются таблицы Postavshik, PreparSprav, TorgPred и Zakaz;
2.2 Выбор архитектуры программно-технологической реализации АИС и используемой СУБД
При разработке данного программного продукта будут применяться элементы визуального объектно-ориентированного программирования в среде Delphi.
Для того чтобы представлять отчеты в виде документов Exsel предполагается использование Object Likring and Embedding (OLE) - основанный на COM механизм, позволяющий приложениям взаимодействовать между собой. Он повышает эффективность работы за счет использования в приложении возможностей других программ.
Работа пользователей должна осуществляется в многопользовательском параллельном режиме для локальной сети. Для реализации задачи целесообразно использовать технологию клиент-сервер базы данных. БД должна храниться на сервере, там же находится ядро СУБД и часть бизнес - логики в форме хранимых процедур. На клиенте находится презентационная логика и остальная часть бизнес - логики приложения. Клиент обращается к серверу с запросами на языке SQL. Разрабатываемая система является многопользовательской и в связи с этим используется СУБД InterBase.
Borland InterBase является высокопроизводительной кросс-платформенной встраиваемой реляционной базой данных, сочетающей простую инсталляцию, автоматическое восстановление после сбоев, чрезвычайно низке системные требования и минимальную потребность в сопровождении, что очень важно для надежного функционирования распределенных высокопроизводительных критически важных бизнес-приложений. Среди возможностей базы данных InterBase - запатентованные обработчики оповещений о событиях, хранимые процедуры, триггеры, определяемые пользователем функции (UDF) и фильтры для работы с объектами BLOB.
Одной из основных особенностей InterBase (в отличие от MSSQL), пожалуй, можно считать архитектуру (Multi-Generational), которая обеспечивает уникальные возможности при многопользовательской работе - пишущие пользователи никогда не блокируют читающих! Помимо этого, данная архитектура, позволяет отказаться (в отличие от ORACLE) от использования протокола транзакций для восстановления базы данных после сбоев, поэтому InterBase обладает очень высокой надежностью и устойчивостью. Также в InterBase реализован механизм оптимистической блокировки на уровне записи, т.е. сервер блокирует только те записи, которые реально были изменены пользователем, а не блокирует всю страницу данных целиком (в отличие от MSSQL). Эта особенность еще больше снижает вероятность конфликтов при многопользовательской работе.
В InterBase удалось добиться таких показателей высокой доступности данных, которые превосходят характеристики других баз данных при выполнении параллельных длительных транзакций в информационных и финансовых системах.
В отличие от большинства современных баз данных, InterBase требует лишь незначительного администрирования, проста в инсталляции и разработана с целью уменьшения затрат на сопровождение, что направлено на ускорение процесса разработки приложений и гарантирует быстрый возврат инвестиций для компаний, нуждающихся в сложных распределенных приложениях.
2.3 Логическое проектирование базы данных
2.3.1 Логическая структура
В данной части курсового проекта в таблицах 1 - 5 представлено логическое проектирование базы данных Apteka. Приведены основные характеристики данной базы данных.
Таблица 1 - Логическая структура таблицы Postavshiki (информация о поставщиках)
Имя поля |
Тип |
Ширина |
Ограничения целостности |
Примечание |
|
Kod_pstvsh |
Числовой |
4 |
>=0, первичный ключ |
Код поставщика |
|
Name_pstvsh |
Строковый |
32 |
Название поставщика |
||
Adres_pstvsh |
Строковый |
32 |
Адрес поставщика |
||
Tel_pstvsh |
Числовой |
16 |
Телефон поставщика |
Таблица 2 - Логическая структура таблицы PreparSprav (справочная информация о препаратах)
Имя поля |
Тип |
Ширина |
Ограничения целостности |
Примечание |
|
Kod_tovara |
Числовой |
4 |
>=0, первичный ключ |
Код товара |
|
Grup_tov |
Строковый |
32 |
Группа товара |
||
Name_tovara |
Строковый |
32 |
Наименование препарата |
||
Ed_iz |
Строковый |
8 |
Единица измерения |
||
Zn_n_pr |
Логический |
1 |
Является ли жизненно необходимым препаратом |
Таблица 3 - Логическая структура таблицы TorgPred (торговое предложение)
Имя поля |
Тип |
Ширина |
Ограничения целостности |
Примечание |
|
NumTorgPred |
Числовой |
4 |
>=0, первичный ключ |
Номер торгового предложения |
|
Kod_tovara |
Числовой |
4 |
Внешний ключ |
Код товара |
|
Kod_pstvsh |
Числовой |
4 |
Внешний ключ |
Код поставщика |
|
Price_opt |
Числовой |
8, 2 |
Оптовая цена |
Внешний ключ Kod_tovara ссылается на таблицу PreparSprav
Внешний ключ Kod_pstvsh ссылается на таблицу Postavshiki
Таблица 4 - Логическая структура таблицы Apteki (информация об аптеках)
Имя поля |
Тип |
Ширина |
Ограничения целостности |
Примечание |
|
Num_aptk |
Числовой |
4 |
>=0, первичный ключ |
Номер аптеки |
|
Aptk_adres |
Строковый |
16 |
Название аптеки |
||
Aptk_telf |
Строковый |
16 |
Телефон аптеки |
Таблица 5 - Логическая структура таблицы TovarApt (информация о товаре в аптеке, продажа товара)
Имя поля |
Тип |
Ширина |
Ограничения целостности |
Примечание |
|
Kod_rashoda |
Числовой |
4 |
>=0, первичный ключ |
Код расхода |
|
Tovar_ost |
Числовой |
8 |
Остаток товара в аптеке |
||
Tovar_prod |
Числовой |
8 |
Продано товара |
||
Tovar_price_ed |
Числовой |
8, 2 |
Розничная цена 1 ед. товара |
||
Min_zps |
Числовой |
8 |
Минимальный запас жизненно необходимых препаратов |
||
Kod_tovara |
Числовой |
4 |
Внешний ключ |
Код товара |
|
Num_aptk |
Числовой |
4 |
Внешний ключ |
Номер аптеки |
Внешний ключ Kod_tovara ссылается на таблицу PreparSprav
Внешний ключ Num_aptk ссылается на таблицу Apteki
Таблица 6 - Логическая структура таблицы Zakaz (заказ поставщику)
Имя поля |
Тип |
Ширина |
Ограничения целостности |
Примечание |
|
Num_zakz |
Числовой |
4 |
>=0, первичный ключ |
Номер заказа |
|
NumTorgPred |
Числовой |
4 |
Внешний ключ |
Номер торгового предложения |
|
Kod_rashoda |
Числовой |
4 |
Внешний ключ |
Код расхода |
|
Zak_tov_kol |
Числовой |
8 |
Заказано товара |
||
Data_zakz |
Дата |
Дата заказа |
|||
Data_oplt |
Дата |
Дата оплаты |
|||
Data_post |
Дата |
Дата поставки |
|||
Post_tov_kol |
Числовой |
8 |
Поступило товара |
||
Num_doc |
Числовой |
8 |
Номер документа |
Внешний ключ NumTorgPred ссылается на таблицу TorgPred
Внешний ключ Kod_rashoda ссылается на таблицу TovarApt
2.3.2 Анализ транзакций
Т1 - Ввод информации об аптеках
При выполнении Т1 (таблица 7) производится добавление записи в таблицу Apteki. Атрибут Num_apt (номер аптеки) формируется автоматически. Вводится адрес (Aptk_adres) и телефон (Aptk_telf) аптеки.
Таблица 7 - Т1
Активность |
Интенсивность использования (вызов/час) |
||
Ежедневно с 8-00 до 17-00 |
|||
Таблица, поля |
Тип доступа |
Выходные данные |
|
Apteki (Num_apt, Aptk_adres, Aptk_telf) |
Insert |
Т2 - Ввод справочной информации о препарате
При выполнении Т2 (таблица 8) производится добавление записи в таблицу PreparSprav. Атрибут Kod_tovara (код товара) формируется автоматически. Вводится название (Name_tovara), единица измерения (Ed_iz) и является ли данный препарат жизненно необходимым (Zh_n_pr).
Таблица 8 - Т2
Активность |
Интенсивность использования (вызов/час) |
||
Ежедневно с 8-00 до 17-00 |
|||
Таблица, поля |
Тип доступа |
Выходные данные |
|
PreparSprav (Kod_tovara, Name_tovara, Ed_iz, Zh_n_pr) |
Insert |
Т3.1 - Ввод договора с поставщиком
При выполнении Т3.1 (таблица 9) производится добавление записи в таблицы Postavshiki. Атрибут Kod_pstvsh (код поставщика) формируется автоматически, название (Name_pstvsh), адрес (Adres_pstvsh) и телефон (Tel_pstvsh) поставщика вводится пользователем.
Таблица 9 - Т3.1
Активность |
Интенсивность использования (вызов/час) |
||
Ежедневно с 8-00 до 17-00 |
|||
Таблица, поля |
Тип доступа |
Выходные данные |
|
Postavshiki (Kod_pstvsh,Name_pstvsh, Adres_pstvsh, Tel_pstvsh) |
Insert |
Т3.2 - Формирование торгового предложения
После ввода информации о поставщике, происходит формирование торгового предложения данного поставщика. При выполнении Т3.2 (таблица 10) производится добавление записи в таблицы TorgPred. Атрибут NumTorgPred (номер торгового предложения) формируется автоматически. Из таблицы Postavshiki выбирается поставщик по коду поставщика (Kod_pstvsh). Из таблицы PreparSprav происходит выбор лекарственного препарата коду товара (Kod_tovara) и вводится оптовая цена препарата (Price_opt).
Таблица 10 - Т3.2
Активность |
Интенсивность использования (вызов/час) |
||
Ежедневно с 8-00 до 17-00 |
|||
Таблица, поля |
Тип доступа |
Выходные данные |
|
Postavshiki (Kod_pstvsh) PreparSprav (Kod_tovara) TorgPred (NumTorgPred, Price_opt) |
Select Select Insert |
Т4 - Формирование товара в аптеке
При выполнении Т4 (таблица 11) производится добавление записи в таблице TovarApt. Атрибут Kod_rashoda (код расхода) формируется автоматически. Из таблицы PreparSprav выбирается препарат по коду товара (Kod_tovara). Номер аптеки выбирается из таблицы Apteki по номеру аптеки (Num_apt). Остаток товара (Tovar_ost) суммируется с количеством товара из таблицы Zakaz (Post_tov_kol). Вводится розничная цена 1 ед. товара (Tovar_price_ed) и количество минимального запаса жизненно необходимых препаратов (Min_zps).
Таблица 11 - Т4
Активность |
Интенсивность использования (вызов/час) |
||
Ежедневно с 8-00 до 17-00 |
|||
Таблица, поля |
Тип доступа |
Выходные данные |
|
PreparSprav (Kod_tovara) Apteki (Num_apt) Sum (Zakaz. Post_tov_kol, TovarApt. Tovar_ost) TovarApt (Tovar_price_ed, Min_zps) |
Select Select Select Insert |
Т5.1 - Заказ товара у поставщика
При выполнении Т5.1 (таблица 12) производится добавление записи в таблицу Zakaz. Атрибут Num_zakz (номер заказа) формируется автоматически. Номер торгового предложения (NumTorgPred) выбирается из таблицы TorgPred. Код расхода (Kod_rashoda) выбирается из таблицы TovarApt. Вводится количество заказанного товара (Zak_tov_kol), дата заказа (Data_zakz), дата оплаты (Data_oplt), дата поставки (Data_post), поступило товара (Post_tov_kol) и номер документа (Num_doc). Печатаются заказы и отправляются поставщикам.
Таблица 12 - Т5.1
Активность |
Интенсивность использования (вызов/час) |
||
Ежедневно с 8-00 до 17-00 |
|||
Таблица, поля |
Тип доступа |
Выходные данные |
|
TorgPred (NumTorgPred) TovarApt (Kod_rashoda) Apteki (Num_aptk) PreparSprav (Kod_tovara) Zakaz (Zak_tov_kol, Price_zakz, Data_zakz, Data_oplt, Post_tov_kol, Num_doc) |
Select Select Select Select Insert |
Т5.2 - Ввод поставки (указание даты поставки и количества товара при поступлении)
При выполнении Т5.2 (таблица 13) производится поиск соответствующего заказа по номеру документа (Num_doc), затем происходит изменение записи в таблицу Zakaz, вводится дата поставки (Data_post) и количество поступившего товара (Post_tov_kol).
Таблица 13 - Т5.2
Активность |
Интенсивность использования (вызов/час) |
||
Ежедневно с 8-00 до 20-00 |
|||
Таблица, поля |
Тип доступа |
Выходные данные |
|
Zakaz (Num_doc) Zakaz (Data_post, Post_tov_kol) |
Select Update |
Т6.1 - Формирование отчёта для продавца о наличии товара в аптеке
При выполнении Т6.1 (таблица 14) будет производится выборка из таблиц PreparSprav и TovarApt.
Таблица 14 - Т6.1
Активность |
Интенсивность использования (вызов/час) |
||
Ежедневно с 8-00 до 20-00 |
|||
Таблица, поля |
Тип доступа |
Выходные данные |
|
PreparSprav (Kod_tovara, Name_tovara, Ed_iz) TovarApt (Kod_rashoda, Tovar_ost) Apteki (Num_aptk) |
Select Select Select |
PreparSprav (Kod_tovara, Name_tovara, Ed_iz) Apteki (Num_aptk) TovarApt (Tovar_ost) |
Т6.2 - Формирование отчёта для менеджера "Заявка на поставку"
При выполнении Т6.2 (таблица 15) будет производится выборка из таблиц Postavshik, PreparSprav и TorgPred.
Таблица 15 - Т6.2
Активность |
Интенсивность использования (вызов/час) |
||
Ежедневно с 8-00 до 20-00 |
|||
Таблица, поля |
Тип доступа |
Выходные данные |
|
Postavshiki (Kod_pstvsh, Name_pstvsh) PreparSprav (Kod_tovara, Name_tovara, Ed_iz) TorgPred (NumTorgPred, Price_opt) |
Select Select Select |
Postavshiki (Kod_pstvsh, Name_pstvsh) PreparSprav (Name_tovara, Ed_iz) TorgPred (Price_opt) |
Т6.3 - Формирование отчёта для управляющего "Объёмы выполненных поставок"
При выполнении Т6.3 (таблица 16) будет производится выборка из таблиц Postavshik, Zakaz и TorgPred.
Таблица 16 - Т6.3
Активность |
Интенсивность использования (вызов/час) |
||
Ежедневно с 8-00 до 20-00 |
|||
Таблица, поля |
Тип доступа |
Выходные данные |
|
Postavshiki (Kod_pstvsh, Name_pstvsh) Zakaz (Num_zakz, Data_post) TorgPred (NumTorgPred, Price_opt) |
Select Select Select |
Postavshiki (Kod_pstvsh, Name_pstvsh) TorgPred (Price_opt) |
Т6.4 - Формирование отчёта для управляющего "Объёмы выполненных поставок по договору"
При выполнении Т6.4 (таблица 17) будет производится выборка из таблиц Postavshik, PreparSprav, TorgPred и Zakaz.
Таблица 17 - Т6.4
Активность |
Интенсивность использования (вызов/час) |
||
Ежедневно с 8-00 до 20-00 |
|||
Таблица, поля |
Тип доступа |
Выходные данные |
|
Postavshiki (Kod_pstvsh, Name_pstvsh) PreparSprav (Kod_tovara, Name_tovara, Ed_iz) TorgPred (NumTorgPred, Price_opt) Zakaz (Num_zakz, Data_zakz, Data_post) |
Select Select Select Select |
Postavshiki (Kod_pstvsh, Name_pstvsh) PreparSprav (Name_tovara, Ed_iz) TorgPred (Price_opt) Zakaz (Data_zakz, Data_post) |
2.4 Создание базы данных
Для создания базы данных использовал ER/Studio. Порядок действий следующий:
a) Запустил ER/Studio;
b) В обозревателе объектов открыл ветку "Maim Model" и выбрал в контекстном меню "Entity - NewEntity";
c) Ввёл имя сущности, имя таблицы БД;
d) На вкладке "Attribute" щелкнул по кнопке "Add" для добавления нового атрибута сущности, ввёл имя, тип данных, ограничения целостности. Для создания связи между сущностями (отношения) щелкнул по Relationship в дереве обозревателя объектов и выбрал команду "NewRelationship…";
e) Выбрал родительскую сущность, дочернюю и указал тип связи на вкладке "Triggers". Затем указал, какие действия должны выполняться при внесении изменений в связанные таблицы и щелкнул "ОК";
f) Создал физическую модель данных из контекстного меню "MainModel" и в обозревателе объектов выбрал "Generate Phisical Model…", задал имя модели и выбрал тип СУБД;
g) После создания физической модели в ER/Studio сгенерировался SQL-код для создания базы данных в СУБД InterBase;
h) Для создания базы данных в СУБД InterBase включил сервер, запустил IBConsole.
Зарегистрировался на сервере, выбрав команду меню "Register…";
i) Выбрал тип сервера - локальный, в строке "UserName" ввёл SYSDBA, в строке "Password" - masterkey;
j) Создал базу данных, выбрав в меню "DataBase" команду "CreateDataBase". В появившемся окне указал путь к БД в строке "Filenames", ввёл в строке "Alias" псевдоним БД и выбрал кодовую страницу WIN1251 в "DefaultCharacterSet";
k) Перед тем, как работать с БД, зарегистрировал её "Register" и установил соединение "Connect", выбрав соответствующие команды в меню "IBConsole";
l) Для создания таблиц БД, установки связей и т.д. воспользовался средством "InteractiveSQL" из меню "Tools".
С помощью меню "Query" выполнил SQL-запросы по созданию доменов, таблиц, просмотров из сгенерированного SQL-кода в ER/Studio (листингSQL-кода приведён в приложения А).
m) Для реализации транзакции "Т1: Ввод информации об аптеках" создал на сервере хранимую процедуру "NEW_APTEKA":
CREATE PROCEDURE "NEW_APTEKA"
(
"P1" CHAR (16),
"P2" NUMERIC (16, 0)
)
AS
begin
insert into "Apteki" ("Aptk_adres", "Aptk_telf") values (: p1,: p2);
end
n) Для реализации транзакции "Т2: Ввод справочной информации о препарате" создал на сервере хранимую процедуру "add_preparat":
CREATE PROCEDURE " add_preparat"
(
"P1" CHAR (32),
"P2" CHAR (32),
"P3" CHAR (8),
"P4" NUMERIC (1, 0)
)
AS
begin
insert into "PreparSprav" ("grup_tov","Name_tovara","Ed_iz","Zh_n_pr") values (: p1,: p2,: p3,: p4);
end
o) Для реализации транзакции "Т3.1: Ввод договора с поставщиком" создал на сервере хранимую процедуру "add_pstvsh":
CREATE PROCEDURE " add_pstvsh"
(
"P1" CHAR (32),
"P2" CHAR (32),
"P3" NUMERIC (16, 0)
)
AS
begin
insert into "Postavshiki" ("Name_pstvsh","Adres_pstvsh","Tel_pstvsh") values (: p1,: p2,: p3);
end
Для реализации транзакции "Т3.2: Формирование торгового предложения" создал на сервере хранимую процедуру "add_torgpred":
CREATE PROCEDURE " add_torgpred "
(
"P1" INTEGER,
"P2" INTEGER,
"P3" NUMERIC (8,2)
)
AS
begin
insert into "TorgPred" ("Kod_tovara", "Kod_pstvsh", "Price_opt") values (: p1,: p2,: p3);
end
p) Для реализации транзакции "Т4: Формирование товара в аптеке" создал на сервере хранимую процедуру "add_tovar_apt":
CREATE PROCEDURE " add_tovar_apt"
(
"P1" INTEGER,
"P2" INTEGER,
"P3" NUMERIC (8, 0),
"P4" NUMERIC (8, 0),
"P5" NUMERIC (8, 0),
"P6" NUMERIC (8, 0)
)
AS
begin
insert into "TovarApt" ("Num_aptk","Kod_tovara","Tovar_ost","Tovar_prod","Tovar_price_ed","Min_zps") values (: p1,: p2,: p3,: p4,: p5,: p6);
end
q) Для реализации транзакции "Т5.1: Заказ товара у поставщика" создал на сервере хранимую процедуру "add_zakaz":
CREATE PROCEDURE " add_zakaz"
(
"P1" INTEGER,
"P2" INTEGER,
"P3" NUMERIC (8, 0),
"P4" DATE,
"P5" NUMERIC (8, 0)
)
AS
begin
insert into "Zakaz" ("NumTorgPred","Kod_rashoda","Zak_tov_kol","Data_zakz","Num_doc") values (: p1,: p2,: p3,: p4,: p5);
end
r) Для реализации транзакции "Т6.2: Формирование отчёта для менеджера" создал на сервере 2 хранимых процедуры "manager_otchet" (выбор заявок на поставку по каждому поставщику) и "manager_otchet2" (выбор заявок на поставку по определённому поставщику):
CREATE PROCEDURE "manager_otchet"
RETURNS
(
"P1" INTEGER,
"P2" CHAR (32),
"P3" CHAR (32),
"P4" CHAR (8),
"P5" NUMERIC (8,2),
"P6" NUMERIC (8, 0),
"P7" NUMERIC (8, 0)
)
AS
begin
for select "Postavshiki". "Kod_pstvsh", "Postavshiki". "Name_pstvsh",
"PreparSprav". "Name_tovara", "PreparSprav". "Ed_iz", "TorgPred". "Price_opt",
"Zakaz". "Zak_tov_kol", "TorgPred". "Price_opt"*"Zakaz". "Zak_tov_kol"
from "Postavshiki", "PreparSprav", "TorgPred", "Zakaz"
where "Postavshiki". "Kod_pstvsh"="TorgPred". "Kod_pstvsh" and
"TorgPred". "Kod_tovara"="PreparSprav". "Kod_tovara" and
"Zakaz". "NumTorgPred"="TorgPred". "NumTorgPred"
into: p1,: p2,: p3,: p4,: p5, p6, p7
do
suspend;
end
CREATE PROCEDURE " manager_otchet2"
(
"PKOD" INTEGER
)
RETURNS
(
"P1" INTEGER,
"P2" CHAR (32),
"P3" CHAR (32),
"P4" CHAR (8),
"P5" NUMERIC (8,2),
"P6" NUMERIC (8, 0),
"P7" NUMERIC (8, 0)
)
AS
begin
for select "Postavshiki". "Kod_pstvsh", "Postavshiki". "Name_pstvsh",
"PreparSprav". "Name_tovara", "PreparSprav". "Ed_iz", "TorgPred". "Price_opt",
"Zakaz". "Zak_tov_kol", "TorgPred". "Price_opt"*"Zakaz". "Zak_tov_kol"
from "Postavshiki", "PreparSprav", "TorgPred", "Zakaz"
where "Postavshiki". "Kod_pstvsh"="TorgPred". "Kod_pstvsh" and
"TorgPred". "Kod_tovara"="PreparSprav". "Kod_tovara" and
"Zakaz". "NumTorgPred"="TorgPred". "NumTorgPred" and
"Postavshiki". "Kod_pstvsh"=: pkod
into: p1,: p2,: p3,: p4,: p5, p6, p7
do
suspend;
end
3. Разработка клиентского программного обеспечения
3.1 Структура прикладного программного обеспечения
Для работы с базой данных DB_APT. GDB, разработано клиентское приложение Kr_Apteka. Приложение включает в себя формы для ввода и отображения данных, а также необходимые элементы управления.
Таблица 18 - Структура прикладного программного обеспечения
Форма |
Модуль |
Назначение |
Пользователь |
|
FPassword |
UnitAuth. pas |
Авторизация пользователей |
Управляющий, менеджер, продавец |
|
FProdavec |
UnitProdavec. pas |
Меню управления, просмотр информации и печать отчётов для продавца |
Продавец |
|
FManager |
UnitManager. pas |
Меню управления, просмотр информации и печать отчётов для менеджера |
Менеджер |
|
FTorgPredApteki |
UnitTorgPredApteki. pas |
Торговое предложение во всех аптеках |
Менеджер |
|
FNewTorgPredApteki |
UnitNewTorgPredApteki. pas |
Формирование торгового предложения в определённой аптеке |
Менеджер |
|
FZayavkaPostavka |
UnitZayavkaPostavka. pas |
Формирование заявки на поставку лекарственного препарата |
Менеджер |
|
FNewPreparat |
UnitNewPreparat. pas |
Добавление нового лекарственного препарата в справочник |
Менеджер, Директор |
|
FManagerOtchet |
UnitManagerOtchet. pas |
Вывод на экран и печать отчёта для менеджера "Заявка на поставку" |
Менеджер |
|
FDirector |
UnitDirector. pas |
Меню управления, просмотр информации и печать отчётов для директора |
Директор |
|
FNewApteka |
UnitNewApteka. pas |
Добавление данных о новой аптеке в розничной сети |
Директор |
|
FNewPostavshik |
UnitNewPostavshik. pas |
Добавление данных о новом поставщике |
Директор |
|
FNewTorgPred |
UnitNewTorgPred. pas |
Добавление данных о торговом предложении определённого поставщика |
Директор |
3.2 Описание интерфейса и алгоритмов работы программных модулей
3.2.1 Модуль данных
На модуле данных разместил компоненты в соответствии с таблицей 19.
Таблица 19 - Модуль данных
Компонент |
Объект БД |
Назначение |
|
SQLConnection1 |
Подключение к БД |
||
SimpleDataSetAllAptk |
Apteki |
Выборка всех записей из таблицы "Аптеки" |
|
SQLStoredProcAddAptk |
NEW_APTEKA |
Добавление записи в таблицу "Аптеки" |
|
SimpleDataSetAllPstvsh |
Postavshiki |
Выборка всех записей из таблицы "Поставщики" |
|
SQLStoredProcAddPstvsh |
add_pstvsh |
Добавление записи в таблицу "Поставщики" |
|
SimpleDataSetAllPreparat |
PreparSprav |
Выборка всех записей из таблицы "Справочник препаратов" |
|
SQLStoredProcAddPreparat |
add_preparat |
Добавление записи в таблицу "Справочник препаратов" |
|
SimpleDataSetOptPrice |
TorgPred |
Выборка "Оптовой цены" из таблицы "Торговое предложение" |
|
SimpleDataSetTovar_v_Apteke |
Apteki, PreparSprav, TovarApt, TorgPred |
Выборка "Код расхода", "Адрес аптеки", "Телефон аптеки", "Наименование товара", "Оптовая цена", "Розничная цена", "Остаток товара", "Продано товара", "Признак жизн. необ. препарат." и "Мин. запас жизн. необ. препарат." из таблиц "Аптеки", "Справочник препаратов", "Товар в аптеке" и "Торговое предложение" |
|
SQLStoredProcAddTorgPred |
add_torgpred |
Добавление записи в таблицу "Торговое предложение" |
|
SQLStoredProcAddTorgPredApteki |
add_tovar_apt |
Добавление записи в таблицу "Товар в аптеке" |
|
SimpleDataSetTovarApt |
TovarApt |
Выборка всех записей из таблицы "Товар в аптеке" |
|
SimpleDataSetZayavkaPostavka |
PreparSprav, TorgPred |
Выборка всех записей из таблиц "Справочник препаратов" и "Торговое предложение" |
|
SQLStoredProcManagerOtchet2 |
manager_otchet2 |
Выборка "Код поставщика", "Название поставщика", "Наименование товара", "Ед. изм.", "Оптовая цена", "Кол-во заказанного товара", "Сумма" из таблиц "Поставщики", "Справочник препаратов", "Торговое предложение" и "Заказ" по определённому поставщику |
|
SQLStoredProcAddZakaz |
add_zakaz |
Добавление записи в таблицу "Заказ" |
|
SimpleDataSetManagerOtchet |
manager_otchet |
Выборка всех записей из хранимой процедуры "manager_otchet" |
|
SimpleDataSetManagerOtchet2 |
manager_otchet2 |
Выборка всех записей из хранимой процедуры "manager_otchet2" |
3.2.2 Главная форма "FPassword"
Выполнение программы начинается с формы (FPassword) авторизации пользователя в соответствии с рисунком 6.
Рисунок 6 - Форма (FPassword) авторизации пользователя
На данной форме разместил компоненты в соответствии с таблицей 20.
Таблица 20 - Компоненты формы "FPassword"
Компонент |
Назначение |
|
Label1 |
Надпись "Пользователь" |
|
Label2 |
Надпись "Пароль" |
|
Image1 |
Фоновый рисунок |
|
ComboBox1 |
Выбор пользователя |
|
Edit1 |
Ввод пароля |
|
BitBtn1 |
Кнопка "Войти" |
В зависимости от выбранного пользователя появится поле ввода соответствующего пароля и если пароль будет введён 3 раза неправильно, приложение закрывается. После процедуры авторизации произойдёт переход на 1 из 3 основных форм для каждого пользователя, с которых и будет происходить соответствующее управлениями функциями:
Форма "FProdavec" для продавца в соответствии с рисунком 7;
Форма "FManager" для менеджера в соответствии с рисунком 8;
Форма "FDirector" для управляющего в соответствии с рисунком 9.
Обработчик события "OnChange" компонента "ComboBox1":
procedure TFPassword.comboBox1Change (Sender: TObject);
begin
Label2. Visible: =true;
Edit1. Visible: =true;
Edit1. PasswordChar: ='*';
BitBtn1. Visible: =true;
end;
Обработчик события "OnClick" компонента "BitBtn1":
procedure TFPassword. BitBtn1Click (Sender: TObject);
begin
if ComboBox1. Text='Продавец' then
if Edit1. Text = '1' then
begin
FPassword. Visible: =false;
FProdavec. ShowModal;
end
else begin
dec (n);
if n<>0 then MessageDlg ('Пароль неверный. Осталось попыток '+inttostr (n),mtWarning, [mbOK],0)
else begin MessageDlg ('Лимит превышен, авторизация не выполнена',mtError, [mbOK],0); close; end;
end;
if ComboBox1. Text='Менеджер' then
if Edit1. Text = '2' then
begin
FPassword. Visible: =false;
FManager. ShowModal;
end
else begin
dec (n);
if n<>0 then MessageDlg ('Пароль неверный. Осталось попыток '+inttostr (n),mtWarning, [mbOK],0)
else begin MessageDlg ('Лимит превышен, авторизация не выполнена',mtError, [mbOK],0); close; end;
end;
if ComboBox1. Text='Управляющий' then
if Edit1. Text = '3' then
begin
FPassword. Visible: =false;
FDirector. ShowModal;
end
else begin
dec (n);
if n<>0 then MessageDlg ('Пароль неверный. Осталось попыток '+inttostr (n),mtWarning, [mbOK],0)
else begin MessageDlg ('Лимит превышен, авторизация не выполнена',mtError, [mbOK],0); close; end;
end;
end;
3.2.3 Форма "FProdavec"
Форма "FProdavec" предназначена для пользователя "Продавец" и осуществления им основных функций в рамках соответствующей должности. Вид формы показан на рисунке 7.
Рисунок 7 - Форма "FProdavec" для продавца
На данной форме разместил компоненты в соответствии с таблицей 21.
Таблица 21 - Компоненты формы "FProdavec"
Компонент |
Вложенный компонент |
Назначение |
|
Panel1 |
Компонент для размещения и группировки элементов |
||
GroupBox1 |
Меню пользователя |
||
BitBtn3 |
Кнопка "Товар" |
||
BitBtn4 |
Кнопка "Выход" |
||
CheckBox1 |
Выбор "Показать/Скрыть всё" |
||
Image1 |
Фоновый рисунок |
||
PageControl1 (TabSheet1) |
Вкладка "Товар" |
||
DBGrid1 |
Вывод данных |
||
BitBtn1 |
Кнопка "Печать" |
||
BitBtn2 |
Кнопка "Продать" |
||
Label1 |
Надпись "Аптека" |
||
DBLookupComboBox1 |
Выбор аптеки |
В данном случаи меню представлено кнопкой "Товар", после нажатия на которую на данной форме будет активна вкладка компонента PageControl1, на которой будет представлена необходимая информации о товаре как в данной аптеке, так и в других аптеках розничной сети (рисунок 8).
Рисунок 8 - Вкладка "Товар"
Обработчик события "OnClick" компонента "BitBtn3":
procedure TFProdavec. BitBtn3Click (Sender: TObject);
begin
PageControl1. Visible: =true;
PageControl1. Pages [0]. TabVisible: =true;
PageControl1. ActivePageIndex: =0;
end;
Обработчик события "OnClick" компонента "CheckBox1":
procedure TFProdavec. CheckBox1Click (Sender: TObject);
begin
if CheckBox1. Checked=true then
begin
PageControl1. Visible: =true;
PageControl1. Pages [0]. TabVisible: =true;
end
else
begin
PageControl1. Visible: =false;
PageControl1. Pages [0]. TabVisible: =false;
end;
end;
Обработчик события "OnClick" компонента "DBLookupComboBox1":
procedure TFProdavec. DBLookupComboBox1Click (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetTovar_v_Apteke. Active: =false;
DataModuleApteka. SimpleDataSetTovar_v_Apteke. DataSet.commandText: ='SELECT "Apteki". "Num_aptk", "Apteki". "Aptk_adres",'
+'"Apteki". "Aptk_telf", "PreparSprav". "Name_tovara", "PreparSprav". "Kod_tovara", '
+'"TovarApt". "Tovar_price_ed","TovarApt". "Tovar_ost" '
+'FROM "Apteki", "PreparSprav", "TovarApt" '
+'WHERE "Apteki". "Num_aptk"="TovarApt". "Num_aptk" and '
+'"TovarApt". "Kod_tovara"="PreparSprav". "Kod_tovara" and "Apteki". "Num_aptk"='
+DataModuleApteka. SimpleDataSetAllAptk. FieldByName ('Num_aptk'). AsString;
DataModuleApteka. SimpleDataSetTovar_v_Apteke. Active: =true;
end;
Обработчик события "OnClick" компонента "BitBtn1":
procedure TFProdavec. BitBtn1Click (Sender: TObject);
begin
OExcel: =CreateOleObject ('Excel. Application'); // Создать OLE объект Excel
OExcel. WorkBooks. Add (); // Создать рабочую книгу Excel
OExcel. Visible: =True; // Сделать Excel видимым
// Занести в ячейку значение
OExcel. Cells [1,1]. Value: ='Сведения о наличии товара в аптеке по адресу ' + DataModuleApteka. SimpleDataSetAllAptk. FieldByName ('Aptk_adres'). AsString;
OExcel. Cells [2,1]. Value: ='Дата '+ DateToStr (Date);
// Определить количество столбцов DBGrid1
i: =DBGrid1. Columns. Count;
for j: =1 to i do
begin
// Занести в ячейки 3 строки заголовки столбцов DBGrid1
OExcel. Cells [3,j]. Value: = DBGrid1. Columns. Items [j-1]. Title. Caption;
OExcel. Range [chr (96+j) +': '+chr (96+j)]. Select; // Выделить ячейки
// Установить ширину ячейки OExcel в зависимости от ширины столбца DBGrid1
OExcel. Selection. ColumnWidth: =DBGrid1. Columns. Items [j-1]. Width/5;
OExcel. Selection. WrapText: = True; // Переносить по словам
end;
OExcel. Range ['1: 1']. Select; // Выделить ячейку 1 столбца 1 строки
OExcel. Selection. WrapText: = False;
istr: =5; // Номер строки
DataModuleApteka. SimpleDataSetTovar_v_Apteke. First; // Перейти на первую запись
while not DataModuleApteka. SimpleDataSetTovar_v_Apteke. Eof do // Пока не будет достигнут конец файла
begin
for j: =1 to i do
// Заносить в ячейку Excel содержимое полей, которые отражаются в DBGrid1
OExcel. Cells [istr,j]. Value: =DataModuleApteka. SimpleDataSetTovar_v_Apteke. FieldByName (DBGrid1. Columns. Items [j-1]. FieldName). AsString;
DataModuleApteka. SimpleDataSetTovar_v_Apteke. Next; // Перейти на следующую запись
istr: =istr+1; // Увеличить номер строки
end;
OExcel. Range ['A3: '+chr (96+j-1) +IntToStr (istr)]. Select; // Выделить ячейки
// Обрамление сплошной линией всех выделенных ячеек
OExcel. Selection. Borders [xlEdgeLeft]. LineStyle: =xlContinuous;
OExcel. Selection. Borders [xlEdgeRight]. LineStyle: =xlContinuous;
OExcel. Selection. Borders [xlEdgeTop]. LineStyle: =xlContinuous;
OExcel. Selection. Borders [xlEdgeBottom]. LineStyle: =xlContinuous;
if i>1 then
OExcel. Selection. Borders [xlInsideVertical]. LineStyle: =xlContinuous;
OExcel. Selection. Borders [xlInsideHorizontal]. LineStyle: =xlContinuous;
OExcel. Range ['D'+IntToStr (istr) +': D'+IntToStr (istr+1)]. Select;
// Объединение ячеек
OExcel. Selection. MergeCells: =True;
OExcel. Selection. HorizontalAlignment: = xlLeft;
OExcel. Selection. VerticalAlignment: = xlCenter;
end;
Обработчик события "OnActivate" формы "FProdavec":
procedure TFProdavec. FormActivate (Sender: TObject);
begin
DataModuleApteka. SQLConnection1. Connected: =true;
DataModuleApteka. SimpleDataSetAllAptk. Open;
DataModuleApteka. SimpleDataSetTovar_v_Apteke. Active: =false;
DataModuleApteka. SimpleDataSetTovar_v_Apteke. DataSet.commandText: ='SELECT "Apteki". "Aptk_adres",'
+'"Apteki". "Aptk_telf", "PreparSprav". "Name_tovara", "PreparSprav". "Kod_tovara", '
+'"TovarApt". "Tovar_price_ed","TovarApt". "Tovar_ost" '
+'FROM "Apteki", "PreparSprav", "TovarApt" '
+'WHERE "Apteki". "Num_aptk"="TovarApt". "Num_aptk" and '
+'"TovarApt". "Kod_tovara"="PreparSprav". "Kod_tovara"';
DataModuleApteka. SimpleDataSetTovar_v_Apteke. Active: =true;
PageControl1. Pages [0]. TabVisible: =false;
end;
Обработчик события "OnClose" формы "FProdavec":
procedure TFProdavec. FormClose (Sender: TObject; var Action: TCloseAction);
begin
DataModuleApteka. SQLConnection1. Connected: =false;
Application. Terminate;
end;
3.2.4 Форма "FManager"
Форма " FManager " предназначена для пользователя "Менеджер" и осуществления им основных функций в рамках соответствующей должности. Вид формы показан на рисунке 9.
Рисунок 9 - Форма "FManager" для менеджера
На данной форме разместил компоненты в соответствии с таблицей 22.
Таблица 22 - Компоненты формы "FManager"
Компонент |
Вложенный компонент |
Назначение |
|
Panel1 |
Компонент для размещения и группировки элементов |
||
GroupBox1 |
Меню пользователя |
||
BitBtn1 |
Кнопка "Аптеки" |
||
BitBtn2 |
Кнопка "Поставщики" |
||
BitBtn3 |
Кнопка "Отчёты" |
||
BitBtn4 |
Кнопка "Выход" |
||
BitBtn6 |
Кнопка "Товар" |
||
BitBtn7 |
Кнопка "Справочник" |
||
CheckBox1 |
Выбор "Показать/Скрыть всё" |
||
Image1 |
Фоновый рисунок |
||
PageControl1 (TabSheet1) |
Вкладка "Аптеки" |
||
DBGrid1 |
Вывод данных |
||
BitBtn5 |
Кнопка "Печать" |
||
PageControl1 (TabSheet2) |
Вкладка "Поставщики" |
||
DBGrid2 |
Вывод данных |
||
PageControl1 (TabSheet3) |
Вкладка "Отчёты" |
||
BitBtn9 |
Кнопка "Отчёт. Заявка на поставку" |
||
PageControl1 (TabSheet4) |
|||
DBGrid3 |
Вывод данных |
||
BitBtn8 |
Кнопка "Новый препарат" |
В зависимости от нажатия определённой кнопки меню откроется выбранная вкладка в соответствии с рисунком 10.
Рисунок 10 - Рабочие вкладки пользователя "Менеджер"
Обработчик события "OnActivate" формы "FManager":
procedure TFManager. FormActivate (Sender: TObject);
begin
DataModuleApteka. SQLConnection1. Connected: =true;
PageControl1. Pages [0]. TabVisible: =false;
PageControl1. Pages [1]. TabVisible: =false;
PageControl1. Pages [2]. TabVisible: =false;
PageControl1. Pages [3]. TabVisible: =false;
end;
Обработчик события "OnClose" формы "FManager":
procedure TFManager. FormClose (Sender: TObject; var Action: TCloseAction);
begin
DataModuleApteka. SQLConnection1. Connected: =false;
Application. Terminate;
end;
Обработчик события "OnClick" компонента "BitBtn1":
procedure TFManager. BitBtn1Click (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetAllAptk. Open;
PageControl1. Visible: =true;
PageControl1. Pages [0]. TabVisible: =true;
PageControl1. ActivePageIndex: =0;
end;
Обработчик события "OnClick" компонента "BitBtn2":
procedure TFManager. BitBtn2Click (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetAllPstvsh. Open;
PageControl1. Visible: =true;
PageControl1. Pages [1]. TabVisible: =true;
PageControl1. ActivePageIndex: =1;
end;
Обработчик события "OnClick" компонента "BitBtn3":
procedure TFManager. BitBtn3Click (Sender: TObject);
begin
PageControl1. Visible: =true;
PageControl1. Pages [2]. TabVisible: =true;
PageControl1. ActivePageIndex: =2;
end;
Обработчик события "OnClick" компонента "BitBtn7":
procedure TFManager. BitBtn7Click (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetAllPreparat. Open;
PageControl1. Visible: =true;
PageControl1. Pages [3]. TabVisible: =true;
PageControl1. ActivePageIndex: =3;
end;
Обработчик события "OnClick" компонента "BitBtn6":
procedure TFManager. BitBtn6Click (Sender: TObject);
begin
FTorgPredApteki. ShowModal;
end;
Обработчик события "OnClick" компонента "BitBtn5":
procedure TFManager. BitBtn5Click (Sender: TObject);
begin
FTorgPredApteki. ShowModal;
end;
Обработчик события "OnClick" компонента "BitBtn9":
procedure TFManager. BitBtn9Click (Sender: TObject);
begin
FManagerOtchet. ShowModal;
end;
Обработчик события "OnClick" компонента "BitBtn8":
procedure TFManager. BitBtn8Click (Sender: TObject);
begin
FNewPreparat. ShowModal;
end;
3.2.5 Форма "FDirector"
Форма " FDirector " предназначена для пользователя "Директор" и осуществления им основных функций в рамках соответствующей должности. Вид формы показан на рисунке 11.
На данной форме разместил компоненты в соответствии с таблицей 23.
Таблица 23 - Компоненты формы "FDirector"
Компонент |
Вложенный компонент |
Назначение |
|
Panel1 |
Компонент для размещения и группировки элементов |
||
GroupBox1 |
Меню пользователя |
||
BitBtn1 |
Кнопка "Аптеки" |
||
BitBtn2 |
Кнопка "Поставщики" |
||
BitBtn3 |
Кнопка "Отчёты" |
||
BitBtn4 |
Кнопка "Выход" |
||
BitBtn7 |
Кнопка "Справочник" |
||
CheckBox1 |
Выбор "Показать/Скрыть всё" |
||
Image1 |
Фоновый рисунок |
||
PageControl1 (TabSheet1) |
Вкладка "Аптеки" |
||
DBGrid1 |
Вывод данных |
||
BitBtn5 |
Кнопка "Добавить новую аптеку" |
||
PageControl1 (TabSheet2) |
Вкладка "Поставщики" |
||
DBGrid2 |
Вывод данных |
||
BitBtn6 |
Кнопка "Новый поставщик" |
||
BitBtn9 |
Кнопка "Торговое предложение" |
||
PageControl1 (TabSheet3) |
Вкладка "Отчёты" |
||
PageControl1 (TabSheet4) |
Вкладка "Справочник препаратов" |
||
DBGrid3 |
Вывод данных |
||
BitBtn8 |
Кнопка "Новый препарат" |
Рисунок 11 - Форма "FDirector" для управляющего
В зависимости от нажатия определённой кнопки меню откроется выбранная вкладка в соответствии с рисунком 12.
Рисунок 12 - Рабочие вкладки пользователя "Директор"
Обработчик события "OnActivate" формы "FManager":
procedure TFDirector. FormActivate (Sender: TObject);
begin
DataModuleApteka. SQLConnection1. Connected: =true;
PageControl1. Pages [0]. TabVisible: =false;
PageControl1. Pages [1]. TabVisible: =false;
PageControl1. Pages [2]. TabVisible: =false;
PageControl1. Pages [3]. TabVisible: =false;
end;
Обработчик события "OnClose" формы "FManager":
procedure TFDirector. FormClose (Sender: TObject; var Action: TCloseAction);
begin
DataModuleApteka. SQLConnection1. Connected: =false;
Application. Terminate;
end;
Обработчик события "OnClick" компонента "BitBtn1":
procedure TFDirector. BitBtn1Click (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetAllAptk. Open;
PageControl1. Visible: =true;
PageControl1. Pages [0]. TabVisible: =true;
PageControl1. ActivePageIndex: =0;
end;
Обработчик события "OnClick" компонента "BitBtn2":
procedure TFDirector. BitBtn2Click (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetAllPstvsh. Open;
PageControl1. Visible: =true;
PageControl1. Pages [1]. TabVisible: =true;
PageControl1. ActivePageIndex: =1;
end;
Обработчик события "OnClick" компонента "BitBtn3":
procedure TFDirector. BitBtn3Click (Sender: TObject);
begin
PageControl1. Visible: =true;
PageControl1. Pages [2]. TabVisible: =true;
PageControl1. ActivePageIndex: =2;
Подобные документы
Анализ существующих разработок и выбор стратегии автоматизации делопроизводства взаимоотношении поставщиков лекарственных препаратов с аптекой. Разработка проекта базы данных аптеки "Ригла". Обоснование экономической эффективности разработки базы данных.
дипломная работа [3,0 M], добавлен 19.09.2013Анализ состояния и способов автоматизации складского хозяйства. Управление и оптимизация материальных запасов. Обзор современного состояния программ для торговли и склада. Разработка структуры базы данных информационной системы. Описание интерфейса.
дипломная работа [1,2 M], добавлен 16.06.2015Разработка программы для автоматизации складского учета. Описание предметной области и технологии функционирования информационной системы. Физическое проектирование базы данных. Создание экранных форм ввода-вывода, отчетов, модулей для прикладных решений.
курсовая работа [3,6 M], добавлен 08.12.2013Создание базы данных с помощью ACCESS для автоматизации работы базы отдыха. Оценка возможностей пользователей при работе с данной базой. Построение информационно-логической модели базы данных. Разработка запросов для корректировки и выборки данных.
курсовая работа [1,1 M], добавлен 19.10.2010Исследование технологии проектирования базы данных. Локальные и удаленные базы данных. Архитектуры и типы сетей. Программная разработка информационной структуры предметной области. Обоснование выбора архитектуры "клиент-сервер" и операционной системы.
дипломная работа [1,1 M], добавлен 15.02.2017Инструментальные средства для разработки структуры информационной базы данных "Программа автоматизации учета расчетов с поставщиками", пользовательский интерфейс СУБД Access. Разработка запросов отбора данных и вычислений, экранных форм коррекции данных.
лабораторная работа [2,4 M], добавлен 15.11.2010База данных как основа автоматизации. Разработка, описание и реализация программного обеспечения "Точность и правильность методов и результатов измерений для центральной заводской лаборатории ОАО "Акрилат". Листинг, исходные коды программы и базы данных.
дипломная работа [1,0 M], добавлен 23.06.2012Создание базы данных в среде MS Access. Создание и работа с базой данных на бирже труда. Алгоритм решения. Выбор пакета прикладных программ. Проектирование форм выходных документов и описание структуры таблиц базы данных. Отчеты по запросам и таблицам.
курсовая работа [2,1 M], добавлен 30.01.2009Создание базы данных в среде MS Access. Создание и работа с базой данных в ателье. Алгоритм решения задачи. Выбор пакета прикладных программ. Проектирование форм выходных документов с использованием СУБД MS Access. Структура записи таблиц базы данных.
курсовая работа [1,6 M], добавлен 30.01.2009Проектирование базы данных в среде СУБД MS Access. Автоматизация учета информации о товаре в магазине. Определение требований и функций системы. Анализ предметной области. Разработка, создание таблиц, запросов, форм и отчетов. Инструкция для пользователя.
отчет по практике [523,6 K], добавлен 21.04.2014