Long __fastcall TFormATM::TestConnection()
{ // проверка соединения try { CORBA::ORB_ptr orb = CORBA::ORB_init(); Server_ptr S = Server::_bind(ServerNameDlg->ServerNameEdit->Text.c_str()); return S->Balance(); } catch(CORBA::Exception &e) { return 0; } } //--------------------------------------------------------------------------- void __fastcall TFormATM::FormCreate(TObject *Sender) { ATM = new ATMObject(); } //--------------------------------------------------------------------------- void __fastcall TFormATM::BitBtn1Click(TObject *Sender) { // Администрирование if (ServerNameDlg->ShowModal() == mrOK) { ATM->serverName(ServerNameDlg->ServerNameEdit->Text); } } //--------------------------------------------------------------------------- void __fastcall TFormATM::BitBtn2Click(TObject *Sender) { // Список клиентов _update * U = new _update(FormATM); U->UpdateList(); delete U; } //--------------------------------------------------------------------------- void __fastcall TFormATM::BitBtn3Click(TObject *Sender) { // Выполнение операции catchit cbuf ( Memo 1); ostream CCout (& cbuf ); // Visibroker имеет предопределенный Cout // Создание интерфейса просмотра ATM -объекта _ update * Input = new _ update ( FormATM ); // Создание объекта транзакции xaction _ var X = new xaction ; // "Заселение" объекта транзакции X -> UserID = Input -> UserID (); try { X->PIN = Input->PIN(); } catch (Exception &e) { X->PIN = 0; } X->amount = Input->Amount(); X->action = Input->ActionType(); X->account = Input->AccountType(); X->balance = 0.00; X->status = incomplete; try { // Старт ORB CORBA::ORB_ptr orb = CORBA::ORB_init(); Input -> UpdateStatus ("* ORB Инициализирован."); // Присоединение к ATM -серверу Server_ptr ATMServer = Server::_bind(ATM->serverName().c_str()); Input -> UpdateStatus ("Присоединение к ATM -серверу завершено."); Input->UpdateStatus("ATM-сервер открыт."); // Передача транзакции ATM-серверу ATMServer->HandleTransaction(X); if (X->status == complete) { Input->UpdateMemo("Баланс счёта: $" + CurrToStr(X->balance)); Input->UpdateMemo("Транзакция завершена."); } else if (X->status == incomplete) { Input -> UpdateMemo ("Транзакция не обработана."); Input->UpdateMemo("Баланс счёта: $" + CurrToStr(X->balance)); } else if (X->status == invalid) { Input->Clear(); Input->UpdateMemo("* ID клиента и PIN не найдены!"); } } catch(const CORBA::Exception& e) { CCout << e._name() << endl; Input->UpdateStatus("* ATM-сервер отключен!"); } } //--------------------------------------------------------------------------- Servername.h //---------------------------------------------------------------------------- #ifndef servnameH #define servnameH //---------------------------------------------------------------------------- #include <vcl\System.hpp> #include <vcl\Windows.hpp> #include <vcl\SysUtils.hpp> #include <vcl\Classes.hpp> #include <vcl\Graphics.hpp> #include <vcl\StdCtrls.hpp> #include <vcl\Forms.hpp> #include <vcl\Controls.hpp> #include <vcl\Buttons.hpp> #include <vcl\ExtCtrls.hpp> //---------------------------------------------------------------------------- class TServerNameDlg : public TForm { __published: TButton *OKBtn; TButton *CancelBtn; TBevel *Bevel1; TLabel *Label1; TLabel *ServerNameLabel; TEdit *ServerNameEdit; TLabel *Label2; TButton *ConnectButton; TLabel *Label3; TLabel *CountLabel; TLabel *ResultLabel; void __fastcall FormShow(TObject/* */ *Sender); void __fastcall ConnectButtonClick(TObject/* */ *Sender); void __fastcall OKBtnClick(TObject/* */ *Sender); private: public: virtual __fastcall TServerNameDlg(TComponent* AOwner); }; //---------------------------------------------------------------------------- extern PACKAGE TServerNameDlg *ServerNameDlg; //---------------------------------------------------------------------------- #endif Servername.cpp #include <vcl.h> #pragma hdrstop
#include "servname.h" #include "atmunit.h" //--------------------------------------------------------------------- #pragma resource "*.dfm"
TServerNameDlg *ServerNameDlg; //--------------------------------------------------------------------- __fastcall TServerNameDlg::TServerNameDlg(TComponent* AOwner) : TForm(AOwner) { } //--------------------------------------------------------------------- void __fastcall TServerNameDlg::FormShow(TObject/* */ *Sender) { ServerNameLabel->Caption = FormATM->ATM->serverName(); ServerNameEdit->Text = ServerNameLabel->Caption; ResultLabel->Caption = ""; } //--------------------------------------------------------------------------- void __fastcall TServerNameDlg::ConnectButtonClick(TObject/* */ *Sender) { CountLabel->Caption = String(FormATM->TestConnection()); if (CountLabel->Caption == "0") ResultLabel->Caption = "* Соединения нет!"; else ResultLabel->Caption = "Соединение установлено."; } //--------------------------------------------------------------------------- void __fastcall TServerNameDlg::OKBtnClick(TObject/* */ *Sender) { if (CountLabel->Caption != String("0")) { FormATM->ATM->serverName(ServerNameEdit->Text); } } //---------------------------------------------------------------------------
Рисунок 5.18. Проект и интерфейс ATM-сервера
#ifndef atmserverunitH #define atmserverunitH //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include "xaction_s.hh" #include "banking_s.hh" #include <Buttons.hpp> //--------------------------------------------------------------------------- class TForm2 : public TForm { __published: // IDE-managed Components TLabel *Transactions; TEdit *Count; TEdit *ServerNameEdit; TLabel *Label1; TBitBtn *BitBtn1; TGroupBox *GroupBox2; TGroupBox *GroupBox1; TBitBtn *BitBtn2; TMemo *Memo1; TComboBox *BankBox; void __fastcall FormClose(TObject *Sender, TCloseAction &Action); void __fastcall BitBtn1Click(TObject *Sender); void __fastcall BitBtn2Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm2(TComponent* Owner); void StartServer(); void DownServer(); CORBA::ORB_var orb; CORBA::BOA_var boa; CORBA::Object_ptr obj; String CurrentServerName; }; //--------------------------------------------------------------------------- extern PACKAGE TForm2 *Form2; //--------------------------------------------------------------------------- #endif ATMServerUnit.cpp #include <vcl.h> #pragma hdrstop #include "atmserverunit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm2 *Form2; //--------------------------------------------------------------------------- __fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- char * const * argV; int argC; //--------------------------------------------------------------------------- // ///////////////////////////////////// // Implement CORBA object from skeleton class // /////////////////////////////////////
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (205)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |