Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Проектирование автоматизированных информационных систем на основе объектно-ориентированного подхода

..pdf
Скачиваний:
0
Добавлен:
12.11.2023
Размер:
10.56 Mб
Скачать

Данная форма не должна содержать никаких элементов управле­ ния, таких как кнопки, выпадающие списки и т.п. Подобные элемен­ ты должны находиться в дочерних окнах. Главное окно, как правило, содержит меню, панели инструментов и строку состояния, а остав­ шееся пространство служит для размещения дочерних окон.

Создадим меню для главной формы. Для этого расположим ком­ понент «MainMenu» с панели инструментов «Standard» на главной форме. Переименуем его в «MainMDIMenu». Затем двойным щелч­ ком на компоненте откроем редактор структуры меню. В данном ре­ дакторе мы можем создать все необходимые пункты главного меню. Создадим их согласно структуре, представленной на рис. П3.61.

Файл

Модуль

Отчеты

Выход

Бухгалтерский учет

Товарный баланс

 

Оприходование товара

Поступления за период

 

Работа с накладными

Реализация за период

 

АРМ менеджера

Остатки по складам

 

Работа с заказами

Анализ продаж за период

 

План закупок

 

 

АРМ кладовщика

 

 

Работа с накладными

 

 

Акт приема-передачи

 

 

товара от контрагента

 

Справочники

Служебное

Окно

Реквизиты

Администрирование

Каскад

Подразделения

Настройки

Мозаика

Товары

Передача данных

Следующее окно

Контрагенты

 

Предыдущее окно

 

 

Закрыть окно

Справка

 

 

Инструкция пользователя

О программе

Рис. П3.61. Структура меню для главной формы

Установим свойство «Menu» нашей формы в «MainMDIMenu». Теперь главная форма будет выглядеть так же, как на рис. П3.62.

Для завершения работы над главной формой поместим на нее па­ нель инструментов (компонент «ТооШаг») и строку состояния (ком­ понент «StatusBar»). Установим свойство «Flat» панели инструментов в «True» и создадим пока всего две кнопки. Одну проассоциируем (свойство кнопки «Menultem») с пунктом меню «Выход», а вторую

/ / Product

# i n c l u d e " P r o d u c t . h "

c l a s s O r d e r P o s i t i o n

{

O r d e r P o s i t i o n ( ) ;

 

 

 

 

 

O r d e r P o s i t i o n ( c o n s t O r d e r P o s i t i o n & r i g h t ) ;

 

- O r d e r P o s i t i o n ( ) ;

 

 

 

 

O r d e r P o s i t i o n

&

o p e r a t o r = ( c o n s t

O r d e r P o s i t i o n

i n t o p e r a t o r = = ( c o n s t O r d e r P o s i t i o n b r i g h t )

c o n s t ;

i n t o p e r a t o r ! = ( c o n s t O r d e r P o s i t i o n b r i g h t )

c o n s t ;

/ / П о л у ч и т ь д е й с т в у ю щ и й ) ц е н у п о п р а й с - л и с т у

 

d o u b l e g e t A c t u a l P r i c e

( ) ;

 

 

/ / П о л у ч е н и е ц е н ы с у ч е т о м н а л о г о в

 

 

d o u b l e g e t A c t u a l T a x P r i c e ( ) ;

 

 

/ / Р а с ч е т с у м м ы

 

 

 

 

 

d o u b l e c a l c A m o u n t

( ) ;

 

 

 

/ / Р а с ч е т с у м м ы с н а л о г а м и

 

 

d o u b l e c a l c A m o u n t T a x

( ) ;

 

 

c o n s t P r o d u c t * g e t _ t h e _ P r o d u c t () c o n s t ;

 

v o i d s e t _ t h e _ P r o d u c t

( P r o d u c t * v a l u e ) ;

 

p u b l i c :

 

 

 

 

 

b r i g h t ) ;

 

 

 

 

 

p

r o t e c t e d :

p

u b l i c :

 

c o n s t d o u b l e g e t _ q u a n t i t y

 

v o i d s e t _ q u a n t i t y ( d o u b l e

() c o n s t ; v a l u e ) ;

c o n s t c h a r * g e t _ m e a s u r e U n i t v o i d s e t _ m e a s u r e U n i t ( c h a r *

() c o n s t ; v a l u e ) ;

c o n s t d o u b l e g e t _ p r i c e v o i d s e t _ p r i c e ( d o u b l e

() c o n s t ; v a l u e ) ;

c o n s t d o u b l e g e t _ t a x P r i c e v o i d s e t _ t a x P r i c e ( d o u b l e

() c o n s t ; v a l u e ) ;

c o n s t d o u b l e g e t _ a m o u n t v o i d s e t _ a m o u n t ( d o u b l e

() c o n s t ; v a l u e ) ;

c o n s t d o u b l e g e t _ _ t a x A m o u n t v o i d s e t t a x A m o u n t ( d o u b l e

() c o n s t ; v a l u e ) ;

d o u b l e q u a n t i t y ;

c h a r * m e a s u r e U n i t ; d o u b l e p r i c e d -

d o u b l e t a x P r ic e d - d o u b l e a m o u n t ;

d o u b l e t a x A m o u n t ;

P r o d u c t * t h e P r o d u c t ;

Ниже представлен фрагмент кода соответствующего файла «Order,срр».

/ / O r d e r

# i n c l u d e " O r d e r . h "

/ / C l a s s O r d e r

O r d e r : : O r d e r ()

{

}

O r d e r : : O r d e r ( c o n s t O r d e r b r i g h t )

{

}

O r d e r : : - O r d e r ()

{

}

O r d e r & O r d e r : : o p e r a t o r = ( c o n s t O r d e r b r i g h t )

{

i n t O r d e r : : o p e r a t o r = = ( c o n s t O r d e r b r i g h t ) c o n s t

{

}

i n t O r d e r : : o p e r a t o r ! = ( c o n s t O r d e r b r i g h t ) c o n s t

{

}

d o u b l e O r d e r : : c a l c A m o u n t ()

{

}

d o u b l e O r d e r : : c a l c T a x ()

{

}

d o u b l e O r d e r : : c a l c T a x A m o u n t ()

{

}

d o u b l e O r d e r : : c a l c P o s Q u a n t i t y ()

{

}

O r d e r P o s i t i o n : : O r d e r P o s i t i o n ()

{

}

O r d e r P o s i t i o n : : O r d e r P o s i t i o n ( c o n s t O r d e r P o s i t i o n & r i g h t )

O r d e r P o s i t i o n : : ~ O r d e r P o s i t i o n ()

{

O r d e r P o s i t i o n & O r d e r P o s i t i o n : : o p e r a t o r = ( c o n s t O r d e r P o ­

s i t i o n S r i g h t )

{

}

i n t

O r d e r P o s i t i o n : : o p e r a t o r = = ( c o n s t

O r d e r P o s i t i o n

b r i g h t )

c o n s t

 

{

 

 

}

 

 

i n t

O r d e r P o s i t i o n : : o p e r a t o r ! = ( c o n s t

O r d e r P o s i t i o n

b r i g h t )

c o n s t

 

{

 

 

}

 

 

d o u b l e O r d e r P o s i t i o n : : g e t A c t u a l P r i c e ()

 

{

 

 

}

 

 

d o u b l e O r d e r P o s i t i o n : : g e t A c t u a l T a x P r i c e

()

{

 

 

}

 

 

Мы видим, что в файле «Order.cpp» содержатся лишь «заглуш­ ки» для соответствующих операций, конструкторов и деструкторов. Прописать функциональную часть той или иной операции придется нам самим.

За поддержку всех действий с заказами отвечает класс «OrderForm», с него и начнем нашу работами с классами от Rational Rose.

Реализаций операций класса «OrderForm» может быть множест­ во. Мы приведем лишь один вариант, не претендуя на его совершен­ ство, ведь наша цель - научиться использовать на практике классы, полученные с помощью Rational Rose.

Так как вся информация о заказах будет храниться в таблицах БД Oracle, то необходимо организовать обмен данных между экзем­ плярами классов и соответствующими таблицами. В связи с этим необходимо воспользоваться одним из компонентов C++ Builder, предназначенных для работы с базами данных. Остановим свой вы­ бор на компоненте «TADOQuery». Данный компонент обладает ши­ рокими возможностями работы с табличными данными при просто­ те использования.

Объявим экземпляр «TADOQuery» в файле-заголовке «Order.h»:

/ / P a y m e n t

# include " P a y m e n t . h" / / C u s t o m e r

# include " C u s t o m e r . h "

// P r o d u c t

include " P r o d u c t . h"

♦ include

< A D O D B .h p p >

/ * м о д у л ь A c t i v e X D a t a O b j e c t s

(A D O )* /

 

 

T A D O Q uery

* C u r r e n t Q u e r y ;

 

Прежде чем начать работу с данными посредством «CurrentQuery», необходимо задать строку соединения - «СоппесtionString». Данную строку можно получить, если выложить компо­ нент «TADOQuery» (панель инструментов «ADO») на форму и вос­ пользоваться стандартным мастером генерации строки соединения. Мастер вызывается по двойному щелчку на кнопке «...» напротив свойства «ConnectionString».

Для хранения этой строки и других настроек базы данных созда­ дим отдельный модуль «DBParams». В файле заголовка «DBParams.h» этого модуля пропишем макроопределение строки соедине­ ния, содержание которой возьмем из ранее созданного компонента:

ifndef D B P a r a m sH

define D B P a ra m sH

define

CONNECT_STRING

" P r o v i d e r = M S D A O R A .

w o r d = t i g e r ;

U s e r I D = s c o t t ;

D a t a S o u r c e = M A T R I X ;

c u r i t y I n f o = T r u e "

 

endif

 

 

1 ;

P

a s s -

P e r s i s t

S e ­

Соседние файлы в папке книги