Класс
«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