Разработка приложения по работе с базой данных "Больница"

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 28.04.2014
Размер файла 3,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Содержание

  • Введение
  • Постановка задачи
  • 1. Проектирование базы данных
    • 1.1 Построение концептуальной модели
    • 1.2.1 Документирование атрибутов
    • 1.2.2 Определение требований поддержки целостности данных
    • 1.3 Построение физической модели
    • 1.4 Хранимые процедуры, функции и триггеры
    • 1.4.1 Хранимые процедуры, функции и триггеры в приложении
  • 2. Разработка приложения по работе с базой данных
    • 2.1 Назначение и основные функции приложения
    • 2.2 Структура приложения
    • 2.3 Тестирование программы
    • 2.4 Руководство пользователю
  • Заключение
  • Приложение А. Графические материалы
  • Приложение Б. Листинг программных модулей

Введение

Еще в самом зарождении вычислительной техники, БД стала применяться для численных расчетов, непригодных для выполнения вручную. Развитие в этой области способствовало совершенствованию методов численного решения сложных математических задач, развитию множества языков программирования, ориентированных на удобную запись численных алгоритмов, развитию обратной связи с разработчиками новых архитектур ЭВМ.

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

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

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

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

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

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

И все же, файловая система совершенно непригодна, когда необходимо устанавливать перекрёстные связи, или выполнять анализ и обработку данных. Основной единицей информации является файл, который является простым набором записей, содержащих логически связанные данные. Каждая запись состоит из одного или нескольких полей, является характеристикой моделируемого объекта. В ходе работы с файловой системой проявилось множество недостатков, и возникла необходимость использовать иной подход для повышения эффективности работы с данными. Эта необходимость привела к рождению баз данных и систем управления базами данных (СУБД).

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

· Контроль за избыточностью и противоречивостью данных;

· Увеличение полезной информации при том же объёме хранимой информации;

· Совместное использование данных;

· Поддержка целостности данных;

· Обеспечение безопасности данных;

· Наличие службы пользовательского копирования и восстановления данных.

Однако имеются так же и свои недостатки:

· Сложность;

· Стоимость СУБД;

· Дополнительные затраты на аппаратное обеспечение;

· Затраты на преобразование.

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

Разработать приложение по работе с базой данных «Больница».

Исходные данные к проекту: база данных должна быть создана в MS SQL Server 2008, среда разработки -- MS Visual Studio 2012.

Задача данной курсовой работы - информационная поддержка больницы. База данных должна осуществлять: учет поступления пациентов (по отделениям); учет проведённого лечения; учет платных услуг с выдачей счетов на оплату; ведение архива выписанных пациентов. Необходимо предусмотреть определения (по отделениям): пропускной способности больницы; среднего времени пребывания больных в стационаре; наличия свободных мест в палатах (отдельно для мужчин и женщин); количества прооперированных пациентов (из них - с осложнениями и умерших); смертности

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

1. Проектирование базы данных

Проектирование базы данных (БД) - одна из наиболее сложных и ответственных задач, связанных с созданием информационной системы (ИС). В результате её решения должны быть определены содержание БД, эффективный для всех её будущих пользователей способ организации данных и инструментальные средства управления данными.

Проектирование БД разбивается на 3 этапа:

· концептуальное проектирование;

· логическое проектирование;

· физическое проектирование.

1.1 Построение концептуальной модели

Концептуальное проектирование - это процедура построения информационной модели, не зависящей от каких-либо физических требований.

В соответствии с предметной областью система строится с учетом следующих особенностей:

· Каждый пациент поступает в одно отделение;

· Для каждого пациента учитывается проведённое лечение, и выставляется счет;

· Мест в отделениях ограничено;

· В каждом отделении свои врачи;

· Для каждого пациента назначается персональное лечение;

Выделим базовые сущности этой предметной области:

· Врачи - сильная сущность, содержит информацию о врачах;

· Пациенты - сильная сущность, содержит информацию о пациентах больницы;

· Лечение - слабая сущность, содержит информацию о проведённом лечении;

1. Врачи. Атрибуты сущности - ФИО, должность, личный номер врача и номер отделения;

2. Пациенты. Атрибуты сущности - ФИО, пол, личный номер пациента, номер отделения, день поступления, день выписки, смерть;

3. Лечение. Атрибуты сущности - номер отделения, номер врача, номер пациента, номер услуги, номер препарата, операции, цена операции, количество операций, осложнения;

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

Рисунок 1.1 - ER-диаграмма концептуальной модели

В полученном ER-модуле нет:

- Связей многие ко многим;

- Сложных связей;

- Рекурсивных связей;

- Связей 1 к 1;

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

4. Отделение. Атрибуты сущности - личный номер отделения, название отделения, количество женских палат, количество мужских палат, количество мест в палате;

5. Услуги. Атрибуты сущности - личный номер услуги, название услуги, цена услуги;

6. Препараты. Атрибуты сущности - личный номер препарата, название препарата, цена препарата;

1.2 Построение логической модели

Логическое проектирование - это процесс конструирования локальной логической информационной модели на основе существующих концептуальных моделей данных, независимо от используемой СУБД и других условий физической реализации.

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

Преобразование ER-диаграммы к реляционному виду содержится в приложении А1.

1.2.1 Документирование атрибутов

О каждом атрибуте должны быть документированы следующие данные:

· имя атрибута и его описание

· тип данных и размерность значения

· значение, принимаемое для атрибута по умолчанию (если таковое имеется)

· примечания для каждого атрибута (первичный, вторичный ключ, допустимость отсутствия значения)

Таблица 3 - Атрибуты

Содержание поля

Имя поля

Тип поля

Значение по умолчанию

Примечания

otdelenie

Код отделения

id_otd

int

Нет

Первичный ключ

Название отдел.

nazvanie_otd

Nvarchar(300)

Нет

NULL

Кол. жен.палат

w_palat

tinyint

Нет

NULL

Кол. муж.палат

m_palat

tinyint

Нет

NULL

Кол. мест в палате

mest_v_palate

tinyint

Нет

NULL

pacient

Код пациента

id_pac

int

Нет

Первичный ключ

ФИО пациента

fio_pac

nvarchar(50)

Нет

NULL

Код отделения

id_otd

int

Да

Вторичный ключ

Пол пациента

pol_pac

nvarchar(1)

Нет

NULL

День поступления

d_postupleniya

date

Нет

NULL

День выписки

d_vipiski

date

Да

NULL

Смерти

smerti

nvarchar(3)

Нет

NULL

vrachi

Код врача

id_vr

int

Нет

Первичный ключ

ФИО врача

fio_vr

nvarchar(50)

Нет

NULL

Должность врача

dolgn_vr

nvarchar(30)

Нет

NULL

Код отделения

id_otd

int

Да

Вторичный ключ

preparat

Код препарата

id_pr

int

Нет

Первичный ключ

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

nazvanie_pr

nvarchar(50)

Нет

NULL

Цена препарата

cena_pr

int

Нет

NULL

uslugi

Код услуги

id_usl

int

Нет

Первичный ключ

Название услуги

nazvanie_usl

nvarchar(50)

Нет

NULL

Цена услуги

cena_usl

int

Нет

NULL

lechenie

Код услуги

id_usl

int

Да

Вторичный ключ

Код пациента

id_pac

int

Да

Вторичный ключ

Код врача

id_vr

int

Да

Вторичный ключ

Код препарата

id_pr

int

Да

Вторичный ключ

Код отделения

id_otd

int

Да

Вторичный ключ

Операции

operacii

nvarchar(3)

Нет

NULL

Цена операции

cena_op

int

Нет

NULL

Кол. операций

kol_op

int

Нет

NULL

Осложнения

oslojneniya

nvarchar(3)

Да

NULL

1.2.2 Определение требований поддержки целостности данных

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

Различают следующие типы целостности данных:

· Обязательные данные

Указаны в Таблице 3. «Атрибуты сущностей и связей»

· Ограничение для доменов атрибутов

Указаны в Таблице 3. «Атрибуты сущностей и связей»

· Целостность сущностей

Заданные первичные ключи не должны иметь NULL-значения.

· Ссылочная целостность

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

· Требования предметной области

В БД осуществляется контроль заполнения данных. Обработка ситуации: попытка ввода пациента, когда мест в больнице нет.

1.3 Построение физической модели

Физическое проектирование - это процедура создания описания конкретной реализации БД с описанием структуры хранения данных, методов доступа к данным. В данном случае реализация была осуществлена в MS SQL Server 2008.

Скрипт создания базы данных:

--create database bolnica

--1

create table otdelenie

(

id_otd int primary key,

nazvanie_otd nvarchar(300) not null,

w_palat tinyint not null,

m_palat tinyint not null,

mest_v_palate tinyint not null

)

--drop table otdelenie

--2

create table vrachi

(

id_vr int Primary key,

fio_vr nvarchar(50) not null,

dolgn_vr nvarchar(30) not null,

id_otd int foreign key(id_otd) references otdelenie

)

--drop table vrachi

--3

create table pacient

(

id_pac int Primary key,

fio_pac nvarchar(50) not null,

id_otd int foreign key(id_otd) references otdelenie,

pol_pac nvarchar(1) not null,

d_postupleniya date not null,

d_vipiski date not null,

smerti nvarchar(3) not null,

)

--drop table pacient

--4

create table preparat

(

id_pr int Primary key,

nazvanie_pr nvarchar(50) not null,

cena_pr int not null

)

--drop table preparat

--5

create table uslugi

(

id_usl int Primary key,

nazvanie_usl nvarchar(50) not null,

cena_usl int not null

)

--drop table uslugi

--6

create table lechenie

(

id_usl int foreign key(id_usl) references uslugi,

id_pac int foreign key(id_pac) references pacient,

id_vr int foreign key(id_vr) references vrachi,

id_pr int foreign key(id_pr) references preparat,

id_otd int foreign key(id_otd) references otdelenie,

operacii nvarchar(3) not null,

cena_op int not null,

kol_op int not null

)

--drop table lechenie

Рисунок 1 - Таблица «otdelenie»

Рисунок 2 - Таблица «vrachi»

Рисунок 3 - Таблица «pacient »

Рисунок 4 - Таблица «preparat»

Рисунок 5 - Таблица «uslugi»

Рисунок 6 - Таблица «lechenie»

Рисунок 7 - Диаграмма базы данных

1.4 Хранимые процедуры, функции и триггеры

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

1.4.1 Хранимые процедуры, функции и триггеры в приложении

Хранимая процедура или функция представляет собой подпрограмму, основной задачей которой является считывание параметров, передача их на сервер и обработка результатов выполнения. Их использование позволяет снизить стоимость сопровождения системы и дает возможность избавиться от необходимости изменять клиентские приложения. Триггеры предназначены для того, чтобы контролировать изменения данных в таблицах и производить какие-то автоматические действия, не требующие вмешательства пользователя. В моем приложении разработаны: хранимые процедуры, функции и триггеры, выполняющие следующие манипуляции с данными (рис. 8):

Рисунок 8 - Список хранимых процедур, функций и триггеров

1) функция Post_po_otd() реализует учет поступления пациентов по отделениям

CREATE FUNCTION Post_po_otd()

RETURNS @Tb1 TABLE (Name nvarchar(50), Otdel nvarchar(50), Data_post date)

AS

BEGIN

insert into @Tb1

SELECT fio_pac,nazvanie_otd,d_postupleniya FROM pacient INNER JOIN

otdelenie ON pacient.id_otd = otdelenie.id_otd

RETURN

END

select * from Post_po_otd()

--DROP FUNCTION Post_po_otd

2) функция count_w_mest(@id_otd int) подсчитывает количество занятых женских мест в указанном отделении. Аналогичные действия, но уже для мужчин выполняет функция count_m_mest(@id_otd int). Обе эти функции используются в тригере prop_sp_bolnic, который определяет при внесении нового пациента в БД пропускную способность больницы, и в случае свободных мест помещает пациента в указанное отделение:

create function count_w_mest(@id_otd int)

Returns int

AS

begin

declare @res int

set @res=(select COUNT(id_pac) from pacient where d_vipiski is null and pol_pac='w' and pacient.id_otd=@id_otd)

return @res

end

select dbo.count_w_mest(3)

--drop function count_w_mest

-----------------------------------------------------------------------

create function count_m_mest(@id_otd int)

Returns int

AS

begin

declare @res int

set @res=(select COUNT(id_pac) from pacient where d_vipiski is null and pol_pac='m' and pacient.id_otd=@id_otd)

return @res

end

select dbo.count_m_mest(5)

--drop function count_m_mest

-----------------------------------------------------------------------

CREATE TRIGGER prop_sp_bolnic

ON pacient

INSTEAD OF INSERT

AS

BEGIN

DECLARE @count INT

declare @ID int

declare @pol nvarchar(3)

declare @kolm int

declare @kolW int

set @ID = (select id_otd from inserted)

set @pol = (select pol_pac from inserted)

set @kolm = (select m_palat*mest_v_palate from otdelenie where id_otd=@ID)

set @kolw = (select w_palat*mest_v_palate from otdelenie where id_otd=@ID)

if @pol = 'm'

begin

set @count = (select dbo.count_m_mest(@ID))

if @count < @kolm

begin

INSERT INTO pacient

(id_pac,fio_pac,id_otd,pol_pac,d_postupleniya,d_vipiski,smerti)

select * from inserted

select 'Пациент успешно добавлен' 'MESSAGE'

end

else select 'Отделение переполнено' 'MESSAGE'

end

if @pol = 'w'

begin

set @count = (select dbo.count_w_mest(@ID))

if @count < @kolw

begin

INSERT INTO pacient

(id_pac,fio_pac,id_otd,pol_pac,d_postupleniya,d_vipiski,smerti)

select * from inserted

select 'Пациент успешно добавлен' 'MESSAGE'

end

else select 'Отделение переполнено' 'MESSAGE'

end

END

---------------

--DROP TRIGGER prop_sp_bolnic

3) функция uchet_plat_usl() реализует учет платных услуг:

CREATE FUNCTION uchet_plat_usl()

RETURNS @Tb5 TABLE (naim_usl nvarchar(100),cena int)

AS

BEGIN

insert into @Tb5

SELECT uslugi.nazvanie_usl, uslugi.cena_usl

FROM uslugi

RETURN

END

----------------------------------------------------------------------------

select * from uchet_plat_usl()

--DROP function uchet_plat_usl

4) функция arhiv_vypisannyx() показывает архив выписанных пациентов:

CREATE FUNCTION arhiv_vypisannyx()

RETURNS @Tb5 TABLE (name nvarchar(30),data1 date, data2 date)

AS

BEGIN

if exists (SELECT fio_pac, d_postupleniya, d_vipiski FROM pacient

where d_vipiski is not null)

insert into @Tb5 SELECT fio_pac, d_postupleniya, d_vipiski FROM pacient

where d_vipiski is not null

RETURN

END

----------------------------------------------------------------------------

select * from arhiv_vypisannyx()

--DROP function arhiv_vypisannyx

5) функция prodolg_stac() рассчитывает и выводит среднюю продолжительность пребывания пациентов в больнице:

CREATE FUNCTION prodolg_stac()

RETURNS @Tb4 TABLE (data_sr int)

AS

BEGIN

insert into @Tb4 select AVG(DATEDIFF(DAY,pacient.d_postupleniya,pacient.d_vipiski))from pacient

RETURN

END

----------------------------------------------------------------------------

select * from prodolg_stac()

--DROP function prodolg_stac

6) функция proper_pac() выводит количество: прооперированных пациентов, пациентов с осложнениями и умерших

CREATE FUNCTION proper_pac()

RETURNS @Tb4 TABLE (gruppa nvarchar(30), kolvo int)

AS

BEGIN

if exists (select lechenie.operacii from lechenie where lechenie.operacii = 'yes')

insert into @Tb4(gruppa)

values ('прооперированные')

update @Tb4 set kolvo = (select COUNT(lechenie.kol_op)from lechenie where gruppa='прооперированные')

insert into @Tb4(gruppa)

values ('с осложнениями')

update @Tb4 set kolvo = (select COUNT(lechenie.oslojneniya )from lechenie where lechenie.oslojneniya= 'yes')

insert into @Tb4(gruppa)

values ('смерть')

update @Tb4 set kolvo = (select COUNT(pacient.smerti )from pacient where pacient.smerti= 'yes')

RETURN

END

----------------------------------------------------------------------------

select * from proper_pac()

--DROP function proper_pac

7) функция smerti() подсчитывает и выводит количество умерших пациентов:

CREATE FUNCTION smerti()

RETURNS @Tb4 TABLE ( kolvo int)

AS

BEGIN

if exists (select pacient.smerti from pacient where pacient.smerti = 'yes')

insert into @Tb4

select COUNT(pacient.smerti )from pacient where pacient.smerti= 'yes'

RETURN

END

----------------------------------------------------------------------------

select * from smerti()

--DROP function smerti

8) хранимая процедура uchet_prov_lech реализует учет проведённого лечения:

CREATE procedure uchet_prov_lech

@IDpacienta int

AS

BEGIN

--проверка наличия

IF EXISTS(SELECT id_pac FROM pacient WHERE id_pac = @IDpacienta)

BEGIN

SELECT pacient.fio_pac, uslugi.nazvanie_usl, preparat.nazvanie_pr, lechenie.kol_op

FROM pacient inner join lechenie on pacient.id_pac=lechenie.id_pac inner join

preparat on preparat.id_pr= lechenie.id_pr inner join uslugi on lechenie.id_usl = uslugi.id_usl

where pacient.id_pac= @IDpacienta

END

END

----------------------------------------------------------------------------

EXEC uchet_prov_lech 1

--DROP procedure uchet_prov_lech

9) хранимая процедура oplata рассчитывает и предоставляет счет указанному пациенту:

CREATE procedure oplata

@IDpacienta int

AS

BEGIN

IF EXISTS(SELECT id_pac FROM pacient WHERE id_pac = @IDpacienta)

BEGIN

SELECT pacient.fio_pac,(lechenie.cena_op+preparat.cena_pr+uslugi.cena_usl) from pacient,lechenie, preparat, uslugi where lechenie.id_pr=preparat.id_pr and lechenie.id_usl=uslugi.id_usl

and pacient.id_pac=lechenie.id_pac and pacient.id_pac = @IDpacienta

END

END

-----------------------------------------------------------------------------

EXEC oplata 1

--DROP procedure oplata

база данные больница

2. Разработка приложения по работе с базой данных

2.1 Назначение и основные функции приложения

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

С помощью данного приложения пользователь может просматривать и редактировать таблицы pacient, otdelenie, vrachi, preparat, uslugi и lechenie

2.2 Структура приложения

UML-диаграмма приложения представлена в приложении А2.

Приложение представляет собой проект bolnica.sln, разработанный в среде MS Visual Studio 2012. Приложение состоит из элементов, представленных на рисунке 9:

Рисунок 9 - Структурная схема приложения

Таблица 4 Структура приложения

Название элемента

Назначение

Form1

Форма главного окна программы, которая позволяет просматривать и редактировать таблицы БД

Form2

Форма, содержащая информацию о разработчике приложения

2.3 Тестирование программы

Тестирование программы проводилось на протяжении всего времени работы над приложением, и все найденные ошибки были устранены.

Тестирование проводилось на компьютере под управлением ОС Windows 7 Домашняя Базовая. Техническая база компьютера: CPU AMD Intel Core 2 Duo 2.0, 4Gb RAM, HDD 320Gb. Тестирование прошло успешно.

Приложение корректно работает в Windows 7. В результате детального тестирования не было выявлено неточностей или сбоев в работе приложения. Приложение отображает все необходимые данные.

Просмотр имеющихся данных:

Рисунок 10 -Просмотр данных

Добавление и удаление данных:

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

Рисунок 11 - Удаление строки прошло успешно

Редактирование данных:

Рисунок 12 - Изменения в таблице «pacient»

Рисунок 13 - Результат изменения в таблице «pacient»

Просмотр таблицы услуги:

Рисунок 14- Просмотр услуг

Рисунок 15 - Меню доступных запросов

Рисунок 16 - Выставление счета пациенту по его ID

Рисунок 17 - Учет пациентов по отделениям

Рисунок 18 - Учет проведённого лечения

Рисунок 19 - Учет платных услуг

Рисунок 20 - Архив выписанных пациентов

Рисунок 21 - Среднее время в стационаре

Рисунок 22 - Количество прооперированных, с осложнениями и умерших пациентов

Рисунок 23 - Смертность

2.4 Руководство пользователю

Системные требования:

Операционная система Windows 7. Приложение не зависит от типа применяемого процессора.

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

Разработанный интерфейс прост в использовании (см. рис. 14 - 23). Для того, чтобы вводить или редактировать данные в приложении, нужно выбрать таблицу из списка таблиц, нажать кнопку «Показать», выполнить необходимые изменения и нажать кнопку «Редактировать». Чтобы выполнить специальные запросы и увидеть их результат, нужно зайти в Меню-> «выбираем интересующий запрос». Если нажать в меню «help» покажется окно с данными разработчика.

Основные виды работы с данными отображаются на форме1 на DataGridView1 (рис. 24):

Рисунок 24 - Главное окно программы

Заключение

В вышеизложенной курсовой работе была создана база данных «Больница», которая не охватывает весь возможный объем информации, подлежащей рассмотрению, но максимально близка к этому и хранит достаточно сведений. В рамках выполнения курсовой работы, были разработаны хранимые процедуры, функции и триггер, которые позволяют более эффективно работать с базой данных. Также было разработано приложения для работы с базой данных, которое представляет данные в удобной для пользователя форме и позволяет работать с информацией из базы данных, не обращаясь к SQL Server вручную. Это делает мою базу данных доступной к применению большему числу пользователей, что является большим плюсом. Разработанное приложение позволяет просматривать таблицы базы данных, редактировать данные, просматривать отчеты о проведенном лечении, выписанных пациентах и.т.д. При тестировании не было выявлено ошибок, что означает, что наше приложение работает корректно. Данную базу данных можно использовать в больницах, для упрощения работы сотрудникам и уменьшения количества документации.

Приложение А. Графические материалы

Приложение Б. Листинг программных модулей

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

namespace bolnica

{

public partial class Form1 : Form

{

SqlDataAdapter dataadapter;

DataSet dataset_;

SqlCommandBuilder cb;

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection(@"Integrated Security=SSPI;Persist Security Info=False;User ID=;Initial Catalog=bolnica;Data Source=Nastya;Initial File Name=");

string query = string.Empty;

dataGridView1.ReadOnly = false;

if (radioButton1.Checked == true)

{

query = "SELECT * FROM pacient";

dataadapter = new SqlDataAdapter(query, conn);

cb = new SqlCommandBuilder(dataadapter);

dataset_ = new DataSet();

dataadapter.Fill(dataset_, "pacient");

dataGridView1.DataSource = dataset_;

dataGridView1.DataMember = "pacient";

}

else if (radioButton2.Checked == true)

{

query = "SELECT * FROM otdelenie";

//-------------------------------

dataadapter = new SqlDataAdapter(query, conn);

cb = new SqlCommandBuilder(dataadapter);

dataset_ = new DataSet();

dataadapter.Fill(dataset_, "otdelenie");

dataGridView1.DataSource = dataset_;

dataGridView1.DataMember = "otdelenie";

}

else if (radioButton3.Checked == true)

{

query = "SELECT * FROM vrachi";

//-------------------------------

dataadapter = new SqlDataAdapter(query, conn);

cb = new SqlCommandBuilder(dataadapter);

dataset_ = new DataSet();

dataadapter.Fill(dataset_, "vrachi");

dataGridView1.DataSource = dataset_;

dataGridView1.DataMember = "vrachi";

}

else if (radioButton4.Checked == true)

{

query = "select * from uslugi";

//-------------------------------

dataadapter = new SqlDataAdapter(query, conn);

cb = new SqlCommandBuilder(dataadapter);

dataset_ = new DataSet();

dataadapter.Fill(dataset_, "uslugi");

dataGridView1.DataSource = dataset_;

dataGridView1.DataMember = "uslugi";

}

else if (radioButton5.Checked == true)

{

query = "SELECT * FROM preparat";

//-------------------------------

dataadapter = new SqlDataAdapter(query, conn);

cb = new SqlCommandBuilder(dataadapter);

dataset_ = new DataSet();

dataadapter.Fill(dataset_, "preparat");

dataGridView1.DataSource = dataset_;

dataGridView1.DataMember = "preparat";

}

else if (radioButton6.Checked == true)

{

query = "SELECT * FROM lechenie";

//-------------------------------

dataadapter = new SqlDataAdapter(query, conn);

cb = new SqlCommandBuilder(dataadapter);

dataset_ = new DataSet();

dataadapter.Fill(dataset_, "lechenie");

dataGridView1.DataSource = dataset_;

dataGridView1.DataMember = "lechenie";

}

textBox2.Clear();

textBox2.Text = query;

}

private void button3_Click(object sender, EventArgs e)

{

if (radioButton1.Checked == true)

{

cb.GetUpdateCommand();

dataadapter.Update(dataset_, "pacient");

textBox2.Text = "SQL Database Updated!";

}

else if (radioButton2.Checked == true)

{

cb.GetUpdateCommand();

dataadapter.Update(dataset_, "otdeleniye");

textBox2.Text = "SQL Database Updated!";

}

else if (radioButton3.Checked == true)

{

cb.GetUpdateCommand();

dataadapter.Update(dataset_, "vrachi");

textBox2.Text = "SQL Database Updated!";

}

else if (radioButton4.Checked == true)

{

cb.GetUpdateCommand();

dataadapter.Update(dataset_, "uslugi");

textBox2.Text = "SQL Database Updated!";

}

else if (radioButton5.Checked == true)

{

cb.GetUpdateCommand();

dataadapter.Update(dataset_, "preparat");

textBox2.Text = "SQL Database Updated!";

}

else if (radioButton6.Checked == true)

{

cb.GetUpdateCommand();

dataadapter.Update(dataset_, "lechenie");

textBox2.Text = "SQL Database Updated!";

}

}

private void учетПациентовПоОтделениямToolStripMenuItem_Click(object sender, EventArgs e)

{

//Post_po_otd

SqlConnection conn = new SqlConnection(@"Integrated Security=SSPI;Persist Security Info=False;User ID=;Initial Catalog=bolnica;Data Source=Nastya;Initial File Name=");

DataSet ds = new DataSet(); //объект для вывода информации из БД

string query = string.Empty;

query = "select * from Post_po_otd()";

textBox2.Text = query;

SqlDataAdapter dataadapter = new SqlDataAdapter(query, conn);

dataadapter.Fill(ds);

dataGridView1.DataSource = ds.Tables[0];

dataGridView1.ReadOnly = true;

}

private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)

{

MessageBox.Show("Error happened " + e.Context.ToString());

textBox2.Clear();

textBox2.Text = "Произошла ошибка ";

if (e.Context == DataGridViewDataErrorContexts.Commit)

{

MessageBox.Show("Commit error");

textBox2.Clear();

textBox2.Text = "Commit error";

}

if (e.Context == DataGridViewDataErrorContexts.CurrentCellChange)

{

MessageBox.Show("Cell change");

textBox2.Clear();

textBox2.Text = "Cell change";

}

if (e.Context == DataGridViewDataErrorContexts.Parsing)

{

MessageBox.Show("parsing error");

textBox2.Clear();

textBox2.Text = "parsing error";

}

if (e.Context == DataGridViewDataErrorContexts.LeaveControl)

{

MessageBox.Show("leave control error");

textBox2.Clear();

textBox2.Text = "leave control error";

}

if ((e.Exception) is ConstraintException)

{

DataGridView view = (DataGridView)sender;

view.Rows[e.RowIndex].ErrorText = "an error";

view.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText = "an error";

e.ThrowException = false;

}

}

private void учетToolStripMenuItem_Click(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection(@"Integrated Security=SSPI;Persist Security Info=False;User ID=;Initial Catalog=bolnica;Data Source=Nastya;Initial File Name=");

DataSet ds = new DataSet(); //объект для вывода информации из БД

string query = string.Empty;

query = "exec uchet_prov_lech "+ textBox1.Text;

textBox2.Text = query;

SqlDataAdapter dataadapter = new SqlDataAdapter(query, conn);

dataadapter.Fill(ds);

dataGridView1.DataSource = ds.Tables[0];

dataGridView1.ReadOnly = true;

}

private void учетПлатныхУслугToolStripMenuItem_Click(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection(@"Integrated Security=SSPI;Persist Security Info=False;User ID=;Initial Catalog=bolnica;Data Source=Nastya;Initial File Name=");

DataSet ds = new DataSet(); //объект для вывода информации из БД

string query = string.Empty;

query = "select * from uchet_plat_usl() " ;

textBox2.Text = query;

SqlDataAdapter dataadapter = new SqlDataAdapter(query, conn);

dataadapter.Fill(ds);

dataGridView1.DataSource = ds.Tables[0];

dataGridView1.ReadOnly = true;

}

private void архивВыписанныхПациентовToolStripMenuItem_Click(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection(@"Integrated Security=SSPI;Persist Security Info=False;User ID=;Initial Catalog=bolnica;Data Source=Nastya;Initial File Name=");

DataSet ds = new DataSet(); //объект для вывода информации из БД

string query = string.Empty;

query = "select * from arhiv_vypisannyx() ";

textBox2.Text = query;

SqlDataAdapter dataadapter = new SqlDataAdapter(query, conn);

dataadapter.Fill(ds);

dataGridView1.DataSource = ds.Tables[0];

dataGridView1.ReadOnly = true;

}

private void среднееВремяВСтационареToolStripMenuItem_Click(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection(@"Integrated Security=SSPI;Persist Security Info=False;User ID=;Initial Catalog=bolnica;Data Source=Nastya;Initial File Name=");

DataSet ds = new DataSet(); //объект для вывода информации из БД

string query = string.Empty;

query = "select * from prodolg_stac() ";

textBox2.Text = query;

SqlDataAdapter dataadapter = new SqlDataAdapter(query, conn);

dataadapter.Fill(ds);

dataGridView1.DataSource = ds.Tables[0];

dataGridView1.ReadOnly = true;

}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

if (!(char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar) || e.KeyChar == '.')) e.Handled = true;

dataGridView1.ReadOnly = true;

}

private void helpToolStripMenuItem_Click(object sender, EventArgs e)

{

Form2 helper = new Form2();

helper.ShowDialog();

}

private void выставитьСчетПациентуToolStripMenuItem_Click(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection(@"Integrated Security=SSPI;Persist Security Info=False;User ID=;Initial Catalog=bolnica;Data Source=Nastya;Initial File Name=");

DataSet ds = new DataSet(); //объект для вывода информации из БД

string query = string.Empty;

query = "exec oplata " + textBox1.Text;

textBox2.Text = query;

SqlDataAdapter dataadapter = new SqlDataAdapter(query, conn);

dataadapter.Fill(ds);

dataGridView1.DataSource = ds.Tables[0];

dataGridView1.ReadOnly = true;

}

private void смертностьToolStripMenuItem_Click(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection(@"Integrated Security=SSPI;Persist Security Info=False;User ID=;Initial Catalog=bolnica;Data Source=Nastya;Initial File Name=");

DataSet ds = new DataSet(); //объект для вывода информации из БД

string query = string.Empty;

query = "select * from smerti() ";

textBox2.Text = query;

SqlDataAdapter dataadapter = new SqlDataAdapter(query, conn);

dataadapter.Fill(ds);

dataGridView1.DataSource = ds.Tables[0];

dataGridView1.ReadOnly = true;

}

private void операцииОсложненияСмертиToolStripMenuItem_Click(object sender, EventArgs e)

{

SqlConnection conn = new SqlConnection(@"Integrated Security=SSPI;Persist Security Info=False;User ID=;Initial Catalog=bolnica;Data Source=Nastya;Initial File Name=");

DataSet ds = new DataSet(); //объект для вывода информации из БД

string query = string.Empty;

query = "select * from proper_pac() ";

textBox2.Text = query;

SqlDataAdapter dataadapter = new SqlDataAdapter(query, conn);

dataadapter.Fill(ds);

dataGridView1.DataSource = ds.Tables[0];

dataGridView1.ReadOnly = true;

}

}

}

Размещено на Allbest.ru


Подобные документы

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

    курсовая работа [700,0 K], добавлен 14.01.2015

  • Классификация баз данных. Выбор системы управления базами данных для создания базы данных в сети. Быстрый доступ и получение конкретной информации по функциям. Распределение функций при работе с базой данных. Основные особенности иерархической модели.

    отчет по практике [1,2 M], добавлен 08.10.2014

  • Проектирование структуры базы данных. Технология обработки данных. Порядок установки и запуска программы. Описание объектов приложения и структура данных. Ввод и изменение исходных данных. Получение выходных документов и тестирование программы.

    отчет по практике [2,3 M], добавлен 22.07.2012

  • Определение требований к операционной обстановке. Инфологическое, логическое проектирование. Разработка программного обеспечения. Структура приложения, его тестирование. Выбор СУБД и других инструментальных программных средств. Описание схемы базы данных.

    курсовая работа [2,4 M], добавлен 25.12.2013

  • Назначение программы "Учёт пациентов" и её подсистемы. Диаграмма классов предметной области, диаграмма последовательностей, описание автоматизируемых функций и характеристика функциональной структуры. Физическая схема и описание таблиц базы данных.

    дипломная работа [3,3 M], добавлен 15.11.2016

  • Понятие базы данных, модели данных. Классификация баз данных. Системы управления базами данных. Этапы, подходы к проектированию базы данных. Разработка базы данных, которая позволит автоматизировать ведение документации, необходимой для деятельности ДЮСШ.

    курсовая работа [1,7 M], добавлен 04.06.2015

  • Определение необходимых модулей программы, структуры файла базы данных. Описание разработки программы, отладка и тестирование. Разработка приложения Organizer.exe, меню и руководство пользователя. Алгоритм обработки событий главного меню (расписания).

    курсовая работа [901,8 K], добавлен 11.02.2014

  • Система управления базой данных (СУБД), централизованное обеспечение безопасности и целостности данных, защита от несанкционированного доступа. Построение концептуальной и реляционной моделей. Процесс нормализации. Проектирование базы данных в ACCESS.

    курсовая работа [1,8 M], добавлен 29.10.2008

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

    курсовая работа [352,0 K], добавлен 24.08.2016

  • Разработка базы данных для автоматизации учета и хранения сведений о заявках от работодателей. Проектирование приложения в СУБД Access. Описание запросов, отчетов и представлений данных. Интерфейс, условия выполнения и тестирование программного продукта.

    курсовая работа [3,7 M], добавлен 05.04.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.