Анализ потерь рабочего времени сорудников предприятия
Обзор существующих систем учета рабочего времени. Разработка базы данных типовых проектов по монтажу охранной сигнализации. Разработка базы данных фактического исполнения работ по проектам и причин простоев. Выбор программно-технических средств.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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
Подобные документы
Проектирование логической структуры базы данных методом нормальных форм, сущность связь. Сравнительный анализ спроектированной базы данных и базы данных существующих информационных систем. Выбор и обоснование состава технических и программных средств.
курсовая работа [3,0 M], добавлен 22.12.2014Описание предметной области и разработка программы для автоматизированного составления графика и табеля по учету рабочего времени службы охраны предприятия средствами Embracadero Builder C++. Инсталляция, общий дизайн и тестирование проекта базы данных.
дипломная работа [3,9 M], добавлен 05.08.2013Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.
курсовая работа [700,6 K], добавлен 26.01.2010Обоснование необходимости систем управления базами данных на предприятиях. Особенности разработки программного обеспечения по управлению базой данных, обеспечивающего просмотр, редактирование, вставку записей базы данных, формирование запросов и отчетов.
курсовая работа [1,5 M], добавлен 23.01.2010Разработка пользовательского интерфейса. Цели и задачи базы данных. Создание информационно-структурной модели для предприятия и обеспечение в этой сети необходимого уровня защиты информации от некомпетентных действий некоторых сотрудников предприятия.
курсовая работа [1,1 M], добавлен 27.12.2009Система "Учет рабочего времени", разрабатываемая для предприятия НПО "Криста", создается для автоматизации процесса контроля, учета распределения рабочего времени, формирования сопроводительных документов и информации полученной в процессе работы.
курсовая работа [34,3 K], добавлен 29.11.2008Выбор состава технических и программных средств разработки системы. Описание входных и выходных данных. Выбор модели базы данных. Разработка подсистемы наполнения базы данных, формирования отчетов. Разработка интерфейса пользователя, тестирование системы.
курсовая работа [3,7 M], добавлен 04.12.2014Анализ использования рабочего времени. Создание базы данных для хранения и обработки информации. Управление пользователями. Интерфейс программы. Работа со списком мероприятий, с модулями "задачи", "заявки", "регламенты", "события" и "отчётность".
дипломная работа [3,3 M], добавлен 19.01.2017Схема взаимодействия подразделений предприятия. Выбор и обоснование технологии проектирования базы данных. Описание объектов базы данных. Разработка запросов на выборку, изменение, обновление и удаление данных. Интерфейсы взаимодействия с базой данных.
курсовая работа [1,4 M], добавлен 25.05.2023Создание баз данных с использованием Database Desktop. Проведение автоматизации рабочего места кассира. Описание входной и выходной информации. Выбор среды реализации, состава и параметров технических средств. Проектирование интерфейса программы.
курсовая работа [1021,5 K], добавлен 22.01.2015