- •Санкт-Петербургский
- •1 Цифровые сети с интеграцией служб
- •2.1 Узкополосная isdn
- •2.1.1 Основные понятия
- •2.1.2 Архитектура isdn
- •2.1.3 Стандарты isdn
- •2.1.4 Доступ к isdn
- •2.2 Широкополосная isdn
- •2.2.1 Общие характеристики
- •2.2.2 Топология доступа
- •2.2.3 Услуги b-isdn
- •2.3 Профиль взаимодействия n-isdn и b-isdn
- •О фио № счета * Состояние № Счета * Лог счета № счета * Услуги № счета * Id услуги № счета* (снятие) Расшифровка услугиId *бобщенная схема действий над базой.
- •Концептуальная модель данных. Er-диаграмма.
Концептуальная модель данных. Er-диаграмма.
Абонент
Тех Отдел
Услуги
Оплата
Офис
В проекте использовался стандартный компонент ActiveX:ModulBase.ocxидущий в комплекте дополненийMSAccessXP. В своей работе мы используем его конструктор окон для работы с БД. Где были и произведены все связи с БД.
Далее следуют файлы полностью сгенеренныеэтим конструктором, мы приведем только несколько окон для примера т.к. принцип построения достаточно прост и идентичен во вовсех окнах.
Вот результат работы конструктора:
//Form2.frm
Object= "{EEE78583-FE22-11D0-8BEF-0060081841DE}#1.0#0"; "XVoice.dll"
B
// Описания самого окна и типа вывода
его на экран.
BorderStyle= 4'Fixed ToolWindow
Caption = "Информация о клиенте"
ClientHeight = 1950
ClientLeft = 45
ClientTop = 285
ClientWidth = 4665
LinkTopic = "Form2"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 1950
ScaleWidth = 4665
ShowInTaskbar = 0 'False
StartUpPosition = 1 'CenterOwner
Begin ACTIVEVOICEPROJECTLibCtl.DirectSS DSS
Height = 375
Left = 4800
OleObjectBlob = "Form2.frx":0000
TabIndex = 13
Top = 1800
Width = 375
//Создание кнопок и
Полей ввода
Begin CheckBox Check1
Caption = "Описание"
Height = 255
Left = 3600
Style = 1 'Graphical
TabIndex = 12
Top = 840
Width = 975
End
Begin ListBox List1
Height = 1035
Left = 120
TabIndex = 10
Top = 2280
Width = 4455
End
Begin TextBox Text1
BackColor = &H80000004&
BeginProperty DataFormat
Type = 1
Format = "d. MMMM yyyy"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 3
EndProperty
Height = 285
Index = 4
Left = 1800
Locked = -1 'True
TabIndex = 9
Top = 1560
Width = 2775
End
Begin TextBox Text1
BackColor = &H80000004&
Height = 285
Index = 3
Left = 1800
Locked = -1 'True
TabIndex = 8
Top = 1200
Width = 2775
End
Begin TextBox Text1
BackColor = &H80000004&
Height = 285
Index = 2
Left = 1800
Locked = -1 'True
TabIndex = 7
Top = 840
Width = 1695
End
Begin TextBox Text1
BackColor = &H80000004&
Height = 285
Index = 1
Left = 1800
Locked = -1 'True
TabIndex = 6
Top = 480
Width = 2775
End
Begin TextBox Text1
BackColor = &H80000004&
BeginProperty DataFormat
Type = 1
Format = "000-0000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 0
EndProperty
Height = 285
Index = 0
Left = 1800
Locked = -1 'True
TabIndex = 5
Top = 120
Width = 2775
End
Begin Label Label2
Caption = "Расшифровка услуг:"
Height = 255
Left = 120
TabIndex = 11
Top = 2040
Width = 2535
End
Begin Label Label1
Caption = "Дата пополнения:"
Height = 255
Index = 4
Left = 120
TabIndex = 4
Top = 1560
Width = 1575
End
Begin Label Label1
Caption = "Состояние счета:"
Height = 255
Index = 3
Left = 120
TabIndex = 3
Top = 1200
Width = 1575
End
Begin Label Label1
Caption = "Коды услуг:"
Height = 255
Index = 2
Left = 120
TabIndex = 2
Top = 840
Width = 1215
End
Begin Label Label1
Caption = "№ счёта:"
Height = 255
Index = 1
Left = 120
TabIndex = 1
Top = 120
Width = 1215
End
Begin Label Label1
Caption = "ФИО:"
Height = 255
Index = 0
Left = 120
TabIndex = 0
Top = 480
Width = 1215
End
End
Attribute Name = "Form2";
Attribute GlobalNameSpace = False;
Attribute Creatable = False;
Attribute PredeclaredId = True;
Attribute Exposed = False;
// описание связей полей с БД
Text1->Source(ISDN(0));
Text2->Source(ISDN(1));
Text3->Source(ISDN(2));
Text4->Source(ISDN(3));
Text5->Source(ISDN(4));
//Допонительная ф-я увеличения окна
Check1.Click->Me.Height=3720 NOT Height=2265;
//Заполнения списка услуг
List1->Source(Uslugi(0));
// Связь выбора с полем
List1.Check->Text2;
//Form3.frm
Begin Form Form3
BorderStyle = 4 'Fixed ToolWindow
Caption = "Добавление клиента"
ClientHeight = 1965
ClientLeft = 45
ClientTop = 285
ClientWidth = 5250
LinkTopic = "Form3"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 1965
ScaleWidth = 5250
ShowInTaskbar = 0 'False
StartUpPosition = 1 'CenterOwner
Begin VB.VScrollBar VS
Height = 255
Left = 3090
Max = -50
Min = -32767
TabIndex = 14
Top = 1220
Value = -100
Width = 375
End
Begin CommandButton Command1
Caption = "Ok"
Height = 1695
Left = 4680
TabIndex = 13
Top = 120
Width = 495
End
Begin TextBox Text1
BackColor = &H80000004&
BeginProperty DataFormat
Type = 1
Format = "000-0000"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 0
EndProperty
Height = 285
Index = 0
Left = 1800
Locked = -1 'True
TabIndex = 6
Top = 120
Width = 2775
End
Begin TextBox Text1
Height = 285
Index = 1
Left = 1800
TabIndex = 5
Top = 480
Width = 2775
End
Begin TextBox Text1
BackColor = &H80000004&
Height = 285
Index = 2
Left = 1800
Locked = -1 'True
TabIndex = 4
Top = 840
Width = 1695
End
Begin TextBox Text1
BackColor = &H80000004&
Height = 285
Index = 3
Left = 1800
Locked = -1 'True
TabIndex = 3
Text = "100"
Top = 1200
Width = 1695
End
Begin TextBox Text1
BackColor = &H80000004&
BeginProperty DataFormat
Type = 1
Format = "d. MMMM yyyy"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1049
SubFormatType = 3
EndProperty
Height = 285
Index = 4
Left = 1800
Locked = -1 'True
TabIndex = 2
Top = 1560
Width = 2775
End
Begin ListBox List1
Height = 960
ItemData = "Form3.frx":0000
Left = 120
List = "Form3.frx":0002
Style = 1 'Checkbox
TabIndex = 1
Top = 2280
Width = 4455
End
Begin CheckBox Check1
Caption = "Добавить"
Height = 255
Left = 3600
Style = 1 'Graphical
TabIndex = 0
Top = 840
Width = 975
End
Begin Label Label3
Caption = "Руб."
Height = 255
Left = 3600
TabIndex = 15
Top = 1200
Width = 975
End
Begin Label Label1
Caption = "ФИО:"
Height = 255
Index = 0
Left = 120
TabIndex = 12
Top = 480
Width = 1215
End
Begin Label Label1
Caption = "№ счёта:"
Height = 255
Index = 1
Left = 120
TabIndex = 11
Top = 120
Width = 1215
End
Begin Label Label1
Caption = "Коды услуг:"
Height = 255
Index = 2
Left = 120
TabIndex = 10
Top = 840
Width = 1215
End
Begin Label Label1
Caption = "Состояние счета:"
Height = 255
Index = 3
Left = 120
TabIndex = 9
Top = 1200
Width = 1575
End
Begin Label Label1
Caption = "Дата пополнения:"
Height = 255
Index = 4
Left = 120
TabIndex = 8
Top = 1560
Width = 1575
End
Begin Label Label2
Caption = "Расшифровка услуг:"
Height = 255
Left = 120
TabIndex = 7
Top = 2040
Width = 2535
End
End
Attribute Name = "Form3"
Attribute GlobalNameSpace = False
Attribute Creatable = False
Attribute PredeclaredId = True
Attribute Exposed = False
Text1->Source(ISDN(0));
Text2->Source(ISDN(1))->Edit(TRUE);
Text3->Source(ISDN(2));
Text4->Source(ISDN(3))->VS(TRUE);
Text5->Source(ISDN(4));
Check1.Click->Me.Height=3720 NOT Height=2265;
List1->Source(Uslugi(0));
List1.Check->Text2
AddTo(ISDN:
Text1->Source(ISDN(0)),
Text2->Source(ISDN(1)),
Text3->Source(ISDN(2)),
Text4->Source(ISDN(3)),
Text5->Source(ISDN(4)));
// kursDlg.cpp:implementationfile
//
#include "stdafx.h"
#include "kurs.h"
#include "kursDlg.h"
#include "_BaseControl.h"
#include "_BaseSource.h"
#include "_BaseTabl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//Подключения окошка о программе С++ пишет самостоятельно
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CKursDlg dialog
// Основное окно
CKursDlg::CKursDlg(CWnd* pParent /*=NULL*/)
: CDialog(CKursDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CKursDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CKursDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CKursDlg)
DDX_Control(pDX, IDC_BASECONTROL1, m_BC);
DDX_Control(pDX, IDC_BASESOURCE1, m_BS);
DDX_Control(pDX, IDC_BASETABL1, m_BT);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CKursDlg, CDialog)
//{{AFX_MSG_MAP(CKursDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CKursDlg message handlers
// Вывод основного окна ISDN
BOOL CKursDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
// Добовляет в системное меню строку О программе
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
// Связь окна "О программе" со стракой в системном меню
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
return TRUE; // return TRUE unless you set the focus to a control
//Загрузка Базы данных в память
//Создание таблици ISDN
C_BaseSource::BaseCreate("ISDN");
C_BaseSource::TypeBase (12);
C_BaseSource::LoadPoint(0,"ISDN.schet");
C_BaseSource::LoadPoint(1,"ISDN.fio");
C_BaseSource::LoadPoint(2,"ISDN.sost");
C_BaseSource::LoadPoint(3,"ISDN.uslug");
C_BaseSource::LoadPoint(4,"ISDN.date");
C_BaseSource::LoadPoint(5,"ISDN.datsn");
//Создание таблици Uslugi
C_BaseSource::BaseCreate ("Uslugi");
C_BaseSource::LoadPoint(1,"Uslugi.usl");
C_BaseSource::LoadPoint(2,"Uslugi.uslOpis");
C_BaseSource::LoadPoint(3,"Uslugi.cena");
//Включение записи в Log файлы
C_BaseSource::Log(TRUE);
//Организация связей лог файлов
C_BaseSource::LogName(0,"TehOtdel-Base.txt",);
C_BaseSource::LogName(1,"Log-$DATA$.txt",);
C_BaseSource::LogName(2,"log-newKl.txt",);
//Создание форм общения frm создается генератором форм
C_BaseSource::CreateFormInFile("frm\form2.frm",2);
C_BaseSource::CreateFormInFile("frm\form3.frm",3);
C_BaseSource::CreateFormInFile("frm\form4.frm",4);
C_BaseSource::CreateFormInFile("frm\form5.frm",5);
C_BaseSource::CreateFormInFile("frm\form6.frm",6);
C_BaseSource::CreateFormInFile("frm\form7.frm",7);
C_BaseSource::CreateFormInFile("frm\form8.frm",8);
//Активизация (подключние к программе)
C_BaseSource::InitForm(2);
C_BaseSource::InitForm(3);
C_BaseSource::InitForm(4);
C_BaseSource::InitForm(5);
C_BaseSource::InitForm(6);
C_BaseSource::InitForm(7);
C_BaseSource::InitForm(8);
//Создание меню
void C_BaseControl::CreateMenu(8)
{
//Кнопки
C_BaseControl F;
F.AddButt(0);
F.OnPoint(0,"ico\BINOCULR.ICO");
F.LinkButt(0,2);
F.TipTopButt(0,"Поиск по ФИО");
F.AddButt(1);
F.OnPoint(1,"ico\CRDFLE04.ICO");
F.LinkButt(1,3);
F.TipTopButt(1,"Поиск по номеру Счета");
F.AddButt(2);
F.OnPoint(2,"ico\CLIP08.ICO");
F.LinkButt(2,4);
F.TipTopButt(2,"Создать нового клиента");
F.AddTip(); //Разделитель
F.AddButt(3);
F.OnPoint(3,"ico\CRDFLE13.ICO");
F.LinkButt(3,5);
F.TipTopButt(3,"Редактор Услуг");
F.AddTip();
F.AddButt(4);
F.OnPoint(4,"ico\FILES06.ICO");
F.LinkButt(4,6);
F.TipTopButt(4,"Просмотр лог изменений");
F.AddButt(5);
F.OnPoint(5,"ico\FILES06.ICO");
F.LinkButt(5,6);
F.TipTopButt(5,"Просмотр лог Разрешенных");
F.AddTip();
F.AddButt(6);
F.OnPoint(6,"ico\NOTE14.ICO");
F.LinkButt(6,6);
F.TipTopButt(6,"Подготовить данные");
F.AddTip();
F.AddButt(7);
F.OnPoint(7,"ico\DISK04.ICO");
F.LinkButt(7,8);
F.TipTopButt(7,"Сохранить");
F.AddTip();
F.AddButt(0);
F.OnPoint(0,"ico\LABELS.ICO");
F.LinkButt(0,2);
F.TipTopButt(0,"Просмотр Услуг");
};
//Включение голосового режима
C_BaseSource::SpeakForm(2,TRUE);
//Соединение меню с формами
C_BaseSource::InitLinkFormToMenu(7,0);
C_BaseSource::InitLinkFormToMenu(8,1);
C_BaseSource::InitLinkFormToMenu(3,2);
C_BaseSource::InitLinkFormToMenu(4,3);
C_BaseSource::InitLinkFormToMenu(5,4);
C_BaseSource::InitLinkFormToMenu(6,5);
C_BaseSource::InitLinkFormToMenu(7,6);
C_BaseSource::InitLinkFuncToMenu("SaveBase",7);
C_BaseSource::InitLinkFormToMenu(8,8);
//Сохранить меню в реестр (память)
C_BaseControl::SaveMenu (TRUE);
//Cоздание таблици
C_BaseTabl::CountP(3);
C_BaseTabl::CreateP("№ Счета",0);
C_BaseTabl::CreateP("ФИО",1);
C_BaseTabl::CreateP("Состояние",2);
C_BaseTabl::CreateP("Дата",3);
//Сортировать по первому столбцу
C_BaseTabl::Sort(0);
}
//Подключение формочки О Программе
void CKursDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
//Прорисовка основного окна
void CKursDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CKursDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
_basecontrol.cpp
//Генериться MS VC++
#include "stdafx.h"
#include "_basecontrol.h"
/////////////////////////////////////////////////////////////////////////////
// C_BaseControl
IMPLEMENT_DYNCREATE(C_BaseControl, CWnd)
/////////////////////////////////////////////////////////////////////////////
// C_BaseControl properties
/////////////////////////////////////////////////////////////////////////////
// C_BaseControl operations
// Операции заложенные вActiveX
void C_BaseControl::CreateMenu(BSTR* Butt)
{
static BYTE parms[] =
VTS_PBSTR;
InvokeHelper(0x60030002, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Butt);
}
void C_BaseControl::AddButt(long* CountIndex)
{
static BYTE parms[] =
VTS_PI4;
InvokeHelper(0x60030003, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
CountIndex);
}
void C_BaseControl::OnPoint(short* Index, BSTR* FileIco)
{
static BYTE parms[] =
VTS_PI2 VTS_PBSTR;
InvokeHelper(0x60030004, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Index, FileIco);
}
void C_BaseControl::LinkButt(short* Index, BSTR* FunctionButt)
{
static BYTE parms[] =
VTS_PI2 VTS_PBSTR;
InvokeHelper(0x60030005, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Index, FunctionButt);
}
void C_BaseControl::TipTopButt(short* Index, BSTR* Text)
{
static BYTE parms[] =
VTS_PI2 VTS_PBSTR;
InvokeHelper(0x60030006, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Index, Text);
}
//_basesource.cpp
//Генериться MS VC++
#include "stdafx.h"
#include "_basesource.h"
/////////////////////////////////////////////////////////////////////////////
// C_BaseSource
IMPLEMENT_DYNCREATE(C_BaseSource, CWnd)
/////////////////////////////////////////////////////////////////////////////
// C_BaseSource properties
/////////////////////////////////////////////////////////////////////////////
// C_BaseSource operations
// Операции заложенные вActiveX
void C_BaseSource::LoadBase()
{
InvokeHelper(0x60030001, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void C_BaseSource::SaveBase()
{
InvokeHelper(0x60030002, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void C_BaseSource::NewKlient()
{
InvokeHelper(0x60030003, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void C_BaseSource::RedUsl()
{
InvokeHelper(0x60030004, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void C_BaseSource::ReadStr(BSTR* txt)
{
static BYTE parms[] =
VTS_PBSTR;
InvokeHelper(0x60030005, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
txt);
}
void C_BaseSource::Podscet()
{
InvokeHelper(0x60030006, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void C_BaseSource::ShowLog(BSTR* LogFile)
{
static BYTE parms[] =
VTS_PBSTR;
InvokeHelper(0x60030007, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
LogFile);
}
void C_BaseSource::BaseCreate(BSTR* Name)
{
static BYTE parms[] =
VTS_PBSTR;
InvokeHelper(0x60030008, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Name);
}
void C_BaseSource::TypeBase(short* TypeB)
{
static BYTE parms[] =
VTS_PI2;
InvokeHelper(0x60030009, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
TypeB);
}
void C_BaseSource::LoadPoint(short* Index, BSTR* NameP)
{
static BYTE parms[] =
VTS_PI2 VTS_PBSTR;
InvokeHelper(0x6003000a, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Index, NameP);
}
void C_BaseSource::SavePoint(short* Index, BSTR* NameP)
{
static BYTE parms[] =
VTS_PI2 VTS_PBSTR;
InvokeHelper(0x6003000b, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Index, NameP);
}
void C_BaseSource::Log(BOOL* T)
{
static BYTE parms[] =
VTS_PBOOL;
InvokeHelper(0x6003000c, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
T);
}
void C_BaseSource::CreateFormInFile(BSTR* FileName, long* Id)
{
static BYTE parms[] =
VTS_PBSTR VTS_PI4;
InvokeHelper(0x6003000d, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
FileName, Id);
}
void C_BaseSource::LogName(short* EndF, BSTR* NFile, BSTR* FunctionF)
{
static BYTE parms[] =
VTS_PI2 VTS_PBSTR VTS_PBSTR;
InvokeHelper(0x6003000e, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
EndF, NFile, FunctionF);
}
void C_BaseSource::InitForm(long* Id)
{
static BYTE parms[] =
VTS_PI4;
InvokeHelper(0x6003000f, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Id);
}
void C_BaseSource::SpeakForm(long* Id, BOOL* T)
{
static BYTE parms[] =
VTS_PI4 VTS_PBOOL;
InvokeHelper(0x60030010, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Id, T);
}
_basetabl.cpp
//Генериться MS VC++
#include "stdafx.h"
#include "_basetabl.h"
/////////////////////////////////////////////////////////////////////////////
// C_BaseTabl
IMPLEMENT_DYNCREATE(C_BaseTabl, CWnd)
/////////////////////////////////////////////////////////////////////////////
// C_BaseTabl properties
/////////////////////////////////////////////////////////////////////////////
// C_BaseTabl operations
void C_BaseTabl::ReList()
{
InvokeHelper(0x60030008, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void C_BaseTabl::ListInd(short* nomer, BOOL* value)
{
static BYTE parms[] =
VTS_PI2 VTS_PBOOL;
InvokeHelper(0x60030009, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
nomer, value);
}
short C_BaseTabl::ListCoun()
{
short result;
InvokeHelper(0x6003000a, DISPATCH_METHOD, VT_I2, (void*)&result, NULL);
return result;
}
void C_BaseTabl::CreateP(BSTR* NameP, short* Id)
{
static BYTE parms[] =
VTS_PBSTR VTS_PI2;
InvokeHelper(0x6003000b, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
NameP, Id);
}
void C_BaseTabl::CountP(long* L)
{
static BYTE parms[] =
VTS_PI4;
InvokeHelper(0x6003000c, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
L);
}
// Файл объявлений класса C_BaseControl
#if !defined(AFX__BASECONTROL_H__4B08CA06_21C3_4BEA_861B_74CCAA318266__INCLUDED_)
#define AFX__BASECONTROL_H__4B08CA06_21C3_4BEA_861B_74CCAA318266__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// C_BaseControl wrapper class
class C_BaseControl : public CWnd
{
protected:
DECLARE_DYNCREATE(C_BaseControl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0xe9a95e43, 0x6dbf, 0x4990, { 0x9a, 0x2a, 0xe4, 0xb3, 0xd3, 0xeb, 0x67, 0x15 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }
// Attributes
public:
// Operations
public:
void CreateMenu(BSTR* Butt);
void AddButt(long* CountIndex);
void OnPoint(short* Index, BSTR* FileIco);
void LinkButt(short* Index, BSTR* FunctionButt);
void TipTopButt(short* Index, BSTR* Text);
void SaveMenu(BOOL* S);
void AddTip();
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX__BASECONTROL_H__4B08CA06_21C3_4BEA_861B_74CCAA318266__INCLUDED_)
// Файл объявлений класса C_BaseSource
#if !defined(AFX__BASESOURCE_H__9CE6DA40_7887_4E4E_93EE_B30E1859B068__INCLUDED_)
#define AFX__BASESOURCE_H__9CE6DA40_7887_4E4E_93EE_B30E1859B068__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// C_BaseSource wrapper class
class C_BaseSource : public CWnd
{
protected:
DECLARE_DYNCREATE(C_BaseSource)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0xf608dfd0, 0xff43, 0x48a7, { 0x8c, 0x24, 0x61, 0x57, 0x8f, 0xa0, 0xe0, 0xe9 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }
// Attributes
public:
// Operations
public:
void LoadBase();
void SaveBase();
void NewKlient();
void RedUsl();
void ReadStr(BSTR* txt);
void Podscet();
void ShowLog(BSTR* LogFile);
void BaseCreate(BSTR* Name);
void TypeBase(short* TypeB);
void LoadPoint(short* Index, BSTR* NameP);
void SavePoint(short* Index, BSTR* NameP);
void Log(BOOL* T);
void CreateFormInFile(BSTR* FileName, long* Id);
void LogName(short* EndF, BSTR* NFile, BSTR* FunctionF);
void InitForm(long* Id);
void SpeakForm(long* Id, BOOL* T);
void InitLinkFormToMenu(long* IDF, long* IDM);
void InitLinkFuncToMenu(BSTR* F, long* ID);
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX__BASESOURCE_H__9CE6DA40_7887_4E4E_93EE_B30E1859B068__INCLUDED_)
// Файл объявлений класса C_BaseTable
#if !defined(AFX__BASETABL_H__61A8E953_6A6E_4C80_8C95_D1B04F46F96C__INCLUDED_)
#define AFX__BASETABL_H__61A8E953_6A6E_4C80_8C95_D1B04F46F96C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this class is regenerated by
// Microsoft Visual C++, your modifications will be overwritten.
/////////////////////////////////////////////////////////////////////////////
// C_BaseTabl wrapper class
class C_BaseTabl : public CWnd
{
protected:
DECLARE_DYNCREATE(C_BaseTabl)
public:
CLSID const& GetClsid()
{
static CLSID const clsid
= { 0x86576f52, 0xf968, 0x4bfd, { 0xbe, 0xc1, 0x81, 0xca, 0xd2, 0xeb, 0xe0, 0x85 } };
return clsid;
}
virtual BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); }
BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CWnd* pParentWnd, UINT nID,
CFile* pPersist = NULL, BOOL bStorage = FALSE,
BSTR bstrLicKey = NULL)
{ return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID,
pPersist, bStorage, bstrLicKey); }
// Attributes
public:
// Operations
public:
void NewStr(BSTR* Schet, BSTR* fio, BSTR* sost, BSTR* dat);
void ReList();
void ListInd(short* nomer, BOOL* value);
short ListCoun();
void CreateP(BSTR* NameP, short* Id);
void CountP(long* L);
void Sort(long* Id);
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX__BASETABL_H__61A8E953_6A6E_4C80_8C95_D1B04F46F96C__INCLUDED_)
Заключение.
Представленная программы Kurs.exe полностью удовлетворяет техническому заданию. В ней реализованы все оговоренные функции.
Создана достаточно удобная структура классов с возможностью дальнейшего развития и наращивания доступных пользователю функции. Обеспечена преемственность платформ, из под которых может запускаться данная программа (Windows 95, 98, 2000, причем не обязательно присутствие компилятора С++ на машине).
Предусмотрена возможность быстрого перехода программы в Internet для работы клиентов в on-line, а также работы некольких операторов с одним ресурсом.
Реализован интуитивно понятный интерфейс в пределах технического задания.
Обеспечена надежная система защиты от ошибок на стадии занесения нового клиента или услуги (удаления), изменения их параметров и выдача обработанных данных.
В целом можно говорить, что данный проект не исчерпал полностью своих возможностей и при наличии материальных и временных ресурсов может быть доведен до уровня коммерческого приложения и использоваться в цифровых сетях СПКТВ.
Стр