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