Пример 2. Создание многоуровневой ИС
Рассмотрим пример создания многоуровневой ИС, в которой клиент из банкомата может обратиться к серверу банка и выполнить нужные ему операции (рис. 15).
Рисунок 15
Для ускорения обработки данных серверы банков реализованы в разных каналах. Пример следует рассмотреть самостоятельно, руководствуясь комментариями к нижеприведенному коду программы.
Xaction.idl enum EnumAction { balance, withdraw, deposit }; enum EnumStatus { OK, invalid, complete, incomplete }; struct xaction { long UserID; long PIN; long account; double amount; ::EnumAction action; double balance; ::EnumStatus status; }; interface Server { exception NoServer { string message; }; ::xaction HandleTransaction( inout ::xaction Transaction ); /* raises( ::Server::NoServer ); */ long Balance(); }; Banking.idl #include "xaction.idl" interface BankServer { ::xaction HandleTransaction( inout ::xaction Transaction ); long BankID(); }; module Bank { interface Account { float balance(); }; interface AccountManager { ::Bank::Account open( in string name ); }; };
Рисунок 16. Проект и интерфейс банкомата
Рисунок 17. Режим «Администрирование» ATMUnit/h //--------------------------------------------------------------------------- #ifndef atmunitH #define atmunitH //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <ComCtrls.hpp> #include <Buttons.hpp> //--------------------------------------------------------------------------- class ATMObject { private: long _ID; String _serverName; public: ATMObject(){_serverName = "Wells Fargo"; _ID = 100;}; ATMObject(String name){_serverName = name; _ID = 100;}; String serverName(){return _serverName;} void serverName(String name){_serverName = name;} long ID(){return _ID;} void ID(long id){_ID = id;} }; class TFormATM : public TForm { __published: // IDE-managed Components TEdit *NameBox; TEdit *PINBox; TEdit *AmountBox; TLabel *Label1; TLabel *Label2; TLabel *Label3; TRadioGroup *Action; TMemo *Memo1; TRadioGroup *AccountType; TStatusBar *StatusBar1; TBitBtn *BitBtn1; TBitBtn *BitBtn2; TGroupBox *GroupBox1; TGroupBox *GroupBox2; TBitBtn *BitBtn3; TLabel *Label4; TLabel *Label5; TBevel *Bevel1; void __fastcall FormCreate(TObject/* */ *Sender); void __fastcall BitBtn1Click(TObject *Sender); void __fastcall BitBtn2Click(TObject *Sender); void __fastcall BitBtn3Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TFormATM(TComponent* Owner); ATMObject * ATM; long __fastcall TestConnection(); }; //--------------------------------------------------------------------------- extern PACKAGE TFormATM *FormATM; //--------------------------------------------------------------------------- #endif ATMUnit.cpp #include <vcl.h> #pragma hdrstop #include "atmunit.h" #include "servname.h" #include "xaction_c.hh" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" USE_STD_NS TFormATM *FormATM; //--------------------------------------------------------------------------- __fastcall TFormATM::TFormATM(TComponent* Owner) : TForm(Owner) { } char * const * argV; int argC; //--------------------------------------------------------------------------- // ///////////////////////////////////// // Mimic streaming to VCL Memo Window // /////////////////////////////////////
Популярное: Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (204)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |