Разработка базы данных поликлиники

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

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

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

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

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

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

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

· показателей надежности комплексов программ в процессе отладки;

· количества ошибок, оставшихся невыявленными;

· времени, необходимого для обнаружения следующей ошибки в функционирующей программе;

· времени, необходимого для выявления всех ошибок с заданной вероятностью.

Рассмотрим экспоненциальную модель нашей системы. Предположим, что в начале отладки комплекса программ, при ф=0 в нем содержалось N0 ошибок. После отладки в течении времени ф осталось n0 ошибок и устранено n ошибок (n+n0=N0). При этом время ф соответствует длительности исполнения программ на ВС для обнаружения ошибок и неучитывается простой машины, необходимые для анализа результатов и проведения корректировок.

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

, (4.1)

где T - наработка на отказ, мин;

К - коэффициент времени;

N0 - начальное количество ошибок;

Кф - коэффициент времени во время отладки.

В процессе отладки и испытания программ для повышения наработки на отказ, от Т1 до Т2 необходимо обнаружить и устранить Дn ошибок. Величину Дn можно рассчитать следующим образом:

, (4.2)

где Дn - оставшееся количество ошибок после исправления программы;

Т0 - начальная наработка на отказ, мин;

Т1 - время наработки на отказ после первого исправления ПО;

Т2 - время наработки на отказ после второго исправления ПО;

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

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

Заключение

В рамках дипломного проекта была разработана автоматизированная информационная система «Поликлиника». В результате выполненной разработки можно сделать следующие выводы:

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

При разработке АИС был пройден полный цикл проектирования программы от постановки задачи заказчиком до сдачи АИС в эксплуатацию.

- уменьшение времени необходимого для записи к врачу;

- автоматизация контроля обращений к врачу;

- возможность длительного хранения информации о пациентах на предприятие большого срока давности, для возможности более полного расчета эффективности деятельности предприятия;

- своевременное получение информации о сроках и назначениях.

Разработанная АИС позволяет достигнуть следующих эффектов:

Целесообразность разработки обуславливается наличием свободного сегмента рынка для реализации разработанной АИС. Экономический эффект от внедрения программного продукта составит 708750 рублей в год, срок окупаемости проекта - семь месяцев.

На основании вышесказанного можно сделать вывод о том, что разработка АИС «Поликлиника» является целесообразной и будет приносить реальную пользу при использовании ее на предприятии.

Список литературы

1. Прикладные нечеткие системы / Тэрано Т., Асаи К., Сугено М., 2010.

2. Яхъяева Г.Э. Нечеткие множества и нейронные сети. - БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий - ИНТУИТ.ру, 2008.

3. Титоренко Г.А. Автоматизированные информационные технологии в экономике. - М.: Компьютер, ЮНИТИ, 1998.

4. Карминский А.М., Нестеров П.В. Информатизация бизнеса. - М.: Финансы и статистика, 2011.

5. Pineda F.J. 1988. Generalization of backpropagation to recurrent and higher order networks. In Newral information processing systems, ed. Dana Z. Anderson, pp. 602-11. New York: American Institute of Phisycs.

6. Sejnowski T.J., Rosenberg C.R. 1987. Parallel networks that learn to pronounce English text. Complex Systems 1:145-68.

7. Burr D.J. 1987. Experiments with a connecnionlist text reader. In Proceedings of the IEEE First International Conferense on Neural Networks, eds. M. Caudill and C. Butler, vol. 4, pp. 717-24. San Diego, CA: SOS Printing.

8. Cottrell G.W., Munro P., Zipser D. 1987. Image compression by backpropagation: An example of extensional programming. ICS Report 8702, University of California, San Diego.

9. Кэнту М. Delphi 7 для профессионалов - СПб: Издательство «Питер», 2007. - 1120 с.:ил.

10. Minsky M., and Papert S., 1969. Perseptrons. Cambridge, MA: MIT Press. (Русский перевод: Минский М.Л., Пейперт С. Персептроны. - М. Мир. - 1971.)

11. Kohonen T. 1984. Self-organization and associative memory. Series in Information Sciences, vol. 8. Berlin: Springer Verlag

Приложение 1

Сгенерированный в ERwin SQL код таблиц

using System;

using System. Collections. Generic;

using System. Text;

namespace ITProject

{

public class DBOnlyQuery: Query

{

public DBOnlyQuery (Type TypeOfBusinessObjectToQuery)

{

this. TypeOfBusinessObjectToQuery = TypeOfBusinessObjectToQuery;

System. Data. DataTable table = Factory. GetTable (TypeOfBusinessObjectToQuery. Name);

this. TableName = table. TableName;

this.PKName = Factory. GetPkNameFromTable(table);

AddUsedTable(TableName);

IsDBOnlyQuery = true;

}

internal readonly Type TypeOfBusinessObjectToQuery;

internal readonly string TableName;

internal readonly string PKName;

public void AddAsUnionQuery (DBOnlySubQuery query)

{

FilterParts. Append (new DBOnlyUnionQuery(query));

}

public void AddSubQuery (DBOnlySubQuery SubQuery, JoinCondition Condition)

{

 // eg, if («JS_PK».StartsWith («JS_JC».SubString (0, 3)))

 // ie, PK and PK are both in the subquery table

if (SubQuery.PKName. StartsWith (SubQuery. ForeignKey. Substring (0, 3)))

{

AddSubQuery (PKName, SubQuery. ForeignKey, SubQuery, Condition);

}

else if (SubQuery. ForeignKey. StartsWith (PKName. Substring (0, 3))) // FK is in parent query's table

{

AddSubQuery (SubQuery. ForeignKey, SubQuery.PKName, SubQuery, Condition);

}

else

{

throw new ApplicationException («Fields or Tables are not following Enterprise naming standards.»);

}

}

 /// <summary>

 /// Add SubQuery in the following format: [FieldNameOverride] IN (SELECT [SubQuery])

 /// </summary>

public void AddSubQuery (string FieldNameOverride, DBOnlySubQuery SubQuery, JoinCondition Condition)

{

AddSubQuery (FieldNameOverride, SubQuery. ForeignKey, SubQuery, Condition);

}

 /// <summary>

 /// Ultimate AddSubQuery - all AddSubQuery methods end up here

 /// </summary>

 /// <param name= «FieldName»></param>

 /// <param name= «SubQueryFieldName»></param>

 /// <param name= «SubQuery»></param>

 /// <param name= «Condition»></param>

public void AddSubQuery (string FieldName, string SubQueryFieldName, DBOnlySubQuery SubQuery, JoinCondition Condition)

{

DBOnlySubQuery ClonedSubQuery = SubQuery. ShallowCopy (FieldName, SubQueryFieldName);

 //if (! IgnoreActiveFilter)

 // {

 // ClonedSubQuery. AddToFilter (BusinessObject. GetActiveFilter (SubQuery. TypeOfBusinessObjectToQuery), JoinCondition. And);

 // }

if (IsNoLock)

{

ClonedSubQuery. IsNoLock = IsNoLock;

}

AddToFilter (ClonedSubQuery, Condition);

}

}

}

using System;

using System. Collections;

using System. Collections. Generic;

using System. Text;

namespace ITProject

{

public interface IFilterPart

{

 /// <summary>

 /// Simplify is designed to remove layers of complexity from IFilterPart statements

 /// Remove any part of a statement that is deemed unnecessary

 /// If the entire statement can be removed return null

 /// </summary>

IFilterPart[] GetSimplifiedVersion (JoinCondition lastJoinCondition);

void DisableModifications();

IFilterPart DeepClone();

NonPersistentDataQuery ParameterisedSql (ParameterNameFactory factory);

string LiteralTextADO {get;}

 /// <summary>

 /// Indicates that when merged with OTHER statements, that this object will need bracketing

 /// </summary>

bool NeedsBrackets {get;}

bool FilterIsEmpty {get;}

bool ContainsOrOperator {get;}

bool HasParameters {get;}

}

public class Query: IFilterPart, IFilterPartsProvider

{

public int? CommandTimeoutInSeconds;

public static Query NoResultQuery

{

get

{

Query query = new Query();

query. IsNoResultQuery = true;

query. ModificationsEnabled = false;

return query;

}

}

void IFilterPart. DisableModifications()

{

 //ModificationsEnabled = false;

}

public bool HasParameters

{

get {return FilterParts. HasParameters;}

}

public bool ModificationsEnabled

{

get {return modificationsEnabled;}

set {modificationsEnabled = value;}

}

bool modificationsEnabled;

#region Constructors

public Query()

{

modificationsEnabled = true;

FilterParts = new FilterStringBuilder();

DefaultJoinCondition = JoinCondition. And;

TableList = new StringCollectionX();

IsNoLock = false;

}

public Query (Query Filter)

: this()

{

AddToFilter(Filter);

}

public Query (Query Filter1, Query Filter2)

: this()

{

AddToFilter(Filter1);

AddToFilter(Filter2);

}

public Query (Query Filter1, JoinCondition JoinCondition, Query Filter2)

: this()

{

AddToFilter(Filter1);

AddToFilter (Filter2, JoinCondition);

}

internal Query (JoinCondition joinCondition, IFilterPart filterPart)

: this()

{

FilterParts. Append(joinCondition);

FilterParts. Append(filterPart);

}

internal Query (IFilterPart filterPart)

: this()

{

FilterParts. Append(filterPart);

}

#region Preferred Constructors

public Query (string schemaColumn, object Value)

: this()

{

AddToFilter (schemaColumn, Value);

}

public Query (string schemaColumn, SQLComparisonOperator Operator, object Value)

: this()

{

AddToFilter (schemaColumn, Operator, Value);

}

#endregion

#endregion

#region AddToFilter

#region Merging two Query objects together

internal void AddToFilter (SQLInFilter inFilter, JoinCondition Condition)

{

BracketIfRequired(Condition);

FilterParts. Append (Condition, inFilter);

}

public void AddToFilter (Query SQLFilter)

{

AddToFilter (SQLFilter, DefaultJoinCondition);

}

internal bool IsDBOnlyQuery; // temp till readonly factory

public bool IsNoResultQuery;

public void AddToFilter (Query SQLFilter, JoinCondition Condition)

{

if (SQLFilter!= null)

{

 // the filter always becomes empty when Or'd with ZNoResultQuery

if (SQLFilter. IsNoResultQuery)

{

if (Condition == JoinCondition. And)

{

IsNoResultQuery = true;

FilterParts. Reset();

}

else if (Condition!= JoinCondition. Or)

{

throw new NotSupportedException («Unknown join condition detected - this condition must be coded for»);

}

}

else

{

AddUsedTables(SQLFilter);

BracketIfRequired(Condition);

FilterParts. Append (Condition, SQLFilter);

}

if (SQLFilter. ReLoadExistingRows) ReLoadExistingRows = true;

if (SQLFilter. FetchOnlyFromLocalCache) FetchOnlyFromLocalCache = true;

if (SQLFilter. IsNoLock) IsNoLock = true;

if (SQLFilter. IsDBOnlyQuery) IsDBOnlyQuery = true;

if (SQLFilter. IgnoreActiveFilter) IgnoreActiveFilter = true;

if (! string. IsNullOrEmpty (SQLFilter. OrderBy))

{

if (string. IsNullOrEmpty(OrderBy))

{

OrderBy = SQLFilter. OrderBy;

}

else

{

OrderBy +=»,» + SQLFilter. OrderBy;

}

}

}

}

void BracketIfRequired (JoinCondition JoinOperator)

{

if (! FilterParts. FilterIsEmpty)

{

if (JoinOperator == JoinCondition. And && FilterParts. ContainsNonBracketedOr)

{

FilterParts. Bracket();

}

}

}

#endregion

public void AddFilterAndSQLParameterCollection (String Filter, ZSqlParameterCollection ParameterCollection)

{

AddFilterAndSQLParameterCollection (Filter, ParameterCollection, JoinCondition. And);

}

public void AddFilterAndSQLParameterCollection (String Filter, ZSqlParameterCollection ParameterCollection, JoinCondition joinCondition)

{

if (ParameterCollection == null)

{

ParameterCollection = new ZSqlParameterCollection();

}

if (Filter. Contains (ParameterNameFactory. ParameterPrefix))

{

throw new Exception («The filter contains an autogenerated parameter - this is incorrect and will make the filter fail when applied.\r\n\r\n» + Filter + «\r\n\r\n»);

}

BracketIfRequired (JoinCondition. And);

FilterParts. Append (joinCondition, new NonPersistentDataQuery (Filter, ParameterCollection));

}

#region Column Name / Value pair

public void AddToFilter (string schemaColumn, object Value)

{

AddToFilter (DefaultJoinCondition, schemaColumn, SQLComparisonOperator. Equal, Value);

}

public void AddToFilter (string schemaColumn, SQLComparisonOperator ComparisonOperator, object Value)

{

AddToFilter (DefaultJoinCondition, schemaColumn, ComparisonOperator, Value);

}

public void AddToFilter (JoinCondition JoinOperator, string schemaColumn, object Value)

{

AddToFilter (JoinOperator, schemaColumn, SQLComparisonOperator. Equal, Value);

}

 /// <summary>

 /// Ultimate calling path for ALL AddToFilter methods.

 /// </summary>

public void AddToFilter (JoinCondition JoinOperator, string schemaColumn, SQLComparisonOperator ComparisonOperator, object Value)

{

BracketIfRequired(JoinOperator);

AddParameter (Value, schemaColumn, ComparisonOperator, JoinOperator);

}

#endregion

#region Column Name / Column Name pair

 //public void AddToFilter (string schemaColumn, SQLComparisonOperator comparisonOperator, string withSchemaColumn)

 // {

 // if (withSchemaColumn == null)

 // {

 // AddToFilter (DefaultJoinCondition, schemaColumn, comparisonOperator, null);

 // }

 // else

 // {

 // SQLColumnComparer filter = new SQLColumnComparer (schemaColumn, comparisonOperator, withSchemaColumn);

 // BracketIfRequired(DefaultJoinCondition);

 // FilterParts. Append (DefaultJoinCondition, filter);

 // }

 // }

#endregion

#endregion

#region FilterByForeignKey

public void FilterByForeignKey (string schemaColumn, BusinessObject[] businessObjects)

{

if (businessObjects!= null && businessObjects. Length > 0)

{

Guid[] guids = new Guid [businessObjects. Length];

for (int i = 0; i < businessObjects. Length; i++)

{

guids[i] = businessObjects[i].PK;

}

AddToFilter (schemaColumn, guids);

}

else

{ // Invalidates query, you're filtering by nothing

IsNoResultQuery = true;

}

}

#endregion

public int? MaximumSecondsBeforeFlaggingSlowSQLQuery;

 /// <summary>

 /// The default join condition; used when adding to the filter without stating a join condition.

 /// </summary>

public JoinCondition DefaultJoinCondition

{

get {return defaultJoinCondition;}

set

{

CheckModificationStatus();

defaultJoinCondition = value;

}

}

JoinCondition defaultJoinCondition;

 /// <summary>

 /// Indicates to refresh existing data from permanent storage where applicable

 /// </summary>

public bool ReLoadExistingRows

{

get {return reLoadExistingRows;}

set

{

CheckModificationStatus();

reLoadExistingRows = value;

}

}

bool reLoadExistingRows;

 /// <summary>

 /// Indicates to never hit the DB to get results - only fetch from local cache

 /// </summary>

public bool FetchOnlyFromLocalCache

{

get {return fetchOnlyFromLocalCache;}

set

{

CheckModificationStatus();

fetchOnlyFromLocalCache = value;

}

}

bool fetchOnlyFromLocalCache;

 /// <summary>

 /// Set the maximum number of rows to return - Leave as default value for all available rows

 /// </summary>

public int? MaximumRows

{

get {return maximumRows;}

set

{

CheckModificationStatus();

maximumRows = value;

}

}

int? maximumRows;

 /// <summary>

 /// Indicates if NOLOCK hints (Isolation Level Read Uncommitted) will be used for the query - Default is set in Registry

 /// </summary>

public bool IsNoLock

{

get {return isNoLock;}

set

{

CheckModificationStatus();

isNoLock = value;

}

}

bool isNoLock;

 /// <summary>

 /// Ignores the ActiveFilter for the business object when retrieving.

 /// </summary>

public bool IgnoreActiveFilter;

 /// <summary>

 /// Indicates the sort order used to retrieve rows. May be suffixed with ascending/descending as per SQL syntax

 /// </summary>

public String OrderBy;

public bool IsPrimaryKeyQuery

{

get

{

ZSqlParameter sqlParam = GetFirstSingleEqualParameter();

return sqlParam!= null

&& sqlParam. SchemaColumn. EndsWith («_PK»)

&& sqlParam. ComparisonOperator == SQLComparisonOperator. Equal;

}

}

 /// <summary>

 /// Returns the 'Equals' parameter from a filter when it is the only parameter

 /// Returns null in all other cases

 /// </summary>

 /// <returns></returns>

public virtual ZSqlParameter GetFirstSingleEqualParameter()

{

return FilterParts. GetFirstSingleEqualParameter();

}

public void CheckModificationStatus()

{

if (! ModificationsEnabled)

{

throw new Exception («Modifications have been disabled on this filter. No further changes should be made. Check the origin of this object (AdditionalFilter / RelationshipFilter etc)»);

}

}

public bool IsTableUsedInQuery (string TableName)

{

return TableList. Contains(TableName);

}

protected void AddUsedTables (Query Query)

{

DBOnlyQuery DBQuery = Query as DBOnlyQuery;

if (DBQuery!= null)

{

AddUsedTable (DBQuery. TableName);

}

foreach (string TableName in Query. TableList)

{

AddUsedTable(TableName);

}

}

protected void AddUsedTable (string TableName)

{

if (! TableList. Contains(TableName))

{

TableList. Add(TableName);

}

}

Приложение 2

Контрольный пример реализации программы

Экранная форма запуска

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


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

  • Сущность и характеристика типов моделей данных: иерархическая, сетевая и реляционная. Базовые понятия реляционной модели данных. Атрибуты, схема отношения базы данных. Условия целостности данных. Связи между таблицами. Общие представления о модели данных.

    курсовая работа [36,1 K], добавлен 29.01.2011

  • Сущности и функциональные зависимости базы данных. Атрибуты и связи. Таблицы базы данных. Построение ER-диаграммы. Организация ввода и корректировки данных. Реляционная схема базы данных. Реализация запросов, получение отчетов. Защита базы данных.

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

  • Понятие реляционной модели данных, целостность ее сущности и ссылок. Основные этапы создания базы данных, связывание таблиц на схеме данных. Проектирование базы данных книжного каталога "Books" с помощью СУБД Microsoft Access и языка запросов SQL.

    курсовая работа [838,9 K], добавлен 25.11.2010

  • Информационная модель в Access как некоторый упрощенный заменитель реального объекта или системы. Основные структуры, определяющие организацию данных и связей между ними; реляционная разновидность организации данных. Пример базы данных в налогообложении.

    реферат [2,5 M], добавлен 25.12.2009

  • Ограничения, присутствующие в предметной области. Проектирование инфологической модели данных. Описание основных сущностей и их атрибутов. Логический и физический уровни модели данных. Реализация базы данных: представления, триггеры, хранимые процедуры.

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

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

    курсовая работа [166,6 K], добавлен 18.07.2012

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

    курсовая работа [152,2 K], добавлен 11.05.2014

  • Иерархическая модель данных. Основные элементы сетевой модели данных. Требования заказчика. Разработка автоматизированной системы управления "Преподаватели". Описание этапов разработки. Установка связей между таблицами. Резервирование базы данных в SQL.

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

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

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

  • Понятие системы базы данных. Реляционная модель и ее характеристики. Целостность в реляционной модели. Реляционная алгебра. Вопросы проектирования БД. Нормальные формы отношений. Проектирование БД методом сущность-связь. ER-диаграммы. Язык SQL.

    курс лекций [353,0 K], добавлен 03.10.2008

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