Главная страница

Курсовая 5 класс. Мой курсовой БД. 1 Анализ предметной области. 5 Постановка задачи 11


Скачать 2.77 Mb.
Название1 Анализ предметной области. 5 Постановка задачи 11
АнкорКурсовая 5 класс
Дата17.03.2023
Размер2.77 Mb.
Формат файлаdoc
Имя файлаМой курсовой БД.doc
ТипРеферат
#997093
страница7 из 8
1   2   3   4   5   6   7   8

3.3. T-SQL-определения хранимых процедур



1.Хранимая процедура выводит список больных геморроем.

ALTER PROCEDURE Bolniye_Gemoroyem

AS SELECT Сведения_о_заболевании.Выписанные_препараты, Сведения_о_заболевании.Номер_Пациента

FROM /*указываем имена таблиц, из которых выбираются записи*/

Сведения_о_заболевании

WHERE (Сведения_о_заболевании.Заболевание ='Геморой')
2. Хранимая процедура выводит список больных -ветеранов ЧАС

ALTER PROCEDURE Chernobylci

AS SELECT История_болезни_пациента.ФИО, История_болезни_пациента.Дата_Рождения

FROM /*указываем имена таблиц, из которых выбираются записи*/

История_болезни_пациента

WHERE (История_болезни_пациента.Номер_Пациента ='Ветеран Чернобыля')
3. Хранимая процедура, добавление нового анализа

ALTER PROCEDURE Dobavlenie_analisi

@Nomer_pacienta int, /*Объявляем необходимые переменные*/

@srock_zdachi datetime,

@analys varchar(20)

as

IF EXISTS (SELECT * FROM История_болезни_пациента /*Проверяем, нет ли уже в таблице */

WHERE Номер_Пациента = @Nomer_pacienta) /*записи с таким же значением первичного ключа*/

RETURN 0 /*если есть, завершается процедура*/

IF EXISTS (SELECT * FROM Сведения_о_зболевании /*проверяем наличие соответствующей записи в*/

WHERE Номер_Пациента = @Nomer_pacienta) /*таблице «Сведения о заболевании»*/

INSERT /*если условия выполняются, добавляем*/

INTO Сведения_об_анализах /*в таблицу новые значения*/

VALUES ( @analys,@srock_zdachi,@Nomer_pacienta)
4. Хранимая процедура, добавление сведений о новом санатории

ALTER PROCEDURE Dobavlenie_sanatriy

@Nomer_pacienta int, /*Объявляем необходимые переменные*/

@data_postuplenia datetime,

@data_vipiski datetime,

@stoyimost_lecheniya int,

@sanatoriy varchar(20)

as

IF EXISTS (SELECT * FROM История_болезни_пациента /*Проверяем, нет ли уже в таблице */

WHERE Номер_Пациента = @Nomer_pacienta) /*записи с таким же значением первичного ключа*/

RETURN 0 /*если есть, завершается процедура*/

IF EXISTS (SELECT * FROM Сведения_о_зболевании /*проверяем наличие соответствующей записи в*/

WHERE Номер_Пациента = @Nomer_pacienta) /*таблице «Сведения о заболевании»*/

INSERT /*если условия выполняются, добавляем*/

INTO Сведения_о_санаторном_лечении /*в таблицу новые значения*/

VALUES ( @sanatoriy,@data_postuplenia,@data_vipiski,@stoyimost_lecheniya,@Nomer_pacienta)

5. Хранимая процедура, добавление нового анализа в таблицу «Сведения об анализах»

ALTER PROCEDURE Dobavleniye_analisy

@Nomer_pacienta int, /*Объявляем необходимые переменные*/

@sroc_zdachi datetime,

@sanalys varchar(20)

as

IF EXISTS (SELECT * FROM История_болезни_пациента /*Проверяем, нет ли уже в таблице */

WHERE Номер_Пациента = @Nomer_pacienta) /*записи с таким же значением первичного ключа*/

RETURN 0 /*если есть, завершается процедура*/

IF EXISTS (SELECT * FROM Сведения_о_зболевании /*проверяем наличие соответствующей записи в*/

WHERE Номер_Пациента = @Nomer_pacienta) /*таблице «Сведения о заболевании»*/

INSERT /*если условия выполняются, добавляем*/

INTO Сведения_об_анализах /*в таблицу новые значения*/

VALUES ( @sanalys,@sroc_zdachi,@Nomer_pacienta)
6. Хранимая процедура, выводит количество поставщиков препарата

ALTER PROCEDURE Kolichestvo_Postavschikov

AS SELECT COUNT (DISTINCT Сведения_о_поставщиках_препаратов.Поставщик)

FROM Сведения_о_поставщиках_препаратов /*COUNT (DISTINCT <поле>) подсчитывает количество разноименных значений какого-либо поля в таблице*/
7. Хранимая процедура, выводит количество препарата в аптеке

ALTER PROCEDURE Kolichestvo_preparata

@Preparat varchar(20) /*Объявляем необходимые переменные*/

AS SELECT Сведения_о_препаратах_аптеки.Количество_препарата

FROM /*указываем имена таблиц, из которых выбираются записи*/

Сведения_о_препаратах_аптеки

WHERE (Сведения_о_препаратах_аптеки.Вырисанные_препараты = @Preparat)
8. Хранимая процедура, выводит количество пациентов поликлиники

ALTER PROCEDURE Kolvo_Pacientov

AS SELECT COUNT (DISTINCT История_болезни_пациента.ФИО)

FROM История_болезни_пациента /*COUNT (DISTINCT <поле>) подсчитывает количество разноименных значений какого-либо поля в таблице*/
9. Хранимая процедура, выводит количество специальностей врачей

ALTER PROCEDURE Kolvo_specialnostey_vrachey

AS SELECT COUNT (DISTINCT Персонал_Поликлиники.Специализация)

FROM Персонал_Поликлиники /*COUNT (DISTINCT <поле>) подсчитывает количество разноименных значений какого-либо поля в таблице*/
10. Хранимая процедура, выводит сведения о заданном препарате.

ALTER PROCEDURE Preparat

@Preparat varchar(20) /*Объявляем необходимые переменные*/

AS SELECT Сведения_о_препаратах_аптеки.Поставщик, Сведения_о_препаратах_аптеки.Количество_Препарата

FROM /*указываем имена таблиц, из которых выбираются записи*/

Сведения_о_препаратах_аптеки

WHERE (Сведения_о_препаратах_аптеки.Вырисанные_препараты = @Preparat)
11. Хранимая процедура, выводит список врачей принимающих пациентов сегодня.

ALTER PROCEDURE Priom_Vracha

AS

SELECT /*Перечисляем поля, которые будут выведены в результате запроса */

Расписание_приёма_врачей_поликлиники.Специализация, COUNT(Расписание_приёма_врачей_поликлиники.Время_приёма)

FROM /*указываем имя таблицы из которых выбираются записи*/

Расписание_приёма_врачей_поликлиники

WHERE /*задаем условие отбора*/

Расписание_приёма_врачей_поликлиники.Время_приёма=(SELECT GETDATE())

GROUP BY /*производится группировка по указанному полю*/

Специализация
12. Хранимая процедура, удаление записей о пациентах поликлиники

ALTER PROCEDURE udalenie_pacienty

@Chit_nom int /*Объявляем необходимые переменные*/

AS /*Проверяем, если ссылающиеся записи, если записей нет, разрешается удаление.*/

IF not EXISTS (SELECT * FROM Сведения_о_заболевании WHERE Номер_Пациента=@Chit_nom)

DELETE /*Оператор удаления*/

FROM История_болезни_пациента /*Имя таблицы, откуда нужно удалить*/

WHERE /*Условие удаления – удаляем строку, для которой значение поля Номер_Пациента совпадает с нужным*/

Номер_Пациента=@Chit_nom
13. Хранимая процедура, удаление записей о санатории.

ALTER PROCEDURE Udalenie_Sanatoriy

@Nom_pac int /*Объявляем необходимые переменные*/

AS IF not EXISTS (SELECT * FROM История_болезни_пациента WHERE Номер_Пациента=@Nom_pac)

DELETE /*Оператор удаления*/

FROM Сведения_о_санаторном_лечении /*Имя таблицы, откуда нужно удалить*/

WHERE /*Условие удаления – удаляем строку, для которой значение поля Номер_Пациента совпадает с нужным*/

Номер_Пациента=@Nom_pac

14. Хранимая процедура, удаление записей о врачах поликлиники

ALTER PROCEDURE Udalenie_Vrachi

@Tab_nom int /*Объявляем необходимые переменные*/

AS /*Проверяем, если ссылающиеся записи, если записей нет, разрешается удаление.*/

IF not EXISTS (SELECT * FROM Персонал_поликлиники WHERE Табельный_номер=@Tab_nom)

DELETE /*Оператор удаления*/

FROM Расписание_приёма_врачей_поликлиники /*Имя таблицы, откуда нужно удалить*/

WHERE /*Условие удаления – удаляем строку, для которой значение поля Номер_Пациента совпадает с нужным*/

Табельный_номер=@Tab_nom
15. Хранимая процедура, изменение записей о пациентах поликлиники.

ALTER PROCEDURE update_pacient

@Tab_nom int, /*Объявляем необходимые переменные*/

@Fam varchar(20)

AS

IF EXISTS (SELECT * FROM История_болезни_пациента /*Проверяем, существуют ли врачи*/

WHERE Номер_Пациента = @Tab_nom) /*Табельный номер которых равен искомому*/

UPDATE История_болезни_пациента /*Если такие есть обновляем «Персонал_Поликлиники»*/

SET ФИО=@Fam /*полю фамилия присваиваем новое значение*/

WHERE Номер_Пациента = @Tab_nom /*если табельный номер записи равен искомому*/
16. Хранимая процедура, изменение записей о поставщиках препаратов.

ALTER PROCEDURE update_postavschik

@Postavschik varchar(20) /*Объявляем необходимые переменные*/

AS

IF EXISTS (SELECT * FROM Сведения_о_поставщиках_препаратов /*Проверяем, существуют ли врачи*/

WHERE Поставщик = @Postavschik) /*Табельный номер которых равен искомому*/

UPDATE Сведения_о_поставщиках_препаратов /*Если такие есть обновляем «Персонал_Поликлиники»*/

SET Поставщик = @Postavschik /*полю фамилия присваиваем новое значение*/

WHERE Поставщик = @Postavschik /*если табельный номер записи равен искомому*/
17. Хранимая процедура, изменение записей о врачах поликлиники.

ALTER PROCEDURE update_vrach

@Tab_nom int, /*Объявляем необходимые переменные*/

@Fam varchar(20)

AS

IF EXISTS (SELECT * FROM Персонал_Поликлиники /*Проверяем, существуют ли врачи*/

WHERE Табельный_номер = @Tab_nom) /*Табельный номер которых равен искомому*/

UPDATE Персонал_Поликлиники /*Если такие есть обновляем «Персонал_Поликлиники»*/

SET Фамилия=@Fam /*полю фамилия присваиваем новое значение*/

WHERE Табельный_номер = @Tab_nom /*если табельный номер записи равен искомому*/
18. Хранимая процедура, вставка сведений о новых льготах.

ALTER PROCEDURE Vstavka_Lgoti

@Tip varchar(20), /*Объявляем необходимые переменные*/

@Plata varchar(20),

@Neobhodimost varchar(20)

AS /*Проверяем, есть ли запись в таблице «История_болезни_пациента» с такими же значениями ключевых полей, как у новой записи*/

IF NOT EXISTS (SELECT * FROM История_болезни_пациента WHERE Тип_льгот = @Tip)

RETURN 0 /*Если есть, завершаем выполнение процедуры*/

INSERT INTO Сведения_льготах /*Указываем таблицу, куда вставляем запись*/

VALUES ( @Tip,@Plata,@Neobhodimost) /*Указываем какие значения*/
19. Хранимая процедура, встака сведений о заболевании.

ALTER PROCEDURE Vstavka_Zabolevanie

@Nomer_Pacienta int, /*Объявляем необходимые переменные*/

@Zabolevanie varchar(20),

@Vipisanniye_preparati varchar(20)

AS /*Проверяем, есть ли запись в таблице «История_болезни_пациента» с такими же значениями ключевых полей, как у новой записи*/

IF EXISTS (SELECT * FROM История_болезни_пациента WHERE Номер_Пациента = @Nomer_Pacienta)

RETURN 0 /*Если есть, завершаем выполнение процедуры*/

INSERT INTO Сведения_о_заболевании /*Указываем таблицу, куда вставляем запись*/

VALUES ( @Nomer_Pacienta,@Zabolevanie,@Vipisanniye_preparati)

/*Указываем какие значения*/
20. Хранимая процедура, вывод сведений, о введённом пользователем заболевании.

ALTER PROCEDURE Zabolevanie

@Nomer_pacienta int /*Объявляем необходимые переменные*/

AS SELECT Сведения_о_заболевании.Заболевание, Сведения_о_заболевании.Выписанные_препараты

FROM /*указываем имена таблиц, из которых выбираются записи*/

Сведения_о_заболевании

WHERE (Сведения_о_заболевании.Номер_Пациента = @Nomer_Pacienta)

3.4. T-SQL-определения курсоров.
1. Курсор для просмотра информации о пациентах и выдача информации об их количестве.

DECLARE curs1 CURSOR

GLOBAL /*Создается глобальный курсор, который будет существовать до закрытия данного соединения*/

SCROLL /*Создает прокручиваемый курсор*/

KEYSET /*Будет создан ключевой курсор*/

TYPE_WARNING

FOR

SELECT /*Какие поля будут показаны в курсоре*/

История_болезни_пациента.ФИО, История_болезни_пациента.Домашний_адрес, История_болезни_пациента.Дата_Рождения, История_болезни_пациента.Тип_льгот

FROM История_болезни_пациента /*Из какой таблицы выбираются данные*/

FOR READ ONLY /*Только для чтения*/
open global curs1 /*открываем глобальный курсор*/

DECLARE /*объявляем переменную*/

@@Counter int

SET @@Counter =@@CURSOR_ROWS /*присваиваем ей число рядов курсора*/

Select @@Counter /*выводим результат на экран*/

CLOSE curs1 /*закрываем курсор*/

DEALLOCATE curs1 /*освобождаем курсор*/
2. Курсор для просмотра информации о препаратах аптеки и выдача информации об их количестве.

DECLARE curs2 CURSOR

GLOBAL /*Создается глобальный курсор, который будет существовать до закрытия данного соединения*/

SCROLL /*Создает прокручиваемый курсор*/

KEYSET /*Будет создан ключевой курсор*/

TYPE_WARNING

FOR

SELECT /*Какие поля будут показаны в курсоре*/

Сведения_о_препаратах_аптеки.Вырисанные_препараты, Сведения_о_препаратах_аптеки.Цена, Сведения_о_препаратах_аптеки.Имеется_в_наличии,Сведения_о_препаратах_аптеки.Количество_препарата

FROM Сведения_о_препаратах_аптеки /*Из какой таблицы выбираются данные*/

FOR READ ONLY /*Только для чтения*/
open global curs2 /*открываем глобальный курсор*/

DECLARE /*объявляем переменную*/

@@Counter int

SET @@Counter =@@CURSOR_ROWS /*присваиваем ей число рядов курсора*/

Select @@Counter /*выводим результат на экран*/

CLOSE curs2 /*закрываем курсор*/

DEALLOCATE curs2 /*освобождаем курсор*/

3.5. Описание клиентских приложений
При разработке клиентского приложения были созданы следующие формы.

При запуске приложения появляется форма «Ввод_пароля» (рис.13). на форме присутствует кнопки «Вход», нажатие на которую открывает другие формы. Код кнопки:

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

Me.Visible = False

Call ModalForm

End Sub

Public Sub ModalForm()

Dim strFrm As String, blnOk As Boolean

Dim k As Integer

strFrm = "Ввод пароля"

k = 0

'Открытие диалогового окна

DoCmd.OpenForm strFrm, , , , , acDialog

If CurrentProject.AllForms(strFrm).IsLoaded Then

'Проверка имени и пароля, например:

If Forms(strFrm).txtName = "Главный врач" And _

Forms(strFrm).txtPassword = "123" Then

'Имя и пароль введены верно,

'закрываем диалоговое окно

flag = True

DoCmd.Close acForm, strFrm

blnOk = True

k = 1

ElseIf Forms(strFrm).txtName = "Врач" And _

Forms(strFrm).txtPassword = "123" Then

'Имя и пароль введены верно,

'закрываем диалоговое окно

flag = True

DoCmd.Close acForm, strFrm

blnOk = True

k = 2

ElseIf Forms(strFrm).txtName = "Пациент" Then

'Имя и пароль введены верно,

'закрываем диалоговое окно

flag = True

DoCmd.Close acForm, strFrm

blnOk = True

k = 3

End If

If k = 1 Then

DoCmd.OpenForm "Меню_ГлавВрача"

Forms("Меню_ГлавВрача").SetFocus

End If

If k = 2 Then

DoCmd.OpenForm "Меню_Врача"

Forms("Меню_Врача").SetFocus

End If

If k = 3 Then

DoCmd.OpenForm "Меню_пациента"

Forms("Меню_пациента").SetFocus

End If

If k <> 1 And k <> 2 And k <> 3 Then

MsgBox "Неправильный пароль.Повторите ввод"

End If

End If

End Sub
Рисунок 13 – Форма «Ввод пароля».
Для пользователя «Главный врач», открывается форма меню_главврача – рисунок 14. На ней присутствуют следующие кнопки: «Работа с поликлиникой», «Работа с аптекой», «Получение информации».


Рисунок 14 – Форма «меню_главврача».
После нажатия на кнопку «Работа с поликлиникой» появится форма «Работа с поликлиникой» – рисунок 15. На форме присуетсвуют кнопки «Работа с расписанием приёма врачей», «Работа со штатным расписанием».


Рисунок 15 – Форма «Работа с поликлиникой».
После нажатия на кнопку «Работа срасписанием приёма врачей» появится форма «Работа с расписанием приёма» – рисунок 16. На форме присуетсвуют кнопки «Изменить время приёма врача», «Изменить кабинет врача». После нажатия на кнопку «Работа со штатным расписанием » появится форма «Работа со штатным расписанием» – рисунок 17. На форме присуетсвуют кнопки «Нанять врача», «Уволить врача», «изменить»


Рисунок 16 – Форма «Работа срасписанием приёма».

Рисунок 17 – Форма «Работа со штатным расписанием».
Рассмотрим форму «работа с расписанием приёма». При нажатии кнопки

«Изменить время приёма врача» откроется форма «Изменить время приёма» - рисунок 18. Принажатии кнопки «Изменить кабинет врача» откроется форма «Изменить кабинет врача» - рисунок 19.

1   2   3   4   5   6   7   8


написать администратору сайта