close

Вход

Забыли?

вход по аккаунту

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

код для вставки
su'tol |8
i/
" ./
,ror..!.
HqHHosnDNd04'tsr.
!odri:4,tr srt
)r)//
(nynr,(riod! !otsdo.v!Hno!
FrHeoorienJr! aFrido.LDdogEr xEr.fetr{rid o xEHH?t;.i8ts€
r !do9. Eh.r.!.!oLI,
r{jogEd !oHHoan!rx(D!red! dotsr.iuFd e,{.J
tluro,ioHxar
xnrfronre^doQH! ! !utrE.r.r.u\omE iyrriod.Dodog!.lu r.,tu.r rrH
t9tt9t dorm !!!sor.ro Dslr..EBg r!oiJtr)louoJ ?Jr.):irf
E'\er.rr.nHHoln!'!dol])nr iFHsur€doudo) (qr'0od!) chonr'.trs€d!rH
srrreNdo$sr slHE.rrldu !0 t0 60
4!3olorEo! oihI.trfl€d!!H oL
vlo:tyd
KYI
IllonnY){[email protected]) KyHIJ^t
9S
(YflJ] I:IIdA.I, 'J'II IJHEII(II
-t3u4Jd3gnH^ xr.{HHSsJtdtll^JoJ !M)iJSOIidO)
rut lygo€yd:to oJltmltqs 3uHitlTx!dh^
!or lqII]jYso€Yd:ro toHlgxlTois itoHHJn.LldyY^Jol 1(]I I9rryd3y:ro
r.Iunvd:[email protected]
Io)tJ[t4JJod I{)^vt I L trr.lHytio€vd:to os.tJdlt.r
JI1HU],.{
.l)lfj
roHaHroure€
rsrurtr,(r.d ! relu€.reHsos.o @mdE)rcdgoro iBrn?$:..du
cm!d.!e{ ororEorne.LrsoN.n {H.lrd.U i
xxtrr,ttrod! rocdortreavor I xrHrsol/.rIri
rprflcr{..d o xreHHEr [email protected] u ?.1o9. rshab!.Iiori .,Hpsodrl.r,. { rlnttrn.d
rlhHEsonrur.r
lerlleufrrd
o xrsHtsDr D.'@HE
IhHPsotsnJrr x€rDrstr,{..d
o
xrcEHer
!
rrm,ft od! 4osdor)7Dnror
rdog. rer!.r.rrtrou.{npsodr.D.odu
nrnr.{nod! t:tordo.v?r!oL
lLrnHa ! pdo9. e..anodfl.rrie.ruo
{so.oduo€
ctrog€dl.ed xrmex.rtro! qts.!ad.!) rr.!!!r lloi,sr.MHJxo,J .rHexdarloJ r
n.itrpr9o lloH.ra^r.d,, o sxr,E,ldooH! :rlrd.r€N lxr.chrr.dor.l
r .reHsEE .rrrtrorrLI a
afogEd
'r8t0z BHdr (sz,
tora.lHox€. NorHar,{rr lErt;r rod:r:
'erogrd
t10 t-a !V Jl t 0a ldgruo ( t t) ro Ir.rhdaslr r,{ on r{oftrrdu e,,eYvd.str.i
<!!n!{t/odn Iorrdo.v.allo| !.inHDqoli.rJ]rl
xrcHdortdoger re.re.retr{€.d o xrsHHE)1 LanHD
t9t s9t
d4rm
x
edogr
ewrr.rr.to )) d)g e(.j
e!!€or.uo EsEnr.lrg lsou|);orot
I
rrH.rill
Fmq!.1 roHHo!"Elr{n,@3r roHx.,(!F€ a!!.nrour{d e!
]T,IHVYV
I
)'
loorrQer a,r€
:OlYY)I{d!IIIJA
E,{arn. .icH,lorr reNdo(])Hlr eEHsruedo!do) (cr!0od! ) er.orr r. rmed,,EH
errrDr{dooHr uErrErrrdu !0.t0 60 alE.reDdlErl
N.rraJ xrsHHo'nE,{do0nn Edtr.4JP)
run€rurcNorss Brn.odrrodogrd! rfuor.Htl
4xrororn.rricHHornp'{do$Hr
I
<Vtl3l l- Jd^l 'J l{ UHg},\lLI
lg.rfi Jd:tttlH,{. llusHHesJJdYY^Jol 4Il)Jaof .ro'
K Hl/go€vdso olgrrJ].Ig 3!,tHalJxildh^
tSAJ:ldtY^JOJ AOHgTVdS]?3A
EOHqtfitYAOIVdqO !tOH L:tXI/OI:]
Ol n
tlxnvdijlls.! t,lo)J4Ii]:)od I,DI^\'H t1 KIJ] Ivso€ydgo osJJdrt,)l]Htt\
"16" anperq 2018r.
Aars BHAaqr raaaHr.It
B.IO. |]pecke|toBa
3aaauxe nprHer
( rcnorHeqtb
K
HsuMeHoBaHHe 3ranoB
B.O. CoroarnoB
AJIEHAA"HbIiI N,IAH
pa6oru
AHa,lu3 npouecca c6opa }l aHdr3a
aaqrHx o peynE arax
rccreaoBurii
noaHa.,Eopson
16042018 25.04.2018
IlpoemnpoBrme noactcreM6t
c6opa
r
asanrca AaHH6x o
p*ynBrarax rccneaoBaHtt
noasaFoptsoi npoaynrtfi
Peumaqur no,qcrcreMBl c6opa,
ara,rr3a .IaHHM o pByn6rarax
rccneroBmri nolHa$opsot
oQopMreHre norcMrenhHon
3anscr$ BKP n [email protected]
-
l0 05 2018
1105.20t8
10.06.2018
-
25.06 2018
26.04.20r8
I1.06.2018
B.O. ConoarnoB
CryaeHr
M.
B.IO. IlpecseuoBa
АННОТАЦИЯ
ВКР 102 с., 35 рис., 3 табл., 21 источник, 1 прил.
ИНФОРМАЦИОННАЯ ПОДСИСТЕМА, СБОР И АНАЛИЗ ДАННЫХ,
ЛАБОРАТОРНАЯ
ИФНОРМАЦИОННАЯ
СИСТЕМА,
ПОДНАДЗОРНАЯ
ПРОДУКЦИЯ.
Выпускная квалификационная работа посвящена разработке подсистемы
сбора и анализа данных о результатах лабораторных исследований поднадзорной
продукции.
Новизна выполненной работы определяется решением новой задачи: сбор и
анализ
данных
о
результатах
лабораторных
исследований
поднадзорной
продукции на основе подсистемы. Выпускная квалификационная работа имеет
ярко
выраженную
практическую
направленность,
поскольку
существует
необходимость автоматизации процесса сбора, передачи и анализа информации по
проведению лабораторного тестирования образцов поднадзорной продукции при
исследованиях
в
области
диагностики,
пищевой
безопасности,
качества
продовольствия и кормов, качества и безопасности лекарственных средств для
животных.
В первой главе описывается процесс сбора и анализа данных о результатах
лабораторных
исследований
поднадзорной
продукции.
Производится
формализация процесса и анализ существующих аналогов. Осуществляется
обоснование выбора инструментальных средств технической разработки.
Во второй главе выполняется проектирование архитектуры подсистемы
сбора и анализа данных. Происходит построение логической и физической схем
базы данных. Проектируется алгоритмы для функционирования приложения.
Строится логика диалога с пользователем.
В
третьей
главе
описывается
результат
разработки.
тестирование. Демонстрируются экранные формы работы подсистемы.
Производится
4
CОДЕРЖАНИЕ
ВВЕДЕНИЕ
1
5
ОПИСАНИЕ
ПРОЦЕССА
СБОРА
И
АНАЛИЗА
ДАННЫХ
О
РЕЗУЛЬТАТАХ ЛАБОРАТОРНЫХ ИССЛЕДОВАНИЙ ПОДНАДЗОРНОЙ
ПРОДУКЦИИ
8
1.1 Описание предметной области
8
1.2 Формализация процесса сбора и анализа данных о результатах
лабораторных
исследований
поднадзорной
продукции
посредством
стандарта IDEF0
10
1.3 Анализ существующих аналогов
21
1.4 Функциональные возможности системы
32
1.5 Нефункциональные требования к программе
35
1.6
Обоснования
выбора
инструментальных
средств
технической
разработки
2
О
36
ПРОЕКТИРОВАНИЕ ПОДСИСТЕМЫ СБОРА И АНАЛИЗА ДАННЫХ
РЕЗУЛЬТАТАХ
ЛАБОРАТОРНЫХ
ИССЛЕДОВАНИЙ
ПОДНАДЗОРНОЙ ПРОДУКЦИИ
40
2.1 Проектирование архитектуры подсистемы
40
2.2 Построение логической и физической модели базы данных
42
2.3 Проектирование алгоритмов функционирования приложения
51
2.4 Логика диалога с пользователем
61
3
РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ ПОДСИСТЕМЫ СБОРА И
АНАЛИЗА
ДАННЫХ
О
РЕЗУЛЬТАТАХ
ЛАБОРАТОРНЫХ
ИССЛЕДОВАНИЙ ПОДНАДЗОРНОЙ ПРОДУКЦИИ
66
ЗАКЛЮЧЕНИЕ
78
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
80
ПРИЛОЖЕНИЕ А – ФРАГМЕНТЫ ПРОГРАММНОГО КОДА
82
УДОСТОВЕРЯЮЩИЙ ЛИСТ
Ошиб
ИНФОРМАЦИОННО-ПОИСКОВАЯ ХАРАКТЕРИСТИКА
Ошиб
5
ВВЕДЕНИЕ
Понятие «автоматизация» для лабораторной медицины не является
новым.
Ещё
до
лабораториях
создания
начали
обеспечивающие
компьютеров
появляться
выполнение
по
в
клинико-диагностических
автоматические
определённому
анализаторы,
алгоритму
ряда
последовательных операций. Использование таких анализаторов позволило
повысить производительность лабораторий и достоверность результатов
исследований за счёт уменьшения доли ручного труда и обработки образцов
биологического материала в одних и тех же условиях.
Один
из
основных
инструментов
развития
лаборатории
это
современная система автоматизации. Автоматизации работы лаборатории
позволит
свести
исследований
и
к
минимуму количество
обработке
данных.
ошибок при
Благодаря
проведении
использованию
статистического анализа предоставляется возможность ускорить процесс
проведения исследований и обеспечить оперативный доступ к результатам
данных исследований. Внедрение информационных систем это важный шаг к
снижению финансовых расходов лаборатории и соблюдению требований
информационной безопасности. Автоматизация процесса сбора, хранения и
передачи информации касающихся проб и непосредственно исследований
позволит уменьшить затраты рабочего времени персонала при подготовке
текущей и отчетной документации, а так же стимулирует повышение
эффективность использования лабораторного оборудования.
Однако с увеличением количества образцов, поступающих на
исследование
в
крупные
поликлиники,
стационаров,
клинико-
диагностических центров, и ростом нагрузки на персонал становятся
неизбежными ошибки при формировании сведений о результатах анализа и
отчётной
документации,
дублирование
исследований
из-за
потери
полученных данных и другие недочёты в деятельности. Всё это приводит к
неоправданным расходам финансовых и трудовых ресурсов.
6
При хранении информации в электронном виде существующие
методы обеспечения безопасности хранения информации, и ее дублирования
делают такое хранение абсолютно надежным. Для сокращения временных
ресурсов
сотрудников
лаборатории
затрачиваемых
на
проведения
статистических исследований и создания отчетного материала, и как
следствие повышения производительности труда и повышения качества
услуг необходимо разработать информационную систему и произвести
последующую интеграцию разрабатываемой системы.
При проведении исследований в Орловском референтном центре
Федеральной службы по ветеринарному и фитосанитарному надзору
используется автоматизированная система «Веста», которая предназначена
для автоматизации процесса сбора, передачи и анализа информации по
проведению лабораторного тестирования образцов поднадзорной продукции
при исследованиях в области диагностики, пищевой безопасности, качества
продовольствия и кормов, качества и безопасности лекарственных средств
для животных. Однако, данная система не обладает API, и поэтому довольно
проблематично получать и анализировать данные из нее.
Актуальность
выбранной
темы
обусловлена
необходимостью
сотрудников лаборатории вести работу с данными, производить их анализ и
составлять отчетную документацию.
Целью выпускной квалификационной работы является сбор и анализ
данных о результатах лабораторных исследований поднадзорной продукции
на основе подсистемы.
Для достижения поставленной цели были определены следующие задачи:
1)
провести анализ предметной области;
2)
определить
функциональные,
нефункциональные
эксплуатационные требования к системе;
3)
провести анализ и сравнение существующих аналогов;
4)
разработать структуру подсистемы;
5)
описать функциональные возможности подсистемы;
и
7
6)
построить концептуальную схему базы данных;
7)
разработать алгоритмы функционирования подсистемы;
8)
построить логику диалога с пользователем;
9)
произвести реализацию и тестирование подсистемы получения и
анализа данных о результатах лабораторных исследований поднадзорной продукции.
8
1 ОПИСАНИЕ ПРОЦЕССА СБОРА И АНАЛИЗА ДАННЫХ О
РЕЗУЛЬТАТАХ ЛАБОРАТОРНЫХ ИССЛЕДОВАНИЙ
ПОДНАДЗОРНОЙ ПРОДУКЦИИ
1.1 Описание предметной области
Для успешного функционирования лаборатории в современных
экономических условиях, она должна иметь эффективную информационную
систему, обеспечивающую быстрый поиск и обработку информации.
Кроме
масштабных
автоматизированных
систем
управления
лаборатории для обеспечения современных требований и оперативности
проведения
работы,
необходимо
использовать
ряд
дополнительных
программно-технических разработок.
Для их выявления нужно рассмотреть процесс работы условной
автоматизированной лаборатории:
 зарубежное
или
отечественное
предприятие
производитель
направляет партию в ветеринарный контрольный пункт;
 партия направляется на склад временного хранения;
 производится акт отбора пробы;
 внесение данных из акта отбора в информационную систему;
 определение критериев исследования;
 определения ключевого показателя исследования;
 определение категории исследования;
 непосредственно
проведение
исследования
поднадзорной
продукции;
 внесение результатов исследования в информационную систему;
 проведение статистического анализа результатов посредством
информационной системы.
Современная
информационная
система
автоматизации
процесса
лабораторных исследований должна обладать следующим набором функций:
9
 регистрация сведений о материале, поступающем на исследование;
 контроль качества исследований;
 интеграция с внешними информационными системами;
 обмен данными с лабораторными анализаторами;
 поддержка хранения данных в базе данных в течение длительного
времени;
 формирование отчётной документации.
В последнее время в России идет тенденция к оснащению лабораторий
современным программным обеспечением для повышения эффективности
работы путем решения таких задач как:
 оптимизация
работы
лаборатории
с
целью
повышения
е
рентабельности и качества результатов;
 избавление от непроизводительной рутинной работы и как
следствие уменьшение затрат на проведение исследований;
 минимизация количества ошибок и контроль рабочих процессов;
 снижение влияния человеческого фактора;
 введение статистики и поддержка стандартов;
 комплексный взгляд на проведение исследования до передачи
результата;
 контроль качества исследований в соответствии с российскими и
международными стандартами;
 управление рабочими потоками лаборатории, их планирование и
оптимизация;
 повышение
авторитета
лаборатории
и
более
доверительное
отношение к результатам лабораторных исследований.
Обеспечивая
автоматизацию
преаналитического
этапа,
система
позволяет значительно сократить затраты времени и сил оператора.
Благодаря этому повышается скорость исследования и точность получаемых
результатов, за счет устранения ошибок, связанных с выполнением операций
10
вручную[15].
Современные лаборатории сталкиваются с проблемой повышения
производительности и эффективности использования имеющихся ресурсов, в
условиях постоянно растущего количества расширения номенклатуры
исследований
при
усилении
контроля
над
расходами.
Неизменным
преимуществом внедрения информационной системы является возможность
последующей
модификации
этой
системы
с
целью
повышения
производительности труда и экономии ресурсов в условиях рынка, а так же
возможность повышения качества производимых товаров и услуг за счет
взаимодействия с другими информационными системами посредством
интеграции [1].
Результатом проектирования системы станет отлаженная система
взаимодействия сотрудников лаборатории.
1.2 Формализация процесса сбора и анализа данных о результатах
лабораторных исследований поднадзорной продукции
посредством стандарта IDEF0
На начальных этапах создания ИС необходимо понять, как работает
организация, которую собираются автоматизировать. Поэтому для описания
работы предприятия необходимо построить модель. Такая модель должна
быть адекватна предметной области, следовательно, она должна содержать в
себе знания всех участников бизнес-процессов организации.
Функциональные
проектируемых
систем,
диаграммы
состоящие
-
это
из
графические
функциональных
изображения
блоков
и
соединяющих их дуг. Они создаются на ранних этапах проектирования
систем для того чтобы выявить основные функции и составные части
проектируемой системы обнаружить и устранить существенные ошибки [1].
Процесс моделирования какой-либо системы в IDEF0 начинается с
определения контекста, т. е. наиболее абстрактного уровня описания системы
в целом. Каждая модель должна иметь контекстную диаграмму верхнего
11
уровня, на которой объект моделирования представлен единственным
блоком с граничными стрелками. Под субъектом понимается сама система,
при этом необходимо точно установить, что входит в систему, а что лежит за
ее пределами, другими словами, мы должны определить, что мы будем в
дальнейшем рассматривать как компоненты системы, а что как внешнее
воздействие. На определение субъекта системы будет существенно влиять
позиция, с которой рассматривается система, и цель моделирования вопросы, на которые построенная модель должна дать ответ. Другими
словами, первоначально необходимо определить область моделирования
[11].
Описание области как системы в целом, так и ее компонентов является
основой
построения
модели.
Хотя
предполагается,
что
в
течение
моделирования область может корректироваться, она должна быть в
основном
сформулирована
изначально,
поскольку
именно
область
определяет направление моделирования и когда должна быть закончена
модель.
При
формулировании
области
необходимо
учитывать
два
компонента - широту и глубину. Широта подразумевает определение границ
модели - мы определяем, что будет рассматриваться внутри системы, а что
снаружи. Глубина определяет, на каком уровне детализации модель является
завершенной [17].
Цель моделирования. Модель не может быть построена без четко
сформулированной цели. Цель должна отвечать на следующие вопросы:
Почему этот процесс должен быть смоделирован? Что должна показывать
модель? Что может получить читатель? Формулировка цели позволяет
команде аналитиков сфокусировать
усилия
в нужном направлении.
Примерами формулирования цели могут быть следующие утверждения:
"Идентифицировать и определить текущие проблемы, сделать возможным
анализ
потенциальных
улучшений",
"Идентифицировать
роли
и
ответственность служащих для написания должностных инструкций",
"Описать функциональность предприятия с целью написания спецификаций
12
информационной системы" и так далее [11].
Средства IDEF0 облегчают передачу информации от одного участника
разработки модели (отдельного разработчика или рабочей группы) к
другому. К числу таких средств относятся:

диаграммы, основанные на простой графике блоков и стрелок,
легко читаемые и понимаемые;

метки на естественном языке для описания блоков и стрелок, а
также глоссарий и сопроводительный текст, для уточнения смысла элементов
диаграммы;

последовательная
декомпозиция
диаграмм,
строящаяся
по
иерархическому принципу, при котором на верхнем уровне отображаются
основные функции, а затем происходит их детализация и уточнение.
Для блока «Организовать процесс сбора данных и анализа результатов
лабораторных исследований поднадзорной продукции» можно выделить
следующие входные данные:

денежные средства;

партии поднадзорной продукции.
Управление для данного блока представлено дугами «Законы РФ»,
«Внутренний
устав
лаборатории»
и
«Нормативные
документы
Россельхознадзора». Дуги механизма – «Инспекторы», «Оборудование
лаборатории»
«Персонал
лаборатории».
В
результате
автоматизации
получаем следующие результаты:

отчетный материал;

финансовый отчет;

прибыль.
Контекстная диаграмма процесса «Организовать процесс сбора данных
и анализа результатов лабораторных исследований поднадзорной
продукции» проиллюстрирована на рисунке 1.
13
Рисунок 1 – Диаграмма процесса «Организовать процесс сбора данных и анализа результатов лабораторных
исследований поднадзорной продукции»
14
Разработка
модели
в
IDEF0
представляет
собой
пошаговую,
итеративную процедуру. На каждом шаге итерации разработчик предлагает
вариант модели, который подвергают обсуждению, рецензированию и
последующему редактированию, после чего цикл повторяется. Такая
организация работы способствует оптимальному использованию знаний
системного аналитика, владеющего методологией и техникой IDEF0, и
знаний специалистов – экспертов в предметной области, к которой относится
объект моделирования.
Единственная функция, представленная на контекстной диаграмме
верхнего уровня, может быть разложена на основные подфункции
посредством создания дочерней диаграммы. В свою очередь, каждая из этих
подфункций может быть разложена на составные части, посредством
создания дочерней диаграммы следующего, более низкого уровня, на
которой некоторые или все функции также могут быть разложены на
составные части.
Каждая дочерняя диаграмма содержит дочерние блоки и стрелки,
обеспечивающие
дополнительную
детализацию
родительского
блока.
Дочерняя диаграмма, создаваемая при декомпозиции, охватывает ту же
область, что и родительский блок, но описывает ее более подробно. Таким
образом, дочерняя диаграмма как бы вложена в свой родительский блок. При
анализе деятельности лаборатории было выделено четыре основные работы
входящие в состав предприятия. Это процесс отбора пробы, произведение
экспертизы, произведение исследования и генерация статистики. Под
функциональным блоком «произвести отбор проб» на предприятии следует
понимать, отбор пробы из партии для последующего проведения экспертизы
и исследования. Эта структура иллюстрируется на рисунке 2.
15
Рисунок 2 – Детализация процесса «Организовать процесс сбора данных и анализа результатов лабораторных
исследований поднадзорной продукции
16
На данном этапе декомпозиции можно выделить три дочерних работы:
«Собрать информацию о партии», «Составить акт отбора», «Произвести
отбор материала для пробы», «Поместит пробу в сейф пакет». Стрелка
управления «Нормативные документы Россельхознадзора» соединена с
блоками «Собрать информацию о партии», «Составить акт отбора»,
«Произвести отбор материала для пробы», «Поместит пробу в сейф пакет».
Так же, управлением для данной группы функциональных блоков являются
«Законы РФ». Для всех вышеперечисленных функциональных блоков
установлен механизм «Инспекторы». Результат операций продемонстрирован
на рисунке 3.
Рисунок 3 – Детализация процесса «Произвести отбор пробы»
На рисунке 4 проиллюстрирована декомпозиция преобразующего блока
«Произвести экспертизу». Из диаграммы следует, что работа сотрудников
лаборатории заключается в определении необходимой в данном случае
категории исследования, определении тарифа исследования и составлении
сопроводительной документации для произведения исследования. Определение
категории подразумевает под собой выбор типа исследования. Это может быть
17
исследования по государственному заказу или коммерческое исследование. В
роли стрелок управления в данной ситуации выступают «Нормативные
документы Россельзознадзора» и «Внутренний устав лаборатории».
Рисунок 4 – Декомпозиция блока «Произвести экспертизу»
Следующим
функциональным
блоком
является
–
«Произвести
исследование»
Первой активностью является определение сейф-пакета в необходимый
отдел и извлечение из него пробы. Для проведения исследования изначально
необходимо определить отдел лаборатории, который будет проводить
исследование, затем извлечь пробу из сейф-пакета для проведения
рандомизированного эксперимента. Для этого блока входным параметром
является сейф-пакет полученный на этапе экспертизы.
В качестве управления для этого блока выделяют:

внутренний устав лаборатории;

законы РФ;

нормативные документы Россельхознадзора.
18
Механизмами для данного блока являются:

оборудование лаборатории;

сотрудники лаборатории.
На выходе – проба извлеченная из сейф-пакета, адресованная
сотруднику лаборатории ответственному за проведения исследования.
Получив пробу из сейф-пакета сотрудник лаборатории проводит
непосредственно исследование пробы на предмет содержания или отсутствия
в ней показателя определяемого вещества.
В качестве управления для этого блока выделяют:

внутренний устав лаборатории;

законы РФ.
Механизмами для данного блока являются:

оборудование лаборатории;

сотрудники лаборатории.
После проведения исследования, его результаты оформляют в форме
заключения. Эти данные вносится в информацию систему для последующего
хранения и обработки. Стрелки управления и механизмов данного блока
идентичны со стрелками вышеперечисленных функциональных блоков.
Далее необходимо экспортировать данные из системы «Веста» в
формате Excel. На данном этапе данные из системы Веста экспортируется
для последующего использования в разрабатываемой информационной
системе. Входным параметром является фактическое значение исследования.
Выходным
–
применяющиеся
результаты
для
исследования.
данного
Управление
функционального
блока
и
механизмы,
идентичны
с
вышеперечисленными блоками.
Рисунок 5 иллюстрирует детализированный разбор блока «Произвести
исследования».
19
Рисунок 5 – Декомпозиция блока «Произвести исследования»
20
Следующим функциональным блоком, декомпозиция которого будет
произведена, является блок – «Составить отчетный материал»
Для
проведения
последующей
обработки
данных
необходимо
произвести в разрабатываемую систему импорт данных в формате excel. На
диаграмме этот блок называется «Импортировать данные в формате Excel в
информационную систему». Для этого блока входным параметром является
результат исследования. В качестве управления для этого блока выделяют:

внутренний устав лаборатории;

нормативные документы Россельхознадзора.
Механизмами для данного блока являются оборудование лаборатории
и персонал лаборатории.
На выходе – информация, обработка которой позволит сгенерировать
статистические данные и осуществить прогнозирования для последующих
исследований.
Далее описывается функциональный блок «Cгенерировать статистику
исследований по заданным параметрам» Входные параметры этого блока информация из базы данных.
Параметры управления:

внутренний устав лаборатории;

законы РФ.
Механизмом для данного блока является оборудование лаборатории и
сотрудники лаборатории.
На выходе – финансовая информация и статистика исследований, на
основании которой возможна генерация разного вида отчетности и
построение прогнозов.
Далее следует функциональный блок «Произвести статистический
анализ статистических данных». Параметры управления и механизмы для
данного блока, идентичны вышеперечисленным блокам. Генерация отчетов
позволяет лаборатории вести оперативную, своевременную и наглядную
21
отчетность перед коммерческими и государственными заказчиками в
соответствии с требованиями заказчиков.
На следующем этапе происходит составление бухгалтерского отчета.
На этом этапе работы системы осуществляется формирование отчетной
документации
бухгалтерией.
Входным
параметром
рассматриваемого
функционального блока является финансовая информация. Выходными
параметрами являются финансовый отчет и прибыль.
Демонстрация декомпозиции функционального блока «Составить
отчетный материал» представлена на рисунке 6.
Рисунок 6 – Декомпозиция блока «Составить отчетный материал»
1.3 Анализ существующих аналогов
В результате анализа существующих аналогов было выявлено, что в
данный момент на отечественном рынке в отросли сбора, передачи и анализа
информации
по
проведению
лабораторного
тестирования
образцов
поднадзорной продукции при исследованиях в области диагностики,
22
пищевой безопасности, качества продовольствия и кормов, качества и
безопасности
лекарственных
средств
для
животных
доминирует
информационная система «Веста».
С помощью системы «Веста» осуществляется централизованный
контроль за выполнением государственных программ, а также мониторинг
безопасности пищевой продукции и эпизоотический мониторинг.
Целями создания системы является:

создание
информационно-аналитического
комплекса,
обслуживающего сеть ветеринарных лабораторий в Российской Федерации;

создание единой централизованной базы данных результатов
лабораторных исследований поднадзорной продукции с возможностью
доступа в любой момент времени к актуальной информации для
формирования отчетов, быстрого поиска и анализа информации;

сокращение времени на оформление лабораторной отчетности;

учет всех стадий проведения исследований;

сокращение трудовых, материальных и финансовых затрат на
оформление документации, минимизации человеческих ошибок, благодаря
наличию готовых форм для ввода информации, а также проверки вводимых
пользователем данных;

предоставление
информационных
сервисов
для
клиентов
лабораторий.
На данный момент cистема «Веста» реализована только в виде вебприложения, то есть для работы с ней необходим компьютер, подключенный
к Интернету. Работа осуществляется с помощью любого современного вебобозревателя (браузера), например, Google Chrome, Mozilla Firefox, EDGE и
другие. Таким образом, пользователю ничего не нужно устанавливать на
своем рабочем месте [14]. На рисунке 7 продемонстрирован процесс
добавления экспертизы в информационной системе «Веста».
23
Рисунок 7 – Иллюстрация процесса добавления экспертизы в
информационной системе «Веста»
Для работы рекомендуется использовать браузер Google Chrome или
Mozilla Firefox. Также поддерживается работа в браузере EDGE, который
входит в состав операционной системы Windows. Работа в других браузерах
(Opera, Safari и т.д.) не тестировалась полностью.
Система «Веста» располагается на центральном сервере, который
также подключен к сети Интернет, и занимается обработкой получаемых от
пользователей запросов и формирует ответы. Поскольку центральный сервер
может быть недоступен (например, в случае отключения его от Интернета
или
отсутствии
электропитания),
то
предусмотрен
территориально
удаленный резервный сервер, который автоматически реплицируется с
центральным и, в случае его отключения, начинает обрабатывать запросы
пользователей до восстановления работы основного сервера. Основной
функцией системы является поддержка лабораторного ветеринарного
24
комплекса [14]. В этой системе все подведомственные Россельхознадзору
ветеринарные и не только лаборатории в режиме реального времени
оформляют приемку на исследование, протоколирование исследования и
оформление его результатов. Таким образом, в любой момент времени
известно где, сколько и каких исследований проведено, проводится, какие
пробы и на какие показатели исследуются. Процесс просмотра информации
об экспертизе продемонстрирован на рисунке 8.
Рисунок 8 – Пример работы информационной системы «Веста»
Система Веста состоит из следующих подсистем, предназначенных для
использования различными пользователями:

подсистема «Отдела приема проб»;

подсистема «Исследовательского отдела»;
25

подсистема «Настройки учреждения»;

подсистема «Отчетность»;

подсистема «Профиль».
Функционирование системы Веста производится в несколько этапов.
Выделяют следующие этапы:

пробы
поступают
в
лабораторию,
вносится
первичная
информация;

сотрудники приемки вносят дополнительную информацию и
распределяют исследования по отделам;

пробы передаются в отделы;

пробы распределяются по отделу, проводятся исследования;

результаты исследований вносятся в программу;

происходит обработка результатов исследования;

выполняется формирование отчетности.
Автоматизированная система Веста постоянно дорабатывается и в виду
вносимых изменений регулярно обновляется. Процесс обновления системы
происходит на сервере и не отражается на работе пользователя[14].
Недостатки информационной системы заключаются в отсутствии
возможности удобного и оперативного поиска в массиве данных. Экспорт
данных представляется возможным только в формате Excel, в связи с чем,
возникают сложности в поиске и анализе данных. В системе отсутствует
возможность извлечения знаний и экспериментальных данных о результатах
лабораторных исследований для последующего статистического анализа.
Взаимодействие с хранимыми данными ограничено рамками формата excel, в
результате чего возникает рост трудоемкости процесса разграничения
государственных и коммерческих заказов.
Процесс заполнения сведений по пробе в информационной системе
«Веста» продемонстрирован на рисунке 9.
26
Рисунок 9 – Иллюстрация процесса заполнения сведений по пробе в
информационной системе «Веста»
Информационная система Веста не удовлетворяет всем задачам,
поставленным
информационной
перед
разрабатываемым
системе
отсутствует
приложением.
API-интерфейс,
В
а
данной
отсутствие
возможности группировки статистических данных по определенному
27
пользователем признаку ведет к затруднению составления на основании оной
отчетной документации.
Одной из наиболее популярных на рынке в данный момент, является
лабораторная информационная система (ЛИС) «qMS»
«ЛИС qMS» обеспечивает полную автоматизацию технологических
процессов современной медицинской лаборатории и поддержку всех видов
лабораторных
исследований,
в
том
числе
микробиологических
и
гистологических. Существует возможность использовать ЛИС qMS как
автономно,
так
и
в
составе
полнофункциональной
медицинской
информационной системы qMS. Возможна организация работы нескольких
лабораторий на единой базе.
Система масштабируется и легко адаптируется к медицинским
лабораториям различного типа, профиля и организационной структуры.
«ЛИС qMS» – это гибко настраиваемая система, разработанная с учетом
специфики российского законодательства. «ЛИС qMS» включена в «Единый
реестр российских программ для электронных вычислительных машин и баз
данных». «ЛИС qMS» обеспечивает полную автоматизацию технологических
процессов современной медицинской лаборатории и поддержку всех видов
лабораторных
исследований,
в
том
числе
микробиологических
и
гистологических[15].
«ЛИС
qMS»
формирует
потоки
назначений
на
лабораторные
исследования как внутри медицинской организации, так и из внешних
клиник или лабораторий.
На бланке направления указываются вид биоматериала и контейнера
для забора, информация об особенностях пробоподготовки и лабораторное
подразделение (в случае многопрофильной лаборатории с несколькими
площадками) [15]. Экранная форма работы «ЛИС qMS» проиллюстрирована
на рисунке 10.
28
Рисунок 10 – Пример работы информационной системы «ЛИС qms»
Для ускорения приёма и обработки заказов на всех этапах работы с
исследуемыми образцами используются штрих-коды, что значительно
снижает возможность появления ошибок ручного ввода.
Информационная система «ЛИС qMS» не удовлетворяет всем задачам,
поставленным
перед
разрабатываемым
приложением.
Составление
статистических и финансовых отчетов на базе функционала данной
информационной системы будет крайне затруднительным, ввиду отсутствия
необходимого инструментария.
Одним из рассматриваемых аналогов является информационная
система «Универлаб». «Универлаб» – профессиональная лабораторная
информационная система, предназначенная для автоматизации деятельности
лаборатории любого уровня. Модульность системы дает возможность начать
внедрение с минимально-необходимого лаборатории количества лицензий,
29
подключаемых анализаторов и функционала системы, после чего, при
необходимости, наращивая объем внедрения. Экранная форма работы
«Универлаб» проиллюстрирована на рисунке 11.
Рисунок 11 – Пример работы навигационного справочника в
информационной системе «Универлаб»
«Универлаб» предоставляет возможность регистрировать заявки в
электронном виде, для повышения скорости обработки данных. Данная
система позволяет автоматизировать значительное количество бизнеспроцессов лаборатории [15].
Функции системы:

регистрация исследований;

внесение результатов в ручном или автоматическом режиме;

распечатка бланков результатов анализов;
30

формирование правил для расчета референсных значений;

ведение статистики;

ведение внутрилабораторного контроля качества;

отправка результатов по e-mail;

учет хозяйственной деятельности.
Рисунок 12 – Иллюстрация процесса контроля качества в информационной
системе «Универлаб»
Информационная система «Универлаб» не удовлетворяет всем задачам,
поставленным перед разрабатываемым приложением, и включает в себя
много функций, необходимость которых находится под вопросом, и как
следствие не являются приоритетными.
31
Таблица 1 – Сравнение систем
Требования
Веста
ЛИС qMS
Универлаб
Наличие API
-
-
-
Разрабатывае
мое
приложение
-
Возможность
сортировки
исследований
Возможность
построения ряда
динамики
Возможность
графической
визуализации
Удобный поиск
по
категориям
исследований
-
+
+
+
-
+
-
+
-
+
+
+
-
-
+
+
Использование на
любых
платформах
Формирование
отчетного
материала
+
-
+
+
-
+
-
+
Просмотр
статистики
районов области
посредством
интерактивной
карты
Возможность
генерации
финансовой
информации
Поиск проб в
системе
-
-
-
+
-
-
+
+
-
+
+
+
Импорт данных в
формате Excel
-
-
-
+
32
Таким образом, разрабатываемая система должна удовлетворять
следующим требованиям:

наличие API интерфейса;

возможность сортировки исследований;

возможностью построения рядов динамики;

наличие удобного интерфейса;

возможность автономной работы;

возможность графической визуализации данных;

кроссплатформенность;

наличие поиска данных в системе;

возможность генерации финансовой информации.
1.4 Функциональные возможности системы
Диаграмма прецедентов (диаграмма вариантов использования) в UML
– диаграмма, отражающая отношения между актёрами и прецедентами и
являющаяся составной частью модели прецедентов, позволяющей описать
систему на концептуальном уровне.
Основное назначение диаграммы прецедентов (англ. use case diagram) –
описание
конечному
функциональности
пользователю
и
и
поведения,
позволяющее
заказчику,
разработчику
совместно
обсуждать
проектируемую или существующую систему[9].
Прецедент
–
возможность
моделируемой
системы
(часть
её
функциональности), благодаря которой пользователь может получить
конкретный, измеримый и нужный ему результат. Прецедент соответствует
отдельному
сервису
системы,
определяет
один
из
вариантов
её
использования и описывает типичный способ взаимодействия пользователя с
системой. Варианты использования обычно применяются для спецификации
внешних требований к системе.
Основное назначение диаграммы – описание функциональности и
33
поведения, позволяющее заказчику, конечному пользователю и разработчику
совместно обсуждать проектируемую или существующую систему[9].
Для отражения модели прецедентов на диаграмме используются:
 рамка системы;
 актёр;
 прецедент.
Рамки системы (англ. system boundary) – прямоугольник с названием в
верхней части и эллипсами (прецедентами) внутри. Часто может быть
опущен без потери полезной информации,
Актёр
стилизованный
человечек,
обозначающий
набор
ролей
пользователя (понимается в широком смысле: человек, внешняя сущность,
класс, другая система), взаимодействующего с некоторой сущностью
(системой, подсистемой, классом). Актёры не могут быть связаны друг с
другом (за исключением отношений обобщения/наследования),
Прецедент – эллипс с надписью, обозначающий выполняемые системой
действия
(могут
включать
возможные
варианты),
приводящие
к
наблюдаемым актёрами результатам. Надпись может быть именем или
описанием (с точки зрения актёров) того, «что» делает система (а не «как»).
Имя прецедента связано с непрерываемым (атомарным) сценарием –
конкретной последовательностью действий, иллюстрирующей поведение. В
ходе сценария актёры обмениваются с системой сообщениями. Сценарий
может быть приведён на диаграмме прецедентов в виде UML-комментария. С
одним прецедентом может быть связано несколько различных сценариев[9].
В процессе данной предметной области выделяют двух актеров. Для
начала работы в системе необходимо произвести авторизацию. После этого
пользователь попадает в главное меню приложения, где может выбрать
действие, которое нужно выполнить.
Диаграмма прецедентов продемонстрирована на рисунке 13.
34
Рисунок 13 – Диаграмма прецедентов
Он имеет возможность работы с базой данных: добавлять новую
информацию,
редактировать
имеющиеся
данные,
удалять
данные,
производить поиск информации. В зависимости от роли пользователя
системы, пользователю предоставляются различные функции.
Функции сотрудника лаборатории:
1. Авторизация в системе.
2. Сгенерировать статистику исследований.
2.1 Сгенерировать статистику по пробам.
2.2 Сгенерировать статистику по исследований.
2.3 Сгенерировать статистику по регионам.
3. Сформировать ряд динамики.
3.1 Формировать ряд по положительным исследованиям.
3.2 Формировать ряд по всем исследованиям.
4. Мониторинг исследований.
4.1 Мониторинг исследований по госзаданию.
35
4.2 Мониторинг коммерческих исследований.
4.3 Сгенерировать гистограмму.
5. Произвести поиск проб по номеру пробы.
6. Просмотреть интерактивную карту регионов области.
Функции Администратора.
1.Авторизация в системе.
2.Сгенерировать статистику исследований.
2.1 Сгенерировать статистику по пробам.
2.2 Сгенерировать статистику по исследований.
2.3 Сгенерировать статистику по регионам.
3. Сформировать ряд динамики.
3.1 Формировать ряд по положительным исследованиям.
3.2 Формировать ряд по всем исследованиям.
4. Мониторинг исследований.
4.1 Мониторинг исследований по госзаданию.
4.2 Мониторинг коммерческих исследований.
4.3 Сгенерировать гистограмму.
5. Произвести поиск проб по номеру пробы.
6. Просмотреть интерактивную карту регионов области.
7. Добавить производителя.
8. Импортировать данные в формате Excel.
9. Сформировать бухгалтерский отчет.
9.1 Сгенерировать финансовый отчет по производителям.
9.2 Сгенерировать финансовый отчет по регионам.
1.5 Нефункциональные требования к программе
Нефункциональные требования к программному средству определяют ее
характеристики, проявляемые в процессе использования. Основная задача
программного средства получения и анализа данных о результатах
лабораторных
исследований
поднадзорной
продукции.
Система
36
предназначена для сбора, передачи и анализа информации по проведению
лабораторного
тестирования
образцов
поднадзорной
продукции
при
исследованиях в области диагностики, пищевой безопасности, качества
продовольствия и кормов, качества и безопасности лекарственных средств
для животных. В разрабатываемой системе основное внимание должно быть
уделено таким характеристикам как точность, эффективность и устойчивость
к сбоям, тестируемость, возможность модификации программы, целостность.
Данная система должна быть представлена в виде веб-приложения – это
необходимо для того, чтобы была возможность использовать данную
систему на любом устройстве, кроссплатформенность является важным
требованием для проектируемой системы.
1.6 Обоснования выбора инструментальных средств технической
разработки
В настоящее время СУБД MySQL является одной из самых известных,
надежных и быстрых из всего семейства существующих СУБД.
MySQL представляет собой систему управления реляционными базами
данных с поддержкой языка запросов SQL. MySQL характеризуется
относительно
высокой
скоростью,
устойчивостью
и
легкостью
в
использовании. СУБД MySQL это идеальное решение для средних и малых
приложений. Являясь кроссплатформенной СУБД, MySQL обладает очень
высокими показателями совместимости. Действующей версией MySQL
считается
последняя
доступная
версия
5.x.
MySQL
5.x
по
производительности сопоставима с любой из гораздо более дорогих баз
данных уровня предприятия, например Oracle, Informix, DB2 (IBM) или SQL
Server (Microsoft). Такое повышение производительности стало возможным
благодаря усилиям многих талантливых разработчиков открытого исходного
кода, а также тестированию в сообществе. Механизм базы данных по
умолчанию MyISAM прекрасно справляется с основными задачами баз
данных, связанных с веб-приложениями. MySQL поддерживает язык
37
запросов SQL в стандарте ANSI 92, и кроме этого имеет множество
расширений к этому стандарту, которых нет ни в одной другой СУБД. Так же
данная СУБД обладает такими важными функциями как многопоточность, то
есть поддержка нескольких одновременных запросов и оптимизация связей с
присоединением многих данных за один проход [8].
Краткий перечень возможностей MySQL:
 поддерживается
неограниченное
количество
пользователей,
одновременно работающих с базой данных;
 количество строк в таблицах может достигать 50 млн;
 быстрое выполнение команд;
 простая и эффективная система безопасности.
Работать с Mysql можно не только в текстовом режиме, но и в
графическом.
Существует
очень
популярный
визуальный
интерфейс
PhpMyAdmin, использующийся для работы с этой СУБД. Этот интерфейс
позволяет значительно упростить работу пользователя с базами данных в
Mysql.
Кроме того, одним из наиболее важных преимуществ MySQL является
то что, она находится в свободном распространении и представляет собой
программное обеспечение с открытым исходным кодом.
Таким образом MуSQL является оптимальным решением в выборе
целевой СУБД, за счет таких характеристик как:

надежность;

простота использования;

оптимальная скорость;

свободное распространение.
Web сервер Apache с апреля 1996 года и по настоящее время является
самым популярным HTTP-сервером в интернете и используется более чем на
160 миллионах сайтов [5].
Несмотря на то, что Apache по многим параметрам, например, таким
38
как: потребление ресурсов и скорость работы не является лидером среди
аналогичных сервисов, его выгодно отличает, то что на нем гарантированно
будет работать большинство интернет приложений без дополнительных
доработок и настроек. Нельзя не отметить гибкость и простоту этого сервиса,
а так же подкупает низкий порог вхождения и большое количество
документации как от разработчиков Apache, так и от сторонних авторов.
Кроссплатформенность
интеграции
с
данного
другим
сервиса
программным
предоставляет
возможность
обеспечением
и
языками
программирования, такими как Ruby, Python, Perl и PHP.
PHP – скриптовый язык общего назначения, интенсивно применяемый
для разработки web-приложений. На сегодняшний день он поддерживается
подавляющим большинством хостинг-провайдеров и является лидером среди
языков программирования, применяющихся в сфере создания динамических
web-сайтов. Главным фактором языка РНР является практичность. РНР
должен предоставить программисту средства для быстрого и эффективного
решения поставленных задач. Практический характер РНР обусловлен пятью
важными характеристиками: традиционностью; простотой; эффективностью;
безопасностью; гибкостью [7].
Отличительной чертой PHP является то, что в отличие, например, от
JavaScript,
PHP-скрипты
выполняются
на
стороне
сервера.
PHP
–
кроссплатформенная технология и является доступным для семейства
Windows, Unix, Mac OS и большинства других операционных систем.
PHP имеет возможность перерабатывать и генерировать не только
HTML, но и изображения огромного количества других различных форматов,
таких как: GIF, PNG, JPEG.
К плюсам PHP нельзя не отнести мощный функционал в совокупности
с огромных количеством сторонних решений и крайне полезных разрешений
языка. Благодаря этому язык PHP становится идеальным инструментом для
шаблонизации. Так же очевидным плюсом данного языка является свободная
типизация
данных,
это
выливается
в
отсутствие
необходимости
39
предварительного объявления переменных, что предоставляет разработчику
большой объем свободы действий.
PHP поддерживает совместную работу с большинством современных
систем управления базами данных, такими как: MySQL, Oracle, Microsoft
SQL Server, dBase, Derby.
Для разработки информационной системы была выбрана СУБД
MySQL, что в связке с PHP предоставляет нам инструмент для создания
интернет приложений различной сложности. Кроме того PHP является
свободным программным обеспечением, распространяемым под особой
лицензией (PHP license).
На основании проведенного анализа можно сделать вывод, что для
разработки приложения оптимальной является комбинация:
− веб-сервер Apache;
− интерпретатор языка PHP;
− сервер управления базами данных MySQL.
Данный
характеристикой
состав
всего
объясняется
программного
тем,
что,
во-первых
обеспечения
важной
выбранного
для
разработки системы доступа является то, что оно является свободно
распространяемым с открытым исходным кодом.
40
ПРОЕКТИРОВАНИЕ ПОДСИСТЕМЫ СБОРА И АНАЛИЗА
2
ДАННЫХ О РЕЗУЛЬТАТАХ ЛАБОРАТОРНЫХ ИССЛЕДОВАНИЙ
ПОДНАДЗОРНОЙ ПРОДУКЦИИ
2.1 Проектирование архитектуры подсистемы
Для программной реализации приложения необходимо разработать
структуру системы, в которой отражены отдельные модули программы, связи
между
ними,
хранилища
данных
и
интерфейсы,
отвечающие
за
взаимодействие с пользователем [5].
Для реализации подсистемы были выделены следующие модули:
 модуль импорта данных;
 модуль интерфейса;
 модуль статистики;
 модуль интерактивной карты;
 модуль мониторинга;
 модуль ряда динамики;
 модуль поиска;
 модуль бухгалтерии.
Модуль импорта данных необходим для импорта информации из
внешней
информационной
администратором,
системы.
непосредственно
в
базу
Импорт
данных
осуществляется
разрабатываемой
информационной системы.
Модуль
статистики
отвечает
за
генерацию
статистической
информации.
Модуль поиска отвечает за поиск проб по номеру или дате отбора
пробы в базе дынных.
Модуль интерактивной карты отвечает за демонстрацию SVG-карты.
Пользователь получает возможность просмотра статистики, используя
интерактивную карту области, учитывающую ее территориальное деление
41
на районы.
Модуль мониторинга отвечает за мониторинг текущих проб и
исследований, и показателей связанных с ними. Данный модуль позволяет
пользователю осуществлять мониторинг текущих проб и исследований,
учитывая регион происхождения и регион отбора пробы.
Модуль ряда динамики отвечает за построения ряда динамики
положительных проб, выводя на экран следующие показатели:

абсолютный прирост

темп прироста в процентах;

темп роста в процентах;

абсолютное содержание 1% прироста;

темп наращения в процентах.
Модуль бухгалтерии необходим для формирования финансовой
информации.
Данный
модуль
генерирует
результирующие
таблицы
демонстрирующие:

стоимость исследований по категориям;

стоимость исследований по месяцам;

стоимость исследований по отделам.
Разрабатываемое приложение будет функционировать совместно с
информационной системой Веста. Данные об исследованиях из системы
веста экспортируются в формате Excel, затем производится импорт этих
данных в разрабатываемую информационную систему. Это позволит
производить анализ статистических данных.
Разрабатываемая система послужит для рационализации сортировки
данных, приведет к значительному сокращению затрачиваемого времени на
формирование отчетных материалов, а также позволит производить
визуализацию
статистических
данных
посредством
гистограмм
интерактивной карты.
Архитектура разрабатываемой системы представлена на рисунке 15.
и
42
Рисунок 15 – Архитектура информационной системы
2.2 Построение логической и физической модели базы данных
Прежде, чем приступать к созданию приложения, необходимо
сформировать понятия о предметах, фактах и событиях, которыми будет
оперировать данная система. Для того, чтобы привести эти понятия к той или
иной
модели
данных,
необходимо
заменить
их
информационными
представлениями. Одним из наиболее удобных инструментов представления
данных, независимого от реализующего его программного обеспечения,
является модель «сущность-связь».
Логическое проектирование это процесс конструирования общей
информационно
модели,
на
основании
отдельных
моделей
записи
пользователя. Принцип построения логической модели базы данных не
зависит от специфики реально используемой системы управления базой
данных (СУБД) и каких-либо других физических условий[13].
Цель логического проектирования базы данных – преображение
концептуальной модели на основании выбранной модели данных в
логическую
модель,
использования
являющуюся
целевой
СУБД,
физической модели базы данных.
не
для
зависимой
последующего
от
особенностей
проектирования
43
Цель физического проектирования – преобразование логической
модели с учетом синтаксиса, семантики и возможностей выбранной целевой
СУБД. Для проектируемой автоматизированной системы была выбрана
СУБД Mysql.
Mysql – это реляционная система управления базами данных. То есть
данные в ее базах хранятся в виде логически связанных между собой таблиц,
доступ к которым осуществляется с помощью языка запросов SQL. Mysql –
свободно распространяемая система, т.е. платить за ее применение не нужно.
Кроме того, это достаточно быстрая, надежная и главное, простая в
использовании СУБД, вполне подходящая для не слишком глобальных
проектов. Данная СУБД поддерживает реляционную модель хранения
информации и отвечает всем требованиям, предъявляемым к современным
СУБД.
Для обеспечения высокой производительности рaботы сотрудников
плaнируется рaзрaботкa информaционной системы нa основе реляционной
модели данных.
Особенность реляционной модели зaключaется в том, что в отличие от
сетевой и иерaрхической моделей реaльные объекты и взаимосвязи между
ними представляются в бaзе дaнных единообрaзно в виде нормaлизовaнных
отношений [13].
44
Рисунок 16 – Пример оформления файла для импорта
Наполнение разрабатываемой базы данных будет осуществляться
посредством импорта данных из Excel-файла. Файл в формате xls получается
путем экспорта данных из информационной системы «Веста». Для
осуществления данной операции будет использоваться библиотека PHPExcel.
Пример оформления Excel-файла для импорта в базу данных
продемонстрирован на рисунке 16.
45
Рисунок 17 – Логическая модель базы данных
Первым этапом проектирования базы является построение логической
схемы, представленной на рисунке 17.
Сущность «Тариф исследования» необходима для хранения данных о
стоимости исследования. Она содержит информацию о наименовании
тарифа, стоимости тарифа и стоимости тарифа с учетом налога на
добавленную стоимость. Ключевой атрибут данной сущности – уникальный
числовой код тарифа исследования.
Сущность «Пробы» используется для хранения информации об
отобранной из партии пробе. В данной таблице хранится наименование
материала, группа материала и непосредственно сам материал. В качестве
первичного ключа был выбран атрибут «Номер пробы».
Так
же
существует
необходимость
в
хранении
информации
заключающейся о производителях поднадзорной продукции. Для этого
выделена сущность «Производители», она включает в себя атрибут
«Наименование производителя» и «Регион производитель». Первичным
ключом в данной таблице является уникальный идентификационный номер
46
производителя.
Для хранения информации о заказчиках вводится сущность «Заказчик».
Информация о пробе в свою очередь хранится в таблице «Пробы».
Атрибутами данной сущности являются: «Масса пробы» и «Владелец
пробы». В роли первичного ключа выступает идентификационный номер
пробы.
Сущность «Заказчик» служит для хранения информации о заказчиках
исследований. В качестве уникального ключа для данной таблицы
используется
идентификационный
номер
налогоплательщика
(ИНН).
Атрибутами данной сущности являются «Наименование заказчика» и
«Категория».
«Исследования» – данная сущность хранит информацию о ключевых
параметрах исследования. В качестве атрибутов данной сущности выступают
«Дата завершения», «Фактическое значение» и «Результат исследования».
Для хранения информации о сотрудниках лаборатории используется
сущность «Исполнители».
Сущность «Источник» служит для хранения информации об источнике
материала
исследования,
являющийся
объектом
им
как
правило
исследования.
является
Атрибутами
вид
животных
данной
сущности
являются «Id_источника» и «Название источника».
Сущности «Группа материала» и «Материал» необходимы для
хранения информации о метериалах исследования и группе, которой они
принадлежат.
«Инспекторы» – данная сущность хранит информацию об инспекторах
проводивших отбор пробы. В качестве атрибутов данной сущности
выступают «id_инспектора», «ФИО инспектора» и «Должность». Для
хранения информации о сотрудниках лаборатории используется сущность
«Исполнители».
Информация
о
пользователях
системы
хранится
в
сущности
«Пользователи». Эта сущность предназначена для хранения логина, пароля и
47
роли пользователя в системе. Пользователь может быть сотрудником
лаборатории или администратором, в зависимости от роли изменяются
функциональные возможности пользователя.
Сущности «Район отбора» и «Регион отбора» необходимы для
хранения информации о районе области и о регионе страны, в котором был
совершен акт отбора.
Для хранения информации о методах исследования используется
сущность «Метод исследования». В качестве первичного ключа данной
сущности выступает «id_метода». Атрибутом является « Название метода».
На следующем этапе проектирования базы данных, необходимо
логическую схему перевести в физическую, переименовав названия таблиц и
атрибутов так, как они будут объявлены в базе.
Так же, необходимо для каждого атрибута определить его тип, в
зависимости от выбранной системы управления базой данных.
Для физического проектирования базы данных, в качестве системы
управления базой данных сделан выбор в пользу MySQL. MySQL –
компактная, кроссплатформенная, свободная система управления базами
данных (СУБД).
С помощью Erwin была создана база данных. Для этого был установлен
Open Server, выполняющий, в том числе функции сервера базы данных.
Были созданы сущности базы данных, установлены связи и ключи,
заполнены поля и их типы данных в соответствии с проектированием
концептуальной модели базы данных, приведённой выше.
Физическая схема базы данных представлена на рисунке 18.
48
Рисунок 18 – Физическая модель базы данных
49
Для того чтобы обеспечить кaскaдное обновление дaнных, все тaблицы
связывaются между собой по ключевым полям, что позволяет сохрaнить
целостность бaзы дaнных, обеспечить быстрое соглaсовaние вносимых
изменений, a тaкже повышает достоверность хрaнимой в БД информaции.
Кроме того, устaновление связей между тaблицaми облегчaет доступ к
дaнным [13].
В разрабатываемой базе данных используются стратегии целостности.
Данные
стратегии
предполагают
в
случае
возникновения
действия,
нарушающего правила целостности, изменение БД таким образом, чтобы она
оставалась в корректном состоянии.
Физическая схема базы данных, на которой отражены стратегии
ссылочной целостности, представлена на рисунке 19.
Рисунок 19 – Стратегии ссылочной целостности данных
50
В
связи
сущностей
«Тариф
исследования»
и
«Исследования»
определена стратегия cascade для модифицирования и удаления записей. При
изменении данных в таблице «Исследования» произойдут соответствующие
изменения в таблице «Тариф исследования». При изменении данных из
сущности потомка «Тариф исследования» в данном случае изменений в
родительской таблице «Исследования» не последует.
В связи сущностей «Пробы» и «Исследования» определена стратегия
cascade для модифицирования и удаления для сущности потомка. Эта
стратегия идентична как для потомка, так и для родителя в данной связи.
Для связи родительских сущностей «Производители» и «Инспекторы»
c дочерней сущностью «Пробы» используется стратегия restrict для удаления
данных из родительской сущности и стратегия cascade для изменения
данных. Изменения и удаление записей в таблице «Пробы» не отобразятся на
таблице «Производители» и «Инспекторы».
Для связей родительских сущностей «Заказчик», «Исполнители»,
«Пользователи»,
«Метод»
с
дочерней
сущностью
«Исследования»
используется стратегия cascade для модифицирования и стратегия restrict для
удаления записей для родительских сущностей. Изменение и удаление
данных в вышеперечисленных родительских таблицах не отобразятся на
таблице «Исследования».
Для связи сущностей «Источник» и «Группа материала» используется
стратегия cascade на удаление и изменение, как для родительской, так и для
дочерней сущности. При изменении и удалении данных в одной из таблиц
произойдут соответствующие изменения в другой.
Аналогичная стратегия ссылочной целостности используются, как для
связей сущностей «Группа материала» и «Материал», так и для связи
сущностей «Регион отбора» и «Район отбора».
Для связей родительских сущностей «Материал» и «Район отбора», с
дочерней сущностью «Исследования» используется стратегия cascade для
модифицирования записей родительских сущностей. При удалении записей
51
родительских сущностей используется стратегия restrict. Изменение и
удаление
данных
в
вышеперечисленных
родительских
таблицах
не
отобразятся на таблице «Пробы».
Для обеспечения целостности данных были наложены ограничения
целостности на каждый атрибут.
2.3 Проектирование алгоритмов функционирования приложения
Для обеспечения функционирования приложения были разработаны
следующие алгоритмы:
1)
алгоритм импорта файлов в формате Excel;
2)
алгоритм вывода статистических данных;
3)
алгоритм расчета темпа прироста;
4)
алгоритм поиска проб.
Алгоритм импорта файлов в формате Excel необходим для внесения
информации в базу данных полученных путем экспорта Excel-файла из
информационной системы «Веста». Данный алгоритм реализуется, в том
числе при помощи библиотеки PHPexcel. После подключения библиотеки,
необходимо
выбрать
нужную
страницу
Excel-файла
на
которой
располагаются данные для импорта.
Код подпрограммы «Прочитать файл Excel»:
function readExelFile($filepath){
$ar=array();
$inputFileType = PHPExcel_IOFactory::identify($filepath);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($filepath);
$ar = $objPHPExcel->getActiveSheet()->toArray();
return $ar;
}
Далее алгоритм устанавливает соответствие между извлеченным
столбцом и полем в базе данных. В исходной таблице Excel заголовки
52
столбцов записаны на кириллице, поэтому при прочтении первого Excelфайла происходит перевод заголовков таблицы на транслит, затем
считываются все столбцы и создается для них таблица с корректировкой
названия полей.
Сравнивая заголовки, алгоритм определяет, в какой столбец из какой
таблицы необходимо произвести импорт. Цикл алгоритма проверяет,
существует ли необходимая таблица для импорта, и содержатся ли в ней
данные. Если таблица пуста, то в соответствии с заголовками производится
импорт. Если данные уже содержатся в таблице, то производится обновление
данных в текущей таблице.
Код подпрограммы:
for ($i=0; $i<count($titles[0]);$i++)
{
$key_ = array_search($titles[0][$i], $ar[0]);
echo $titles[0][$i]."<br>";
if ($key_!=false) {
$key[0][$m]=$key_;
$key[1][$m]=$i;
$m++;
}
Так как формат записи в Excel не соответствует УСВ (Универсальный
Стандарт Времени), используется метод библиотеки PHPExcel, проверяющий
соответствуют ли значения, передаваемые в функцию, конвертации даты
стандарту УСВ.
Блок-схема,
демонстрирующая
представлена на рисунке 20.
работу
данного
алгоритма,
53
Р
и
с
54
Для реализации вывода статистических данных по необходимому
параметру в приложении используется алгоритм вывода статистических
данных.
На первом этапе следует осуществить выбор параметров поиска
исходя из необходимости. Алгоритм проверяет, были ли сформированы
параметры поиска статистических данных и на основании этих параметров
осуществляет запрос к базе данных. Таблица данных, сформированная на
основании параметров запроса, выводится на экран.
Таким образом, пользователи информационной системы имеют
возможность производить выборку из массива данных только той
информации (с учетом временного отрезка, категорий исследований,
результатов исследований и так далее) которая в данный момент имеет
наивысший приоритет.
Реализация данного алгоритма позволит пользователям системы
осуществлять быстрый поиск необходимой информации при составлении
отчетной документации.
Демонстрация блок-схемы
рисунке 21.
данного алгоритма представлена на
55
Рисунок 21 – Алгоритм вывода статистических данных
Для
построения
динамики
ряда
в
разрабатываемой
системе
используется алгоритм расчета темпа прироста. В начале работы алгоритма
56
пользователю предлагается определить тип статистического действия, если
выбран расчет темпа прироста, то создается запрос к базе данных, на
основании которого формируется массив, состоящий из числовых значений
количества проб за месяц. Далее происходит получение стартовой даты и
конечной даты из базы следующим образом:
$res = $db->query("SELECT Selection_date FROM samples ORDER BY
Selection_date LIMIT 1");
$row = $res->fetch_array();
$date = explode("-",$row[0]);
$y = $date[0];
$m = $date[1];
$res = $db->query("SELECT Selection_date FROM samples ORDER BY
Selection_date DESC LIMIT 1");
$row = $res->fetch_array();
$dateLast = strtotime($row[0]);
Темп прироста демонстрирует относительную величину прироста и
показывает, на сколько процентов сравниваемый уровень больше или
меньше уровня, принятого за базу сравнения. Расчет цепного темпа прироста,
то за базисный период принимается предыдущий месяц. Затем задается
стартовая дата расчета и финальная дата расчета, далее формируется цикл,
который производит помесячный расчет темпов прироста. Ниже приведет
код работы данного цикла с предусловием.
Код подпрограммы:
$n = -1;
$q=
array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","
Сентябрь","Октябрь","Ноябрь","Декабрь");
do
{
$dateStart = "$y-$m-1";
57
$dt = $q[$m-1]." ".$y;
$m++;
if ($m==13)
{
$m = 1;
$y++;
}
$dateEnd = "$y-$m-1";
if (strtotime($dateStart)>$dateLast) break;
$sql = "SELECT COUNT(*) FROM samples WHERE Selection_date
between '$dateStart' and '$dateEnd'";
$row = $db->query($sql)->fetch_array();
$x = $row[0];
$r = $n == -1 ? "-" : $x - $n;
$p = $n == -1 ? "-" : $r / $n * 100;
Таким образом, можно отследить динамику темпа прироста за
определенный временной отрезок.
Расчет темпа прироста производится по формуле
Tпр =
∑∆ yα
y0
∙ 100% ;
(1)
где 0 – уровень текущего периода;
y – значение абсолютного прироста.
На следующем этапе работы алгоритмы происходит нахождение
минимального и максимального показателя темпа прироста и вывод
соответствующих значений на экранную форму.
Блок-схема иллюстрирующая работу данного алгоритма представлена
на рисунке 23.
58
Рисунок 23 – Алгоритм расчета темпа прироста
59
Далее алгоритм убирает пробелы и специальные символы, и проверяет,
не является ли поисковый запрос пустым. Следом происходит проверка на
длину запроса, он должен быть не меньше двух символов и не превышать 10
символов. На следующем этапе алгоритм проверяет количество совпадений,
если совпадения найдены, то формируется ассоциативный массив и
выводится на экран. Если совпадений по данному поисковому запросу не
было найдено, то выводится соответствующее оповещение.
Код подпрограммы:
if (!empty($query)){
if (strlen($query) < 2) {
$text = '<p>короткий поисковый запрос.</p>';
}elseif (strlen($query) > 10) {
$text = '<p>длинный поисковый запрос.</p>';
} else {
$sql = "SELECT `Name_of_material `, `Material_group`, `Material`,
`Act_number` FROM `Samples` WHERE `Sample_number` LIKE '%$query%' ;
$result = mysql_query($sql);
$num = mysql_num_rows($result);
if ( $num > 0) {
$row = mysql_fetch_assoc($result);
$text .= '<p>По вашему запросу <strong>'.$query.'</strong>';
$text .= ' найдено '.$num.' совпадений</p>' ;
do {
$text .= '<p><a href="http://'.$row['articleId'].'">';
$text .= $row['title'].'</a></p>';
$text .= '<p>'.$row['tinyDescription'].'</p>';
} while ($row = mysql_fetch_assoc($result));
} else {
$text = '<p>По вашему запросу ничего не найдено.</p>';
}
60
Рисунок 22 – Алгоритм поиска проб
61
Блок-схема алгоритма поиска проб проиллюстрирована на рисунке 23.
Таким
образом,
программный
код
приложения
написан
в
соответствии со схемами, приведёнными в данном разделе.
2.4 Логика диалога с пользователем
При проектировании диалога обычно определяется состояние системы.
Состояние – это устойчивое положение системы, в котором пользователь
может
выполнять
определенные
действия.
Состояние
системы
характеризуется контекстом.
Для пользователя приложение имеет вид формы с визуальными
объектами. Пользователь взаимодействует с объектами путем порождения
событий.
Одним из наиболее простых способов отражения логики диалога
является простая транзитивная сеть или сеть состояний и переходов. При
таком подходе состояния системы отображаются в виде окружностей и
соединяются дугами. Сверху дуги именуются согласно входным сигналам
или обратной связи, снизу – в зависимости от действия, которое система
должна выполнить при переходе из одного состояния в другое по
определенному входному сигналу. Среди состояний выделяют начальное (S),
при котором система находится в начале работы. Это состояние обозначается
входной дугой, не имеющей источника.
Начальное состояние в системе может быть одно. Кроме того, в
транзитивной сети выделяются финальные состояния (F), попадая в которые
система завершает свою работу. Таких состояний может быть несколько.
Транзитивная сеть логики пользовательского интерфейса представлена
на рисунке 23. Состояния сети логики пользовательского интерфейса и
входные сигналы, инициирующие переходы описаны в таблицах 2 и 3
соответственно.
62
Рисунок 23 – Транзитивная сеть логики пользовательского интерфейса
63
Таблица 2 – Состояния сети логики пользовательского интерфейса
Состояние
Описание
S
Стартовое состояние
F
Финальное состояние
S1
Окно авторизации пользователя
S2
Главное меню системы
S3
Демонстрация раздела статистики
S4
Страница генерации статистики по пробам
S5
Страница генерации статистики по регионам
S6
Страница генерации статистики по отделам
S7
Страница генерации бухгалтерских отчетов
S8
Страница мониторинга
S9
Мониторинг всех текущих исследований
S10
Мониторинг всех текущих исследований
S11
Мониторинг исследований по госзаданию
S12
Мониторинг платных исследований
S13
Страница показателей ряда динамики
S14
Демонстрация цепных показателей ряда динамики по
количеству исследований
S15
Демонстрация цепных показателей ряда динамики по
количеству положительных исследований
S16
Форма поиска пробы
S17
Демонстрация результирующей таблицы поиска
S18
Интерактивная карта области
S19
Демонстрация описания региона
S20
Демонстрация гистограммы сравнения регионов
S21
Страница импорта файлов
S22
Импорт файлов в информационную систему
64
Таблица 3 – Входные сигналы, инициирующие переходы, в транзитивной
сети логики пользовательского интерфейса приложения
Входной
Описание
сигнал
1
2
1
Переход к авторизации
2
Ввод логина
3
Ввод пароля
4
Переход на главную страницу
5
Ошибка авторизации
6
Выбор раздела «Статистика»
7
Выбор раздела «Статистика по пробам»
8
Выбор раздела «Статистика по регионам»
9
Выбор раздела «Статистика по отделам»
10
Выбор раздела «Бухгалтерские отчеты»
11
Выбор категории исследования
12
Просмотр стоимости исследований по отделам
13
Генерация статистики по регионам отбора
14
Генерация статистики по регионам происхождения
15
Выбор временного интервала
16
Выбор раздела «Мониторинг всех исследований»
17
Нажатие кнопки «Построить гистограмму»
18
Выбор раздела «Мониторинг исследований по госзаданию»
19
Выбор раздела «Мониторинг платных исследований»
20
Выбор раздела «Показатели ряда динамики»
21
Нажатие кнопки «Сгенерировать по всем исследованиям»
22
Нажатие кнопки «Сгенерировать по положительным
исследованиям»
65
Продолжение таблицы 3
1
2
23
Выбор раздела «Поиск проб»
24
Ввод значение в поисковую форму
25
Выбор раздела «Интерактивная карта»
26
Наведение курсора на район области
27
Выбор региона для сравнения
28
Возврат к интерактивной карте
29
Выбор раздела «Импорт данных из EXCEL»
30
Выбор директории
31
Нажатие кнопки «Импортировать данные»
32
Возврат в главное меню приложения
33
Выход из системы
66
3
РЕАЛИЗАЦИЯ И ТЕСТИРОВАНИЕ ПОДСИСТЕМЫ СБОРА И
АНАЛИЗА ДАННЫХ О РЕЗУЛЬТАТАХ ЛАБОРАТОРНЫХ
ИССЛЕДОВАНИЙ ПОДНАДЗОРНОЙ ПРОДУКЦИИ
Для разграничения прав пользователей и реализации процедуры
проверки
подлинности
пользователей
в
информационной
системе
используется аутентификация и авторизация. Для предоставления доступа к
функциям информационной системы пользователю необходимо ввести логин
и пароль. Форма аутентификации пользователей представлена на рисунке 24.
Рисунок 24 – Вход в личный кабинет
После прохождения процедуры аутентификации и определения прав
пользователя, ему становится доступна рабочая страница приложения.
Находясь на главной странице приложения, пользователь или администратор
получает доступ к основным функциям:

просмотр финансовой информации;

просмотр статистики по пробам;

просмотр статистики по регионам;

просмотр статистики по отделам;

просмотр и формирование бухгалтерских отчетов;

мониторинг исследований;
67

импорт данных из excel;

поиск проб;

добавление производителей;

взаимодействие с интерактивной картой;

генерация рядов динамики.
Для начала работы пользователю необходимо совершить импорт
данных из файла Excel. Процесс импорта данных представлен на рисунке 25.
Рисунок 25 – Импорт данных в систему
Выбрав необходимый файл Excel в данном разделе, пользователю
следует произвести нажатие кнопки «Импортировать данные», после чего
данные из файла будут записаны в базу данных информационной системы.
В форме для
поиска, продемонстрированной
на рисунке
26,
пользователь имеет возможность выбрать директорию, из которой совершать
импорт файла в формате Excel. После этого пользователю необходимо
произвести нажатие кнопки «Импортировать данные».
68
Рисунок 26 – Форма импорта данных в систему
Для удобной навигации на сайте в правой части экрана располагается
список основных функциональных возможностей системы. Для наглядности
функциональная панель сайта проиллюстрирована на рисунке 27.
Рисунок 27 – Навигационная панель
69
Используя функционал информационной системы, пользователь может
сгенерировать статистику исследований за определенный временной отрезок.
Для этого пользователю необходимо нажать кнопку «Мониторинг
исследований». Данная возможность позволяет пользователям получить
наглядную статистику исследований по месяцам для последующего
использования оной при составлении отчетного материала. Демонстрация
работы данной функции проиллюстрирована на рисунке 28.
Так как сотрудникам лаборатории необходимо разделять между собой
коммерческие исследования и исследования по государственному заданию,
функционал
выбора
информационной
категории
системы
исследования
для
предусматривает
возможность
последующего
мониторинга
исследований по заданной категории.
Рисунок 28 – Мониторинг исследований
70
Для наглядности статистики по месяцам, на экранной форме
мониторинга можно просмотреть гистограмму. Гистограмма генерируется на
основании количества положительных и отрицательных исследований за
определенный временной отрезок.
При нажатии кнопки «Интерактивная карта» в навигационной панели
сайта, пользователю предоставляется возможность взаимодействия с картой
орловской области. При наведении курсора на необходимый регион, данный
регион выделяется цветом, что позволяет сделать интерфейс системы
максимально комфортной для пользователей.
Рисунок 29 – Интерактивная карта
В левом верхнем углу поля карты появляется всплывающая подсказка,
содержащая в себе статистику выбранного региона за последний год.
Содержание подсказки:

название района;

количество положительных исследований;
71

количество отрицательных исследований;

количество исследований по государственному заказу;

количество коммерческих исследований;

изображение геральдического символа района.
Использование данной функции информационной системы позволяет
пользователям получить визуализированную статистику по регионам
орловской области, для выявления проблемных регионов и анализа
тенденции
результатов
анализа
поднадзорной
продукции
с
учетом
территориального деления Орловской области. Демонстрация работы
интерактивной карты проиллюстрирована на рисунке 29.
Рисунок 30 – Гистограмма сравнения районов
В правом верхнем углу панели карты находится интерактивный график
сравнения регионов Орловской области по количеству положительных проб
за последние пять лет. Более масштабно гистограмма проиллюстрирована на
рисунке 30. На этой же странице пользователю доступна генерация
финансовой статистики с учетом категории исследования. Если произвести
нажатие кнопки «Выбрать категорию», пользователь имеет возможность
72
выбрать интересующую его категорию из предложенного списка и
сгенерировать статистику по данной категории.
Используя данный график, пользователь, имеет возможность выбрать
два необходимых для сравнения региона, для последующего сравнения
показателей положительных проб в каждом из районов области и оценке
тенденции роста или снижения количества положительных проб в отдельно
взятых регионах на длительной дистанции.
При нажатии кнопки «Бухгалтерские отчеты» на панели быстрого
доступа
пользователю
предоставляется
возможность
просматривать
финансовую информацию за определенный период.
Пользователь
на
данной
экранной
форме
так
же
обладает
возможностью просмотреть финансовую статистику по каждому из отделов
лаборатории. На основании этих данных строится таблица учитывающая
количество исследований проведенных каждым из отделов за выбранный
временной отрезок.
Пользователю предоставляется возможность сгенерировать следующие
результирующие таблицы:

таблица cтоимости исследований по категориям;

таблица cтоимости исследований по месяцам и по категориям;

таблица cтоимости исследований по отделам.
На данной экранной форме формируется финансовая статистика по
категориям с учетом стоимости услуг.
Так же пользователь имеет возможность сформировать таблицу,
демонстрирующую финансовую информацию по месяцам на основе
выбранной категории. Категорию пользователь может выбрать нажатием
кнопки «Выбрать категорию».
Демонстрация выполнения этих операций представлена на рисунке 31.
73
Рисунок 31 – Стоимость исследований
74
Рисунок 32 – Статистика по регионам
Для
просмотра
количества
исследований
учитывая
регион
происхождения и регион отбора, пользователю необходимо нажать кнопку
«Статистика по регионам». Использование этой возможности системы
позволит сотрудникам лаборатории в короткие сроки производить сбор
статистических данных по регионам происхождения и отбора поднадзорной
продукции. Демонстрация данной экранной формы проиллюстрирована на
рисунке 32.
75
Рисунок 33 – Генерация ряда динамики
Используя разработанную информационную систему, пользователь
имеет возможность построения ряда динамики по следующим показателям:
 абсолютный прирост;
 темп прироста в процентах;
 темп роста в процентах;
 абсолютное содержание одного процента прироста;
 темп наращения в процентах.
Используя
данную
функциональную
возможность
системы,
сотрудники лаборатории смогут анализировать деятельность лаборатории, и
строить прогнозы касательно количества исследований. Демонстрация
данной функциональной возможности представлена на рисунке 33.
76
Для поиска проб в информационной системе используется алгоритм
поиска проб. Пользователь имеет возможность ввести номер пробы в
поисковую форму, после чего пользователю будет предложен список проб,
номер которых идентичен номеру, указанному пользователем. Это позволит
сотрудникам
интересующей
лаборатории
их
пробе.
оперативно
находить
Демонстрация
работы
информацию
данного
по
алгоритма
представлена на рисунке 34.
Рисунок 34 – Поиск проб по номеру
Так же пользователям системы доступен поиск проб по дате. Для этого
система предусматривает удобную форму поиска, продемонстрированную на
рисунке 35. На основании найденных записей строится результирующая
таблица. Таблица содержит записи из таблицы «Пробы» из базы данных
разрабатываемой информационной системы.
77
Рисунок 35 – Поиск проб по дате отбора
78
ЗАКЛЮЧЕНИЕ
Данная работа посвящена разработке информационной системы сбора
и анализа данных о результатах лабораторных исследований поднадзорной
продукции. В результате выполнения работы была разработана система,
которая позволит продуктивнее использовать ресурсы в ходе проведения
лабораторных исследований. Данная система позволит сократить время
затрачиваемое сотрудниками лаборатории на проведение статистических
исследований и создание отчетного материала, и как следствие повысить
качество работы лаборатории. Необходимо отметить, что внедрение данной
системы позволит сократить количество персонала, что приведет к снижению
затрат. Данная система достаточно универсальна и может быть использована
на различных платформах.
В ходе написания выпускной квалификационной работы были
полностью задачи:
1)
проведен анализ предметной области;
2)
определены
функциональные,
нефункциональные
и
эксплуатационные требования к системе;
3)
проведен анализ и сравнение существующих аналогов;
4)
разработана структура подсистемы;
5)
описаны функциональные возможности подсистемы;
6)
построена концептуальная схему базы данных;
7)
разработаны алгоритмы функционирования подсистемы;
8)
описана логика диалога с пользователем;
9)
реализована и протестирована подсистема сбора и анализа
данных о результатах лабораторных исследований поднадзорной продукции.
Разработанная подсистема получения и анализа данных о результатах
лабораторных
исследований
поднадзорной
продукции
позволит
оптимизировать процесс сбора и анализа данных о результатах лабораторных
исследований поднадзорной продукции и позволит экономить временные и
79
денежные ресурсы. Таким образом, цель работы можно считать достигнутой.
Данная система допускает дальнейшее совершенствование, а также
расширение области применения. Интеграция новых модулей позволит
расширить функциональность системы.
80
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1
Баронов, В.В. Автоматизация управления предприятием [Текст]/
2
Олькина,
Е.
В.
Методические
указания
по
оформлению
пояснительных записок к дипломным, курсовым проектам (работам) и
отчетов по практикам в соответствии с требованиями государственных
стандартов [Текст] / Е. В. Олькина. – Орел: ОрелГТУ, 2007.
3
Безопасность базы данных
[Электронный ресурс]:
Режим
доступа: –http://infosecmd.narod.ru/gl6.html (дата обращения 22.05.2018).
4
PHP, MySQL и другие веб-технологии [Электронный ресурс]:
Режим доступа: – http://www.php.su/ (дата обращения 04.05.2017).
5
Васильев, Р.Б. Управление развитием информационных систем
[Текст] / Р.Б. Васильев, Г.Н. Калянов, Г.А. Левочкина. – М.: Горячая линия –
Телеком, 2009. – 376 с. – ISBN 978-5-9912-0065-3.
6
Маклаков, С. В. BPwin и ERwin. CASE-средства разработки
информационных систем / С. В. Маклаков. - 2-е изд., испр. и доп. - М. :
Диалог-МИФИ, 2001. - 304 с. : ил.+ 21 см. ISBN 5-86404-128-9.
7
PHP
[Электронный
ресурс].
Режим
доступа
-
(дата обращения 17.02.2018).
8
Советов, Б.Я. Базы данных теория и практика [Текст]/ Б.Я.
Советов, В.В. Цехановский, В.Д. Чертовской.– М.: Высшая школа, 2007 -
9
Самоучитель UML [Электронный ресурс]. Режим доступа -
https://www.e-reading.club/book.php?book=33640 (дата обращения 15.06.2017).
10
Руководство пользователя Open Server [Электронный ресурс].
Режим доступа - https://ospanel.io/docs/ (дата обращения 07.05.2017).
11
Давид Марка, Клемент МакГоуэн, Методология структурного
анализа и проектирования. Пер. с англ. М.:1993, 240 с. , ISBN 5-7395-0007-9.
12
Лаура Томсон и Люк Веллинг Разработка web приложений на
РНР и MySQL издание второе исправленное 1 DiaSoft Москва ,Санкт-
81
Петербург, Киев 2003. – 672 с. – ISBN 5-93772-090-3.
13
Дейт, К. Дж. Введение в системы баз данных [Текст]: [пер. с
англ.]/ К. Дж. Дейт. – 8-е изд. – М.: Издательский дом «Вильямс», 2005. –
1328 с. : ил. – Парал. тит. англ. – 5000 экз. – ISBN 5-8459-0788-8.
14
Автоматизированная система Веста [Электронный ресурс].
Режим доступа - http://help.vetrf.ru/wiki (дата обращения 19.06.2017).
15
рынке
Лабораторные информационные системы на отечественном
[Электронный
ресурс].
Режим
доступа
–
http://www.lib.tpu.ru/fulltext/m/2007/m8 (дата обращения 14. 11.2017).
16
Зандстра,
М.
PHP.
Объекты,
шаблоны
и
методики
программирования [Текст]/ Пер. с англ. М.:2015, - 560с. – ISBN: 5-94735-0556
17
Аллен, Э. Типичные ошибки проектирования [Текст] : [пер. с
англ.] / Э. Аллен. - СПб.: Питер, 2003. – 224 с.
18
А. Я. Гулиев, Лабораторные информационные системы и задачи
интеграции с медицинским оборудованием, Программные системы: теория и
приложения, 1:4 (2010), 33–44 с.
19
Нуцков В.Ю. Лабораторно-информационные системы (LIMS) //
Промышленные АСУ и контроллеры. 2003. – 50 с.
20
Горшков Ю.В., Карамышев Н.И, Бондаренко А.В., Ольховой В.А.
Особенности
построения
лабораторных
информационных
систем
на
предприятиях с непрерывным технологическим циклом // Лабораторные
информационные системы LIMS. Сборник статей: ООО "Маркетинг.
Информационные технологии". 2006. – 50 с.
21
Ефимова М.Р., Петрова Е.В., Румянцев В.Н. Общая теория
статистики: Учебник. – 2-е изд., испр. и доп. – М.: ИНФРА-М, 2007. – 416 с.
82
ПРИЛОЖЕНИЕ А
(обязательное)
ФРАГМЕНТЫ ПРОГРАММНОГО КОДА ПРИЛОЖЕНИЯ
<?php
function readExelFile($filepath){
$ar=array();
$inputFileType = PHPExcel_IOFactory::identify($filepath);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($filepath);
$ar = $objPHPExcel->getActiveSheet()->toArray();
return $ar;
}
function _strtolower($str) {
$rusupper = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ";
$ruslower = "абвгдеёжзийклмнопрстуфхцчшщьыъэюя";
return strtolower(strtr($str,$rusupper,$ruslower));
}
function utf8RawUrlDecode ($source) {
$decodedStr = '';
$pos = 0;
$len = strlen ($source);
while ($pos < $len) {
$charAt = substr ($source, $pos, 1);
if ($charAt == '%') {
$pos++;
$charAt = substr ($source, $pos, 1);
if ($charAt == 'u') {
$pos++;
$unicodeHexVal = substr ($source, $pos, 4);
$unicode = hexdec ($unicodeHexVal);
$entity = "&#". $unicode . ';';
83
//$decodedStr .= utf8_Encode ($entity);
$decodedStr .= chr($unicode-848);
$pos += 4;
}
else {
$hexVal = substr ($source, $pos, 2);
$decodedStr .= chr (hexdec ($hexVal));
$pos += 2;
}
}
else {
$decodedStr .= $charAt;
$pos++;
}
}
return $decodedStr;
}
function fnk_make_code_word(){
$dig=rand(1,100000000);
$cod_dig=md5($dig);
$pos=rand(0,25);
$name=substr($cod_dig,$pos,7);
$name=md5($name);
$pos=rand(0,25);
$name=substr($name,$pos,7);
return $name;
}
if ($_POST['import']==1){
$url = $_POST['import_forma'];
$content_all = "";
$ar=readExelFile($url);
$key=Array();
84
$titles=Array();
$cnt=0;
echo '
<h2>Добавленные данные</h2>
<table width="80%" border="0" cellspacing="1" cellpadding="1" bgcolor="#808080">
<tr bgcolor="#EEEEEE"><th>№</th>';
$query = "SELECT * FROM words";
$result = mysql_query ($query) or die ("Query failed");
if (mysql_num_rows($result)>0){
while ($dir_info=mysql_fetch_assoc($result)){
if ($cnt<10)
echo "<th>".$dir_info['word_ru']."</th>";
$titles[0][]=$dir_info['word_ru'];
$titles[1][]=$dir_info['word_en'];
$cnt++;} }
//print_r($titles);
$m=0;
for ($i=0; $i<count($titles[0]);$i++){
$key_ = array_search($titles[0][$i], $ar[0]);
if ($key_!=false) {
$key[0][$m]=$key_;
$key[1][$m]=$i;
$m++;}
$num = array_search("Номер пробы", $ar[0]);}
//$num = array_search("Sample_number", $titles[1]);
//print_r($key);
$all = array_search("Количество исследований (всего)", $ar[0]);
$pol = array_search("Количество исследований (положительных)", $ar[0]);
$otr = array_search("Количество исследований (отрицательных)", $ar[0]);
$nenorma = array_search("Количество исследований (не нормируется)", $ar[0]);
$k=1;
for ($i=1; $i<count($ar);$i++){
85
if ($num>=0){
$id = $ar[$i][$num];
$all_ = $ar[$i][$all];
$pol_ = $ar[$i][$pol];
$otr_ = $ar[$i][$otr];
$nenorma_ = $ar[$i][$nenorma];
$sql="Select Sample_number from export where Sample_number='".$id."'";
//echo $sql;
$result_sql = mysql_query ($sql) or die ("Query failed");
if (mysql_num_rows($result_sql)<=0){
echo "<tr>";
echo "<td>".$k."</td>";
$n=0;
$query = "INSERT INTO export(";
$str= "";
for ($j=0; $j<count($key[0]);$j++){
$data=$ar[$i][$key[0][$j]];
$regularka = "/^([0-9]{2})-([0-9]{2})-([0-9]{2})$/";
if (preg_match($regularka, $data, $razdeli))
{ //echo $razdeli[2]."-".$razdeli[1]."-".$razdeli[3]."<br>";
$ar[$i][$key[0][$j]]=$razdeli[3]."-".$razdeli[1]."-".$razdeli[2];
$ar[$i][$key[0][$j]]=date('Y-m-d', strtotime($ar[$i][$key[0][$j]]));
echo date("d.m.Y", strtotime($ar[$i][$key[0][$j]]));}
if ($n<10)
echo "<td>".$ar[$i][$key[0][$j]]."</td>";
$query.="`".$titles[1][$key[1][$j]]."`".",";
$ar[$i][$key[0][$j]] = str_replace("'", "", $ar[$i][$key[0][$j]]);
$str.="'".$ar[$i][$key[0][$j]]."'".",";
/*if (strlen($ar[$i][$key[0][$j]])>250) {
echo $j."-".strlen($ar[$i][$key[0][$j]])."-".$titles[1][$key[1][$j]]."<br>";}*/
n++;
$k++;
}
86
$query = substr($query,0,-1);
$str = substr($str,0,-1);
$query.=") Values (";$query.=$str;$query.=");";
$query= mysql_real_escape_string($query);
$result = mysql_query ($query) or die ("Query failed ".$query."<br>");
echo $query."<br>";
$sql_="Select proba from issledovaniya where proba='".$id."'";
//echo $sql;
$result_sql_ = mysql_query ($sql_) or die ("Query failed");
if (mysql_num_rows($result_sql_)<=0){
$newsql="INSERT INTO ` Research `(`proba`, `all_iss`, `pol_iss`, `otr_iss`, `nenorma_iss`) VALUES
('".$id."',".$all_.",".$pol_.",".$otr_.", ".$nenorma_.")";
mysql_query ($newsql) or die ("Query iss failed ".$newsql."<br>");}
else {
$newsql="UPDATE `Research` SET
`all_iss`=".$all_.",`pol_iss`=".$pol_.",`otr_iss`=".$otr_.",`nenorma_iss`=".$nenorma_." WHERE
proba='".$id."'";
mysql_query ($newsql) or die ("Query iss failed ".$newsql."<br>");}
echo '</tr>';}
else{
$query = "UPDATE `export` SET ";
$str= "";
for ($j=0; $j<count($key[0]);$j++){
$data=$ar[$i][$key[0][$j]];
$regularka = "/^([0-9]{2})-([0-9]{2})-([0-9]{2})$/";
if (preg_match($regularka, $data, $razdeli)){
//echo $razdeli[2]."-".$razdeli[1]."-".$razdeli[3]."<br>";
$ar[$i][$key[0][$j]]=$razdeli[3]."-".$razdeli[1]."-".$razdeli[2];
$ar[$i][$key[0][$j]]=date('Y-m-d', strtotime($ar[$i][$key[0][$j]]));
//echo date("d.m.Y", strtotime($ar[$i][$key[0][$j]]));}
$ar[$i][$key[0][$j]] = str_replace("'", "", $ar[$i][$key[0][$j]]);
$query.="`".$titles[1][$key[1][$j]]."`"."='".$ar[$i][$key[0][$j]]."'".",";}
$k++;
87
$query = substr($query,0,-1);
$query.=" where `Sample_number`='".$id."'";
//$query=mysql_real_escape_string($query);
$result = mysql_query ($query) or die ("Query update failed ".$query."<br>");
$sql_="Select proba from issledovaniya where proba='".$id."'";
//echo $sql;
$result_sql_ = mysql_query ($sql_) or die ("Query failed");
if (mysql_num_rows($result_sql_)<=0){
$newsql="INSERT INTO `Research`(`Sample_number`, `all_iss`, `pol_iss`, `otr_iss`, `nenorma_iss`)
VALUES ('".$id."',".$all_.",".$pol_.",".$otr_.", ".$nenorma_.")";
mysql_query ($newsql) or die ("Query iss failed ".$newsql."<br>");}
else {
$newsql="UPDATE `Research` SET
`all_iss`=".$all_.",`pol_iss`=".$pol_.",`otr_iss`=".$otr_.",`nenorma_iss`=".$nenorma_." WHERE
proba='".$id."'";
mysql_query ($newsql) or die ("Query iss failed ".$newsql."<br>");}
//echo $query."<br>";
echo '</tr>';
}
$sql_stoim="Select Tariff_coast, Tariff_coast _with_NDS from export where
Nomer_jekspertizy='".$id."'";
$result_ = mysql_query ($sql_stoim) or die ("Query failed");
$stoimost=mysql_fetch_assoc($result_);
$sum=0;
$sum_nds=0;
if (strpos($stoimost['stoimost'],"не")===false){
$summa = explode(",", $stoimost['stoimost']);
$summa_nds = explode(",", $stoimost['stoimost_nds']);
for ($j=0; $j<count($summa);$j++){
$sum+=$summa[$i];
$sum_nds+=$summa_nds[$i];}
if ($stoimost['stoimost']<$sum) {
$query = "UPDATE `Research` SET Tariff_coast=".$sum.", Tariff_coast _with_NDS=".$sum_nds;
$query.=" where `Nomer_jekspertizy`='".$id."'";
88
$result = mysql_query ($query) or die ("Query update failed ".$query."<br>");} }}}}
//for($j=0;$j<1;$j++)
echo "</table>";
?>
<?
function rdate($param) {
$MonthNames=array("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август",
"Сентябрь", "Октябрь", "Ноябрь", "Дек");
return $MonthNames[$param];}
$sql="Select month(min(Data_postuplenija)) as date_start, month(max(Data_postuplenija)) as
date_finish from export where year(Data_postuplenija)=".date('Y');
$result_sql = mysql_query ($sql) or die ("Query failed");
$date_info=mysql_fetch_assoc($result_sql);
$date_start=$date_info['date_start'];
$date_finish=$date_info['date_finish'];
?>
<table>
<tr><th>Месяц</th><th>Количество проб</th><th>Количество
исследований<br>(всего)</th><th>Количество
исследований<br>(положительных)</th><th>Количество
исследований<br>(отрицательных)</th></tr>
$sql="SELECT COUNT( Sample_number ) AS cnt, MONTH( Selection_date ) AS mon, SUM( all_iss ) as
sum_, sum(pol_iss) as pol, sum(otr_iss) as otr
FROM `Research`,
WHERE YEAR(Selection_date)=".date('Y')."
AND proba = Nomer_proby
GROUP BY MONTH(Selection_date)
ORDER BY MONTH(Selection_date) ASC";
mysql_query("set sql_big_selects=1");
$result = mysql_query ($sql) or die (mysql_error());
$sum=0;
$sum=0;
$sum_pol=0;
$sum_otr=0;
89
while ($info=mysql_fetch_assoc($result)){
$sum+=$info['cnt'];
$sum_+=$info['sum_'];
$sum_pol+=$info['pol'];
$sum_otr+=$info['otr'];
echo "<tr><td>".rdate($info['mon']-1)."</td><td>".$info['cnt']."</td><td
class='green'>".$info['sum_']."</td><td class='pink'>".$info['pol']."</td><td
class='blue'>".$info['otr']."</td></tr>";}
echo "<tr class='itogo'><td align='right' class='itogo'><b>Итого</b></td><td
class='itogo'>".$sum."</td><td class='itogo'>".$sum_."</td><td class='itogo'>".$sum_pol."</td><td
class='itogo'>".$sum_otr."</td></tr>";
?>
<?
setlocale(LC_MONETARY, 'ru_RU');
function rdate($param) {
$MonthNames=array("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август",
"Сентябрь", "Октябрь", "Ноябрь", "Дек");
return $MonthNames[$param];
}
$sql="Select month(min(Data_postuplenija)) as date_start, month(max(Data_postuplenija)) as
date_finish from export where year(Data_postuplenija)=".date('Y');
$result_sql = mysql_query ($sql) or die ("Query failed");
$date_info=mysql_fetch_assoc($result_sql);
$date_start=$date_info['date_start'];
$date_finish=$date_info['date_finish'];
?>
<h3>Промежуточная статистика c <? echo $date_start.".".date('Y'); ?> по <? echo
$date_finish.".".date('Y'); ?></h3>
<div style = "margin:10px 8px auto;">
<p>Стоимость исследований по категориям</p>
<table>
<tr><th>Категория</th><th>Стоимость</th><th>Стоимость с НДС</th></tr>
<?
$sql="SELECT sum(`stoimost`) as sum, sum(`stoimost_nds`) as sum_nds
FROM `Research`
90
where Categories like 'Государст%'";
$result = mysql_query ($sql) or die ("Query failed");
$sum=0;
$sum_nds=0;
while ($info=mysql_fetch_assoc($result)){
$sum+=round($info['sum'],2);
$sum_nds+=round($info['sum_nds'],2);
echo "<tr><td colspan=3>";
?>
<a style="cursor:hand; cursor:pointer" onclick="HideRows(); this.innerHTML = 'Государственное
задание (+)'" id="HideClick()">Государственное задание (-)</a>
<?
echo "</td></tr>";}
$sql="SELECT sum(`Tariff_coast`) as sum, sum(`Tariff_coast _with_nds`) as sum_nds, `Tariff_name`
FROM ` Research_tariff `
GROUP BY `Kategorija`
ORDER BY `Kategorija` ASC ";
$result = mysql_query ($sql) or die ("Query failed");
$sum=0;
$sum_nds=0;
while ($info=mysql_fetch_assoc($result)){
if (strpos($info['Kategorija'], "Государст")===false && strpos($info['Kategorija'], "Эпиз")===false &&
strpos($info['Kategorija'], "Пищев")===false) {
echo "<tr><td>".$info['Kategorija']."</td><td>-</td><td>".number_format(round($info['sum_nds'],2),
2, '.', ' ').' руб.'."</td></tr>";
$sum_nds+=round($info['sum_nds'],2);} else {
echo "<tr id='hideRow' name='HideRow'><td class='itogo'>".$info['Kategorija']."</td><td
class='itogo'>".number_format(round($info['sum'],2), 2, '.', ' ').' руб.'."</td><td class='itogo'></td></tr>";
$sum+=round($info['sum'],2);}}
echo "<tr class='itogo'><td align='right' class='itogo'><b>Итого</b></td><td
class='itogo'>".number_format($sum, 2, '.', ' ').' руб.'."</td><td
class='itogo'>".number_format($sum_nds, 2, '.', ' ').' руб.'."</td></tr>";
?>
91
</table>
</div>
<div style = "margin:10px 8px auto;">
<p>Стоимость исследований по месяцам и по категориям</p>
<table style="width: 100%;">
<tr><th>Категория</th>
<?
$sql="SELECT month(Selection_date) as mon
FROM `Samples`
where year(Selection_date)=".date('Y')."
GROUP BY month(Selection_date)
ORDER BY month(Selection_date) ASC";
$result = mysql_query ($sql) or die ("Query failed");
while ($info=mysql_fetch_assoc($result)){
echo "<th>".rdate($info['mon']-1)."</th>";}
?>
</tr>
<?
$query="SELECT month(Data_postuplenija) as mon
FROM `export`
where year(Selection_date)=".date('Y')."
GROUP BY month(Selection_date)
ORDER BY month(Selection_date) ASC";
$result = mysql_query ($query) or die ("Query failed");
while ($info=mysql_fetch_assoc($result)){
$month[]=$info['mon'];
}
$query="SELECT `Method`
FROM `Research`
where (Method like 'Государст%' or Kategorija like 'Эпизоотол%' or Kategorija like 'Пищевой %')
GROUP BY ` Method `
ORDER BY ` Method ` ASC ";
92
/*$result = mysql_query ($sql) or die ("Query failed");
*/
$result = mysql_query ($query) or die ("Query failed");
$Sum=Array();
$n=0;
$sum=0;
echo '<tr><td style="width:100px;">';
?>
<a style="cursor:hand; cursor:pointer" onclick="HideRows(); this.innerHTML = 'Государственное
задание (+)'" id="HideClick">Государственное задание (-)</a>
<?
echo '</td>';
for ($i=0;$i<count($month);$i++) {
$sql="SELECT sum(`stoimost`) as sum
FROM `export`
where month(Selection_date)=".$month[$i]." and year(Data_postuplenija)=".date('Y')."
and (Kategorija like 'Государст%'
ORDER BY `Method` ASC ";
//echo $sql;
$result_sql = mysql_query ($sql) or die ("Query failed");
$sum=0;
if (mysql_num_rows($result_sql)<=0) {
echo "<td>0.00</td>";}
else {
$info_cat=mysql_fetch_assoc($result_sql);
//while ($info_cat=mysql_fetch_assoc($result_sql))
echo "<td>".number_format(round($info_cat['sum'],2), 2, '.', ' ')."</td>";} }
echo "</tr>";
while ($info=mysql_fetch_assoc($result)){
echo "<tr id='HideRow' name='HideRow'><td style='width:100px;'>".$info['Kategorija']."</td>";
($i=0;$i<count($month);$i++) {
$sql="SELECT sum(`Tarif_coast`) as sum,
93
FROM `Reaserch_tariff`
where month(Selection_date)=".$month[$i]." and year(Selection_date)=".date('Y')."
and Method='".$info[Method]."'
GROUP BY `Categories`
ORDER BY `Categories` ASC ";
$result_sql = mysql_query ($sql) or die ("Query failed");
$sum=0;
if (mysql_num_rows($result_sql)<=0) {
echo "<td class='itogo'>0.00</td>";}
else {
$info_cat=mysql_fetch_assoc($result_sql);
//while ($info_cat=mysql_fetch_assoc($result_sql))
echo "<td class='itogo'>".number_format(round($info_cat['sum'],2), 2, '.', ' ')."</td>";} }
echo "</tr>";
}
$query="SELECT `Categories`
FROM `export`
where (Categories not like 'Государст%' ')
GROUP BY ` Categories `
ORDER BY ` Categories ` ASC ";
$result = mysql_query ($query) or die ("Query failed");
$Sum=Array();
$n=0;
$sum=0;
while ($info=mysql_fetch_assoc($result)){
echo "<tr><td>
".$info['Kategorija']."</td>";
for ($i=0;$i<count($month);$i++) {
$sql="SELECT sum(`Tariff_coast`) as sum_nds, ` Categories `
FROM `export`
where month(Selection_date)=".$month[$i]." and year(Selection_date)=".date('Y')."
and Categories ='".$info[Categories]."'
GROUP BY ` Categories `
94
ORDER BY ` Categories ` ASC ";
$result_sql = mysql_query ($sql) or die ("Query failed");
$sum=0;
if (mysql_num_rows($result_sql)<=0) {
echo "<td>0.00</td>";}
else {
$info_cat=mysql_fetch_assoc($result_sql);
echo "<td>".number_format(round($info_cat['sum_nds'],2), 2, '.', ' ')."</td>";} }
echo "</tr>";
}
$sql="SELECT sum(`Tariff_coast_with_nds`) as sum_nds, month(Selection_date) as mon
FROM `export`
where year(Selection_date)=".date('Y')." and Categories not like 'Государст%'
GROUP BY month(Selection_date)
union
SELECT sum(`stoimost`) as sum, month(Data_postuplenija) as mon
FROM `export`
where year(Data_postuplenija)=".date('Y')."
and (Kategorija like 'Государст%' or Kategorija like 'Эпизоотол%' or Kategorija like 'Пищевой %')
GROUP BY month(Data_postuplenija) ";
$result = mysql_query ($sql) or die ("Query failed");
echo "<tr class='itogo'><td align='right' class='itogo'><b>Итого</b></td>";
$money=Array();
while ($info=mysql_fetch_assoc($result)){
$money[]=round($info['sum_nds'],2);}
$k=count($month);
for ($i=0; $i<count($month);$i++) {
echo "<td class='itogo'>".number_format(($money[$i]+$money[$i+$k]), 2, '.', ' ')."</td>";}
echo "</tr>";
?>
</table>
</div>
<div style = "margin:10px 8px auto;">
95
<p>Стоимость исследований по отделам и по категориям</p>
<table style="width: 100%;">
<tr><th style='width:150px;'>Отдел</th>
<?
$sql="SELECT (Department) as mon
FROM `Performes`
where year(Selection_date)=".date('Y')."
and Department not like '%,%'
GROUP BY Department
ORDER BY Department ASC";
$result = mysql_query ($sql) or die ("Query failed");
while ($info=mysql_fetch_assoc($result)){
echo "<th>".$info['mon']."</th>";}
?>
</tr>
<?
$month=Array();
$query="SELECT (Department) as mon
FROM `export`
where year(Selection_date)=".date('Y')."
and Otdel not like '%,%'
GROUP BY Department
ORDER BY Department ASC";
$result = mysql_query ($query) or die ("Query failed2");
while ($info=mysql_fetch_assoc($result)){
$month[]=$info['mon'];}
$query="SELECT `Categories`
FROM `export` where (Categories like 'Государст%')and Otdel not like '%,%'
GROUP BY ` Categories `
ORDER BY `Kategorija` ASC ";
$result = mysql_query ($query) or die ("Query failed");
$Sum=Array();
96
$n=0;
$sum=0;
echo '<tr><td style="width:150px;">';
?>
<a style="cursor:hand; cursor:pointer" onclick="HideRows(); this.innerHTML = 'Государственное
задание (+)'" id="HideClick()">Государственное задание (-)</a>
<?
echo '</td>';
for ($i=0;$i<count($month);$i++) {
$sql="SELECT sum(`Tariff_coast`) as sum
FROM `export`
where Department ='".$month[$i]."' and year(Selection_date)=".date('Y')."
and Department not like '%,%'
and (Department like 'Государст%')
ORDER BY ` Categories ` ASC ";
//echo $sql;
$result_sql = mysql_query ($sql) or die ("Query failed3");
$sum=0;
if (mysql_num_rows($result_sql)<=0) {
echo "<td>0.00</td>";}
else {
$info_cat=mysql_fetch_assoc($result_sql);
//while ($info_cat=mysql_fetch_assoc($result_sql))
echo "<td>".number_format(round($info_cat['sum'],2), 2, '.', '')."</td>";} }
echo "</tr>";
while ($info=mysql_fetch_assoc($result)){
echo "<tr id='hideRow' name='HideRow'><td style='width:150px;'>
".$info['Kategorija']."</td>";
for ($i=0;$i<count($month);$i++) {
$sql="SELECT sum(`Tariff_coast `) as sum, ` Department ` FROM `Performers`
where Department ='".$month[$i]."' and year(Selection_date)=".date('Y')."
and Categories='".$info['Kategorija']."'
97
and Department not like '%,%'
GROUP BY ` Categories `
ORDER BY ` Categories ` ASC ";
//echo $sql;
$result_sql = mysql_query ($sql) or die ("Query failed");
$sum=0;
if (mysql_num_rows($result_sql)<=0) {
echo "<td class='itogo'>0.00</td>";}
else {
$info_cat=mysql_fetch_assoc($result_sql);
//while ($info_cat=mysql_fetch_assoc($result_sql))
echo "<td class='itogo'>".number_format(round($info_cat['sum'],2), 2, '.', ' ')."</td>";} }
echo "</tr>";
}
$query="SELECT `Kategorija`
FROM `export`
where (Kategorija not like 'Государст%')
and Otdel not like '%,%'
GROUP BY ` Categories `
ORDER BY ` Categories ` ASC ";
$result = mysql_query ($query) or die ("Query failed");
$Sum=Array();
$n=0;
$sum=0;
while ($info=mysql_fetch_assoc($result)){
echo "<tr><td>
".$info['Kategorija']."</td>";
for ($i=0;$i<count($month);$i++) {
$sql="SELECT sum(`Tariff_coast_with_nds`) as sum_nds, ` Categories `
FROM `export`
where otdel='".$month[$i]."' and year(Data_postuplenija)=".date('Y')."
and Categories ='".$info[Categories]."'
and Department not like '%,%'
98
GROUP BY ` Categories `
ORDER BY ` Categories ` ASC ";
//echo $sql;
$result_sql = mysql_query ($sql) or die ("Query failed");
$sum=0;
if (mysql_num_rows($result_sql)<=0) {
echo "<td>0.00</td>";}
else {
$info_cat=mysql_fetch_assoc($result_sql);
//while ($info_cat=mysql_fetch_assoc($result_sql))
echo "<td>".number_format(round($info_cat['sum_nds'],2), 2, '.', ' ')."</td>";} }
echo "</tr>";
}
$sql="SELECT sum(`Tariff_coast_with_nds`) as sum_nds, otdel as mon
FROM `Samples`
where year(Selection_date)=".date('Y')."
and (Categories not like 'Государст%')
and Department not like '%,%'
GROUP BY Department
union
SELECT sum(`Tariff_coast`) as sum, Department as mon
FROM `export`
where year(Selection_date)=".date('Y')."
and (Categories like 'Государст%' )
and Department not like '%,%'
GROUP BY otdel ";
/*$result = mysql_query ($sql) or die ("Query failed");
echo "<tr class='itogo'><td align='right' class='itogo'><b>Итого</b></td>";
$money=Array();
while ($info=mysql_fetch_assoc($result)){
$money[]=round($info['sum_nds'],2);}
$k=count($month);
for ($i=0; $i<count($month);$i++) {
99
echo "<td class='itogo'>".number_format(($money[$i]+$money[$i+$k]), 2, '.', ' ')."</td>";}
echo "</tr>";*/
?>
</table>
</div>
<div style = "margin:10px 8px auto;">
<p>Стоимость исследований по производителям</p>
<table>
<tr><th style="width:50px;">№</th><th>Производитель</th><th
style="width:150px;">Стоимость</th></tr>
<?
$sql="SELECT sum(`stoimost_nds`) as sum,`Proizvoditel`
FROM `Samples`
group by hash
ORDER BY `Manufacturers` ASC ";
$result = mysql_query ($sql) or die ("Query failed");
$sum=0;
$i=1;
while ($info=mysql_fetch_assoc($result)){
$sum+=$info['sum'];
echo "<tr><td>".$i."</td><td>".$info['Proizvoditel']."</td><td>".number_format(round($info['sum'],2),
2, '.', ' ')."</td></tr>";
$i++;}
echo "<tr class='itogo'><td align='right' class='itogo' colspan='2'><b>Итого</b></td><td
class='itogo'>".number_format(round($sum,2), 2, '.', ' ')."</td></tr>";
?>
100
Удостоверяющий лист
101
Информационно поисковая характеристика
.
v
8l0z |r.do
qrodrsqo, rdoH
H x'HEodorE€
todtr.Qer '€e€
:ce!a*d.sr( rs.wrloY
H g so.rvos
'o{-g eqoleF.adu
er.rrtosorrd
:sBso."no. rueMroi/
'o g 8ou'rvorroJ
rH6ti,ttJ
temqRded rHe, LtuoV
erogRd4oEFortE)ro!redt
{on.,tuss r rsrBren essEolnt"tursonatr, rerHe Aor
afinRsoH.NreH
Isner.Ilc.IssHourEwdoosx ersHsr.lJ?doDdo) (smQod!)[email protected]?H
B)lr1r"^do0L.'r RBslDn'd[ t0 t0.60 e'FarsedxBH
rrqHHo,nrwdooHlr RdneoD)
^.m'.
LiruoroRerxrqHEortrD^doQM r nffi€rne^ord€.xr.rHeodr.odogud!
r,{rrrrFl4
Bhrsuero ?*er..hrg esorrnoroJ ersandjJ
f9I S9I
oru€
dorm
s
gFsarer.nedu .rr?!daE {
trtrrsHEortrEdr.tso{ev
^osHodrr.r€
aIOSVd 4OHHOI [email protected]]rry$I UIOI|TJ^IIHS x
E9rr9r d,v JJ,m lumorrdasoJJoY]{
r:
eH
<VSAHAJdAT'J'I4 AH:U^trI
l43daaru I4rqrfiqslJdvY^JoJ?rl4)Jaordo)
ruHvao€vdso oJgmJlss slx{M(adbi SoHsrarvso€vdgo
aoHIstrtrors aoHI rasJJdvtr^coj [email protected]
101
ИНФОРМАЦИОННО-ПОИСКОВАЯ ХАРАКТЕРИСТИКА
ДОКУМЕНТА НА ЭЛЕКТРОННОМ НОСИТЕЛЕ
Наименование
группы атрибутов
атрибута
1. Описание
Обозначение документа
документа
(идентификатор(ы)
файла(ов))
Наименование документа
2. Даты и время
3. Создатели
4. Внешние
ссылки
5. Защита
6. Характеристики
содержания
Характеристики документа
на электронном носителе
\Плакаты\Презентация1.pptx
Демонстрационные плакаты
к выпускной
квалификационной работе
Класс документа
ЕСКД
Вид документа
Оригинал документа на
электронном носителе
Аннотация
Демонстрационный
материал, отображающий
основные этапы выполнения
выпускной
квалификационной работы
Использование документа Операционная система
Windows 10, Microsoft
PowerPoint 2016
Дата и время
23.06.2018
копирования документа
Дата создания документа 18.06.2018
Дата утверждения
23.06.2018
документа
Автор
Солодилов В.О.
Изготовитель
Солодилов В.О.
Ссылки на другие
Удостоверяющий лист
документы
№ 165163/п
Санкционирование
ОГУ имени И.С. Тургенева
Классификация защиты
По законодательству РФ
Объем информации
1264860 Б
документа
102
7. Структура
документа(ов)
Наименование плаката
(слайда) №1
Наименование плаката
(слайда) №2
Наименование плаката
(слайда) №3
Наименование плаката
(слайда) №4
Наименование плаката
(слайда) №5
Наименование плаката
(слайда) №6
Наименование плаката
(слайда) №7
Наименование плаката
(слайда) №8
Наименование плаката
(слайда) №9
Наименование плаката
(слайда) №10
Наименование плаката
(слайда) №11
Наименование плаката
(слайда) №12
Титульный лист
Постановка задачи
Цель и задачи работы
Анализ существующих
аналогов
Архитектура
информационной
подсистемы
Логическая схема базы
данных
Схема алгоритма импорта
данных
Схема алгоритма расчета
темпа прироста
Схема алгоритма поиска проб
Транзитивная сеть логики
пользовательского
интерфейса
Состояния сети логики
пользовательского
интерфейса и входные
сигналы, инициирующие
переходы
Экранные формы работы
приложения
ur'.rE 9a 93
lw)h!ts,wtuanqrc^!!e{,i 1,vur
l^€.44e!u4HV
aw.DHr s EHoHuourc€ e!d.sodu
!rHesoaDwree a!lhrreH
eH
erHawlxoH orosoDxar rxdasodu xererqul€ad
vxSvdul
i"iiijviiififfi"f,
a
1/--страниц
Пожаловаться на содержимое документа