Комплекс интеллектуального анализа данных

Разработка комплекса интеллектуального анализа данных, получаемых в процессе работы коммерческого предприятия розничной торговли. Исследование стационарности ассоциаций, выявление частоты появления ассоциаций. Скрипты для создания баз данных и таблиц.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 07.08.2013
Размер файла 706,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

{Button3->Visible = false;

if(Button2->Caption == "Отмена")

{if(Obr!=NULL)Obr->Terminate();

Label5->Caption = "Завершение...";

Form1->Enabled = false; }

else {Panel1->Visible = true;

Panel2->Visible = false; }}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{Button3->Visible = true;

Button2->Caption = "Отмена";

Panel2->Visible = true;

Panel1->Visible = false;

Obr = new WORK(true);

Obr->FreeOnTerminate = true;

Obr->Resume();}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{if(Obr!=NULL)

{if(!Obr->Suspended)

{Button3->Caption = "Старт";

Obr->Suspend();}

else {Button3->Caption = "Пауза";

Obr->Resume();}}}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{if(Application->MessageBox("Все записи из таблицы будут удалены!\nВы уверены?","Подтверждение.",MB_OKCANCEL) == 1)

{Button5->Visible = true;

Button6->Visible = true;

Panel2->Visible = true;

Panel1->Visible = false;

Label5->Caption = "Удаление";

Dlt = new DLT(true);

Dlt->FreeOnTerminate = true;

Dlt->Resume(); }}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)

{ if(Dlt!=NULL)Dlt->Terminate();

Panel1->Visible = true;

Panel2->Visible = false;}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button6Click(TObject *Sender)

{if(Dlt!=NULL)

{if(!Dlt->Suspended)

{Button6->Caption = "Старт";

Dlt->Suspend();}

else {Button6->Caption = "Пауза";

Dlt->Resume();}}}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button7Click(TObject *Sender)

{Application->Terminate();}

//---------------------------------------------------------------------------

Заголовочный файл потока очистки базы “DLT.h”

#ifndef DLTH

#define DLTH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include "Obrabotka.h"

//---------------------------------------------------------------------------

class DLT: public TThread

{private:

void __fastcall Sync();

int count1,snc;

protected:

void __fastcall Execute();

public:

__fastcall DLT(bool CreateSuspended);};

//---------------------------------------------------------------------------

#endif

Файл реализации потока очистки базы “DLT.cpp”

#include <vcl.h>

#pragma hdrstop

#include "DLT.h"

#pragma package(smart_init)

__fastcall DLT::DLT(bool CreateSuspended)

: TThread(CreateSuspended)

{}

//---------------------------------------------------------------------------

void __fastcall DLT::Sync()

{switch(snc)

{case 0:{Form1->Label12->Caption = IntToStr(count1);

Form1->CGauge1->MaxValue = count1;

break;}

case 1:{Form1->CGauge1->Progress++;

Form1->Label11->Caption = IntToStr(Form1->CGauge1->Progress);

break;}

case 2:{Form1->CGauge1->Progress = 0;

Form1->Label11->Caption = "";

Form1->Label12->Caption = "";

Form1->Button5->Visible = false;

Form1->Button6->Visible = false;

Form1->Panel1->Visible = true;

Form1->Panel2->Visible = false;

break;}}}

//---------------------------------------------------------------------------

void __fastcall DLT::Execute()

{Form1->SMSA->Open();

Form1->AS_2D_INFO->Active = true;

count1 = Form1->AS_2D_INFO->RecordCountFromSrv();

snc = 0;

Synchronize(Sync);

Form1->AS_2D_INFO->First();

Form1->pFIBTransaction2->StartTransaction();

while(!Form1->AS_2D_INFO->Eof&&!Terminated)

{Form1->AS_2D_INFO->Delete();

snc = 1;

Synchronize(Sync);}

if(Terminated)

{Form1->pFIBTransaction2->Rollback();

snc = 2;

Synchronize(Sync);

Form1->AS_2D_INFO->Active = false;

Form1->SMSA->Close();

return;}

if(Application->MessageBox("Принять изменеия?","Записи удалены!",MB_YESNO) == 6)

{Form1->pFIBTransaction2->Commit();}

else Form1->pFIBTransaction2->Rollback();

snc = 2;

Synchronize(Sync);

Form1->AS_2D_INFO->Active = false;

Form1->SMSA->Close();}

//---------------------------------------------------------------------------

Заголовочный файл потока обработки “WORK.h”

#ifndef WORKH

#define WORKH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include "Obrabotka.h"

struct CheckData {

long int ID;

double SUM,COUNT;};

struct ART{

char ar[8];

int locid,chcount;

CheckData *ch;};

//---------------------------------------------------------------------------

class WORK: public TThread

{private:

void __fastcall Sync();

void __fastcall AddErrLog(int);

void __fastcall DeleteART();

void __fastcall CreateART();

int __fastcall BinSearch(char *,int);

int snc,count1,count2,ST,asc,nasca,nascb,i,j,k,erc;

int locid,sc,id,L,idx,inda,indb;

int CHECKNUM,ZNUM,DESKNUM;

double TOTALSUM,QUANTITY;

char ar1[8], ar2[8],AR[8];

double AR1COUNT,AR2COUNT,AR1COST,AR2COST,AR1COUNTX,AR2COUNTX,AR1COSTX,AR2COSTX;

TDateTime Start,Stop,D,PD;

AnsiString qr,erstr;

long int bid;

int artcount;

ART *Mas;

TStringList *ErrLog;

TLocateOptions Opts;

Variant locvalue;

protected:

void __fastcall Execute();

public:

__fastcall WORK(bool CreateSuspended);};

//---------------------------------------------------------------------------

#endif

Файл реализации потока обработки “ WORK.cpp”

#include <vcl.h>

#pragma hdrstop

#include "WORK.h"

#pragma package(smart_init)

__fastcall WORK::WORK(bool CreateSuspended)

: TThread(CreateSuspended)

{}

//---------------------------------------------------------------------------

void __fastcall WORK::Sync()

{ switch(snc)

{case 0:{Form1->Label5->Caption = "Подготовка данных";

Form1->Label7->Caption = Form1->DTP1->Date.DateString()+" - "+Form1->DTP2->Date.DateString();

Form1->AS_2D->ParamByName("FIRSTD")->AsString = Form1->DTP1->Date.DateString();

Form1->AS_2D->ParamByName("LASTD")->AsString = Form1->DTP2->Date.DateString();

break;}

case 2:{Form1->Label5->Caption = "Определение количества записей для обработки";break;}

case 3:{Form1->Label12->Caption = IntToStr(count2);

Form1->CGauge1->MaxValue = count2;

break;}

case 5:{Form1->Label5->Caption = "Выборка данных";break;}

case 6:{Form1->Label5->Caption = "Формирование массива данных";break;}

case 7:{Form1->CGauge1->Progress = count1;

Form1->Label11->Caption = IntToStr(count1);

if(count1%10==0)

Form1->Label16->Caption = FloatToStr((double)ST/count1)+" мc";

break;}

case 8:{Form1->Label5->Caption = "Обработка завершена.";

Form1->Label12->Caption = "";

Form1->Label16->Caption = "";

Form1->CGauge1->Progress = 0;

Form1->Label11->Caption = "";

Form1->Button2->Caption = "Назад";

Form1->Button3->Visible = false;

Form1->Enabled = true;

break;}

case 9:{erc++;

Form1->Label9->Caption = IntToStr(erc);

Form1->Label13->Visible = true;

Form1->Image3->Visible = true;

break;}

case 11:{Form1->Label5->Caption = "Заполнение массива";break;}

case 12:{Form1->Label5->Caption = "Поиск в массиве";break;}

case 13:{Form1->Label5->Caption = "Обработка записи";break;}}}

//---------------------------------------------------------------------------

void __fastcall WORK::Execute()

{/*AR1COUNT - среднее кол-во товара А при покупке ассоциации

AR2COUNT - среднее кол-во товара В при покупке ассоциации

AR1COSR - средняя стоимость товара А при покупке ассоциации

AR2COST - средняя стоимость товара В при покупке ассоциации

AR1COUNTX - среднее кол-во товара А при покупке вне ассоциации

AR2COUNTX - среднее кол-во товара В при покупке вне ассоциации

AR1COSRX - средняя стоимость товара А при покупке вне ассоциации

AR2COSTX - средняя стоимость товара В при покупке вне ассоциации*/

ErrLog = new TStringList;

ErrLog->Add("***Error log file***");

Mas = NULL;

PD = 0;

Form1->SMSA->Open();

snc = 0;

Synchronize(Sync);

Form1->DBSPUT->Connected = true;

Form1->AS_2D->Active = true;

Form1->AS_2D_INFO->Active = true;

snc = 2;

Synchronize(Sync);

count1 = 0;

count2 = Form1->AS_2D->RecordCountFromSrv();

Form1->AS_2D->First();

snc = 3;

Synchronize(Sync);

Opts.Clear();

Opts << loCaseInsensitive;

ST = 0;

while(!Form1->AS_2D->Eof&&!Terminated)

{Form1->AS_2D->GetFieldData(1,&id);

Form1->AS_2D->GetFieldData(2,ar1);

Form1->AS_2D->GetFieldData(3,ar2);

Form1->AS_2D->GetFieldData(5,&sc);

Form1->AS_2D->GetFieldData(6,&locid);

D = VarToDateTime(Form1->AS_2D->RecordFieldValue(Form1->AS_2D->FieldByFieldNo(4),count1+1));

locvalue = (Variant)id;

if(!Form1->AS_2D_INFO->Locate("ID",&locvalue,Opts))

{Form1->pFIBTransaction2->StartTransaction();

if(PD!=D)

{PD = D;

DeleteART();

CreateART();}

Start = Time();

snc = 12;

Synchronize(Sync);

inda = BinSearch(ar1,locid);

indb = BinSearch(ar2,locid);

if(inda==-1||indb==-1)

{snc = 9;

Synchronize(Sync);

AddErrLog(1);}

snc = 13;

Synchronize(Sync);

AR1COUNT = 0;AR2COUNT = 0;AR1COST = 0;AR2COST = 0;

AR1COUNTX= 0;AR2COUNTX= 0;AR1COSTX = 0;AR2COSTX = 0;

asc = 0;nasca = 0;nascb = 0;

i = 0;j = 0;

while(i < Mas[inda].chcount && j < Mas[indb].chcount)

{if(Mas[inda].ch[i].ID < Mas[indb].ch[j].ID)

{nasca++;

AR1COUNTX += Mas[inda].ch[i].COUNT;

AR1COSTX += Mas[inda].ch[i].SUM;

i++;}

else if(Mas[inda].ch[i].ID > Mas[indb].ch[j].ID)

{nascb++;

AR2COUNTX += Mas[indb].ch[j].COUNT;

AR2COSTX += Mas[indb].ch[j].SUM;

j++; }

else if(Mas[inda].ch[i].ID == Mas[indb].ch[j].ID)

{ asc++;

AR1COUNT += Mas[inda].ch[i].COUNT;

AR2COUNT += Mas[indb].ch[j].COUNT;

AR1COST += Mas[inda].ch[i].SUM;

AR2COST += Mas[indb].ch[j].SUM;

i++;j++; }}

while(i < Mas[inda].chcount)

{nasca++;

AR1COUNTX += Mas[inda].ch[i].COUNT;

AR1COSTX += Mas[inda].ch[i].SUM;

i++; }

while(j < Mas[indb].chcount)

{nascb++;

AR2COUNTX += Mas[indb].ch[j].COUNT;

AR2COSTX += Mas[indb].ch[j].SUM;

j++;}

Form1->pFIBQuery1->ParamByName("ID")->AsInteger = id;

if(asc)

{Form1->pFIBQuery1->ParamByName("AR1COUNT")->AsFloat = AR1COUNT/asc;

Form1->pFIBQuery1->ParamByName("AR2COUNT")->AsFloat = AR2COUNT/asc;

Form1->pFIBQuery1->ParamByName("AR1COST")->AsFloat = AR1COST/asc;

Form1->pFIBQuery1->ParamByName("AR2COST")->AsFloat = AR2COST/asc;}

else {Form1->pFIBQuery1->ParamByName("AR1COUNT")->AsFloat = 0;

Form1->pFIBQuery1->ParamByName("AR2COUNT")->AsFloat = 0;

Form1->pFIBQuery1->ParamByName("AR1COST")->AsFloat = 0;

Form1->pFIBQuery1->ParamByName("AR2COST")->AsFloat = 0;}

if(nasca) {Form1->pFIBQuery1->ParamByName("AR1COUNTX")->AsFloat = AR1COUNTX/nasca;

Form1->pFIBQuery1->ParamByName("AR1COSTX")->AsFloat = AR1COSTX/nasca;}

else {Form1->pFIBQuery1->ParamByName("AR1COUNTX")->AsFloat = 0;

Form1->pFIBQuery1->ParamByName("AR1COSTX")->AsFloat = 0;}

if(nascb) {Form1->pFIBQuery1->ParamByName("AR2COUNTX")->AsFloat = AR2COUNTX/nascb;

Form1->pFIBQuery1->ParamByName("AR2COSTX")->AsFloat = AR2COSTX/nascb; }

else {Form1->pFIBQuery1->ParamByName("AR2COUNTX")->AsFloat = 0;

Form1->pFIBQuery1->ParamByName("AR2COSTX")->AsFloat = 0; }

Form1->pFIBQuery1->ExecQuery();

Form1->pFIBTransaction2->CommitRetaining();

Stop = Time();

ST += MilliSecondsBetween(Start,Stop);

if(sc!= asc)

{ snc = 9;

Synchronize(Sync);

AddErrLog(0); }}

Form1->AS_2D->Next();

count1++;

snc = 7;

Synchronize(Sync);}

DeleteART();

delete ErrLog;

Form1->AS_2D_INFO->Active = false;

Form1->AS_2D->Active = false;

Form1->SMSA->Close();

Form1->DBSPUT->Connected = false;

snc = 8;

Synchronize(Sync);}

//---------------------------------------------------------------------------

void __fastcall WORK::DeleteART()

{if(Mas!=NULL)

{for(j = 0;j<artcount;j++)delete[] Mas[j].ch;

delete[] Mas;

Mas = NULL;}}

//---------------------------------------------------------------------------

void __fastcall WORK::CreateART()

{snc = 5;

Synchronize(Sync);

artcount = 0;

Form1->OracleDataSet1->Close();

qr = "SELECT CHI.ARTICLE,CHI.LOCID,COUNT(CHI.ZNUM) AS C "

"FROM SUPERMAG.SMCASHCHECKITEMS CHI,SUPERMAG.SMCASHCHECKS CH "

"WHERE CH.PRINTTIME>='"+PD.DateTimeString()+"' "

"AND CH.PRINTTIME<='"+(PD+1).DateTimeString()+"' "

"AND CHI.CHECKNUM=CH.CHECKNUM "

"AND CHI.ZNUM=CH.ZNUM "

"AND CHI.DESKNUM=CH.DESKNUM "

"GROUP BY CHI.ARTICLE,CHI.LOCID "

"ORDER BY CHI.ARTICLE,CHI.LOCID";

Form1->OracleDataSet1->SQL->Text = qr;

Form1->OracleDataSet1->Active = true;

artcount = Form1->OracleDataSet1->RecordCount;

Form1->OracleDataSet1->First();

Mas = new ART[artcount];

for(i = 0;i<artcount;i++)

{Form1->OracleDataSet1->GetFieldData(1,Mas[i].ar);

Mas[i].locid = Form1->OracleDataSet1->FieldByName("LOCID")->AsInteger;

k = Form1->OracleDataSet1->FieldByName("C")->AsInteger;

Mas[i].chcount = 0;

Mas[i].ch = new CheckData[k];

Form1->OracleDataSet1->Next();}

Form1->OracleDataSet1->Close();

snc = 5;

Synchronize(Sync);

Form1->OracleQuery1->Close();

qr = "SELECT CHI.CHECKNUM,CHI.DESKNUM,CHI.ZNUM,CHI.ARTICLE,"

"CHI.LOCID,CHI.QUANTITY,CHI.TOTALSUM "

"FROM SUPERMAG.SMCASHCHECKITEMS CHI,SUPERMAG.SMCASHCHECKS CH "

"WHERE CH.PRINTTIME>='"+PD.DateTimeString()+"' "

"AND CH.PRINTTIME<='"+(PD+1).DateTimeString()+"' "

"AND CHI.CHECKNUM=CH.CHECKNUM "

"AND CHI.ZNUM=CH.ZNUM "

"AND CHI.DESKNUM=CH.DESKNUM "

"ORDER BY CHI.CHECKNUM,CHI.DESKNUM,CHI.ZNUM";

Form1->OracleQuery1->SQL->Text = qr;

Form1->OracleQuery1->Execute();

snc = 11;

Synchronize(Sync);

while(!Form1->OracleQuery1->Eof&&!Terminated)

{StrCopy(AR,Form1->OracleQuery1->FieldAsString(3).c_str());

L = Form1->OracleQuery1->FieldAsInteger(4);

idx = BinSearch(AR,L);

CHECKNUM = Form1->OracleQuery1->FieldAsInteger(0);

DESKNUM = Form1->OracleQuery1->FieldAsInteger(1);

ZNUM = Form1->OracleQuery1->FieldAsInteger(2);

bid = StrToInt(IntToStr(CHECKNUM)+IntToStr(DESKNUM)+IntToStr(ZNUM));

QUANTITY = Form1->OracleQuery1->FieldAsFloat(5);

TOTALSUM = Form1->OracleQuery1->FieldAsFloat(6);

if(idx!=-1)

{k = -1;

for(i = 0;i<Mas[idx].chcount;i++)

{if(Mas[idx].ch[i].ID == bid)

{k = i;break;}}

if(k == -1)

{Mas[idx].ch[Mas[idx].chcount].ID = bid;

Mas[idx].ch[Mas[idx].chcount].COUNT = QUANTITY;

Mas[idx].ch[Mas[idx].chcount].SUM = TOTALSUM;

Mas[idx].chcount++;}

else {Mas[idx].ch[k].COUNT += QUANTITY;

Mas[idx].ch[k].SUM += TOTALSUM;}}

Form1->OracleQuery1->Next();}

Form1->OracleQuery1->Close();}

//---------------------------------------------------------------------------

int __fastcall WORK::BinSearch(char *Key,int Loc)

{int m,l,h;

l = 0;

h = artcount;

while(l<=h)

{m = (l+h)/2;

if(!StrComp(Key,Mas[m].ar))

{if(Loc!=Mas[m].locid)

{while(Loc!=Mas[m].locid&&!StrComp(Key,Mas[m+1].ar))m++;

while(Loc!=Mas[m].locid&&!StrComp(Key,Mas[m-1].ar))m--;}

return m;}

else if(StrComp(Key,Mas[m].ar)<0) h = m-1;

else l = m+1; }

return -1;}

//---------------------------------------------------------------------------

void __fastcall WORK::AddErrLog(int code)

{switch(code)

{ case 0:{erstr = "["+Now().DateTimeString()+"] Ошибка при обработке "

"записи: (ID="+IntToStr(id)+" AR1="+(AnsiString)ar1+" "

"AR2="+(AnsiString)ar2+" LOCID="+IntToStr(locid)+" SALEDATE"

"="+D.DateString()+" SALESCOUNT="+IntToStr(sc)+"). "

"Несовпадение количества продаж, получено: "+IntToStr(asc)+";";

ErrLog->Add(erstr);

ErrLog->SaveToFile("C:\\errlog.txt");

break;}

case 1:{AnsiString b;

if(inda == -1)b += (AnsiString)ar1;

if(indb == -1)b += " "+(AnsiString)ar2;

erstr = "["+Now().DateTimeString()+"] Ошибка при обработке "

"записи: (ID="+IntToStr(id)+" AR1="+(AnsiString)ar1+" "

"AR2="+(AnsiString)ar2+" LOCID="+IntToStr(locid)+" SALEDATE"

"="+D.DateString()+" SALESCOUNT="+IntToStr(sc)+"). "

"Не найден артикул: "+b+";";

ErrLog->Add(erstr);

ErrLog->SaveToFile("C:\\errlog.txt");}}}

//---------------------------------------------------------------------------

Приложение К

Список сокращений

АРМ - автоматизированное рабочее место;

БД - база данных;

ДО - диспетчер обработки;

ИАД- интеллектуальный анализ данных;

ПО - прогрммное обеспесение;

ЦУ - центр управления.

Размещено на Allbest.ru


Подобные документы

  • Создание базы данных для ведения учёта товаров и услуг на предприятиях розничной торговли на примере компании "Евросеть СПБ". Экономическая сущность задач учета складских операций. Документальное оформление приёмки товаров. Среда создания базы данных.

    дипломная работа [3,1 M], добавлен 15.01.2012

  • Последовательность проектирования базы данных для предприятия, занимающегося заготовкой древесины, её переработкой и сбытом готовой продукции: скрипты создания таблиц по типам связей и вторичных индексов, создание первичного и внешнего ключей, листинга.

    курсовая работа [743,7 K], добавлен 02.06.2009

  • Создание баз данных и таблиц. Ограничение доступа для пользователей. Хранимая процедура, доступная всем пользователям. Скрипты для проверки ограничений. Методы обеспечения безопасности сервера базы данных. Чтение, изменение и добавление данных.

    лабораторная работа [1,4 M], добавлен 23.07.2012

  • Создание таблиц базы данных с помощью MS Access "Страны Азии". Форма базы данных и запросы к выборкам данных. Модификация структуры таблиц, создания связей между главными таблицами, редактирование данных и проектирование форм для реальной базы данных.

    контрольная работа [723,9 K], добавлен 25.11.2012

  • Цель создания базы данных магазина. Понятие и сущность инфологического моделирования, его применение. Особенности разработки базы данных, создание таблиц, схемы данных, запросов, визуальных и печатных форм. Описание процесса работы с базами данных.

    курсовая работа [1,9 M], добавлен 15.11.2013

  • Основные виды баз данных. Система управления базами данных. Анализ деятельности и информации, обрабатываемой в поликлинике. Состав таблиц в базе данных и их взаимосвязи. Методика наполнения базы данных информацией. Алгоритм создания базы данных.

    курсовая работа [3,1 M], добавлен 17.12.2014

  • Интеллектуальный анализ данных как метод поддержки принятия решений, основанный на анализе зависимостей между данными, его роль, цели и условия применения. Сущность основных задач интеллектуального анализа: классификации, регрессии, прогнозирования.

    контрольная работа [25,8 K], добавлен 08.08.2013

  • Основы теории классификаторов. Идентификация, четкая и нечеткая классификация. Обучающие и тестовые последовательности наборов данных. Популярные метрики (меры) оценки расстояния между образами. Дискриминантный анализ. Деревья решений. Логический вывод.

    лекция [596,5 K], добавлен 28.12.2013

  • Концептуальное проектирование базы данных: разработка схемы и структуры таблиц, описание атрибутов. Реализация базы данных в среде СУБД MS SQL Server 2000. Основные принципы создания таблиц. Доступ и обработка данных с помощью утилиты Enterprise Manager.

    курсовая работа [3,8 M], добавлен 22.01.2013

  • Концепции хранилищ данных для анализа и их составляющие: интеграции и согласования данных из различных источников, разделения наборов данных для систем обработки транзакций и поддержки принятия решений. Архитектура баз для хранилищ и витрины данных.

    реферат [1,3 M], добавлен 25.03.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.