Скачиваний:
76
Добавлен:
01.05.2014
Размер:
1.11 Mб
Скачать

Концептуальная модель данных. Er-диаграмма.

Абонент

Тех Отдел

Услуги

Оплата

Офис

В проекте использовался стандартный компонент ActiveX:ModulBase.ocxидущий в комплекте дополненийMSAccessXP. В своей работе мы используем его конструктор окон для работы с БД. Где были и произведены все связи с БД.

Далее следуют файлы полностью сгенеренныеэтим конструктором, мы приведем только несколько окон для примера т.к. принцип построения достаточно прост и идентичен во вовсех окнах.

Вот результат работы конструктора:

//Form2.frm

Object= "{EEE78583-FE22-11D0-8BEF-0060081841DE}#1.0#0"; "XVoice.dll"

B

// Описания самого окна и типа вывода его на экран.

eginFormForm2

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

//Создание кнопок и

Полей ввода

End

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, а также работы некольких операторов с одним ресурсом.

Реализован интуитивно понятный интерфейс в пределах технического задания.

Обеспечена надежная система защиты от ошибок на стадии занесения нового клиента или услуги (удаления), изменения их параметров и выдача обработанных данных.

В целом можно говорить, что данный проект не исчерпал полностью своих возможностей и при наличии материальных и временных ресурсов может быть доведен до уровня коммерческого приложения и использоваться в цифровых сетях СПКТВ.

Стр 37