Разработка приложения по работе с базой данных "Больница"
Проектирование базы данных для учета поступления пациентов и проведенного лечения, ведение архива выписанных пациентов. Определение требований поддержки целостности данных. Тестирование программы и руководство пользователю. Листинг программных модулей.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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