Разработка объектно-ориентированной модели информационной подсистемы для деканата ВУЗа (учет успеваемости студентов)

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,43 Mb
  • Опубликовано:
    2011-06-28
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка объектно-ориентированной модели информационной подсистемы для деканата ВУЗа (учет успеваемости студентов)

СОДЕРЖАНИЕ

Введение

. Краткая характеристика предметной области

.1 Общая характеристика деканата вуза

.2 Обоснование актуальности разработки объектно-ориентированной модели информационной подсистемы для деканата вуза

.3 Формулировка задач проектирования

. Создание диаграммы прецедентов

. Создание диаграммы последовательности

. Создание диаграммы сотрудничества

. Создание диаграммы классов

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

. Создание диаграммы состояний для классов и диаграммы компонентов

. Создание диаграммы размещения

. Генерация программного кода С++

Заключение

Библиографический список

Приложение А. Сгенерированный Rational Rose листинг кода. Приложения на языке С++

ВВЕДЕНИЕ

автоматизация учет студент программный

Курсовая работа представляет собой проектирование информационной подсистемы для деканата (учет успеваемости студентов) «StudentCount». Разработка данной информационной подсистемы необходима для автоматизации учета студентов и их успеваемости, для более быстрой и эффективной работы деканата, для своевременного внесения изменений в учебную карточку студентов. Несовершенство существующей системы является главной проблемой деканата. Требуется создать новую систему, более совершенную, отвечающую всем потребностям деканата современного университета.

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

Для достижения поставленной цели необходимо решить несколько задач:

-  создать диаграммы объектно-ориентированной модели;

-       выделить основные элементы программы, а также функции подсистемы;

-       провести декомпозицию поставленной задачи.

Автоматизация технологических процессов в библиотеке призвана обеспечить следующие возможности:

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

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

-       автоматизированный учет и ведение статистики по всем процессам.

Пояснительная записка состоит из введения, девяти разделов, заключения, библиографического списка литературы и приложения.

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

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

В третьем разделе приводится процесс создания диаграммы последовательности.

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

В пятом разделе рассматривается процесс создания диаграммы классов.

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

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

В восьмом разделе приводится процесс создания диаграммы размещения.

В заключительном, девятом разделе приводится процесс генерации программного кода на языке С++.

Библиографический список содержит 11 литературных источников, использованных для написания пояснительной записки к курсовому проекту и разработки объектно-ориентированной подсистемы.

Приложение к курсовому проекту содержит листинг сгенерированного Rational Rose кода на языке С++.

1. КРАТКАЯ ХАРАКТЕРИСТИКА ПРЕДМЕТНОЙ ОБЛАСТИ

1.1    Общая характеристика деканата вуза

Деканат - организационный центр по управлению работой факультета <#"532145.files/image001.gif">

Рисунок 2.1 - Добавление действующего лица на диаграмму

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

Рисунок 2.2 - Действующее лицо на диаграмме классов

Затем, перейдем к следующему шагу создания диаграммы, добавим на нее варианты использования. Создадим вариант использования «Ввести ФИО студента». Для этого необходимо выбрать на панели действий пиктограмму «User Case», и щелкнуть мышкой в рабочей области. Процесс добавления представлен на рисунке 2.3.

Рисунок 2.3 - Добавление на диаграмму варианта использования

«Внести в список нового студента»

Аналогично добавим следующие варианты использования: «Ввод новых данных», «Поиск студента по ФИО», «Редактирование данных об успеваемости», «Удаление студента из списка». После выполнения вышеописанных действий на диаграмме классов будут содержаться объекты, представленные на рисунке 2.4.

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

Далее необходимо соединить варианты использования и действующих лиц связями.

Пользователь заходит в систему, вводит ФИО студента, после чего попадает в главное окно программы, где содержится вся информация о студенте в виде полей записей. Далее, пользователь может изменить всю доступную информацию, после чего она обновится в базе данных и отобразится на экране. В связи с этим, соединим ассоциативной связью пользователя и все варианты использования. Диаграмма со связями показана на рисунке 2.5.

Рисунок 2.5 - Диаграмма прецедентов информационной подсистемы

После размещения на диаграмме прецедентов всех объектов, необходимо добавить к вариантам использования их спецификации.

Для добавления спецификации к варианту использования необходимо открыть его спецификацию (Open specification) и на вкладке Files добавить текстовой файл - описание спецификации варианта использования. Для этого необходимо выполнить команду «Insert File» контекстного меню, и выбрать соответствующий файл. Спецификация варианта использования «Внести в список нового студента» представлена на рисунке 2.6.

Рисунок 2.6 - Окно спецификации варианта использования

«Внести в список нового студента»

Выводы

1.   Диаграмма прецедентов содержит одно действующее лицо: «Пользователь».

2.       На диаграмме прецедентов размещено пять вариантов использования: «Внести в список нового студента», «Ввод новых данных», «Поиск студента по ФИО», «Редактирование данных об успеваемости», «Удаление студента из списка».

.        Главным вариантом использования является «Внести в список нового студента».

3. СОЗДАНИЕ ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ

Диаграмма последовательности отражает поток событий, происходящих в рамках варианта использования. При создании диаграммы последовательности первым делом необходимо добавить на диаграмму действующее лицо, которое будет взаимодействовать с системой [1].

Для добавления на диаграмму действующего лица и объектов следует:

) Перетащить действующее лицо Пользователь с браузера на диаграмму.

2)      На панели инструментов нажать кнопку Object (Объект).

)        Щелкнуть мышью в верхней части диаграммы, чтобы поместить туда новый объект.

)        Назвать объект «Аккаунт».

)        Повторить этапы 3 и 4, чтобы поместить на диаграмму все остальные объекты: «Учет успеваемости» и «База данных».

)        Далее, добавляем связи между объектами с учетом последовательности во времени.

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

Рисунок 3.1 - Диаграмма последовательности для варианта использования «Внесение в список нового студента»

Аналогичным образом создаем диаграмму последовательности для варианта использования «Поиск студента и ввод данных», рисунок 3.2. Также создаем диаграммы последовательности для вариантов использования «Редактирование данных об успеваемости», «Удаление студента из списка».

Рисунок 3.2 - Диаграмма последовательности для варианта использования «Поиск студента и ввод данных»

Рисунок 3.3 - Диаграмма последовательности для варианта использования «Редактирование данных об успеваемости»

Рисунок 3.4 - Диаграмма последовательности для варианта использования «Удаление студента из списка»

Рисунок 3.5 - Альтернативный поток «Студент не найден» для варианта использования «Поиск студента по ФИО»

На рисунке 3.5 представлен альтернативный поток «Студент не найден», возникающий в случае, если введенные данные ФИО студента не найдены в базе данных. После ввода ФИО с клавиатуры, объект «Аккаунт» делает запрос базе данных с целью проверки существования введенных данных ФИО студента, далее осуществляется поиск в базе  данных студентов. Если таковые данные отсутствуют, то возникает ошибка «данный студент не найден», и пользователю предлагается еще раз ввести данные.

Альтернативный поток «Неверные данные» для варианта использования «Редактирование данных об успеваемости» представлен на рисунке 3.6 и вызывается в случае неверно заполненных полей учета аттестаций, допусков, экзаменов и зачетов.

Рисунок 3.6 - Альтернативный поток «Неверные данные» для варианта использования «Редактирование данных об успеваемости»

Выводы

1.   Диаграмма последовательности действий отображает взаимодействие объектов, упорядоченное по времени. На ней показаны объекты и классы, используемые в сценарии, и последовательность сообщений, которыми обмениваются объекты, для выполнения сценария. Диаграммы последовательности действий обычно соответствуют реализациям прецедентов в логическом представлении системы.

.     Диаграмма последовательности содержит три объекта: «Аккаунт», «Учет успеваемости», «База данных» и одно действующее лицо - «Пользователь».

4. СОЗДАНИЕ ДИАГРАММЫ СОТРУДНИЧЕСТВА

Подобно диаграммам последовательности, диаграммы сотрудничества или кооперативные диаграммы отображают поток событий через конкретный сценарий варианта использования. Диаграммы последовательности упорядочены по времени, а кооперативные диаграммы заостряют внимание на связях между объектами [2].

Для создания диаграммы сотрудничества необходимо перейти на диаграмму последовательности «Внесение в список нового студента» и нажать клавишу F5. Таким образом, в рабочем окне Rational Rose появится новая диаграмма сотрудничества, рисунок 4.1.

Рисунок 4.1 - Диаграмма сотрудничества для варианта использования

«Внесение в список нового студента»

Выводы

1. Как видно из рисунка 4.1, здесь представлена вся та информация, которая была и на диаграмме последовательности, но кооперативная диаграмма по-другому описывает поток событий. Из нее легче понять связи между объектами, однако труднее уяснить последовательность событий.

2. Диаграмма сотрудничества для основного потока варианта использования «Внесение в список нового студента» содержит одно действующее лицо - «Пользователь», три объекта: «Аккаунт», «База данных» и «Учет успеваемости», а также 12 операций.

5. СОЗДАНИЕ ДИАГРАММЫ КЛАССОВ

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

Создадим классы: «Account», «RegInfo», «DataBase».

Класс «Account» представляет собой интерфейс приложения с полями для ввода фамилии, имени и отчества студента, таким образом он предоставляет возможность для доступа в систему, а также задает ограничения для пользователя.

Класс «RegInfo» содержит всю учетную информацию об успеваемости студента, получаемую из базы данных.

Класс «DataBase» отвечает за работу с базой данных, в которой хранится информация обо всех студентах данного факультета.

Для создания класса в броузере щелкаем правой кнопкой мыши по Use Case View - New - Class Diagram. Далее выбираем на панели инструментов инструмент «Class» и щелкаем мышкой на свободном месте диаграммы. В появившемся классе вводим имя, или выбираем из представленного списка. Создаем три класса, подписываем их. Результат показан на рисунке 5.1.

Рисунок 5.1 - Диаграмма классов для информационной подсистемы учета студентов

Выводы

1.   Диаграмма классов определяет типы классов системы и различного рода статические связи, которые существуют между ними. В этом разделе были нанесены классы на диаграмму. Наша диаграмма классов содержит три класса: «Account», «RegInfo», «DataBase».

2.       Возможен выбор класса из уже существующих.

.        Класс «Account» представляет собой интерфейс приложения с полями для ввода ФИО студента, таким образом он предоставляет возможность для доступа в систему, а также задает ограничения для пользователя. Класс «RegInfo» содержит всю учетную информацию об успеваемости студента, получаемую из базы данных. Класс «DataBase» отвечает за работу с базой данных, в которой хранится информация обо всех студентах данного факультета.

6. ДОБАВЛЕНИЕ ДЕТАЛЕЙ К ОПИСАНИЯМ ОПЕРАЦИЙ И ОПРЕДЕЛЕНИЕ АТРИБУТОВ КЛАССОВ. ДОБАВЛЕНИЕ СВЯЗЕЙ МЕЖДУ КЛАССАМИ

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

1) В меню модели выбрать пункт Tools > Options.

2)      Перейти на вкладку Diagram.

)        Убедиться, что переключатель Show Visibility отмечен.

)        Убедиться, что переключатель Show Stereotypes отмечен.

)        Убедиться, что переключатель Show Operation Signatures отмечен.

)        Убедиться, что переключатели Show All Attributes и Show All Operations отмечены.

7)      Убедиться, что переключатели Suppress Attributes и Suppress Operations не отмечены.

)        Перейти на вкладку Notation.

)        Убедиться, что переключатель Visibility as Icons не отмечен.

Добавим к каждому классу атрибуты и операции. Откроем окно спецификации отдельного класса, нажав правой кнопкой мыши по классу на диаграмме и затем Open Specification (Рисунок 6.1).

Перейдем на вкладку Operations, правой кнопкой по полю, затем Insert. Вводим имя новой операции в поле Name, а также задаем ее тип в поле Return type (рисунок 6.2). Далее, переходим на вкладку Attributes,  правой кнопкой по полю, затем Insert. Задаем имя атрибута и его тип, в нашем случае String - строковый (рисунок 6.3).

Рисунок 6.1 - Окно спецификации класса «Account»

Рисунок 6.2 - Окно спецификации операции

Рисунок 6.3 - Окно спецификации атрибута «Фамилия»

Выполняя аналогичные операции, заполним классы «RegInfo» и «DataBase».

В таблице 6.1 представлено описание каждого класса диаграммы.

Таблица 6.1 - Описание классов разрабатываемой информационной подсистемы

Класс «Account»

Параметр

Значение

Атрибуты

Фамилия: String - фамилия студента Имя: String - имя студента Отчество: String - отчество студента

Операции

EnterSystem() - позволяет войти в систему ExitSystem() - позволяет выйти из системы SearchStudent() - осуществляет поиск студента в списке

Класс «RegInfo»

Атрибуты

FIO: String - ФИО студента CardNumber: String - номер зачетной книжки Subject: String - название дисциплины Attestation: String - аттестация студента Admission: String - допуск к экзаменам/зачетам Exam: String - оценка по экзамену/зачет

Операции

EnterFIO() - получает от пользователя ФИО студента EnterCardNumber () - получает номер зачетной книжки студента EnterSubject () - сохраняет название дисциплины EnterAttestation () - получает от пользователя информацию об аттестации студента EnterAdmission () - получает от пользователя информацию о допуске студента EnterExam () - получает от пользователя информацию об оценках студента по экзамену Update() - изменяет записи в полях SendToDB() - отправляет запрос в базу данных

Класс «Database»

Атрибуты

DBName: String - имя базы данных DBServerName: String - имя сервера базы данных DBPassword: String - пароль к базе данных

Операции

Connect() - получает доступ к базе данных Disconnect() - разрывает связь с базой данных GetRecord() - получить запись из базы данных CheckRecord() - найти запись в базе данных UpdateRecord() - сохранить данные SendData() - отправить ответ на запрос


После того как классы полностью созданы, необходимо установить между ними отношения:

а) связь между классами «Account» и «RegInfo» - ассоциативная, т.к. один класс вызывает метод другого, здесь другой тип связи неуместен. Аккаунтов может быть много, т.к. много студентов, а учетная система всего лишь одна, поэтому кратность связи со стороны класса «Account» - 1..n, а со стороны «RegInfo» - 1;

б) связь между классами «RegInfo» и «DataBase» - ассоциативная, т.к. один класс вызывает метод другого, здесь другой тип связи неуместен. И учетная система со стандартными полями одна, также и база данных одна. Следовательно, кратность связи со стороны обоих классов - 1;

в) связь между классами «Account» и «DataBase» - ассоциативная, т.к. один класс вызывает метод другого, здесь другой тип связи неуместен. Аккаунтов может быть много, т.к. много студентов, а база данных одна. Следовательно, кратность связи со стороны класса «Account» - 1..n, а со стороны «DataBase» - 1.

Процесс связывания классов отношениями аналогичен процессу связывания объектов на диаграмме состояний, или диаграмме последовательности. Для начала необходимо выбрать тип отношения, выберем «Unidirectional Association», зажмем левую кнопку мыши на классе «Account» и протянем связь к классу «RegInfo». Теперь необходимо установить кратность связей. Для этого открываем спецификацию связи двойным щелчком на связи, представленную на рисунке 6.4.

Переходим на вкладку «Role A Detail» и в поле «Multiplicity» выбираем цифру один. На вкладке «Role B Detail» в поле «Multiplicity» выбираем «1..n».

Рисунок 6.4 - Окно спецификации связи между классами

Аналогичным образом необходимо установить кратности связей для остальных связей на диаграмме классов.

Законченный вариант диаграммы классов представлен на рисунке 6.5.

Рисунок 6.5 - Диаграмма классов разрабатываемой информационной подсистемы

Выводы

1. Между всеми классами диаграммы установлены отношения ассоциации. В результате выполнения этапов были добавлены атрибуты и операции к трем классам диаграммы классов.

. Кратность связи между классами «Account - DataBase» - многие-к-одному. Кратность связи между классами «Account - RegInfo» - многие-к-одному. Кратность связи между классами «RegInfo - DataBase» - один-к-одному.

7. СОЗДАНИЕ ДИАГРАММЫ СОСТОЯНИЙ ДЛЯ КЛАССОВ И ДИАГРАММЫ КОМПОНЕНТОВ

Диаграммы состояний определяют все возможные состояния, в которых может находиться конкретный объект, а также процесс смены состояний объекта в результате наступления некоторых событий [2].

На диаграмме имеются два специальных состояния - начальное (start) и конечное (stop). Начальное состояние выделено черной точкой, оно соответствует состоянию объекта, когда он только что был создан. Конечное состояние обозначается черной точкой в белом кружке, оно соответствует состоянию объекта непосредственно перед его уничтожением. На диаграмме состояний может быть одно и только одно начальное состояние.

Добавим на диаграмму точку старта и первое состояние класса. Для добавления точки начала необходимо на панели инструментов выбрать инструмент «Start State» и добавить её на диаграмму состояний. Добавление происходит с помощью инструмента «State» (рисунок 7.1).

Рисунок 7.1 - Добавление точки старта и состояния класса на диаграмму состояний

Откроем окно спецификации состояния «Ожидание ввода ФИО студента», которое изображено на рисунке 7.2.

Рисунок 7.3 - Окно спецификации состояния  «Поиск студента»

Перейдем на вкладку «Actions». С помощью пункта «Insert» контекстного меню добавим новое действие «Инициализация», как показано на рисунке 7.3. По умолчанию тип запуска «On Entry» т.е. при входе (запуске состояния). Также введем остальные операции.

Аналогичным образом добавляем остальные состояния.

Следующим шагом является добавление связей между состояниями. Добавление связей между состояниями аналогично добавлению связей между классами, только выполняется инструментами «State Transition» и «Transition To Self».

Конечный вариант диаграммы состояний представлен на рисунке 7.4 для класса «Account», 7.5 для класса «RegInfo» и 7.6 для класса «DataBase».

Рисунок 7.4 - Диаграмма состояний для класса «Account»

Рисунок 7.5 - Диаграмма состояний для класса «RegInfo»

Рисунок 7.6 - Диаграмма состояний для класса «DataBase»

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

Добавление заголовка класса происходит с помощью инструмента «Package Specification», добавление файла исходного кода с помощью инструмента «Package Body». После добавления заголовка или тела класса на диаграмму необходимо ввести его имя. Также  в окне спецификации компонента необходимо поменять язык на C++ в выпадающем списке Language (рисунок 7.7).

Рисунок 7.7 - Окно спецификации компонента «Account»

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

После установления связей необходимо соотнести компоненты класса с самим классом. Для этого необходимо перетащить класс из браузера на компонент класса изображенный на диаграмме.

Готовая диаграмма компонентов изображена  на рисунке 7.8.

Рисунок 7.8 - Диаграмма компонентов информационной подсистемы для деканата ВУЗа

Выводы

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

2.       Так же составлена диаграмма компонентов, которая показывает, как выглядит модель на физическом уровне. Выбрав в качестве языка программирования С++, для каждого класса созданы соответствующие этому языку компоненты.

8. СОЗДАНИЕ ДИАГРАММЫ РАЗМЕЩЕНИЯ

Диаграмма размещения показывает физическое расположение сети и местонахождение в ней различных компонентов. В нашем проекте информационная подсистема для деканата состоит из ряда подсистем, выполняемых на отдельных физических устройствах, называемых узлами (node).

Для создания диаграммы размещения добавим на нее с панели инструментов элемент «Processor», назовем его «StudentCountServer». Добавим сервер базы данных, несколько клиент-компьютеров и принтер. Следующим шагом является добавление соединений между устройствами системы. Соединение добавляется с помощью инструмента «Connection». Конечный вариант диаграммы представлен на рисунке 8.1.

Рисунок 8.1 - Диаграмма размещения информационной подсистемы для

деканата ВУЗа

Выводы

1.   Информационная подсистема StudentCount способна работать в локальной сети. Ей могут пользоваться одновременно несколько пользователей.

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

9. ГЕНЕРАЦИЯ ПРОГРАММНОГО КОДА С++

В ходе проектирования была создана модель для информационной подсистемы деканата ВУЗа. Теперь сгенерируем программный код С++ для клиентской части приложения. Необходимо выполнить следующие шаги:

. Открыть диаграмму компонентов системы.

2. Выбрать тело пакета, а также спецификацию пакета, нажать правой кнопкой мыши и открыть спецификацию объектов.

3. Выбрать в качестве языка генерации кода приложения С++.

. Выбрать все объекты на диаграмме компонентов.

. Выбрать Tools - C++ - Code Generation в главном меню (рисунок 9.1).

Рисунок 9.1 - Пункт меню для генерации программного кода на языке С++

В случае успешной генерации кода появится окно с сообщением, как на рисунке 9.2.

Рисунок 9.2 - Окно с сообщением об успешной генерации программного кода

Выводы

1. В рамках курсового проекта был сгенерирован программный код Rose C++ для трех классов подсистемы.

. Программный код генерировался для всех классов сразу.

ЗАКЛЮЧЕНИЕ

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

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

В курсовом проекте сгенерирован программный код для языка С++. Программный код сгенерирован Rational Rose для всех классов информационной подсистемы.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1.       Буч, Г. Язык UML для пользователя: Пер. с англ [Текст]/Г. Буч, Д. Рамбо, А. Джекобсон. - М.: ДМК, 2000. - 432 с., ил. (Серия «для программистов»)

.        Боггс, У. UML и Rational Rose: Пер. с англ [Текст]/ У. Боггс, М. Боггс. - М.: Издательство «Лори», 2000. - 581 с.

.        Буч Г., Рамбо Д., Джекобсон А. UML : специальный справочник. - СПб.: Питер, 2002.-432с., ил.

.        Ларман, К. применение UML и шаблонов проектирования: Пер. с англ. [Текст]/ К. Ларман - М.: Издательский дом «Вильямс», 2001. - 496 с. ил.

.        ЕСКД: ГОСТ 2.104 - 68 «Основные надписи».

.        ЕСКД: ГОСТ 2.106 - 68 «Текстовые документы».

.        ЕСКД: ГОСТ 2.109 - 73 «Основные требования к чертежам».

.        ЕСКД: ГОСТ 2.301 - 68 «Форматы».

.        ЕСКД: ГОСТ 2.101 - 81 «Шрифты чертежные».

.        ЕСКД: ГОСТ 2.316 - 68 «Правила нанесения на чертежах надписей, технических требований и таблиц».

.        ЕСКД: ГОСТ 2.321 - 84 «Обозначения буквенные».

ПРИЛОЖЕНИЕ А

Сгенерированный Rational Rose листинг кода приложения на языке С++

Source File: Account.h

//## begin module%1.7%.codegen_version preserve=yes

//   Read the documentation to learn more about C++ code generator

//   versioning.

//## end module%1.7%.codegen_version

//## begin module%4E0234BF0100.cm preserve=no

//         %X% %Q% %Z% %W%

//## end module%4E0234BF0100.cm

//## begin module%4E0234BF0100.cp preserve=no

//## end module%4E0234BF0100.cp

//## Module: Account%4E0234BF0100; Package specification

//## Subsystem: <Top Level>

//## Source file: C:\Program Files\Rational\Rose\C++\source\Account.h

#ifndef Account_h

#define Account_h 1

//## begin module%4E0234BF0100.additionalIncludes preserve=no

//## end module%4E0234BF0100.additionalIncludes

//## begin module%4E0234BF0100.includes preserve=yes

//## end module%4E0234BF0100.includes

// RegInfo

#include "RegInfo.h"

// DataBase

#include "DataBase.h"

//## begin module%4E0234BF0100.declarations preserve=no

//## end module%4E0234BF0100.declarations

//## begin module%4E0234BF0100.additionalDeclarations preserve=yes

//## end module%4E0234BF0100.additionalDeclarations

//## begin Account%4E01013D0230.preface preserve=yes

//## end Account%4E01013D0230.preface

//## Class: Account%4E01013D0230

//## Category: <Top Level>

//## Persistence: Transient

//## Cardinality/Multiplicity: n

Account

{

//## begin Account%4E01013D0230.initialDeclarations preserve=yes

//## end Account%4E01013D0230.initialDeclarations

:

//## Constructors (generated)();

(const Account &right);

//## Destructor (generated)

~Account();

//## Assignment Operation (generated)& operator=(const Account &right);

//## Equality Operations (generated)operator==(const Account &right) const;

operator!=(const Account &right) const;

//## Other Operations (specified)

//## Operation: Autorization%4E0104F0025AAutorization ();

//## Operation: DataRequest%4E01054000E5DataRequest ();

//## Operation: GetData%4E02152E0060GetData ();

//## Operation: DataCheck%4E01055503A6DataCheck ();

//## Operation: EnterSystem%4E0215550173EnterSystem ();

//## Get and Set Operations for Associations (generated)

//## Association: <unnamed>%4E01018A0088

//## Role: Account::<the_RegInfo>%4E01018A01E1RegInfo * get_the_RegInfo () const;set_the_RegInfo (RegInfo * value);

//## Association: <unnamed>%4E021F3303AB

//## Role: Account::<the_DataBase>%4E021F3401BADataBase * get_the_DataBase () const;set_the_DataBase (DataBase * value);

// Additional Public Declarations

//## begin Account%4E01013D0230.public preserve=yes

//## end Account%4E01013D0230.public

:

// Additional Protected Declarations

//## begin Account%4E01013D0230.protected preserve=yes

//## end Account%4E01013D0230.protected

:

//## Get and Set Operations for Class Attributes (generated)

//## Attribute: \324\340\354\350\353\350\377%4E010199020EString get_XXXXXXX () const;set_XXXXXXX (String value);

//## Attribute: \310\354\377%4E0104D20201String get_XXX () const;set_XXX (String value);

//## Attribute: \316\362\367\345\361\362\342\356%4E0104E10119String get_XXXXXXXX () const;set_XXXXXXXX (String value);

// Additional Private Declarations

//## begin Account%4E01013D0230.private preserve=yes

//## end Account%4E01013D0230.private

: //## implementation

// Data Members for Class Attributes

//## begin Account::\324\340\354\350\353\350\377%4E010199020E.attr preserve=no  private: String {U}XXXXXXX;

//## end Account::\324\340\354\350\353\350\377%4E010199020E.attr

//## begin Account::\310\354\377%4E0104D20201.attr preserve=no  private: String {U}XXX;

//## end Account::\310\354\377%4E0104D20201.attr

//## begin Account::\316\362\367\345\361\362\342\356%4E0104E10119.attr preserve=no  private: String {U}XXXXXXXX;

//## end Account::\316\362\367\345\361\362\342\356%4E0104E10119.attr

// Data Members for Associations

//## Association: <unnamed>%4E01018A0088

//## begin Account::<the_RegInfo>%4E01018A01E1.role preserve=no  public: RegInfo {1..n -> 1RHN}*the_RegInfo;

//## end Account::<the_RegInfo>%4E01018A01E1.role

//## Association: <unnamed>%4E021F3303AB

//## begin Account::<the_DataBase>%4E021F3401BA.role preserve=no  public: DataBase {1..n -> 1RHN}*the_DataBase;

//## end Account::<the_DataBase>%4E021F3401BA.role

// Additional Implementation Declarations

//## begin Account%4E01013D0230.implementation preserve=yes

//## end Account%4E01013D0230.implementation

};

//## begin Account%4E01013D0230.postscript preserve=yes

//## end Account%4E01013D0230.postscript

// Class Account

//## Get and Set Operations for Class Attributes (inline)

const String Account::get_XXXXXXX () const

{

//## begin Account::get_XXXXXXX%4E010199020E.get preserve=noXXXXXXX;

//## end Account::get_XXXXXXX%4E010199020E.get

}

void Account::set_XXXXXXX (String value)

{

//## begin Account::set_XXXXXXX%4E010199020E.set preserve=no= value;

//## end Account::set_XXXXXXX%4E010199020E.set

}

const String Account::get_XXX () const

//## begin Account::get_XXX%4E0104D20201.get preserve=noXXX;

//## end Account::get_XXX%4E0104D20201.get

}

void Account::set_XXX (String value)

{

//## begin Account::set_XXX%4E0104D20201.set preserve=no= value;

//## end Account::set_XXX%4E0104D20201.set

}

const String Account::get_XXXXXXXX () const

{

//## begin Account::get_XXXXXXXX%4E0104E10119.get preserve=noXXXXXXXX;

//## end Account::get_XXXXXXXX%4E0104E10119.get

}

void Account::set_XXXXXXXX (String value)

{

//## begin Account::set_XXXXXXXX%4E0104E10119.set preserve=no= value;

//## end Account::set_XXXXXXXX%4E0104E10119.set

}

//## Get and Set Operations for Associations (inline)

const RegInfo * Account::get_the_RegInfo () const

{

//## begin Account::get_the_RegInfo%4E01018A01E1.get preserve=nothe_RegInfo;

//## end Account::get_the_RegInfo%4E01018A01E1.get

}

void Account::set_the_RegInfo (RegInfo * value)

{

//## begin Account::set_the_RegInfo%4E01018A01E1.set preserve=no_RegInfo = value;

//## end Account::set_the_RegInfo%4E01018A01E1.set

}

const DataBase * Account::get_the_DataBase () const

{

//## begin Account::get_the_DataBase%4E021F3401BA.get preserve=nothe_DataBase;

//## end Account::get_the_DataBase%4E021F3401BA.get

}

void Account::set_the_DataBase (DataBase * value)

{

//## begin Account::set_the_DataBase%4E021F3401BA.set preserve=no_DataBase = value;

//## end Account::set_the_DataBase%4E021F3401BA.set

}

//## begin module%4E0234BF0100.epilog preserve=yes

//## end module%4E0234BF0100.epilog

#endif

Source File: Account.cpp

//## begin module%1.7%.codegen_version preserve=yes

//   Read the documentation to learn more about C++ code generator

//   versioning.

//## end module%1.7%.codegen_version

//## begin module%4E0234F503C5.cm preserve=no

//         %X% %Q% %Z% %W%

//## end module%4E0234F503C5.cm

//## begin module%4E0234F503C5.cp preserve=no

//## end module%4E0234F503C5.cp

//## Module: Account%4E0234F503C5; Package body

//## Subsystem: <Top Level>

//## Source file: C:\Program Files\Rational\Rose\C++\source\Account.cpp

//## begin module%4E0234F503C5.additionalIncludes preserve=no

//## end module%4E0234F503C5.additionalIncludes

//## begin module%4E0234F503C5.includes preserve=yes

//## end module%4E0234F503C5.includes

// Account

#include "Account.h"

//## begin module%4E0234F503C5.declarations preserve=no

//## end module%4E0234F503C5.declarations

//## begin module%4E0234F503C5.additionalDeclarations preserve=yes

//## end module%4E0234F503C5.additionalDeclarations

// Class Account

::Account()

//## begin Account::Account%4E01013D0230_const.hasinit preserve=no

//## end Account::Account%4E01013D0230_const.hasinit

//## begin Account::Account%4E01013D0230_const.initialization preserve=yes

//## end Account::Account%4E01013D0230_const.initialization

{

//## begin Account::Account%4E01013D0230_const.body preserve=yes

//## end Account::Account%4E01013D0230_const.body

}

::Account(const Account &right)

//## begin Account::Account%4E01013D0230_copy.hasinit preserve=no

//## end Account::Account%4E01013D0230_copy.hasinit

//## begin Account::Account%4E01013D0230_copy.initialization preserve=yes

//## end Account::Account%4E01013D0230_copy.initialization

{

//## begin Account::Account%4E01013D0230_copy.body preserve=yes

//## end Account::Account%4E01013D0230_copy.body

}

::~Account()

{

//## begin Account::~Account%4E01013D0230_dest.body preserve=yes

//## end Account::~Account%4E01013D0230_dest.body

}

& Account::operator=(const Account &right)

{

//## begin Account::operator=%4E01013D0230_assign.body preserve=yes

//## end Account::operator=%4E01013D0230_assign.body

}

Account::operator==(const Account &right) const

{

//## begin Account::operator==%4E01013D0230_eq.body preserve=yes

//## end Account::operator==%4E01013D0230_eq.body

}

Account::operator!=(const Account &right) const

{

//## begin Account::operator!=%4E01013D0230_neq.body preserve=yes

//## end Account::operator!=%4E01013D0230_neq.body

}

//## Other Operations (implementation)Account::SearchStudent ()

{

//## begin Account::SearchStudent%4E0104F0025A.body preserve=yes

//## end Account::SearchStudent%4E0104F0025A.body

}

Account::ExitSystem ()

{

//## begin Account::ExitSystem%4E01055503A6.body preserve=yes

//## end Account::ExitSystem%4E01055503A6.body

}

Account::EnterSystem ()

{

//## begin Account::EnterSystem%4E0215550173.body preserve=yes

//## end Account::EnterSystem%4E0215550173.body

}

// Additional Declarations

//## begin Account%4E01013D0230.declarations preserve=yes

//## end Account%4E01013D0230.declarations

//## begin module%4E0234F503C5.epilog preserve=yes

//## end module%4E0234F503C5.epilog

Source File: RegInfo.h

//## begin module%1.7%.codegen_version preserve=yes

//   Read the documentation to learn more about C++ code generator

//   versioning.

//## end module%1.7%.codegen_version

//## begin module%4E02351F034D.cm preserve=no

//         %X% %Q% %Z% %W%

//## end module%4E02351F034D.cm

//## begin module%4E02351F034D.cp preserve=no

//## end module%4E02351F034D.cp

//## Module: RegInfo%4E02351F034D; Package specification

//## Subsystem: <Top Level>

//## Source file: C:\Program Files\Rational\Rose\C++\source\RegInfo.h

#ifndef RegInfo_h

#define RegInfo_h 1

//## begin module%4E02351F034D.additionalIncludes preserve=no

//## end module%4E02351F034D.additionalIncludes

//## begin module%4E02351F034D.includes preserve=yes

//## end module%4E02351F034D.includes

// DataBase

#include "DataBase.h"

//## begin module%4E02351F034D.declarations preserve=no

//## end module%4E02351F034D.declarations

//## begin module%4E02351F034D.additionalDeclarations preserve=yes

//## end module%4E02351F034D.additionalDeclarations

//## begin RegInfo%4E01015203A9.preface preserve=yes

//## end RegInfo%4E01015203A9.preface

//## Class: RegInfo%4E01015203A9

//## Category: <Top Level>

//## Persistence: Transient

//## Cardinality/Multiplicity: n

RegInfo

{

//## begin RegInfo%4E01015203A9.initialDeclarations preserve=yes

//## end RegInfo%4E01015203A9.initialDeclarations

:

//## Constructors (generated)();

(const RegInfo &right);

//## Destructor (generated)

~RegInfo();

//## Assignment Operation (generated)& operator=(const RegInfo &right);

//## Equality Operations (generated)operator==(const RegInfo &right) const;

operator!=(const RegInfo &right) const;

//## Other Operations (specified)

//## Operation: CheckAttendance%4E0215BD00E7CheckAttendance ();

//## Operation: CheckSession%4E0215C902BFCheckSession ();

//## Operation: CheckRating%4E0215CA02E6CheckRating ();

//## Operation: CheckGrant%4E0215CB0396CheckGrant ();

//## Operation: Update%4E0215FC01F2Update ();

//## Operation: SendToDB%4E02160703DASendToDB ();

//## Get and Set Operations for Associations (generated)

//## Association: <unnamed>%4E01018E02D6

//## Role: RegInfo::<the_DataBase>%4E01018F0069DataBase * get_the_DataBase () const;set_the_DataBase (DataBase * value);

// Additional Public Declarations

//## begin RegInfo%4E01015203A9.public preserve=yes

//## end RegInfo%4E01015203A9.public

:

// Additional Protected Declarations

//## begin RegInfo%4E01015203A9.protected preserve=yes

//## end RegInfo%4E01015203A9.protected

:

//## Get and Set Operations for Class Attributes (generated)

//## Attribute: Attendance%4E02157201ACString get_Attendance () const;set_Attendance (String value);

//## Attribute: Session%4E02159003CDString get_Session () const;set_Session (String value);

//## Attribute: Rating%4E02159902CEString get_Rating () const;set_Rating (String value);

//## Attribute: Grant%4E0215A3019DString get_Grant () const;set_Grant (String value);

// Additional Private Declarations

//## begin RegInfo%4E01015203A9.private preserve=yes

//## end RegInfo%4E01015203A9.private

: //## implementation

// Data Members for Class Attributes

//## begin RegInfo::Attendance%4E02157201AC.attr preserve=no  private: String {U}Attendance;

//## end RegInfo::Attendance%4E02157201AC.attr

//## begin RegInfo::Session%4E02159003CD.attr preserve=no  private: String {U}Session;

//## end RegInfo::Session%4E02159003CD.attr

//## begin RegInfo::Rating%4E02159902CE.attr preserve=no  private: String {U}Rating;

//## end RegInfo::Rating%4E02159902CE.attr

//## begin RegInfo::Grant%4E0215A3019D.attr preserve=no  private: String {U}Grant;

//## end RegInfo::Grant%4E0215A3019D.attr

// Data Members for Associations

//## Association: <unnamed>%4E01018E02D6

//## begin RegInfo::<the_DataBase>%4E01018F0069.role preserve=no  public: DataBase {1 -> 1RHN}*the_DataBase;

//## end RegInfo::<the_DataBase>%4E01018F0069.role

// Additional Implementation Declarations

//## begin RegInfo%4E01015203A9.implementation preserve=yes

//## end RegInfo%4E01015203A9.implementation

};

//## begin RegInfo%4E01015203A9.postscript preserve=yes

//## end RegInfo%4E01015203A9.postscript

// Class RegInfo

//## Get and Set Operations for Class Attributes (inline)

const String RegInfo::get_Attendance () const

{

//## begin RegInfo::get_Attendance%4E02157201AC.get preserve=noAttendance;

//## end RegInfo::get_Attendance%4E02157201AC.get

}

void RegInfo::set_Attendance (String value)

{

//## begin RegInfo::set_Attendance%4E02157201AC.set preserve=no= value;

//## end RegInfo::set_Attendance%4E02157201AC.set

}

const String RegInfo::get_Session () const

{

//## begin RegInfo::get_Session%4E02159003CD.get preserve=noSession;

//## end RegInfo::get_Session%4E02159003CD.get

}

void RegInfo::set_Session (String value)

{

//## begin RegInfo::set_Session%4E02159003CD.set preserve=no= value;

//## end RegInfo::set_Session%4E02159003CD.set

}

const String RegInfo::get_Rating () const

{

//## begin RegInfo::get_Rating%4E02159902CE.get preserve=noRating;

//## end RegInfo::get_Rating%4E02159902CE.get

}

void RegInfo::set_Rating (String value)

{

//## begin RegInfo::set_Rating%4E02159902CE.set preserve=no= value;

//## end RegInfo::set_Rating%4E02159902CE.set

}

const String RegInfo::get_Grant () const

{

//## begin RegInfo::get_Grant%4E0215A3019D.get preserve=noGrant;

//## end RegInfo::get_Grant%4E0215A3019D.get

}

void RegInfo::set_Grant (String value)

{

//## begin RegInfo::set_Grant%4E0215A3019D.set preserve=no= value;

//## end RegInfo::set_Grant%4E0215A3019D.set

}

//## Get and Set Operations for Associations (inline)

const DataBase * RegInfo::get_the_DataBase () const

{

//## begin RegInfo::get_the_DataBase%4E01018F0069.get preserve=nothe_DataBase;

//## end RegInfo::get_the_DataBase%4E01018F0069.get

}

void RegInfo::set_the_DataBase (DataBase * value)

{

//## begin RegInfo::set_the_DataBase%4E01018F0069.set preserve=no_DataBase = value;

//## end RegInfo::set_the_DataBase%4E01018F0069.set

}

//## begin module%4E02351F034D.epilog preserve=yes

//## end module%4E02351F034D.epilog

#endif

Source File: RegInfo.cpp

//## begin module%1.7%.codegen_version preserve=yes

//   Read the documentation to learn more about C++ code generator

//   versioning.

//## end module%1.7%.codegen_version

//## begin module%4E0235600268.cm preserve=no

//         %X% %Q% %Z% %W%

//## end module%4E0235600268.cm

//## begin module%4E0235600268.cp preserve=no

//## end module%4E0235600268.cp

//## Module: RegInfo%4E0235600268; Package body

//## Subsystem: <Top Level>

//## Source file: C:\Program Files\Rational\Rose\C++\source\RegInfo.cpp

//## begin module%4E0235600268.additionalIncludes preserve=no

//## end module%4E0235600268.additionalIncludes

//## begin module%4E0235600268.includes preserve=yes

//## end module%4E0235600268.includes

// RegInfo

#include "RegInfo.h"

//## begin module%4E0235600268.declarations preserve=no

//## end module%4E0235600268.declarations

//## begin module%4E0235600268.additionalDeclarations preserve=yes

//## end module%4E0235600268.additionalDeclarations

// Class RegInfo

::RegInfo()

//## begin RegInfo::RegInfo%4E01015203A9_const.hasinit preserve=no

//## end RegInfo::RegInfo%4E01015203A9_const.hasinit

//## begin RegInfo::RegInfo%4E01015203A9_const.initialization preserve=yes

//## end RegInfo::RegInfo%4E01015203A9_const.initialization

{

//## begin RegInfo::RegInfo%4E01015203A9_const.body preserve=yes

//## end RegInfo::RegInfo%4E01015203A9_const.body

}

::RegInfo(const RegInfo &right)

//## begin RegInfo::RegInfo%4E01015203A9_copy.hasinit preserve=no

//## end RegInfo::RegInfo%4E01015203A9_copy.hasinit

//## begin RegInfo::RegInfo%4E01015203A9_copy.initialization preserve=yes

//## end RegInfo::RegInfo%4E01015203A9_copy.initialization

{

//## begin RegInfo::RegInfo%4E01015203A9_copy.body preserve=yes

//## end RegInfo::RegInfo%4E01015203A9_copy.body

}

::~RegInfo()

{

//## begin RegInfo::~RegInfo%4E01015203A9_dest.body preserve=yes

//## end RegInfo::~RegInfo%4E01015203A9_dest.body

}

& RegInfo::operator=(const RegInfo &right)

{

//## begin RegInfo::operator=%4E01015203A9_assign.body preserve=yes

//## end RegInfo::operator=%4E01015203A9_assign.body

}

RegInfo::operator==(const RegInfo &right) const

{

//## begin RegInfo::operator==%4E01015203A9_eq.body preserve=yes

//## end RegInfo::operator==%4E01015203A9_eq.body

}

RegInfo::operator!=(const RegInfo &right) const

{

//## begin RegInfo::operator!=%4E01015203A9_neq.body preserve=yes

//## end RegInfo::operator!=%4E01015203A9_neq.body

}

//## Other Operations (implementation)RegInfo::EnterFIO ()

{

//## begin RegInfo::EnterFIO%4E0215BD00E7.body preserve=yes

//## end RegInfo::EnterFIO%4E0215BD00E7.body

}

RegInfo::EnterCardNumber ()

{

//## begin RegInfo::EnterCardNumber%4E0215C902BF.body preserve=yes

//## end RegInfo::EnterCardNumber%4E0215C902BF.body

}

RegInfo::EnterSubject ()

{

//## begin RegInfo::EnterSubject%4E0215CA02E6.body preserve=yes

//## end RegInfo::EnterSubject%4E0215CA02E6.body

}

RegInfo::EnterAttestation ()

{

//## begin RegInfo::EnterAttestation%4E0215CB0396.body preserve=yes

//## end RegInfo::EnterAttestation%4E0215CB0396.body

RegInfo::EnterAdmission ()

{

//## begin RegInfo::EnterAdmission%4E0215FC01F2.body preserve=yes

//## end RegInfo::EnterAdmission%4E0215FC01F2.body

}

RegInfo::Update ()

{

//## begin RegInfo::Update%4E0215FC01F2.body preserve=yes

//## end RegInfo::Update%4E0215FC01F2.body

}

RegInfo::SendToDB ()

{

//## begin RegInfo::SendToDB%4E02160703DA.body preserve=yes

//## end RegInfo::SendToDB%4E02160703DA.body

}

// Additional Declarations

//## begin RegInfo%4E01015203A9.declarations preserve=yes

//## end RegInfo%4E01015203A9.declarations

//## begin module%4E0235600268.epilog preserve=yes

//## end module%4E0235600268.epilog

Source File: DataBase.h

//## begin module%1.7%.codegen_version preserve=yes

//   Read the documentation to learn more about C++ code generator

//   versioning.

//## end module%1.7%.codegen_version

//## begin module%4E0235060105.cm preserve=no

//         %X% %Q% %Z% %W%

//## end module%4E0235060105.cm

//## begin module%4E0235060105.cp preserve=no

//## end module%4E0235060105.cp

//## Module: DataBase%4E0235060105; Package specification

//## Subsystem: <Top Level>

//## Source file: C:\Program Files\Rational\Rose\C++\source\DataBase.h

#ifndef DataBase_h

#define DataBase_h 1

//## begin module%4E0235060105.additionalIncludes preserve=no

//## end module%4E0235060105.additionalIncludes

//## begin module%4E0235060105.includes preserve=yes

//## end module%4E0235060105.includes

// DBServer\.exe

#include "DBServerexe.h"

//## begin module%4E0235060105.declarations preserve=no

//## end module%4E0235060105.declarations

//## begin module%4E0235060105.additionalDeclarations preserve=yes

//## end module%4E0235060105.additionalDeclarations

//## begin DataBase%4DFF7F710228.preface preserve=yes

//## end DataBase%4DFF7F710228.preface

//## Class: DataBase%4DFF7F710228

//## Category: <Top Level>

//## Persistence: Transient

//## Cardinality/Multiplicity: n

DataBase

{

//## begin DataBase%4DFF7F710228.initialDeclarations preserve=yes

//## end DataBase%4DFF7F710228.initialDeclarations

:

//## Constructors (generated)();

(const DataBase &right);

//## Destructor (generated)

~DataBase();

//## Assignment Operation (generated)& operator=(const DataBase &right);

//## Equality Operations (generated)operator==(const DataBase &right) const;

operator!=(const DataBase &right) const;

//## Other Operations (specified)

//## Operation: Connect%4E02167B00C7Connect ();

//## Operation: Disconnect%4E02168B02E4Disconnect ();

//## Operation: GetRecord%4E0216B203AFGetRecord ();

//## Operation: UpdateRecord%4E0216BC012FUpdateRecord ();

// Additional Public Declarations

//## begin DataBase%4DFF7F710228.public preserve=yes

//## end DataBase%4DFF7F710228.public

:

// Additional Protected Declarations

//## begin DataBase%4DFF7F710228.protected preserve=yes

//## end DataBase%4DFF7F710228.protected

:

//## Get and Set Operations for Class Attributes (generated)

//## Attribute: DBname%4E0216490364String get_DBname () const;set_DBname (String value);

//## Attribute: ServerName%4E02164F026BString get_ServerName () const;set_ServerName (String value);

//## Attribute: DBPassword%4E02165B01E6String get_DBPassword () const;set_DBPassword (String value);

// Additional Private Declarations

//## begin DataBase%4DFF7F710228.private preserve=yes

//## end DataBase%4DFF7F710228.private

: //## implementation

// Data Members for Class Attributes

//## begin DataBase::DBname%4E0216490364.attr preserve=no  private: String {U}DBname;

//## end DataBase::DBname%4E0216490364.attr

//## begin DataBase::ServerName%4E02164F026B.attr preserve=no  private: String {U}ServerName;

//## end DataBase::ServerName%4E02164F026B.attr

//## begin DataBase::DBPassword%4E02165B01E6.attr preserve=no  private: String {U}DBPassword;

//## end DataBase::DBPassword%4E02165B01E6.attr

// Additional Implementation Declarations

//## begin DataBase%4DFF7F710228.implementation preserve=yes

//## end DataBase%4DFF7F710228.implementation

};

//## begin DataBase%4DFF7F710228.postscript preserve=yes

//## end DataBase%4DFF7F710228.postscript

// Class DataBase

//## Get and Set Operations for Class Attributes (inline)

const String DataBase::get_DBname () const

{

//## begin DataBase::get_DBname%4E0216490364.get preserve=noDBname;

//## end DataBase::get_DBname%4E0216490364.get

}

void DataBase::set_DBname (String value)

{

//## begin DataBase::set_DBname%4E0216490364.set preserve=no= value;

//## end DataBase::set_DBname%4E0216490364.set

}

const String DataBase::get_ServerName () const

{

//## begin DataBase::get_ServerName%4E02164F026B.get preserve=noServerName;

//## end DataBase::get_ServerName%4E02164F026B.get

}

void DataBase::set_ServerName (String value)

{

//## begin DataBase::set_ServerName%4E02164F026B.set preserve=no= value;

//## end DataBase::set_ServerName%4E02164F026B.set

}

const String DataBase::get_DBPassword () const

{

//## begin DataBase::get_DBPassword%4E02165B01E6.get preserve=noDBPassword;

//## end DataBase::get_DBPassword%4E02165B01E6.get

}

void DataBase::set_DBPassword (String value)

{

//## begin DataBase::set_DBPassword%4E02165B01E6.set preserve=no= value;

//## end DataBase::set_DBPassword%4E02165B01E6.set

}

//## begin module%4E0235060105.epilog preserve=yes

//## end module%4E0235060105.epilog

#endif

Sourcefile DataBase.cpp

//## begin module%1.7%.codegen_version preserve=yes

//   Read the documentation to learn more about C++ code generator

//   versioning.

//## end module%1.7%.codegen_version

//## begin module%4E0235620195.cm preserve=no

//         %X% %Q% %Z% %W%

//## end module%4E0235620195.cm

//## begin module%4E0235620195.cp preserve=no

//## end module%4E0235620195.cp

//## Module: DataBase%4E0235620195; Package body

//## Subsystem: <Top Level>

//## Source file: C:\Program Files\Rational\Rose\C++\source\DataBase.cpp

//## begin module%4E0235620195.additionalIncludes preserve=no

//## end module%4E0235620195.additionalIncludes

//## begin module%4E0235620195.includes preserve=yes

//## end module%4E0235620195.includes

// DataBase

#include "DataBase.h"

//## begin module%4E0235620195.declarations preserve=no

//## end module%4E0235620195.declarations

//## begin module%4E0235620195.additionalDeclarations preserve=yes

//## end module%4E0235620195.additionalDeclarations

// Class DataBase

::DataBase()

//## begin DataBase::DataBase%4DFF7F710228_const.hasinit preserve=no

//## end DataBase::DataBase%4DFF7F710228_const.hasinit

//## begin DataBase::DataBase%4DFF7F710228_const.initialization preserve=yes

//## end DataBase::DataBase%4DFF7F710228_const.initialization

{

//## begin DataBase::DataBase%4DFF7F710228_const.body preserve=yes

//## end DataBase::DataBase%4DFF7F710228_const.body

}

::DataBase(const DataBase &right)

//## begin DataBase::DataBase%4DFF7F710228_copy.hasinit preserve=no

//## end DataBase::DataBase%4DFF7F710228_copy.hasinit

//## begin DataBase::DataBase%4DFF7F710228_copy.initialization preserve=yes

//## end DataBase::DataBase%4DFF7F710228_copy.initialization

{

//## begin DataBase::DataBase%4DFF7F710228_copy.body preserve=yes

//## end DataBase::DataBase%4DFF7F710228_copy.body

}

::~DataBase()

{

//## begin DataBase::~DataBase%4DFF7F710228_dest.body preserve=yes

//## end DataBase::~DataBase%4DFF7F710228_dest.body

}

& DataBase::operator=(const DataBase &right)

{

//## begin DataBase::operator=%4DFF7F710228_assign.body preserve=yes

//## end DataBase::operator=%4DFF7F710228_assign.body

}

DataBase::operator==(const DataBase &right) const

{

//## begin DataBase::operator==%4DFF7F710228_eq.body preserve=yes

//## end DataBase::operator==%4DFF7F710228_eq.body

}

DataBase::operator!=(const DataBase &right) const

{

//## begin DataBase::operator!=%4DFF7F710228_neq.body preserve=yes

//## end DataBase::operator!=%4DFF7F710228_neq.body

}

//## Other Operations (implementation)DataBase::Connect ()

{

//## begin DataBase::Connect%4E02167B00C7.body preserve=yes

//## end DataBase::Connect%4E02167B00C7.body

}

DataBase::Disconnect ()

{

//## begin DataBase::Disconnect%4E02168B02E4.body preserve=yes

//## end DataBase::Disconnect%4E02168B02E4.body

}DataBase::GetRecord ()

{

//## begin DataBase::GetRecord%4E0216B203AF.body preserve=yes

//## end DataBase::GetRecord%4E0216B203AF.body

}

DataBase::UpdateRecord ()

{

//## begin DataBase::UpdateRecord%4E0216BC012F.body preserve=yes

//## end DataBase::UpdateRecord%4E0216BC012F.body

}

// Additional Declarations

//## begin DataBase%4DFF7F710228.declarations preserve=yes

//## end DataBase%4DFF7F710228.declarations

//## begin module%4E0235620195.epilog preserve=yes

//## end module%4E0235620195.epilog

Похожие работы на - Разработка объектно-ориентированной модели информационной подсистемы для деканата ВУЗа (учет успеваемости студентов)

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!