Комплекс интеллектуального анализа данных
Разработка комплекса интеллектуального анализа данных, получаемых в процессе работы коммерческого предприятия розничной торговли. Исследование стационарности ассоциаций, выявление частоты появления ассоциаций. Скрипты для создания баз данных и таблиц.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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