Разработка информационной системы по автоматизации риэлтерской деятельности

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

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

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

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

- проектом, доступным для посторонних лиц.

При определении области действия программного продукта эффективнее всего воспользоваться методикой «будет,/не будет». Ниже определены рамки проекта.

Проект будет:

- сетевым;

- использоваться для приема, передачи и обработки данных;

- предназначен для учета анализов и формирования отчетов;

- применяться в операционных системах Windows.

Проект не будет:

- локальным;

- использоваться в системах отличных от Windows.

4.3 Создание структуры пооперационного перечня работ

Чтобы создать уникальный продукт или услугу необходимо, прежде всего, осуществить некоторую последовательность работ. Основная задача планирования проекта заключается в достаточно точной оценке сроков исполнения и стоимость этих работ. Чтобы добиться наивысшего качества плана проекта необходимо дать как можно более точную оценку сроков исполнения и стоимости работ. Точную оценку можно дать только в том случае, если хорошо представлен состав работ по выполнению проекта, то есть те работы, которые необходимо выполнить для получения необходимого результата. Как только мы составили список всех проектных работ, производится оценка длительности каждой из них, а также выделяются необходимые ресурсы для их выполнения. И только после всего этого можно будет оценить стоимость и сроки выполнения проекта. Именно поэтому определение состава работ является первым и наиболее важным шагом при планировании проекта. /1/

Существует множество вариаций спиральной модели жизненного цикла разработки ПО. Все они подобны модели быстрого прототипирования, а так же представляют собой циклическую перестановку большинства действий, но выполняемые по линейному закону несколько раз, причем каждый раз производятся все более устойчивые поставляемые продукты. Для нашего дипломного проекта была выбрана спиральная модель и посредствам ее показана версия задач и действий необходимых для построения жизненного цикла ЛИС. Показанный на рисунке 4.2 перечень действий и задач, представляет собой схему жизненного цикла ЛИС, каждая модель может быть модифицирована с целью удовлетворения условий, характерных для нашего проекта и состоит и пяти проходов:

- цикл определения проекта;

- цикл обзора требований;

- цикл обзора проекта;

- начальный цикл обзора возможностей продукта;

- заключительный цикл обзора потенциальных возможностей продукта.

Рисунок 4.2 - Пооперационный перечень работ ИС

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

установку соответствия между действиями и планом;

распределение ресурсов проекта;

установку среды проекта.

Данный жизненный цикл разработан для полноценно функционирующей ЛИС, в представленном дипломном проекте реализованы три прохода разработанного жизненного цикла:

- цикл определения проекта;

- цикл обзора требований;

Список сокращений

АРМ - автоматизированное рабочее место;

БД - база данных;

ЖЦ - жизненный цикл;

ИС - информационная система

КДЛ - клинико-диагностическая лаборатория;

КПК - карманный персональный компьютер;

ЛИС - лабораторная информационная система;

ПО - программное обеспечение;

ПП - программный продукт;

ПК - персональный компьютер;

СУБД - система управления базами данных;

COM - component object model;

OLAP - Online Analytical Processing, система обработки аналитической информации;

SLCM - software life cycle model, модель жизненного цикла;

SRS - Software Requirements Specification, спецификация требований;

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

1. «Элиас: Риэлтор. Учет сделок» [Электронный документ] http://www.1c.ru/news/info.jsp?id=2378 Проверен 4.04.08.

2. Риэлтерская программа «Недвижимость». Серия «Идеальный вариант». [Электронный документ] http://idealvariant.com.ua/index.html Проверен 4.04.08.

3. WinМаклер. Программа по аренде и продаже недвижимости. [Электронный документ] http://wmakler.chat.ru/ Проверен 4.04.08

4. Oleg Malushevsky. Personal site. [Электронный документ] http://www.malushevsky.ru/prog/download.php Проверен 4.04.08.

5. Фатрелл Т. Управление программными проектами: достижение оптимального качества при минимуме затрат.: Пер. с англ. / Р.Т. Фатрелл, Д.Ф. Шафер, Л.И. Шафер. - М.: Издательский дом "Вильямс", 2003.

6. Вигерс К. Разработка требований к программному обеспечению: Пер. с англ. / К. Вигерс.:- М.: Издательско-торговый дом «Русская редакция», 2004

7. Мацяшек Л.А. Анализ требований и проектирование систем. Разработка информационных систем с использованием UML. / Л.А. Мацяшек. Пер. с англ. - М.: Издательский дом «Вильямс». - 2002.

8. Вендров А.М. CASE технологии Современные методы и средства проектирования информационных систем. / А.М. Вендров.- М.: Финансы и статистика, 1998. - 193 с.

9. Digital Point - лучший среди равных. Каталог. Acer N311 [Электронный документ] - http://www.pda-digipoint.ru/index.php?productID=91 - 2007. - Проверен 9.06.07.

10. SQL Server General Technical Articles. The Microsoft Data Warehousing Strategy. A Platform for Improved Decision-Making through Easier Data Access and Analysis. MSDN. - 2006.

11. Справочник по Microsoft OLE DB 1.1. / Пер. с англ. - М.: Издательский отдел «Русская редакция» ТОО «Channel Trading Ltd». 1997. - 624 с.

12. Мандел Т. Дизайн интерфейсов: Модели пользовательского интерфейса; Объектно-ориентированные интерфейсы; Этапы разработки интерфейса; Web-интерфейсы. Самоучитель. / Пер. с англ. - М.: ДМК Пресс. 2005. - 425 с.

13. Конноли Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. / Конноли Т., Бегг К.: Пер. с англ. - М.: Изд. Дом «Вильямс», 2001. - 1120 с.

14. Дейт К.Дж. Введение в системы баз данных. / К.Дж. Дейт.: Пер. с англ. - М.: Изд. Дом «Вильямс», 2002. - 1072с.

15. Диго С.М. Проектирование и использование баз данных. / С.М. Диго. - М.: Финансы и статистика. 1995. - 216с.

16. Когаловский М.Р. Энциклопедия технологий баз данных / М.Р. Когаловский. - М.: Финансы и статистика, 2002. - 800с.

17. Боггс У., Боггс М. UML и Rational Rose. 2002. / Боггс У., Боггс М. - М.: ЛОРИ. - 2002. - 582 с.

18. Бергер А.Б. Microsoft SQL Server 2005 Analysis Services. OLAP и многомерный анализ данных / Бергер А.Б., Горбач И.В., Меломед Э. Л. И др. / Под общ. ред. А.Б. Бергера, И.В. Горбач. - СПб.: БХВ-Петербург, 2007. - 928 с.

19. Каленик А.И. Использование новых возможностей Microsoft SQL Server 2005. - М.: «Русская редакция»; СПб.: «Питер», 2006. - 334 с.

20. Буч Г. Объектно-ориентированный анализ и проектирование. / Буч Г.: Пер. с англ. - М: «Издательство Бином», 1999.

21. Буч Г., Рамбо Д., Джекобсон А. UML - руководство пользователя. / Буч Г., Рамбо Д., Джекобсон А.: Пер с англ. - М: «ДМК», 2001

22. Страуструп Б. Язык программирования С++, 3-е изд./Пер. с англ. - М.: «Издательство Бином», СПб: «Невский диалект», 1999. - 991 с.

23. Секунов Н. Самоучитель Visual C++ 6. / Н. Секунов. - СПб: БХВ. - 1999. - 960 с.

24. Шилд Г. Теория и практика С++. - СПб.: BVH-Санкт-Петербург, 1996. - 416 с.

25. Пол А. Объектно-ориентированное программирование на С++. - СПб.; М.: “Невский Диалект” - “Издательство БИНОМ”, 1999. - 462 с.

26. Янг М. Microsoft Visual C++ для профессионалов: Пер. с англ. - К.: ВЕК+, М.: ЭНТРОП, 1997. - 704 с.

27. Трельсен Э. Модель COM и применение ATL 3.0. / Пер. с англ. - СПб: BHV. 2000. - 926 с.

28. Тамрле Л. Введение в тестирование программного обеспечения. : Пер. с англ.. - М.: Издательский дом "Вильямс", 2003. - 368 с.

29. Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. - М.: Мир. - 1981

30. Коллинз Г. Структурные методы разработки систем: от стратегического планирования до тестирования. / Коллинз Г., Блей Дж. Пер. с англ. - М.: Финансы и статистика, 1986. 264 с.

31. Богдатских В.А. Экономика, разработка и использование программного обеспечения ЭВМ: Учебник. / В.А. Богдатских. - М.: Финансы и статистика, 1995. - 288 с.

32. Корнеев, И.К. Информационные технологии в управлении / И.К Корнеев, В.А. Машурцев . - М.:ИНФРА - М, 2001. - 651 с.

33. Хубаев Г.Н. Экономическая оценка потребительского качества программных средств: Текст лекций / Г.Н. Хубаев. - РГЭА.: Ростов-на-Дону, 1997. - 94 с.

34. Хубаев Г.Н. Экономика проектирования и применения банков данных / Г.Н. Хубаев. - Ростов-на-Дону: Изд-во РИСХМ, 1989. - 69 с

35. Руководство по клинической лабораторной диагностике. Часть 2. / под ред. М.А. Базарновой. - К.: «Вища шлола». 1982. -175 с.

36. Абрамов М.Г. Гематологический атлас. / М.Г. Абрамов. - М.: «Медицина». 1985. - 344 с.

Приложение А. Спецификация требований к программному обеспечению

Назначение

Эта спецификация требований описывает функциональные и нефункциональные требования для подсистем кадрового учета и учета отработанного рабочего времени ЛИС КДЛ больницы скорой медицинской помощи. Этот документ предназначен для команды, которая будет реализовывать и проверять корректность работы системы.

Область действия

Областью применения данного программного продукта являются клинико-диагностические лаборатории больниц скорой медицинской помощи.

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

Общее описание

Описание продукта

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

- учет кадров КДЛ;

- учет рабочего времени;

- учет нагрузки работающих сотрудников;

- расчет составляющих заработной платы.

Разработанные программные модули должны иметь интерфейс взаимодействия с основным программным модулем ЛИС.

Доступ к разработанным модулям может осуществляться только тем категориям пользователей, которые связаны с реализацией бизнес-процессов кадрового учета и учета рабочего времени по своим должностным инструкциям. Для КДЛ ГБСМП№2 это зав. лабораторией и старший лаборант отделения. Справочную информацию об отработанном времени и месячных итогах работы могут получать непосредственно сотрудники лаборатории.

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

Классы и характеристики пользователей

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

Класс пользователей

Описание

Заведующий лабораторией

Лицо, отвечающее за функционирование КДЛ в соответствии с функциональными задачами отделения.

Старший медицинский лаборант

Является сотрудником КДЛ. Материально-ответственное лицо. Осуществляет деятельность, связанную с обеспечением нормального функционирования лаборатории. Ему подчиняются средний и младший персонал лаборатории

Персонал

Сотрудники КДЛ.

Общие ограничения

Операционная среда-1. Минимальные требования к операционной системе - Windows 2000.

Ограничения дизайна и реализации-1. База данных должна быть спроектирована на SQL Server 2005.

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

Документация для пользователей

Документация для пользователей-1. Разрабатывается руководство пользователя.

Специфические требования

Функциональные требования

Требование

Описание

1. Ведение справочников

Изменение справочников

должностных инструкций

Ввести измененные данные по должностям, отследить изменения связанные с категориями работников, которых касаются изменения.

штатного расписания

Ввести измененные данные по штатному расписанию, отследить изменения связанные с работников, которых касаются изменения

лабораторных отделов

Ввести измененные данные об отделах лаборатории, осуществить кадровые изменения сотрудников, связанные с введенными изменениями

2. Кадровый учет

Зарегистрировать вновь принятого сотрудника

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

Изменить должность сотрудника

Ввести измененные данные о должности, при необходимости изменить рабочее место.

Учесть прохождение курсов усовершенствования

Ввести данные о времени прохождения переподготовки, полученном сертификате, специализации.

Зарегистрировать получение категории

Ввести данные о получении документа, подтверждающего категорию сотрудника.

Подтвердить категорию

Ввести данные о получении документа, подтверждающего категорию.

Уволить сотрудника

Ввести информацию о дате увольнения сотрудника и перевести данные о нем в хранилище, вывести сотрудника из штата

Зарегистрировать заявление о работе по совместительству

Ввести данные о заявлении и учесть в штатном расписании информации о части занятой ставки

3. Учет рабочего времени

Сформировать нагрузку на месяц по дежурным отделам

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

Внести изменения по замене

Изменить расписание сотрудников, участвующих в операции подмены

Учесть рабочее время за день

Ввести данные о сотрудниках, вышедших на работу, и отработанном за день времени

Сформировать табель на месяц

Составить расписание рабочей нагрузки на новый месяц

Закрыть табель

Закончить работу с месячным табелем

Просмотреть данные о выходах

Для конкретного сотрудника вывести информацию об отработанном времени

Просмотреть расписание сотрудника

Просмотреть информацию о планируемой нагрузке сотрудника на месяц

Требования к внешнему интерфейсу

Интерфейсы пользователя

Интерфейсы пользователя-1. Экраны вывода должны соответствовать общепринятым стандартам.

Интерфейсы пользователя-2. Система должна обеспечивать ссылку на справку на каждой форме, объясняющую, как пользоваться этой формой.

Интерфейсы пользователя-3. Формы должны предоставлять полную возможность навигации и выбор при помощи клавиатуры и мыши.

Требования к системе

Требование

Описание

Архитектура

Сервер данных (MS SQL Server 2005)

Среда разработки

Visual Studio 7.5

Язык программирования

С++, sql - запросы

Операционная система

Windows Server 2000, Windows XP

Хранилище данных

MS SQL Server 2005

Требования к производительности

Требования к производительности не определены.

Требования к охране труда

Требования к охране труда не определены.

Требования к безопасности

Требования к безопасности не определены.

Атрибуты качества ПО

Доступность-1. Система должна быть доступна круглосуточно для сохранения результатов исследования как дневных, так и дежурных служб КДЛ.

Надежность-1. Система должна восстанавливать незавершенные отчеты в случае сбоя в сети или системе.

Приложение Б. Прототиты пользовательского интерфейса

Рисунок Б.1 - Прототип диалогового окна ввода персонала.

Рисунок Б.2 - Отладка модуля ввода персонала с использованием средства «ActiveX Control Test Container».

Приложение В. Атрибуты управляющих таблиц проектируемой подсистемы ЛИС

Имя поля

Тип

Значение

Атрибуты таблицы «Должность»

ID

Числовой

Счетчик

Должность

Текстовый

Название должности сотрудника

ID_Образования

Числовой

Идентификатор требуемого типа образования

Специализация

Логический

Признак необходимости прохождения специализации

Сертификат

Логический

Признак необходимости сертификата

Атрибуты таблицы «Образование»

ID

Числовой

Счетчик

ID_ Персонал

Числовой

Идентификатор сотрудника

ID_Учебное заведение

Числовой

Идентификатор учебного заведения

Дата окончания

Дата/время

Дата окончания учетного заведения

ID_Специальность

Числовой

Идентификатор специальности

ID_Степень

Числовой

Идентификатор ученой степени

Атрибуты таблицы «Отдел»

ID

Числовой

Счетчик

Отдел

Текстовый

Название отдела КДЛ

Примечание

Текстовый

Назначение отдела

Атрибуты таблицы «Персонал»

ID

Числовой

Счетчик

Фамилия

Текстовый

Имя

Текстовый

Отчество

Текстовый

Адрес

Текстовый

Телефон (домашний)

Текстовый

Телефон (мобильный)

Текстовый

N паспорта

Текстовый

Когда выдан

Дата/время

Кем выдан

Текстовый

ИНН

Текстовый

№ страхового полиса

Текстовый

ID_образование

Числовой

Идентификатор образования

Атрибуты таблицы «Сотрудник»

ID

Числовой

Счетчик

ID_Персонал

Числовой

Идентификатор персонала

Прием

Дата/время

Дата приема на работу

Увольнение

Дата/время

Дата увольнения

Имя поля

Тип

Значение

N приказа

Текстовый

Номер приказа о приеме на работу

Дата приказа

Дата/время

Дата приказа о приеме

N приказа

Текстовый

Номер приказа об увольнении

Дата приказа

Дата/время

Дата приказа об увольнении

Атрибуты таблицы «СотрудникДолжность»

ID

Числовой

Счетчик

ID_Сотрудник

Числовой

Идентификатор сотрудник

ID_Должность по штату

Числовой

Идентификатор должности по штату

Прием

Дата/время

Дата приема на должность

Увольнение

Дата/время

Дата увольнения или перевода

Нагрузка

Действительное с плавающей точкой

Часть занимаемой ставки

N приказа

Текстовый

Номер приказа о приеме или переводе на должность

Дата приказа

Дата/время

Дата приказа о приеме

N приказа

Текстовый

Номер приказа об увольнении или переводе на другую должность

Дата приказа

Дата/время

Дата приказа об увольнении или переводе

Атрибуты таблицы «Специальность»

ID

Числовой

Счетчик

Название

Текстовый

Название специальности

Номер

Текстовый

Номер специальности

ID_Образования

Числовой

Идентификатор типа образования

Атрибуты таблицы «Учебное заведение»

ID

Числовой

Счетчик

Название

Текстовый

Название заведения

Полное название

Текстовый

Полное название учебного заведения

Страна

Текстовый

Город

Текстовый

Адрес

Текстовый

Атрибуты таблицы «Штаты»

ID

Числовой

Счетчик

ID_Должность

Числовой

Идентификатор должности

Ставки

Действительное с плавающей точкой

Число ставок на отдел по приказу

ID_Отдел

Числовой

Идентификатор отдела

Приложение Г. DDL сценарий создания объектов базы данных

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Тип образования]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[Тип образования](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Тип образования] [nvarchar](50) NULL,

CONSTRAINT [PK_Тип образования] PRIMARY KEY CLUSTERED

([ID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Модули системы]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[Модули системы](

[ID] [int] NOT NULL,

[Назначение] [nvarchar](50) NULL,

[Название] [nvarchar](50) NULL,

CONSTRAINT [PK_Модули системы] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Тип степени]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[Тип степени](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Степень] [nvarchar](50) NULL,

[Сокращение] [nchar](10) NULL,

CONSTRAINT [PK_Тип степени] PRIMARY KEY CLUSTERED

([ID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Учебные заведения]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[Учебные заведения](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Название] [nvarchar](50) NOT NULL,

[Полное название] [nvarchar](50) NULL,

[Страна] [nvarchar](50) NULL,

[Город] [nvarchar](50) NULL,

[Адрес] [nvarchar](50) NULL,

CONSTRAINT [PK_Учебные заведения] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Отделы]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[Отделы](

[ID] [int] NOT NULL,

[Отдел] [nvarchar](50) NULL,

CONSTRAINT [PK_Отделы] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Штаты]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[Штаты](

[ID] [int] IDENTITY(1,1) NOT NULL,

[ID_Должность] [int] NULL,

[Ставки] [real] NULL,

[ID_Отдел] [int] NOT NULL,

CONSTRAINT [PK_Штаты] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[МодульДолжность]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[МодульДолжность](

[ID] [int] NOT NULL,

[ID_Должность] [int] NULL,

[ID_Модуль] [int] NULL,

CONSTRAINT [PK_МодульДолжность] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Должность]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[Должность](

[д] [int] IDENTITY(1,1) NOT NULL,

[Должность] [nvarchar](50) NOT NULL,

[ID_Образование] [int] NULL,

[Специализация] [smallint] NULL,

[Сертификат] [smallint] NULL,

CONSTRAINT [PK_Должность] PRIMARY KEY CLUSTERED

(

[д] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Специальность]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[Специальность](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Название] [nvarchar](50) NOT NULL,

[Номер] [nchar](10) NULL,

[ID_Тип образования] [int] NULL,

CONSTRAINT [PK_Специализация] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Персонал]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[Персонал](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Фамилия] [nvarchar](50) NOT NULL,

[Имя] [nvarchar](50) NULL,

[Отчество] [nvarchar](50) NULL,

[Дата Рождения] [datetime] NULL,

[Адрес] [nvarchar](50) NULL,

[Телефон (домашний)] [nvarchar](50) NULL,

[Телефон (мобильный)] [nvarchar](50) NULL,

[N паспорта] [nvarchar](50) NULL,

[Когда выдан] [datetime] NULL,

[Кем выдан] [nvarchar](50) NULL,

[ИНН] [nvarchar](50) NULL,

[N страхового полиса] [nvarchar](50) NULL,

[ID_Образование] [int] NULL,

CONSTRAINT [PK_Персонал] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Образование]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[Образование](

[ID] [int] NOT NULL,

[ID_Песонал] [int] NOT NULL,

[ID_Учебное заведение] [int] NOT NULL,

[Дата окончания] [datetime] NULL,

[ID_Специальность] [int] NULL,

[ID_Степень] [int] NULL,

CONSTRAINT [PK_Образование_1] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[СотрудникДолжность]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[СотрудникДолжность](

[ID] [int] NOT NULL,

[ID_Сотрудник] [int] NULL,

[ID_Должность_по_штату] [int] NULL,

[Назначение] [datetime] NULL,

[Увольнение] [datetime] NOT NULL,

[Нагрузка] [real] NULL,

CONSTRAINT [PK_СотрудникДолжность] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Сотрудник]') AND type in (N'U'))

BEGIN

CREATE TABLE [dbo].[Сотрудник](

[ID] [int] IDENTITY(1,1) NOT NULL,

[ID_Персонал] [int] NOT NULL,

[Прием] [datetime] NOT NULL,

[Увольнение] [datetime] NULL,

CONSTRAINT [PK_Сотрудник] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

END

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

IF NOT EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[Работающие сотрудники]'))

EXEC dbo.sp_executesql @statement = N'CREATE VIEW [dbo].[Работающие сотрудники]

AS

SELECT dbo.Персонал.Фамилия, dbo.Персонал.Имя, dbo.Персонал.Отчество, dbo.Сотрудник.Прием, dbo.Персонал.[Дата Рождения], dbo.Персонал.Адрес,

dbo.Персонал.[Телефон (домашний)], dbo.Персонал.[Телефон (мобильный)]

FROM dbo.Персонал INNER JOIN

dbo.Сотрудник ON dbo.Персонал.ID = dbo.Сотрудник.ID_Персонал

WHERE (dbo.Сотрудник.Увольнение IS NULL)

'

GO

EXEC sys.sp_addextendedproperty @name=N'MS_DiagramPaneCount', @value=1 ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'VIEW', @level1name=N'Работающие сотрудники'

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Госпитализация_Отделения больницы]') AND parent_object_id = OBJECT_ID(N'[dbo].[Госпитализация]'))

ALTER TABLE [dbo].[Госпитализация] WITH CHECK ADD CONSTRAINT [FK_Госпитализация_Отделения больницы] FOREIGN KEY([ID_Отделение])

REFERENCES [dbo].[Отделения больницы] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Госпитализация_Пациент]') AND parent_object_id = OBJECT_ID(N'[dbo].[Госпитализация]'))

ALTER TABLE [dbo].[Госпитализация] WITH CHECK ADD CONSTRAINT [FK_Госпитализация_Пациент] FOREIGN KEY([ID_Пациент])

REFERENCES [dbo].[Пациент] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Штаты_Должность]') AND parent_object_id = OBJECT_ID(N'[dbo].[Штаты]'))

ALTER TABLE [dbo].[Штаты] WITH CHECK ADD CONSTRAINT [FK_Штаты_Должность] FOREIGN KEY([ID_Должность])

REFERENCES [dbo].[Должность] ([д])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Штаты_Отделы]') AND parent_object_id = OBJECT_ID(N'[dbo].[Штаты]'))

ALTER TABLE [dbo].[Штаты] WITH CHECK ADD CONSTRAINT [FK_Штаты_Отделы] FOREIGN KEY([ID_Отдел])

REFERENCES [dbo].[Отделы] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_МодульДолжность_Должность]') AND parent_object_id = OBJECT_ID(N'[dbo].[МодульДолжность]'))

ALTER TABLE [dbo].[МодульДолжность] WITH CHECK ADD CONSTRAINT [FK_МодульДолжность_Должность] FOREIGN KEY([ID_Должность])

REFERENCES [dbo].[Должность] ([д])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_МодульДолжность_Модули системы]') AND parent_object_id = OBJECT_ID(N'[dbo].[МодульДолжность]'))

ALTER TABLE [dbo].[МодульДолжность] WITH CHECK ADD CONSTRAINT [FK_МодульДолжность_Модули системы] FOREIGN KEY([ID_Модуль])

REFERENCES [dbo].[Модули системы] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Должность_Тип образования]') AND parent_object_id = OBJECT_ID(N'[dbo].[Должность]'))

ALTER TABLE [dbo].[Должность] WITH CHECK ADD CONSTRAINT [FK_Должность_Тип образования] FOREIGN KEY([ID_Образование])

REFERENCES [dbo].[Тип образования] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Специальность_Тип образования]') AND parent_object_id = OBJECT_ID(N'[dbo].[Специальность]'))

ALTER TABLE [dbo].[Специальность] WITH CHECK ADD CONSTRAINT [FK_Специальность_Тип образования] FOREIGN KEY([ID_Тип образования])

REFERENCES [dbo].[Тип образования] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Персонал_Тип образования]') AND parent_object_id = OBJECT_ID(N'[dbo].[Персонал]'))

ALTER TABLE [dbo].[Персонал] WITH CHECK ADD CONSTRAINT [FK_Персонал_Тип образования] FOREIGN KEY([ID_Образование])

REFERENCES [dbo].[Тип образования] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Персонал_Тип образования1]') AND parent_object_id = OBJECT_ID(N'[dbo].[Персонал]'))

ALTER TABLE [dbo].[Персонал] WITH CHECK ADD CONSTRAINT [FK_Персонал_Тип образования1] FOREIGN KEY([ID_Образование])

REFERENCES [dbo].[Тип образования] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Образование_Персонал]') AND parent_object_id = OBJECT_ID(N'[dbo].[Образование]'))

ALTER TABLE [dbo].[Образование] WITH CHECK ADD CONSTRAINT [FK_Образование_Персонал] FOREIGN KEY([ID_Песонал])

REFERENCES [dbo].[Персонал] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Образование_Специальность]') AND parent_object_id = OBJECT_ID(N'[dbo].[Образование]'))

ALTER TABLE [dbo].[Образование] WITH CHECK ADD CONSTRAINT [FK_Образование_Специальность] FOREIGN KEY([ID_Специальность])

REFERENCES [dbo].[Специальность] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Образование_Тип степени]') AND parent_object_id = OBJECT_ID(N'[dbo].[Образование]'))

ALTER TABLE [dbo].[Образование] WITH CHECK ADD CONSTRAINT [FK_Образование_Тип степени] FOREIGN KEY([ID_Степень])

REFERENCES [dbo].[Тип степени] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Образование_Учебные заведения]') AND parent_object_id = OBJECT_ID(N'[dbo].[Образование]'))

ALTER TABLE [dbo].[Образование] WITH CHECK ADD CONSTRAINT [FK_Образование_Учебные заведения] FOREIGN KEY([ID_Учебное заведение])

REFERENCES [dbo].[Учебные заведения] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_СотрудникДолжность_Сотрудник]') AND parent_object_id = OBJECT_ID(N'[dbo].[СотрудникДолжность]'))

ALTER TABLE [dbo].[СотрудникДолжность] WITH CHECK ADD CONSTRAINT [FK_СотрудникДолжность_Сотрудник] FOREIGN KEY([ID_Сотрудник])

REFERENCES [dbo].[Сотрудник] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_СотрудникДолжность_Штаты]') AND parent_object_id = OBJECT_ID(N'[dbo].[СотрудникДолжность]'))

ALTER TABLE [dbo].[СотрудникДолжность] WITH CHECK ADD CONSTRAINT [FK_СотрудникДолжность_Штаты] FOREIGN KEY([ID_Должность_по_штату])

REFERENCES [dbo].[Штаты] ([ID])

GO

IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Сотрудник_Персонал]') AND parent_object_id = OBJECT_ID(N'[dbo].[Сотрудник]'))

ALTER TABLE [dbo].[Сотрудник] WITH CHECK ADD CONSTRAINT [FK_Сотрудник_Персонал] FOREIGN KEY([ID_Персонал])

REFERENCES [dbo].[Персонал] ([ID])

Приложение Д - Тексты программ

Заголовочный файл класса реализации

// PersotalDlg.h : Declaration of the CPersotalDlg

#pragma once

#include "resource.h" // main symbols

#include <atlctl.h>

#include "PersonalATL.h"

#include "_IPersotalDlgEvents_CP.h"

#include "DataRowset.h"

#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)

#error "Single-threaded COM objects are not properly supported on Windows CE platform, such as the Windows Mobile platforms that do not include full DCOM support. Define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA to force ATL to support creating single-thread COM object's and allow use of it's single-threaded COM object implementations. The threading model in your rgs file was set to 'Free' as that is the only threading model supported in non DCOM Windows CE platforms."

#endif

// CPersonalDlg

class ATL_NO_VTABLE CPersonalDlg :

public CComObjectRootEx<CComSingleThreadModel>,

public CStockPropImpl<CPersonalDlg, IPersonalDlg>,

public IPersistStreamInitImpl<CPersonalDlg>,

public IOleControlImpl<CPersonalDlg>,

public IOleObjectImpl<CPersonalDlg>,

public IOleInPlaceActiveObjectImpl<CPersonalDlg>,

public IViewObjectExImpl<CPersonalDlg>,

public IOleInPlaceObjectWindowlessImpl<CPersonalDlg>,

public ISupportErrorInfo,

public IConnectionPointContainerImpl<CPersonalDlg>,

public CProxy_IPersonalDlgEvents<CPersonalDlg>,

public IPersistStorageImpl<CPersonalDlg>,

public ISpecifyPropertyPagesImpl<CPersonalDlg>,

public IQuickActivateImpl<CPersonalDlg>,

#ifndef _WIN32_WCE

public IDataObjectImpl<CPersonalDlg>,

#endif

public IProvideClassInfo2Impl<&CLSID_PersonalDlg, &__uuidof(_IPersonalDlgEvents), &LIBID_PersonalATLLib>,

#ifdef _WIN32_WCE

public IObjectSafetyImpl<CPersonalDlg, INTERFACESAFE_FOR_UNTRUSTED_CALLER>,

#endif

public CComCoClass<CPersonalDlg, &CLSID_PersonalDlg>,

public CComCompositeControl<CPersonalDlg>

{

public:

CPersonalDlg()

{

m_bWindowOnly = TRUE;

CalcExtent(m_sizeExtent);

}

DECLARE_OLEMISC_STATUS(OLEMISC_RECOMPOSEONRESIZE |

OLEMISC_CANTLINKINSIDE |

OLEMISC_INSIDEOUT |

OLEMISC_ACTIVATEWHENVISIBLE |

OLEMISC_SETCLIENTSITEFIRST

)

DECLARE_REGISTRY_RESOURCEID(IDR_PERSOTALDLG)

BEGIN_COM_MAP(CPersonalDlg)

COM_INTERFACE_ENTRY(IPersonalDlg)

COM_INTERFACE_ENTRY(IDispatch)

COM_INTERFACE_ENTRY(IViewObjectEx)

COM_INTERFACE_ENTRY(IViewObject2)

COM_INTERFACE_ENTRY(IViewObject)

COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)

COM_INTERFACE_ENTRY(IOleInPlaceObject)

COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)

COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)

COM_INTERFACE_ENTRY(IOleControl)

COM_INTERFACE_ENTRY(IOleObject)

COM_INTERFACE_ENTRY(IPersistStreamInit)

COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)

COM_INTERFACE_ENTRY(ISupportErrorInfo)

COM_INTERFACE_ENTRY(IConnectionPointContainer)

COM_INTERFACE_ENTRY(ISpecifyPropertyPages)

COM_INTERFACE_ENTRY(IQuickActivate)

COM_INTERFACE_ENTRY(IPersistStorage)

#ifndef _WIN32_WCE

COM_INTERFACE_ENTRY(IDataObject)

#endif

COM_INTERFACE_ENTRY(IProvideClassInfo)

COM_INTERFACE_ENTRY(IProvideClassInfo2)

#ifdef _WIN32_WCE // IObjectSafety is required on Windows CE for the control to be loaded correctly

COM_INTERFACE_ENTRY_IID(IID_IObjectSafety, IObjectSafety)

#endif

END_COM_MAP()

BEGIN_PROP_MAP(CPersonalDlg)

PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)

PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)

PROP_ENTRY("AutoSize", DISPID_AUTOSIZE, CLSID_NULL)

PROP_ENTRY("TabStop", DISPID_TABSTOP, CLSID_NULL)

PROP_ENTRY("Text", DISPID_TEXT, CLSID_NULL)

// Example entries

// PROP_ENTRY("Property Description", dispid, clsid)

// PROP_PAGE(CLSID_StockColorPage)

END_PROP_MAP()

BEGIN_CONNECTION_POINT_MAP(CPersonalDlg)

CONNECTION_POINT_ENTRY(__uuidof(_IPersonalDlgEvents))

END_CONNECTION_POINT_MAP()

BEGIN_MSG_MAP(CPersonalDlg)

MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)

NOTIFY_HANDLER(IDC_DATETIMEPICKER, DTN_DATETIMECHANGE, OnDtnDatetimechangeDatetimepicker)

MESSAGE_HANDLER(WM_DESTROY, OnDestroy)

NOTIFY_HANDLER(IDC_DATEPASP, DTN_DATETIMECHANGE, OnDtnDatetimechangeDatepasp)

COMMAND_HANDLER(IDC_TYPE_ED, CBN_SELCHANGE, OnCbnSelchangeTypeEd)

COMMAND_HANDLER(IDC_FAMILY, EN_UPDATE, OnEnUpdateFamily)

COMMAND_HANDLER(IDC_NEXT, BN_CLICKED, OnBnClickedNext)

COMMAND_HANDLER(IDC_PROPERTY, BN_CLICKED, OnBnClickedProperty)

COMMAND_HANDLER(IDC_END, BN_CLICKED, OnBnClickedEnd)

COMMAND_HANDLER(IDC_PREV, BN_CLICKED, OnBnClickedPrev)

COMMAND_HANDLER(IDC_BEGIN, BN_CLICKED, OnBnClickedBegin)

COMMAND_HANDLER(IDC_DELETE, BN_CLICKED, OnBnClickedDelete)

COMMAND_HANDLER(IDC_ADD, BN_CLICKED, OnBnClickedAdd)

COMMAND_HANDLER(IDC_APPLY, BN_CLICKED, OnBnClickedApply)

CHAIN_MSG_MAP(CComCompositeControl<CPersonalDlg>)

END_MSG_MAP()

BEGIN_SINK_MAP(CPersonalDlg)

//Make sure the Event Handlers have __stdcall calling convention

END_SINK_MAP()

STDMETHOD(OnAmbientPropertyChange)(DISPID dispid)

{

if (dispid == DISPID_AMBIENT_BACKCOLOR)

{

SetBackgroundColorFromAmbient();

FireViewChange();

}

return IOleControlImpl<CPersonalDlg>::OnAmbientPropertyChange(dispid);

}

// ISupportsErrorInfo

STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)

{

static const IID* arr[] =

{

&IID_IPersonalDlg,

};

for (int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)

{

if (InlineIsEqualGUID(*arr[i], riid))

return S_OK;

}

return S_FALSE;

}

// IViewObjectEx

DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)

// IPersonalDlg

void OnAutoSizeChanged()

{ ATLTRACE(_T("OnAutoSizeChanged\n"));}

BOOL m_bTabStop;

void OnTabStopChanged()

{

ATLTRACE(_T("OnTabStopChanged\n"));

}

CComBSTR m_bstrText;

void OnTextChanged()

{

ATLTRACE(_T("OnTextChanged\n"));

}

enum { IDD = IDD_PERSOTALDLG };

DECLARE_PROTECT_FINAL_CONSTRUCT()

HRESULT FinalConstruct()

{

N=NULL;

Nmax = 0;

return S_OK;

}

protected:

int *N;

int Nmax;

struct Personal mData;

public:

LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);

LRESULT OnDestroy(UINT, WPARAM, LPARAM, BOOL& /*bHandled*/);

LRESULT OnDtnDatetimechangeDatetimepicker(int, LPNMHDR pNMHDR, BOOL&);

LRESULT OnDtnDatetimechangeDatepasp(int, LPNMHDR pNMHDR, BOOL&);

LRESULT OnCbnSelchangeTypeEd(WORD, WORD, HWND, BOOL& /*bHandled*/);

LRESULT OnEnUpdateFamily(WORD, WORD, HWND, BOOL& /*bHandled*/);

LRESULT OnBnClickedNext(WORD, WORD, HWND /*hWndCtl*/, BOOL& /*bHandled*/);

LRESULT OnBnClickedProperty(WORD, WORD, HWND, BOOL& /*bHandled*/);

LRESULT OnBnClickedEnd(WORD, WORD, HWND /*hWndCtl*/, BOOL& /*bHandled*/);

LRESULT OnBnClickedPrev(WORD, WORD, HWND /*hWndCtl*/, BOOL& /*bHandled*/);

LRESULT OnBnClickedBegin(WORD, WORD, HWND, BOOL& /*bHandled*/);

LRESULT OnBnClickedDelete(WORD, WORD, HWND, BOOL& /*bHandled*/);

LRESULT OnBnClickedAdd(WORD, WORD, HWND, BOOL& /*bHandled*/);

LRESULT OnBnClickedApply(WORD, WORD, HWND, BOOL& /*bHandled*/);

};

OBJECT_ENTRY_AUTO(__uuidof(PersonalDlg), CPersonalDlg)

Класс возвращаемой выборки CDataRowsetAccessor

class CDataRowsetAccessor

{

public:

struct Personal m_Data;

DBSTATUS m_dwIDStatus;

DBSTATUS m_dwcolumn0Status;

DBSTATUS m_dwcolumn1Status;

DBSTATUS m_dwcolumn2Status;

DBSTATUS m_dwcolumn3Status;

DBSTATUS m_dwcolumn5Status;

DBSTATUS m_dwcolumn6Status;

DBSTATUS m_dwNStatus;

DBSTATUS m_dwcolumn7Status;

DBSTATUS m_dwcolumn8Status;

DBSTATUS m_dwcolumn9Status;

DBSTATUS m_dwN1Status;

DBSTATUS m_dwID_Status;

DBSTATUS m_dwcolumn4Status;

DBLENGTH m_dwIDLength;

DBLENGTH m_dwcolumn0Length;

DBLENGTH m_dwcolumn1Length;

DBLENGTH m_dwcolumn2Length;

DBLENGTH m_dwcolumn3Length;

DBLENGTH m_dwcolumn5Length;

DBLENGTH m_dwcolumn6Length;

DBLENGTH m_dwNLength;

DBLENGTH m_dwcolumn7Length;

DBLENGTH m_dwcolumn8Length;

DBLENGTH m_dwcolumn9Length;

DBLENGTH m_dwN1Length;

DBLENGTH m_dwID_Length;

DBLENGTH m_dwcolumn4Length;

void GetRowsetProperties(CDBPropSet* pPropSet)

{

pPropSet->AddProperty(DBPROP_CANFETCHBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);

pPropSet->AddProperty(DBPROP_CANSCROLLBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);

// pPropSet->AddProperty(DBPROP_ISequentialStream, true);

pPropSet->AddProperty(DBPROP_IRowsetChange, true, DBPROPOPTIONS_OPTIONAL);

pPropSet->AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE);

}

HRESULT OpenDataSource()

{

CDataSource _db;

HRESULT hr;

hr = _db.OpenFromInitializationString(L"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Laboratory;Data Source=ANTENNTE-16F3B8;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=ANTENNTE-16F3B8;Use Encryption for Data=False;Tag with column collation when possible=False");

if (FAILED(hr))

{

#ifdef _DEBUG

AtlTraceErrorRecords(hr);

#endif

return hr;

}

return m_session.Open(_db);

}

void CloseDataSource()

{m_session.Close();}

operator const CSession&()

{return m_session;}

CSession m_session;

DEFINE_COMMAND_EX(CDataRowsetAccessor, L"SELECT * FROM [Персонал]")

// In order to fix several issues with some providers, the code below may bind

// columns in a different order than reported by the provider

BEGIN_COLUMN_MAP(CDataRowsetAccessor)

COLUMN_ENTRY_LENGTH_STATUS(1, m_Data.m_ID, m_dwIDLength, m_dwIDStatus)

COLUMN_ENTRY_LENGTH_STATUS(2, m_Data.m_column0, m_dwcolumn0Length, m_dwcolumn0Status)

COLUMN_ENTRY_LENGTH_STATUS(3, m_Data.m_column1, m_dwcolumn1Length, m_dwcolumn1Status)

COLUMN_ENTRY_LENGTH_STATUS(4, m_Data.m_column2, m_dwcolumn2Length, m_dwcolumn2Status)

COLUMN_ENTRY_LENGTH_STATUS(5, m_Data.m_column3, m_dwcolumn3Length, m_dwcolumn3Status)

COLUMN_ENTRY_LENGTH_STATUS(6, m_Data.m_column5, m_dwcolumn5Length, m_dwcolumn5Status)

COLUMN_ENTRY_LENGTH_STATUS(7, m_Data.m_column6, m_dwcolumn6Length, m_dwcolumn6Status)

COLUMN_ENTRY_LENGTH_STATUS(8, m_Data.m_N, m_dwNLength, m_dwNStatus)

COLUMN_ENTRY_LENGTH_STATUS(9, m_Data.m_column7, m_dwcolumn7Length, m_dwcolumn7Status)

COLUMN_ENTRY_LENGTH_STATUS(10, m_Data.m_column8, m_dwcolumn8Length, m_dwcolumn8Status)

COLUMN_ENTRY_LENGTH_STATUS(11, m_Data.m_column9, m_dwcolumn9Length, m_dwcolumn9Status)

COLUMN_ENTRY_LENGTH_STATUS(12, m_Data.m_N1, m_dwN1Length, m_dwN1Status)

COLUMN_ENTRY_LENGTH_STATUS(13, m_Data.m_column4, m_dwcolumn4Length, m_dwcolumn4Status)

COLUMN_ENTRY_LENGTH_STATUS(14, m_Data.m_ID_, m_dwID_Length, m_dwID_Status)

END_COLUMN_MAP()

};

Приложение Е. ОБОСНОВАНИЕ МОДЕЛИ ВЫБОРА ЖИЗНЕННОГО ЦИКЛА

Таблица Е.1 - Выбор модели ЖЦ на основе характеристик требований

Требования

Каскадная

V-образная

Прототипирование

Спиральная

RAD

Инкрементная

Являются ли требования легко определимыми и/или хорошо известными

Да

Да

Нет

Нет

Да

Нет

Могут ли требования заранее определятся в цикле

Да

Да

Нет

Нет

Да

Да

Часто ли изменяются требования в цикле

Нет

Нет

Да

Да

Нет

Нет

Нужно ли демонстрировать требования с целью определения

Нет

Нет

Да

Да

Да

Нет

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

Нет

Нет

Да

Да

Да

Нет

Будут ли требования отражать сложность системы

Нет

Нет

Да

Да

Нет

Да

Обладает ли требование функциональными свойствами на раннем этапе

Нет

Нет

Да

Да

Да

Да

Таблица Е.2 - Выбор модели ЖЦ на основе характеристик участников команды разработчиков

Команда разработчиков проекта

Каскадная

V-образная

Прототипирование

Спиральная

RAD

Инкрементная

Являются ли проблемы предметной области проекта новыми для большинства разработчиков

Нет

Нет

Да

Да

Нет

Нет

Является ли технология предметной области проекта новой для большинства разработчиков

Да

Да

Нет

Да

Нет

Да

Являются ли инструменты, используемые проектом, новыми для большинства разработчиков

Да

Да

Нет

Да

Нет

Нет

Изменяются ли роли участников проекта во время ЖЦ

Нет

Нет

Да

Да

Нет

Да

Могут ли разработчики проекта пройти обучение

Нет

Да

Нет

Нет

Да

Да

Является ли структура более значимой для разработчиков, чем гибкость

Да

Да

Нет

Нет

Нет

Да

Будет ли менеджер проекта строго отслеживать прогресс проекта

Да

Да

Нет

Да

Нет

Да

Важна легкость распределения ресурсов

Да

Да

Нет

Нет

Да

Да

Приемлет ли команда равноправные обзоры инспекций, менеджмент/обзоры заказчиков, а так же стадии

Да

Да

Да

Да

Нет

Да

Таблица Е.З - Выбор модели ЖЦ на основе характеристик типа проектов и рисков

Тип проекта и риски

Каскадная

V-образная

Прототипирование

Спиральная

RAD

Инкрементная

Будет ли проект идентифицировать новое направление продукта для организации

Нет

Нет

Да

Да

Нет

Да

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

Нет

Да

Да

Да

Да

Да

Будет ли проект являться расширением существующей системы

Нет

Да

Нет

Нет

Да

Да

Будет ли финансирование проекта стабильным на всем протяжении ЖЦ

Да

Да

Да

Нет

Да

Нет

Ожидается ли длительная эксплуатация продукта в организации

Да

Да

Нет

Да

Нет

Да

Должна ли быть высокая степень надежности

Нет

Да

Нет

Да

Нет

Да

Будет ли система изменяться, возможно, с применением непредвиденных методов, на этапе сопровождения

Нет

Нет

Да

Да

Нет

Да

Является ли график ограниченным

Нет

Нет

Да

Да

Да

Да

Являются ли «прозрачными» интерфейсные модули

Да

Да

Нет

Нет

Нет

Да

Доступны ли повторно используемые компоненты

Нет

Нет

Да

Да

Да

Нет

Являются ли достаточными ресурсы (время, деньги, инструменты, персонал)

Нет

Нет

Да

Да

Нет

Нет

Таблица Е.4 - Выбор модели ЖЦ на основе характеристик пользователей

Коллектив пользователей

Каскадная

V-образная

Прототипирование

Спиральная

RAD

Инкрементная

Будет ли присутствие пользователей ограниченно в ЖЦ

Да

Да

Нет

Да

Нет

Да

Будут ли пользователи знакомы с определением системы

Нет

Нет

Да

Да

Нет

Да

Будут ли пользователи ознакомлены с проблемами предметной области

Нет

Нет

Да

Нет

Да

Да

Будут ли пользователи вовлечены во все фазы ЖЦ

Нет

Нет

Да

Нет

Да

Нет

Будет ли заказчик отслеживать ход выполнения проекта

Нет

Нет

Да

Да

Нет

Нет

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


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

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