Анализ потерь рабочего времени сорудников предприятия

Обзор существующих систем учета рабочего времени. Разработка базы данных типовых проектов по монтажу охранной сигнализации. Разработка базы данных фактического исполнения работ по проектам и причин простоев. Выбор программно-технических средств.

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

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

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

FrmPotrDef->ShowModal();

}

void __fastcall TFrmKomplAssm::ComboBox1Click(TObject *Sender)

{

/* Application->CreateForm(__classid(TFrmKolAssm), &FrmKolAssm);

FrmKolAssm->ShowModal();

if (FrmKolAssm->ModalResult==mrOk)

{ gKolAssm=StrToInt(FrmKolAssm->MaskEdit1->Text);

DM->SysQuery->Close();

DM->SysQuery->CommandText.printf("Select assm.CodeAssm, assm.CodeCeh from WHOUS.Assembler assm where assm.DecNum='%s' and assm.CodeCeh=%d", ComboBox1->Text, Skl);

DM->SysQuery->Open();

int AssmCod=DM->SysQuery->FieldByName("CodeAssm")->AsInteger;

DM->SysQuery->Close();

DM->SysQuery->CommandText.printf("INSERT INTO WHOUS.NomenklAssm (CodeAssm, KolNeed, KolKompl, CodeCeh, KolDef, FlagVid, DateInsert) "

" values (%ld, %ld, 0, %d, 0, 0, TO_DATE('%s','dd.mm.yyyy'))",

AssmCod ,gKolAssm, Skl, DateToStr(Date()) );

DM->SysQuery->Execute();

DM->SysQuery->Close();

DM->NomAssm->Close();

DM->NomAssm->Open();

DM->Assembler->Close();

}

else {gKolAssm=-1;} ;

ComboBox1->Visible=false;

ComboBox1->Clear();

DM->SysQuery->CommandText.printf("select decnum from whous.assembler where CodeCeh=%d and decnum not in "

"(SELECT a.DecNum FROM WHOUS.Assembler a,WHOUS.NomenklAssm n WHERE a.CodeAssm=n.CodeAssm)", Skl);

DM->SysQuery->Open();

DM->SysQuery->First();

while (!DM->SysQuery->Eof)

{ ComboBox1->Items->Add(DM->SysQuery->FieldByName("DecNum")->AsString);

DM->SysQuery->Next();

}

DM->SysQuery->Close(); */

}

void __fastcall TFrmKomplAssm::Button1Click(TObject *Sender)

{

//DM->NomAssm->

}

void __fastcall TFrmKomplAssm::NAvtKomplClick(TObject *Sender)

{

int flag=1;

if (DM->NomAssm->FieldByName("KolKompl")->AsInteger+DM->NomAssm->FieldByName("KolDef")->AsInteger<DM->NomAssm->FieldByName("KolNeed")->AsInteger)

{

//Расчёт возможного числа операций с учетом ранее выполненных работ

DM->SysQuery->Close();

DM->SysQuery->CommandText.printf( "select min(floor((ost-rash)/p.prim)) as max from whous.primpkiassm p, "

"(select p.codecard as codp, sum(p.rashkompl) as rash from whous.primpkiassm p group by p.codecard), "

"(select o.codecard as codo, sum(o.kol) as ost from whous.ostatki o where o.sklad=%d group by o.codecard) "

"where codp=codo and p.codecard=codp and p.assmcode=%d ",

FrmKomplAssm->Skl, DM->NomAssm->FieldByName("CodeAssm")->AsInteger);

DM->SysQuery->Open();

int MaxKol=DM->SysQuery->FieldByName("max")->AsInteger;

MaxKol=(MaxKol<(DM->NomAssm->FieldByName("KolNeed")->AsInteger-DM->NomAssm->FieldByName("KolKompl")->AsInteger))?

MaxKol:(DM->NomAssm->FieldByName("KolNeed")->AsInteger-DM->NomAssm->FieldByName("KolKompl")->AsInteger);

DM->SysQuery->Close();

if (MaxKol>0) //If 1

{ AnsiString str="Возможно выполнить операцию "+IntToStr(MaxKol)+ "количество монтажников";

if (Application->MessageBox(str.c_str(), "Сообщение", MB_YESNO)==IDYES) // If 1.2

{//Операция выполняется

DM->SysQuery->CommandText.printf("INSERT INTO WHOUS.UchAssm (SELECT t.CodeAssm,"

"'plan' as NDoc, TO_DATE('%s','dd.mm.yyyy') as DateDoc, %d as kol, %d as cehuch, 1 as tipoper"

" from WHOUS.NomenklAssm t WHERE t.codeceh=%d and t.codeassm=%d)",

DateToStr(Date()), MaxKol, FrmKomplAssm->Skl, FrmKomplAssm->Skl, DM->NomAssm->FieldByName("CodeAssm")->AsInteger);

DM->SysQuery->Execute();

DM->SysQuery->Close();

DM->SysQuery->CommandText.printf("UPDATE WHOUS.PrimPKIAssm p SET p.RashKompl=p.RashKompl + %d*p.Prim"

" where p.AssmCode=%d", MaxKol, DM->NomAssm->FieldByName("CodeAssm")->AsInteger);

DM->SysQuery->Execute();

DM->SysQuery->Close();

//Изменение таблицы NomenklAssm

DM->SysQuery->CommandText.printf("UPDATE WHOUS.NomenklAssm na SET na.KolKompl=na.KolKompl + %d, na.DateKompl=TO_DATE('%s','dd.mm.yyyy') "

" where na.CodeAssm=%d ", MaxKol, DateToStr(Date()),DM->NomAssm->FieldByName("CodeAssm")->AsInteger);

DM->SysQuery->Execute();

DM->SysQuery->Close();

// DM->NomAssm->Close();

// DM->NomAssm->Open();

str="Выполнено этапов " +IntToStr(MaxKol)+" Выполнено операций";

Application->MessageBox(str.c_str(), "", MB_OK);

}

else flag=0; //End If 1.2

}; //простой = 0

End If1

if (flag) //If 2

{ //простой > 0

if (DM->NomAssm->FieldByName("KolNeed")->AsInteger>MaxKol) // If 2.1

{//простой < 0

DM->SysQuery->CommandText.printf( "select min(floor((ost-rash)/p.prim)) as min, "

"max(floor((ost-rash)/p.prim)) as max from whous.primpkiassm p, "

"(select p.codecard as codp, sum(p.rashkompl) as rash from WHOUS.primpkiassm p group by p.codecard), "

"(select o.codecard as codo, sum(o.kol) as ost from WHOUS.ostatki o where o.sklad=%d group by o.codecard) "

" where codp=codo and p.codecard=codp and p.assmcode=%d ",

FrmKomplAssm->Skl, DM->NomAssm->FieldByName("CodeAssm")->AsInteger);

DM->SysQuery->Open();

int maxPKI=DM->SysQuery->FieldByName("max")->AsInteger;

int minPKI=DM->SysQuery->FieldByName("min")->AsInteger;

DM->SysQuery->Close();

if (maxPKI>0) // If 2.1.1

{

int kol = maxPKI > (DM->NomAssm->FieldByName("KolNeed")->AsInteger - MaxKol - DM->NomAssm->FieldByName("KolKompl")->AsInteger)?

(DM->NomAssm->FieldByName("KolNeed")->AsInteger - MaxKol- DM->NomAssm->FieldByName("KolKompl")->AsInteger) : maxPKI;

AnsiString str="Ввести еще одного рабочего "+IntToStr(kol)+ " выполнить операцию?";

if (Application->MessageBox( str.c_str(), "Сообщение", MB_YESNO)==IDYES) //If 2.1.1.1

{

//Добавляем запись об изменении количества операций проекта

DM->SysQuery->CommandText.printf("INSERT INTO WHOUS.UchAssm (SELECT t.CodeAssm,"

"'plan' as NDoc, TO_DATE('%s','dd.mm.yyyy') as DateDoc, %d as kol, %d as cehuch, 2 as tipoper"

" from WHOUS.NomenklAssm t WHERE t.codeceh=%d and t.codeassm=%d)",

DateToStr(Date()),kol, FrmKomplAssm->Skl, FrmKomplAssm->Skl, DM->NomAssm->FieldByName("CodeAssm")->AsInteger);

DM->SysQuery->Execute();

DM->SysQuery->Close();

//Изменение сроков выполнения этапов

DM->SysQuery->CommandText.printf("UPDATE WHOUS.NomenklAssm na SET na.KolDef=na.KolDef + %d "

"where na.CodeAssm=%d ", kol, DM->NomAssm->FieldByName("CodeAssm")->AsInteger);

DM->SysQuery->Execute();

DM->SysQuery->Close();

//Изменение таблицы

PrimPKIAssm (причины простоев)

DM->Prim->CommandText.printf("SELECT p.codecard, decode(sign(sum(o.kol)-sum1-p.prim*%d),1, p.prim*%d, sum(o.kol)-sum1) as RealRash "

"from (select pt.codecard as cod, sum(pt.rashkompl) as sum1 from WHOUS.PrimPKIAssm pt group by pt.codecard), "

" WHOUS.PrimPKIAssm p, WHOUS.Ostatki o where cod=p.codecard and p.assmcode=%d and p.CodeCard=o.CodeCard "

" and o.sklad=%d group by p.codecard, p.prim, p.rashkompl, sum1", kol, kol, DM->NomAssm->FieldByName("CodeAssm")->AsInteger, FrmKomplAssm->Skl );

DM->Prim->Open();

while (!DM->Prim->Eof)

{

DM->SysQuery->CommandText.printf("UPDATE WHOUS.PrimPKIAssm p SET p.RashKompl=p.RashKompl + %f "

" where p.AssmCode=%d and p.CodeCard=%d ", DM->Prim->FieldByName("RealRash")->AsFloat,

DM->NomAssm->FieldByName("CodeAssm")->AsInteger,

DM->Prim->FieldByName("CodeCard")->AsInteger);

DM->SysQuery->Execute();

DM->SysQuery->Close();

DM->Prim->Next();

}

DM->Prim->Close();

str="простой " + IntToStr(kol) + "время простоя";

Application->MessageBox(str.c_str(), "", MB_OK);

} //End If 2.1.1.1 причина простоя

DM->NomAssm->Close();

DM->NomAssm->Open();

} //End If 2.1.1 виновники простоя

else Application->MessageBox("Нет возможности выполнить проект", "", MB_OK);

} //End If 2.1

else Application->MessageBox("Выполненные этапы", "", MB_OK);

} //End If 2

}

else Application->MessageBox("Выполненные задачи", "", MB_OK);

}

void __fastcall TFrmKomplAssm::N5Click(TObject *Sender)

{

Application->CreateForm(__classid(TFrmDef), &FrmDef);

FrmDef->ShowModal();

}

void __fastcall TFrmKomplAssm::DBGridEh1KeyDown(TObject *Sender, WORD &Key,

TShiftState Shift)

{

DM->NomAssm->Next();

if (DM->NomAssm->FieldByName("KolKompl")->AsInteger+DM->NomAssm->FieldByName("KolDef")->AsInteger+DM->NomAssm->FieldByName("KolIzg")->AsInteger<DM->NomAssm->FieldByName("KolNeed")->AsInteger)

{

N6->Enabled=true;

}

else

{

N6->Enabled=false;

}

if (DM->NomAssm->FieldByName("KolKompl")->AsInteger+DM->NomAssm->FieldByName("KolDef")->AsInteger>0)

{

N2->Enabled=true;

N5->Enabled=true;

}

else

{

N2->Enabled=false;

N5->Enabled=false;

}

if (DM->NomAssm->FieldByName("FlagVid")->AsInteger==1 & DM->NomAssm->FieldByName("KolKompl")->AsInteger>0)

{

N7->Enabled=true;

}

else

{

N7->Enabled=false;

}

if ((((DM->NomAssm->FieldByName("KolKompl")->AsInteger+DM->NomAssm->FieldByName("KolIzg")->AsInteger)<DM->NomAssm->FieldByName("KolNeed")->AsInteger)

& DM->NomAssm->FieldByName("KolKompl")->AsInteger>0)

| DM->NomAssm->FieldByName("KolDef")->AsInteger>0)

{

N4->Enabled=true;

}

else

{

N4->Enabled=false;

}

}

void __fastcall TFrmKomplAssm::N6Click(TObject *Sender)

{

Screen->Cursor=crHourGlass;

DM->SysQuery->Close();

DM->SysQuery->CommandText.printf( " select min(floor((ost-rash)/prim2)) as max , "

"max(floor((ost-rash)/prim2)) as max2, count(ta) as kolassm from WHOUS.primpkiassm p, "

" (select t.assmcode as ta, t.codecard as tc, decode(round(t.prim), t.prim, t.prim, round(t.prim+0.5)) as prim2 "

" from WHOUS.primpkiassm t group by t.assmcode , t.codecard, t.prim ),"

" (select p.codecard as codp, sum(p.rashkompl) as rash from WHOUS.primpkiassm p group by p.codecard), "

" (select o.codecard as codo, sum(o.kol) as ost from WHOUS.ostatki o where o.sklad=%d group by o.codecard) "

" where codp=codo and p.codecard=codp and p.assmcode=%d and ta=p.assmcode and tc=p.codecard ",

FrmKomplAssm->Skl, DM->NomAssm->FieldByName("CodeAssm")->AsInteger);

DM->SysQuery->Open();

int Max2=DM->SysQuery->FieldByName("max2")->AsInteger;

int kolassm=DM->SysQuery->FieldByName("kolassm")->AsInteger;

MaxKol=DM->SysQuery->FieldByName("max")->AsInteger;

MaxKol=(MaxKol<(DM->NomAssm->FieldByName("KolNeed")->AsInteger-DM->NomAssm->FieldByName("KolKompl")->AsInteger))?

MaxKol:(DM->NomAssm->FieldByName("KolNeed")->AsInteger-DM->NomAssm->FieldByName("KolKompl")->AsInteger);

DM->SysQuery->Close();

DM->SysQuery->CommandText.printf( " select count(t.codecard) as kolassm from WHOUS.primpkiassm t "

" where assmcode =%d and codeceh = %d ", DM->NomAssm->FieldByName("CodeAssm")->AsInteger,FrmKomplAssm->Skl);

DM->SysQuery->Open();

int kolAssm2= DM->SysQuery->FieldByName("kolassm")->AsInteger;

DM->SysQuery->Close();

MaxKol=(kolassm<kolAssm2)? 0 : MaxKol;

if (Max2>0)

{

DM->Prim->CommandText.printf( "select nomnum, namem, mark, codecard, decnum, nameassm, prim, proizv, ost, def, "

" potrebn, decode(round(rash), rash, rash, round(rash+0.5)) as rash from "

" (select nomnum, namem, mark, codecard, decnum, nameassm, prim, proizv, ost, potrebn, "

" decode(sign(ost-(prim*kolneed-rashkompl)),1,0,(prim*kolneed-rashkompl)-ost) as def, "

" decode(sign(ost-prim*kolneed),1, prim*kolneed, ost) as rash from "

" (select it.nomnum, it.namem, it.mark, t.codecard, a.decnum, a.nameassm, t.prim, t.proizv, "

" decode(ost-rash1, Null,0,ost-rash1) as ost, t.prim*n.kolneed as potrebn, n.kolneed, t.rashkompl "

" from WHOUS.primpkiassm t, WHOUS.item it, WHOUS.assembler a, WHOUS.nomenklassm n, "

" (select p.codecard as c1, sum(p.rashkompl) as rash1 from WHOUS.primpkiassm p group by p.codecard), "

" (select ost.codecard as c2, sum(ost.kol) as ost from WHOUS.ostatki ost where ost.sklad=%d group by ost.codecard) "

" where t.assmcode=a.codeassm and it.codrec=t.codecard and t.assmcode=n.codeassm and "

" t.assmcode=%d and c1=t.codecard and c2(+)=t.codecard order by it.codrec)) ",

FrmKomplAssm->Skl, DM->NomAssm->FieldByName("CodeAssm")->AsInteger);

DM->Prim->Open();

Application->CreateForm(__classid(TFrmAssmPKI), &FrmAssmPKI);

FrmAssmPKI->FlagK=0;

FrmAssmPKI->Caption="Простой " + DM->Prim->FieldByName("nameassm")->AsString + " Дец.№ " + DM->Prim->FieldByName("decnum")->AsString;

Screen->Cursor=crArrow;

FrmAssmPKI->ShowModal();

}

else

{ Screen->Cursor=crArrow;

Application->MessageBox("Нет возможности выполнить проект", "", MB_OK); //Надо отображать дефицит времени

}

}

void __fastcall TFrmKomplAssm::PopupMenu2Popup(TObject *Sender)

{

if (DM->NomAssm->FieldByName("KolKompl")->AsInteger+DM->NomAssm->FieldByName("KolDef")->AsInteger<DM->NomAssm->FieldByName("KolNeed")->AsInteger)

{

N6->Enabled=true;

}

else

{

N6->Enabled=false;

}

if (DM->NomAssm->FieldByName("KolKompl")->AsInteger+DM->NomAssm->FieldByName("KolDef")->AsInteger>0)

{

N2->Enabled=true;

N5->Enabled=true;

}

else

{

N2->Enabled=false;

N5->Enabled=false;

}

if (DM->NomAssm->FieldByName("FlagVid")->AsInteger==1 & DM->NomAssm->FieldByName("KolKompl")->AsInteger>0)

{

// N3->Enabled=true;

N7->Enabled=true;

}

else

{

// N3->Enabled=false;

N7->Enabled=false;

}

if ((((DM->NomAssm->FieldByName("KolKompl")->AsInteger+DM->NomAssm->FieldByName("KolIzg")->AsInteger)<DM->NomAssm->FieldByName("KolNeed")->AsInteger)

& DM->NomAssm->FieldByName("KolKompl")->AsInteger>0)

| DM->NomAssm->FieldByName("KolDef")->AsInteger>0)

{

N4->Enabled=true;

}

else

{

N4->Enabled=false;

}

}

void __fastcall TFrmKomplAssm::N2Click(TObject *Sender)

{

Application->CreateForm(__classid(TFrmVidKol), &FrmVidKol);

FrmVidKol->Caption= FrmVidKol->Caption + " " + DM->NomAssm->FieldByName("decnum")->AsString;

FrmVidKol->ShowModal();

}

void __fastcall TFrmKomplAssm::N4Click(TObject *Sender)

{

DM->Prim->CommandText.printf("select codecard , nomnum, namem, decnum, nameassm, prim, proizv, ost-rash1 as ostat, potrebn, def, rash "

"from (select codecard, it.nomnum, it.namem, a.decnum, a.nameassm, t.prim, t.proizv, ost, rash1, "

"t.prim*n.kolneed as potrebn, decode(sign(t.prim*n.kolneed-t.rashkompl),1,t.prim*n.kolneed-t.rashkompl, 0) as def, "

"decode(sign((ost-rash1)-t.prim*n.kolneed),1, t.prim*n.kolneed, ost-rash1) as rash "

"from WHOUS.primpkiassm t, WHOUS.item it, WHOUS.assembler a, WHOUS.nomenklassm n, "

"(select p.codecard as c1, sum(p.rashkompl) as rash1 from WHOUS.primpkiassm p group by p.codecard), "

"(select ost.codecard as c2, sum(ost.kol) as ost from WHOUS.ostatki ost where ost.sklad=%d group by ost.codecard) "

"where t.assmcode=a.codeassm and it.codrec=t.codecard and t.assmcode=n.codeassm and t.assmcode=%d and c1=t.codecard "

"and c2=t.codecard order by it.codrec) where def>0 ", FrmKomplAssm->Skl, DM->NomAssm->FieldByName("CodeAssm")->AsInteger);

DM->Prim->Open();

Application->CreateForm(__classid(TFrmAssmPKI), &FrmAssmPKI);

// DM->Prim->CommandText="";

FrmAssmPKI->Caption=" Докомплектация бригады" + DM->NomAssm->FieldByName("decnum")->AsString;

FrmAssmPKI->FlagK=1;

FrmKomplAssm->MaxKol=0;

FrmAssmPKI->ShowModal();

}

void __fastcall TFrmKomplAssm::N7Click(TObject *Sender)

{

Application->CreateForm(__classid(TFrmSdProizv), &FrmSdProizv);

FrmSdProizv->Caption=" Сдача сборки " + DM->NomAssm->FieldByName("decnum")->AsString + " в производство";

FrmSdProizv->ShowModal();

}

void __fastcall TFrmKomplAssm::Button2Click(TObject *Sender)

{

DM->Prim->Close();

DM->Prim->CommandText.printf("select a.indassm, a.numassm, a.proiz, a.nameassm, a.ostuch, n.kolneed, n.kolkompl, n.kolizg "

" from WHOUS.nomenklassm n, WHOUS.assembler a where n.codeassm=a.codeassm and n.flagvid=2 and a.codeceh=%d order by a.codeassm ",

FrmKomplAssm->Skl);

DM->Prim->Open();

Application->CreateForm(__classid(TFrmShowVidano), &FrmShowVidano);

FrmShowVidano->Caption=" Номенклатура завершенных работ ";

FrmShowVidano->ShowModal();

}

void __fastcall TFrmKomplAssm::Button3Click(TObject *Sender)

{

DM->Prim->Close();

DM->Prim->CommandText.printf("select a.decnum, t.ndoc, t.datedoc, t.kol, "

" decode(t.tipoper,1,'Выполнено работ',2,'Выполнено с простоем',3,'введено монтажников',4,'задачи',5,'сроки',6,'причины простоя','') as komentar "

" from WHOUS.uchassm t, WHOUS.assembler a where t.codeassm=a.codeassm and a.codeceh=%d order by t.codeassm ",

FrmKomplAssm->Skl);

DM->Prim->Open();

// Application->CreateForm(__classid(TFrmOperAssm), &FrmOperAssm);

Application->CreateForm(__classid(TFrmOperAssm), &FrmOperAssm);

FrmOperAssm->Caption=" Журнал операций ";

FrmOperAssm->ShowModal();

}

int ProcKomplAssm(long sklad)

{

Application->CreateForm(__classid(TFrmKomplAssm), &FrmKomplAssm);

//FrmKomplAssm->Skl=OstForm->GlSklad;

FrmKomplAssm->Skl=sklad;

//Временно для отладки

//FrmKomplAssm->Skl=175;

FrmKomplAssm->ShowModal();

FrmKomplAssm->Free();

}

void __fastcall TFrmKomplAssm::N3Click(TObject *Sender)

{

DM->Prim->Close();

DM->Prim->CommandText.printf("select codecard , nomnum, namem, mark, decnum, nameassm, "

" prim, proizv, ost, rash1, ostu from (select codecard, it.nomnum, it.namem, it.mark, "

" a.decnum, a.nameassm, t.prim, t.proizv, ost, rash1, t.prim*n.kolneed as potrebn, ostu "

" from WHOUS.primpkiassm t, WHOUS.item it, WHOUS.assembler a, WHOUS.nomenklassm n, "

" (select p.codecard as c1, sum(p.rashkompl) as rash1, sum(p.ostuch) as ostu "

" from WHOUS.primpkiassm p group by p.codecard), "

" (select ost.codecard as c2, sum(ost.kol) as ost from WHOUS.ostatki ost where ost.sklad=%d group by ost.codecard)"

" where t.assmcode=a.codeassm and it.codrec=t.codecard and t.assmcode=n.codeassm and "

" t.assmcode=%d and c1=t.codecard and c2=t.codecard order by it.codrec) ",

FrmKomplAssm->Skl, DM->NomAssm->FieldByName("CodeAssm")->AsInteger );

DM->Prim->Open();

Application->CreateForm(__classid(TFrmSostA), &FrmSostA);

FrmSostA->Caption="Состав сборки " + DM->Prim->FieldByName("nameassm")->AsString+ " дец.№ "+ DM->Prim->FieldByName("decnum")->AsString;

FrmSostA->ShowModal();

}

void __fastcall TFrmKomplAssm::ComboBox1KeyPress(TObject *Sender,

char &Key)

{ if (Key==13)

{

DM->SysQuery->Close();

DM->SysQuery->CommandText.printf( " select decnum from (select a.decnum from whous.assembler a"

" where CodeCeh=%d and decnum not in (SELECT a.DecNum FROM WHOUS.Assembler a, WHOUS.NomenklAssm n "

" WHERE a.CodeAssm=n.CodeAssm and (n.flagvid<2 or n.kolneed>n.kolkompl)) order by a.decnum) where decnum='%s' ",

FrmKomplAssm->Skl, ComboBox1->Text);

DM->SysQuery->Open();

bool fl=!DM->SysQuery->Eof;

DM->SysQuery->Close();

if (fl)

{

Application->CreateForm(__classid(TFrmKolAssm), &FrmKolAssm);

FrmKolAssm->ShowModal();

ComboBox1->Visible=false;

ComboBox1->Clear();

DM->SysQuery->CommandText.printf("select decnum from whous.assembler where CodeCeh=%d and decnum not in "

"(SELECT a.DecNum FROM WHOUS.Assembler a,WHOUS.NomenklAssm n WHERE a.CodeAssm=n.CodeAssm)", Skl);

DM->SysQuery->Open();

DM->SysQuery->First();

while (!DM->SysQuery->Eof)

{

ComboBox1->Items->Add(DM->SysQuery->FieldByName("DecNum")->AsString);

DM->SysQuery->Next();

}

DM->SysQuery->Close();

}

else

{

Application->MessageBox("Выбраная операция уже выполнена!!! Выберите другую операцию", "", MB_OK);

ComboBox1->Text="";

}

}

}

void __fastcall TFrmKomplAssm::N1Click(TObject *Sender)

{

Application->CreateForm(__classid(TFrmSpravoch), &FrmSpravoch);

FrmSpravoch->ShowModal();

}

void __fastcall TFrmKomplAssm::N8Click(TObject *Sender)

{

// ComboBox1->Visible=true;

}

__fastcall TFrmRepPokup46::TFrmRepPokup46(TComponent* Owner)

: TForm(Owner)

{

}

void __fastcall TFrmRepPokup46::FormCreate(TObject *Sender)

{

/* Label[0] = QR1;Memo[0] = QRMemo1;RDB[0] = QRDB1;Shape[0]=Shape1;ShapeD[0]=ShapeD1;ShapeS[0]=ShepeS1;Expr[0]=QRExpr1;

Label[1] = QR2;Memo[1] = QRMemo2;RDB[1] = QRDB2;Shape[1]=Shape2;ShapeD[1]=ShapeD2;ShapeS[1]=ShepeS2;Expr[1]=QRExpr2;

Label[2] = QR3;Memo[2] = QRMemo3;RDB[2] = QRDB3;Shape[2]=Shape3;ShapeD[2]=ShapeD3;ShapeS[2]=ShapeS3;Expr[2]=QRExpr3;

Label[3] = QR4;Memo[3] = QRMemo4;RDB[3] = QRDB4;Shape[3]=Shape4;ShapeD[3]=ShapeD4;ShapeS[3]=ShapeS4;Expr[3]=QRExpr4;

Label[4] = QR5;Memo[4] = QRMemo5;RDB[4] = QRDB5;Shape[4]=Shape5;ShapeD[4]=ShapeD5;ShapeS[4]=ShapeS5;Expr[4]=QRExpr5;

Label[5] = QR6;Memo[5] = QRMemo6;RDB[5] = QRDB6;Shape[5]=Shape6;ShapeD[5]=ShapeD6;ShapeS[5]=ShapeS6;Expr[5]=QRExpr6;

Label[6] = QR7;Memo[6] = QRMemo7;RDB[6] = QRDB7;Shape[6]=Shape7;ShapeD[6]=ShapeD7;ShapeS[6]=ShapeS7;Expr[6]=QRExpr7;

Label[7] = QR8;Memo[7] = QRMemo8;RDB[7] = QRDB8;Shape[7]=Shape8;ShapeD[7]=ShapeD8;ShapeS[7]=ShapeS8;Expr[7]=QRExpr8;

Label[8] = QR9;Memo[8] = QRMemo9;RDB[8] = QRDB9;Shape[8]=Shape9;ShapeD[8]=ShapeD9;ShapeS[8]=ShapeS9;Expr[8]=QRExpr9;

Label[9] = QR10;Memo[9] = QRMemo10;RDB[9] = QRDB10;Shape[9]=Shape10;ShapeD[9]=ShapeD10;ShapeS[9]=ShapeS10;Expr[9]=QRExpr10;

Label[10] = QR11;Memo[10] = QRMemo11;RDB[10] = QRDB11;Shape[10]=Shape11;ShapeD[10]=ShapeD11;ShapeS[10]=ShapeS11;Expr[10]=QRExpr11;

Label[11] = QR12;Memo[11] = QRMemo12;RDB[11] = QRDB12;Shape[11]=Shape12;ShapeD[11]=ShapeD12;ShapeS[11]=ShapeS12;Expr[11]=QRExpr12;

Label[12] = QR13;Memo[12] = QRMemo13;RDB[12] = QRDB13;Shape[12]=Shape13;ShapeD[12]=ShapeD13;ShapeS[12]=ShapeS13;Expr[12]=QRExpr13;

Label[13] = QR14;Memo[13] = QRMemo14;RDB[13] = QRDB14;Shape[13]=Shape14;ShapeD[13]=ShapeD14;ShapeS[13]=ShapeS14;Expr[13]=QRExpr14;*/

}

__fastcall TFrmSdProizv::TFrmSdProizv(TComponent* Owner)

: TForm(Owner)

{

}

void __fastcall TFrmSdProizv::FormCreate(TObject *Sender)

{

Edit2->Text=DateToStr(Date());

Edit3->Text=DM->NomAssm->FieldByName("kolkompl")->AsString;

}

void __fastcall TFrmSdProizv::Button1Click(TObject *Sender)

{

if (DM->NomAssm->FieldByName("KolKompl")->AsInteger>0)

{

DM->SysQuery->CommandText.printf(" UPDATE WHOUS.NomenklAssm SET NomenklAssm.FlagVid=2, NomenklAssm.KolIzg=%s, "

" NomenklAssm.KolKompl=NomenklAssm.KolKompl - %s where NomenklAssm.CodeAssm=%d",

Edit3->Text, Edit3->Text, DM->NomAssm->FieldByName("codeassm")->AsInteger);

DM->SysQuery->Execute();

DM->SysQuery->Close();

DM->SysQuery->CommandText.printf("UPDATE WHOUS.Assembler SET Assembler.OstUch=Assembler.OstUch - %d, "

" Assembler.OstCeh=Assembler.OstCeh + %d WHERE Assembler.CodeAssm=%d ",

StrToInt(Edit3->Text), StrToInt(Edit3->Text), DM->NomAssm->FieldByName("codeassm")->AsInteger);

DM->SysQuery->Execute();

DM->SysQuery->Close();

DM->Prim->CommandText.printf("select PrimPKIAssm.CodeCard, PrimPKIAssm.OstUch, PrimPKIAssm.RashKompl, PrimPKIAssm.Prim "

" from WHOUS.PrimPKIAssm WHERE PrimPKIAssm.AssmCode=%d ", DM->NomAssm->FieldByName("codeassm")->AsInteger);

DM->Prim->Open();

while (!(DM->Prim->Eof))

{

DM->SysQuery->CommandText.printf("UPDATE WHOUS.PrimPKIAssm SET PrimPKIAssm.OstUch=PrimPKIAssm.OstUch - %d "

" WHERE PrimPKIAssm.AssmCode=%d and PrimPKIAssm.CodeCard=%d",

DM->Prim->FieldByName("prim")->AsInteger * StrToInt(Edit3->Text),

DM->NomAssm->FieldByName("codeassm")->AsInteger, DM->Prim->FieldByName("codecard")->AsInteger);

DM->SysQuery->Execute();

DM->SysQuery->Close();

DM->Prim->Next();

}

DM->Prim->Close();

// Добавить строку о выполнении этапа работ

if (DM->NomAssm->FieldByName("kolkompl")->AsInteger)

{

DM->SysQuery->CommandText.printf("INSERT INTO WHOUS.UchAssm (SELECT t.CodeAssm,"

"%s as NDoc, TO_DATE('%s','dd.mm.yyyy') as DateDoc, %d as kol, %d as cehuch, 6 as tipoper"

" from WHOUS.NomenklAssm t WHERE t.codeceh=%d and t.codeassm=%d)", Edit1->Text, DateToStr(Edit2->Text),

StrToInt(Edit3->Text), StrToInt(Edit4->Text), FrmKomplAssm->Skl, DM->NomAssm->FieldByName("CodeAssm")->AsInteger);

DM->SysQuery->Execute();

DM->SysQuery->Close();

}

AnsiString str= "Причина простоев! ";

Application->MessageBox(str.c_str(), "Сообщение", MB_OK);

FrmSdProizv->Close();

DM->NomAssm->Close();

DM->NomAssm->Open();

}

else

{

Application->MessageBox("Время простоя", "Сообщение", MB_OK);

FrmSdProizv->Close();

}

}

__fastcall TRepDeficit::TRepDeficit(TComponent* Owner)

: TForm(Owner)

{

}

void TRepDeficit::DoModal(int MontIndex, int pType)

{

//m_Mont=MontIndex;

m_Mont=1;

rownum=1;

m_Type=pType;

QuickRep1->PreviewModal();

}

void __fastcall TRepDeficit::QRExpr3Print(TObject *sender,

AnsiString &Value)

{

switch (m_Mont) {

case 1: Value="Январь";break;

case 2: Value="Февраль";break;

case 3: Value="Март";break;

case 4: Value="Апрель";break;

case 5: Value="Май";break;

case 6: Value="Июнь";break;

case 7: Value="Июль";break;

case 8: Value="Август";break;

case 9: Value="Сентябрь";break;

case 10: Value="Октябрь";break;

case 11: Value="Ноябрь";break;

case 12: Value="Декабрь";break;

}

}

void __fastcall TRepDeficit::RownumPrint(TObject *sender,

AnsiString &Value)

{

Value=IntToStr(rownum++);

}

void __fastcall TRepDeficit::QRDBText13Print(TObject *sender,

AnsiString &Value)

{

/* if (DM->Prim->FieldByName("CPR")->AsInteger==1)

Value=m_Type?(AnsiString)" ":DM->Prim->FieldByName("PROIZV")->AsString;

else Value=m_Type?" ":"X"; */

}

void __fastcall TRepDeficit::QRBand2BeforePrint(TQRCustomBand *Sender,

bool &PrintBand)

{

// PrintBand=m_Type?false:DM->Prim->FieldByName("CPR")->AsInteger>1;

}

void __fastcall TRepDeficit::QRExpr1Print(TObject *sender,

AnsiString &Value)

{

AnsiString fname;

fname="RASHOD"+IntToStr(m_Mont);

// Value=DM->Prim->FieldByName(fname)->AsString;

}

void __fastcall TRepDeficit::QRExpr4Print(TObject *sender,

AnsiString &Value)

{ // Value=DM->Prim->FieldByName("SRASHOD")->AsString;

}

void __fastcall TRepDeficit::QRExpr5Print(TObject *sender,

AnsiString &Value)

{

// Value=DM->Prim->FieldByName("SRASHOD")->AsFloat-DM->Prim->FieldByName("OSTATOK")->AsFloat;

}

РЕЦЕНЗИЯ

на курсовой проект студентки гр. 7-15-3 Кадочникова И.С.

на тему: «Разработка автоматизированной системы «Анализа потерь рабочего времени сотрудников предприятия »».

Курсовой проект, выполненный студенткой Кадочниковой И.С., явился продолжением производственной практики, в ходе которой ей была изучена система эффективного использования рабочего времени на предприятии ООО «Антарис».

Данная работа посвящена разработке программы «Анализа потерь рабочего времени сотрудников предприятия», что является немаловажным фактором по усовершенствованию управления трудовыми ресурсами и уменьшению себестоимости проектов монтажа охранной сигнализации.

В проекте были реализованы задачи:

· оперативное, но качественное планирование людских ресурсов;

· оценка эффективности распределения рабочего времени сотрудников предприятия, путем внедрения автоматизированной системы для обработки данных по учету потерь рабочего времени сотрудниками предприятия;

· выявления резервов повышения эффективности труда и нерациональных затрат рабочего времени;

· корректно разработанной системы отчетности с возможностью динамического обновления вновь поступающей информации;

· "проигрывание" различных вариантов Расписания проекта с целью нахождения наиболее удачного компромисса в дилемме "быстрее - дешевле" и нахождения наиболее экономного варианта реализации проекта за счет оптимизации стоимостных характеристик проекта при реализации проекта в различные сроки, в том числе, за счет привлечения сторонних ресурсов;

· интеграцию с другими программными приложениями.

Автоматизация задачи комплектования сборок позволила:

§ Повысить достоверность и обеспечить оперативность данных, на основании которых, производится анализ возможного выполнения проекта монтажа охранной сигнализации в заданные сроки;

§ Обе6спечить оперативность формирования печатной формы «учет рабочего времени»

§ Повысить надёжность хранения данных;

§ Обеспечить многопользовательский и безопасный доступ к данным;

§ Снизить трудоёмкость работ, связанных с уменьшением внеплановых простоев.

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

На данном этапе разработки задача «Анализа потерь рабочего времени сотрудников предприятия» прошла опытную эксплуатацию.

Дальнейшая работа может иметь свое продолжение в рамках разрабатываемой задачи и с использованием общей базы данных в виде реализации:

§ Возможность отмечать больничный, командировки, административный отпуск, и т.д.

§ Наглядную структуру предприятия и список сотрудников.

§ Сведения о местонахождении сотрудников в данный момент.

§ Гибкая настройка списка нарушений и автоматическое начисление штрафов за них.

§ Кроме реализации основных требований к программе, можно реализовать возможность вести «он-лайн» переговоры по сети между несколькими запущенными программами (на разных компьютерах). И Возможность вести переговоры, отсылая и принимая сообщения с одного терминала на другой полезна при расположении отдела кадров в различных помещениях.

§ Ведение журнала отзывов и предложений по улучшению программы.

Считаю, что студентка Кадочникова И.С. с темой проекта справился и заслуживает оценки «отлично».

Консультант

начальник отдела кадров А.С. Аристархова

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


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

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