Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

КУрсовик

.docx
Скачиваний:
21
Добавлен:
18.12.2019
Размер:
1.1 Mб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

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

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

КАФЕДРА ИНФОРМАЦИОННО-СЕТЕВЫХ ТЕХНОЛОГИЙ

КУРСОВАЯ РАБОТА (ПРОЕКТ)  ЗАЩИЩЕНА С ОЦЕНКОЙ

РУКОВОДИТЕЛЬ

ассистент

М. С. Иванова

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

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

Создание базы данных для склада лекарств

по дисциплине: Базы данных

РАБОТУ ВЫПОЛНИЛ

СТУДЕНТ  ГР. №

4616

А. В. Павлов

подпись, дата

инициалы, фамилия

Санкт-Петербург 2019

Создание базы данных для склада лекарств 1

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 28

ВВЕДЕНИЕ

В наше время во всех проектах, где нужна возможность сохранять и обрабатывать данные, используются базы данных. Существует различные БД, например Mysql, MongoBD, nosql и так далее. Поэтому чтобы быть востребованным на рынке труда, нужно уметь работать с базами данными, создавать таблицы, обрабатывать информацию с помощью запросов, выводить нужную информацию в нужном виде. Для всего этого мы будем использовать MS Access, который позволяет легко создавать базы данных и работать с ними. [1]

Microsoft Office Access или просто Microsoft Access — реляционная система управления базами данных (СУБД) корпорации Microsoft. Входит в состав пакета Microsoft Office. Имеет широкий спектр функций, включая связанные запросы, связь с внешними таблицами и базами данных. Благодаря встроенному языку VBA, в самом Access можно писать приложения, работающие с базами данных.[2]

С помощью встроенных инструментов MS Access мы создадим базу для склада лекарств, приведём ее к 3 нормальной форме, сделаем нужные запросы, а с помощью VBA напишем программу для авторизации пользователей с возможностью редактировать или удалять нужные таблицы.

1 ЦЕЛЬ РАБОТЫ

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

информационной системы средствами MS Access, отвечающей требованиям конечного потребителя

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

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

Таблица 1. Список пользователей

Директор

Провизор

Кадровик

Доступ

Ко всем базам данным

К таблице список препаратов

К таблице работники

Возможности

Все

Все

Все

Действие с информацией

Те же что и другие пользователи и поиск фирмы по названию

Поиск препарата по его назначению, поиск препарата по названию. Поиск поставщика по названию только с выводом адреса.

Поиск человека по его зарплате, поиск человека по его имени

Выходные документы

Прием/выдача товара, накладная

Прием/выдача товара, накладная

-

Логин

Admin

Prov

kadr

Пароль

111

111

111

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

Таблица 2 - Поставщики

Описание

Тип

Обяз.

Ограничения

Код

Для уникальной индификации

Счетчик

Да

Задается автоматически

Наименование

Для название фирмы

Короткий текст

Да

Любые символы до 255 знаков

Адрес

Для адреса фирмы

Короткий текст

Да

Любые символы до 255 знаков

Контактное лицо

Для главного представителя фирмы

Короткий текст

Да

Только текст до 255 знаков

Номер телефона

Для телефона компании

Короткий текст

Да

Только цифры с маской ввода

Инн

Для ИНН компании

Короткий текст

Да

Только цифры с маской ввода

№ Лицензии

Для лицензии компании

Короткий текст

Да

Только цифры с маской ввода

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

Таблица 3 - Список препаратов

Описание

Тип

Обяз.

Ограничения

Код

Для уникального поиска

Счетчик

Да

Задается автоматически

Название препарата

Для названия препарата

Короткий текст

Да

Только текст до 255 знаков

Производитель

Для производителя препарата

Короткий текст

Да

Только текст до 255 знаков

Назначение препарата

Для описание назначение препарата

Короткий текст

Да

Выбрать можно только из данных, который добавил админ

Группа

В какую классификацию входит лекарство( от кашля/горла и т.д)

Короткий текст

Да

Выбрать можно только из данных, который добавил админ

Единица измерения

Для единицы измерения препарата

Короткий текст

Да

Выбрать можно только из данных, который добавил админ

Закупочная цена

Для цены оптовой

Денежный

Да

Только цифры

Цена реализации

Для цены продажи

Денежный

Да

Только цифры

Далее сделаем таблицу “Работники”. Это таблица будет использоваться нашим пользователем “Кадровик” и “Директор”, они смогут иметь полный доступ к этой таблице. И смогут добавлять или удалять людей. Так же кадровик сможет искать людей по их зарплате и выводить их данные в отдельном окне. Добавим к базе данных такие свойства, как в Таблице 4

Таблица 4 - Работники

Описание

Тип

Обяз.

Ограничения

Код

Для уникального поиска

Счетчик

Да

Задается автоматически

ФИО

Для ФИО человека

Короткий текст

Да

Только текст до 255 знаков

Паспортные данные

Для Паспортных данных

Короткий текст

Да

Только цифры с маской ввода

Должность

Для должности человека

Короткий текст

Да

Выбрать можно только из данных, который добавил Директор

Номер телефона

Для номера человека

Короткий текст

Да

Только цифры с маской ввода

Зарплата

Для зарплаты

Денежный

Да

Только цифры

3 АНАЛИЗ СУЩНОСТЕЙ И СВЯЗЕЙ МЕЖДУ НИМИ

Сделаем ER-диаграмму, на котором изобразим нашу базу данных в первичном виде.

Рисунок 1 – Иллюстрация начальной базы данных

Далее оптимизируем ее, удалим лишние поля или добавим новые, что создать новые связи. И сделаем схему нашу будущей базы данных, в которой жирная обводка означает, что это название таблицы. Так, например, мы разделили базу данных и добавили новые таблицы – Группа, Должность, Адрес, Назначения

Рисунок 2 – Схема новой базы данных

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

3 НОРМАЛИЗАЦИЯ ОТНОШЕНИЙ В ПРЕДВАРИТЕЛЬНОЙ СХЕМЕ ДАННЫХ

Далее сделаем нашу исходную базу в вид 3 нормальной формы уже в MS ACCESS.

На основе схемы изменим нашу базу данных через “Анализ Базы данных”

Рисунок 3 – Анализ таблиц

В итоге получаем такую базу данных:

Рисунок 4 - Таблицы

Рисунок 5 - Таблица Поставщики

Рисунок 6 – Таблицы Работники

Рисунок 7 – Таблица препаратов, пункт производитель

Рисунок 8 – Таблица препаратов, пункт назначение

Рисунок 9 – Таблица препаратов, пункт группа, ед измерения

Рисунок 10 – Таблица групп

Рисунок 11 – Схема данных

4 СОСТАВЛЕНИЕ ТРЕБУЕМЫХ ЗАПРОСОВ К БАЗЕ ДАННЫХ

Создадим первый запрос, который будет выводить нам список препаратов по заданному назначению. Например, мы выполняем запрос и у нас появляется новое диалоговое окно, в которое мы пишем “кашель”, после этого появляется список где выводиться название препарата, его цена, производитель и его тип (капли и т.д).

Листинг 1 – Запрос №1

SELECT Назначение.Назначение, [3НФ_Список препаратов].[Название препарата], [3НФ_Список препаратов].Производитель, [3НФ_Список препаратов].[Цена реализации], [3НФ_Список препаратов].Группа_Код

FROM Группа INNER JOIN (Назначение INNER JOIN [3НФ_Список препаратов] ON Назначение.Код = [3НФ_Список препаратов].Назначение_Код) ON Группа.Код = [3НФ_Список препаратов].Группа_Код

WHERE (((Назначение.Назначение)=[Зачем]));

Рисунок 12 – Запрос назначения

Рисунок 13 – Результат работы запроса №1

Дальше сделаем второй запрос, который будет выводить нам адрес фирмы, если напишем ее название.

Листинг 2 – Запрос №2

SELECT [3НФ_Поставщики].Наименование, [3НФ_Адрес фирмы].Город, [3НФ_Адрес фирмы].[Адрес фирмы]

FROM [3НФ_Адрес фирмы] INNER JOIN 3НФ_Поставщики ON [3НФ_Адрес фирмы].[Код_ад] = [3НФ_Поставщики].[3НФ_Адрес фирмы_Код]

GROUP BY [3НФ_Поставщики].Наименование, [3НФ_Адрес фирмы].Город, [3НФ_Адрес фирмы].[Адрес фирмы]

HAVING ((([3НФ_Поставщики].Наименование)=[Название]));

Рисунок 14 – Вводим название аптеки

Рисунок 15 – Результат работы запроса №2

Запрос №3 будет выводить ФИО человека, если мы введем его зарплату.

Листинг 3 – Запрос №3

SELECT Должности.Зарплата, [3НФ_Работники].ФИО

FROM Должности INNER JOIN 3НФ_Работники ON Должности.Код = [3НФ_Работники].Таблица2_Код

WHERE (((Должности.Зарплата)=[ЗП]));

Рисунок 16 – Ввод зарплаты

Рисунок 17 – Результат работы запроса №3

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

Листинг 4 – Запрос №4

SELECT Группа.Группа, [3НФ_Список препаратов].[Название препарата], Назначение.Назначение, [3НФ_Список препаратов].[Цена реализации], [3НФ_Список препаратов].Производитель

FROM Группа INNER JOIN (Назначение INNER JOIN [3НФ_Список препаратов] ON Назначение.Код = [3НФ_Список препаратов].Назначение_Код) ON Группа.Код = [3НФ_Список препаратов].Группа_Код

WHERE ((([3НФ_Список препаратов].[Название препарата])=[Название]));

Рисунок 18 – Ввод названия препарата

Рисунок 19 – Результат работы запроса №4

Последний запрос, это вывод всей информации о человеке если мы ввели его ФИО (вводим можно не полностью а только фамилию или имя).

Листинг 5 – Запрос №5

SELECT [3НФ_Работники].ФИО, [3НФ_Работники].[Паспортные данные], [3НФ_Работники].[Номер телефона]

FROM Должности INNER JOIN 3НФ_Работники ON Должности.Код = [3НФ_Работники].Таблица2_Код

GROUP BY [3НФ_Работники].ФИО, [3НФ_Работники].[Паспортные данные], [3НФ_Работники].[Номер телефона]

HAVING ((([3НФ_Работники].ФИО) Like "*" & [ФИО:] & "*"));

Рисунок 20 – Ввод ФИО

Рисунок 21 – Результат запроса №5

Далее делаем запрос на вывод препаратов по заданному диапазону цен.

Листинг 6 – Запрос №6

SELECT [3НФ_Список препаратов].[Название препарата], [3НФ_Список препаратов].Производитель, [3НФ_Список препаратов].[Цена реализации], [3НФ_Список препаратов].Назначение_Код, [3НФ_Список препаратов].Группа_Код

FROM Назначение INNER JOIN (Группа INNER JOIN [3НФ_Список препаратов] ON Группа.Код = [3НФ_Список препаратов].Группа_Код) ON Назначение.Код = [3НФ_Список препаратов].Назначение_Код

WHERE ((([3НФ_Список препаратов].[Цена реализации]) Between [Цена от] And [Цена до]));

Рисунок 22 – Ввод цен

Рисунок 23 – Результат работы запрос №6

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

Листинг 7 – Запрос №7

SELECT Накладная.Количество, Накладная.Дата, Накладная.[№ препарата], [3НФ_Список препаратов].[Цена реализации], [3НФ_Список препаратов].[Название препарата]

FROM [3НФ_Список препаратов] INNER JOIN Накладная ON [3НФ_Список препаратов].Код_преп = Накладная.[№ препарата]

WHERE (((Накладная.Дата)=[ Дата ]));

Рисунок 24 – Ввод даты

Рисунок 25 – Результат работы №7

Далее делаем запрос на вывод списка препаратов, поставляемых данным поставщиком.

Листинг 8 – Запрос №8

SELECT [3НФ_Список препаратов].[Название препарата], [3НФ_Поставщики].Наименование, [3НФ_Список препаратов].[Цена реализации]

FROM 3НФ_Поставщики INNER JOIN ([3НФ_Список препаратов] INNER JOIN Накладная ON [3НФ_Список препаратов].Код_преп = Накладная.[№ препарата]) ON [3НФ_Поставщики].Код_пост = [3НФ_Список препаратов].Производитель

WHERE ((([3НФ_Поставщики].Наименование) Like "*" & [Название компани] & "*"));

Рисунок 26 – Ввод названия производителя

Рисунок 27 – Результат работы №8

6 ПРОЕКТИРОВАНИЕ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА

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

Рисунок 28 – Стартовая форма

Рисунок 29 – Вывод сообщения о неверных введенных данных

Листинг 6 – Код VBA для стартовой формы.

Option Explicit

Public sck As Integer

Option Compare Database

Dim rs As New ADODB.Recordset

Dim cn As New ADODB.Connection

Dim sql As String

Dim table As String

Dim result As Variant

Function chet()

sck = sck + 1

MsgBox "У вас осталось " & 3 - sck & " попытки"

If sck > 3 Then

Application.Quit

End If

End Function

Private Sub Кнопка42_Click()

result = DLookup("parol", "access", "login='" & Nz(Поле38.Value, "") & "'")

table = DLookup("tab", "access", "login='" & Nz(Поле38.Value, "") & "'")

If Nz(result, "") <> Nz([Поле40].Value, "") Then

Call chet

Else

DoCmd.OpenForm table

End If

End Sub

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

Рисунок 30 – Форма для кадровика

Рисунок 31 – Форма изменения данных

Рисунок 32 – Поиск по ФИО

Рисунок 33 – Поиск по ЗП

Аналогично сделаем тоже самое и для нашего провизора.

Рисунок 34 – Форма для провизора

Рисунок 35 – Поиск по назначению

Рисунок 36 – Поиск по названию

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

Рисунок 37 – Таблица Директора

Рисунок 38 – Форма поставщиков

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

Рисунок 39 – Накладная о приеме товара

Рисунок 40 – Накладная о продажи товара.

Делаем так чтобы при открытии базы данных открывалась стартовая форма с помощью настроек MS ACCESS.

Рисунок 39 - Настройка

Соседние файлы в предмете Базы данных