- •Кафедра «Автоматизированных информационных и управляющих систем»
- •Содержание
- •Введение
- •1 Общая характеристика места практики
- •1.1Структура компании. Уровень автоматизации предприятия
- •2. Постановка задачи
- •Наряд на сдельную работу (Форма 414-апк.)
- •3 Описание метода организации данных
- •3.1 Описание входной и выходной информации
- •3.2 Организация ведения информационной базы
- •3.3 Математическая модель
- •4 Описание программно-технических средств
- •4.2 Программно-технические средства при использовании программы
- •4.3 Описание программы
Министерство образования и науки РФ
ФГБОУ ВПО «Тульский Государственный Университет»
Кафедра «Автоматизированных информационных и управляющих систем»
ОТЧЕТ по производственно-технологической практике на тему:
«Расчет норм времени сотрудников
ООО « Щекинский Завод рто» »
Студента гр.230991 ___________________ Семёновой К. И.
(подпись, дата)
Руководитель доцент, к.т.н. ___________________ Ковешников В.А.
(подпись, дата)
Тула 2012
Содержание
ВВЕДЕНИЕ 19
1 Общая характеристика места практики 20
1.1 Структура компании. Уровень автоматизации предприятия 22
2. Постановка задачи 26
3 Описание метода организации данных 30
3.1 Описание входной и выходной информации 30
3.2 Организация ведения информационной базы 33
3.3 Математическая модель 34
4 Описание программно-технических средств 36
4.1 Программно-технические средства, необходимые для разработки программы 36
4.2 Программно-технические средства при использовании программы 38
4.3 Описание программы 38
50
Приложение 1 51
unit Unit1; 51
interface 51
uses 51
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 51
Dialogs, ImgList, ActnList, XPStyleActnCtrls, ActnMan, ToolWin, 51
ActnCtrls, ActnMenus, ADODB, ExcelXP, OleServer, OleCtnrs, StdCtrls, DB, 51
Grids, DBGrids, DBTables, Buttons, ExtCtrls; 51
type 51
TForm1 = class(TForm) 51
ImageList1: TImageList; 51
ActionMainMenuBar1: TActionMainMenuBar; 51
ActionManager1: TActionManager; 51
Action1: TAction; 51
Action2: TAction; 51
OpenDialog1: TOpenDialog; 51
Action3: TAction; 51
Action4: TAction; 51
ADOConnection1: TADOConnection; 51
ADOTable1: TADOTable; 51
ADOTable2: TADOTable; 51
ADOTable3: TADOTable; 51
ADOTable4: TADOTable; 51
ADOTable5: TADOTable; 51
Action5: TAction; 51
Action6: TAction; 51
Action7: TAction; 51
Action8: TAction; 51
OpenDialog2: TOpenDialog; 51
Table1: TTable; 51
Table2: TTable; 52
Приложение 1 52
ADOTable6: TADOTable; 52
ADOTable7: TADOTable; 52
DataSource1: TDataSource; 52
ADOTable8: TADOTable; 52
DataSource2: TDataSource; 52
ADOTable9: TADOTable; 52
Action9: TAction; 52
Action10: TAction; 52
Action11: TAction; 52
Action12: TAction; 52
Panel1: TPanel; 52
SpeedButton1: TSpeedButton; 52
SpeedButton2: TSpeedButton; 52
Bevel1: TBevel; 52
SpeedButton3: TSpeedButton; 52
SpeedButton4: TSpeedButton; 52
procedure Action1Execute(Sender: TObject); 52
procedure FormCreate(Sender: TObject); 52
procedure Action2Execute(Sender: TObject); 52
procedure Action3Execute(Sender: TObject); 52
procedure Action4Execute(Sender: TObject); 52
procedure Action5Execute(Sender: TObject); 52
procedure Action6Execute(Sender: TObject); 52
procedure Action7Execute(Sender: TObject); 52
procedure FormClose(Sender: TObject; var Action: TCloseAction); 52
procedure Action8Execute(Sender: TObject); 52
function WinToDos(St: string): string; 52
procedure ConectionTable(Table: TTable; TName: string); 52
function finds(Table: TADOTable; TFild, TFind: string): boolean; 53
procedure Action9Execute(Sender: TObject); 53
Приложение 1 53
procedure Action10Execute(Sender: TObject); 53
procedure Action11Execute(Sender: TObject); 53
private 53
{ Private declarations } 53
public 53
{ Public declarations } 53
end; 53
var 53
Form1: TForm1; 53
StartDir:String; 53
XL: variant; 53
XLPic,XlSheet: OleVariant; 53
implementation 53
uses Unit2, Unit3, Unit4, ComObj, Unit5, Unit7; 53
{$R *.dfm} 53
procedure Delay(Value: Cardinal); 53
var 53
F, N: Cardinal; 53
begin 53
N := 0; 53
while N <= (Value div 10) do 53
begin 53
SleepEx(1, True); 53
Application.ProcessMessages; 53
Inc(N); 53
end; 53
F := GetTickCount; 53
repeat 54
Application.ProcessMessages; 54
N := GetTickCount; 54
Приложение 1 54
until (N - F >= (Value mod 10)) or (N < F); 54
end; 54
function TForm1.finds(Table: TADOTable; TFild, TFind: string): boolean; 54
var 54
f:boolean; 54
begin 54
f:=false; 54
Table.First; 54
while not(Table.Eof) do begin 54
if Table.FieldByName(TFild).AsString=TFind then begin 54
f:=true; 54
Break; 54
end else Table.Next; 54
end; 54
Result:=f; 54
end; 54
procedure TForm1.ConectionTable(Table: TTable; TName: string); 54
begin 54
Table.Active:=false; 54
repeat 54
until FileExists(TName); 54
Table.TableName:=TName; 54
Table.Active:=true; 54
end; 54
function TForm1.WinToDos(St: string): string; 54
var 55
Ch: PChar; 55
begin 55
Ch := StrAlloc(Length(St) + 1); 55
Приложение 1 55
AnsiToOem(PChar(St), Ch); 55
Result := Ch; 55
StrDispose(Ch); 55
end; 55
procedure TForm1.Action1Execute(Sender: TObject); 55
var 55
Frm: TForm2; 55
begin 55
if Action1.Tag=1 then begin 55
frm:= TForm2.Create(Owner); 55
Action1.Tag:=0; 55
end; 55
end; 55
procedure TForm1.FormCreate(Sender: TObject); 55
var s:string; 55
begin 55
StartDir:=GetCurrentDir; 55
s:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+ 55
StartDir+'\time.mdb;Mode=Share Deny None;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";'+ 55
'Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;'+ 55
'Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";'+ 55
'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;'+ 55
'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;'; 56
ADOConnection1.Connected:=false; 56
ADOConnection1.ConnectionString:=s; 56
ADOConnection1.Connected:=true; 56
ADOTable1.Active:=false; 56
ADOTable2.Active:=false; 56
ADOTable3.Active:=false; 56
Приложение 1 56
ADOTable4.Active:=false; 56
ADOTable5.Active:=false; 56
ADOTable6.Active:=false; 56
ADOTable7.Active:=false; 56
ADOTable8.Active:=false; 56
ADOTable9.Active:=false; 56
ADOTable1.Active:=true; 56
ADOTable2.Active:=true; 56
ADOTable3.Active:=true; 56
ADOTable4.Active:=true; 56
ADOTable5.Active:=true; 56
ADOTable6.Active:=true; 56
ADOTable7.Active:=true; 56
ADOTable8.Active:=true; 56
ADOTable9.Active:=true; 56
end; 56
procedure TForm1.Action2Execute(Sender: TObject); 56
var i,st:integer; 56
NFile,kodFio,Fio,kodDolh,Dolh,kodPodr,Podr,Nach,Oklad,Razrad:String; 56
error,ok:boolean; 56
begin 56
if OpenDialog1.Execute then begin 56
NFile:=OpenDialog1.FileName; 57
XL := CreateOleObject('Excel.Application'); 57
XL.DisplayAlerts := false; 57
XL.WorkBooks.Open(NFile); 57
XlSheet:=XL.WorkBooks[1].WorkSheets[1]; 57
XL.Visible:= false; 57
i:=7; st:=1; 57
while XlSheet.Range['A'+IntToStr(i)].FormulaR1C1 <> '' do begin 57
Приложение 1 57
error:=false; 57
kodFio:=XlSheet.Range['B'+IntToStr(i)].FormulaR1C1; 57
Fio:=XlSheet.Range['C'+IntToStr(i)].FormulaR1C1; 57
kodDolh:=XlSheet.Range['D'+IntToStr(i)].FormulaR1C1; 57
Dolh:=XlSheet.Range['E'+IntToStr(i)].FormulaR1C1; 57
kodPodr:=XlSheet.Range['F'+IntToStr(i)].FormulaR1C1; 57
Podr:=XlSheet.Range['G'+IntToStr(i)].FormulaR1C1; 57
Nach:=XlSheet.Range['H'+IntToStr(i)].FormulaR1C1; 57
Oklad:=XlSheet.Range['I'+IntToStr(i)].FormulaR1C1; 57
Razrad:=XlSheet.Range['J'+IntToStr(i)].FormulaR1C1; 57
ADOTable1.Filter:='kod='+kodPodr; 57
ADOTable2.Filter:='kod='+kodDolh; 57
if ADOTable1.IsEmpty then begin 57
ADOTable1.Insert; 57
ADOTable1.FieldByName('kod').AsString:=kodPodr; 57
ADOTable1.FieldByName('name').AsString:=Podr; 57
ADOTable1.FieldByName('otv').AsString:=Nach; 57
ADOTable1.Post; 57
end else 57
if MessageDlg('Заменить данные по подразделению?'+#13+ 57
'Наименование: '+ADOTable1.FieldByName('name').AsString+#13+'Ответственный: '+ADOTable1.FieldByName('otv').AsString, 58
mtConfirmation, [mbYes, mbNo], 0) = mrYes 58
then begin 58
ADOTable1.Edit; 58
ADOTable1.FieldByName('kod').AsString:=kodPodr; 58
ADOTable1.FieldByName('name').AsString:=Podr; 58
ADOTable1.FieldByName('otv').AsString:=Nach; 58
ADOTable1.Post; 58
end; 58
Приложение 1 58
if ADOTable2.IsEmpty then begin 58
ADOTable2.Insert; 58
ADOTable2.FieldByName('kod').AsString:=kodDolh; 58
ADOTable2.FieldByName('name').AsString:=Dolh; 58
ADOTable2.Post; 58
end else 58
if MessageDlg('Заменить данные по должности?'+#13+ 58
'Наименование: '+ADOTable2.FieldByName('name').AsString, 58
mtConfirmation, [mbYes, mbNo], 0) = mrYes 58
then begin 58
ADOTable2.Edit; 58
ADOTable2.FieldByName('kod').AsString:=kodDolh; 58
ADOTable2.FieldByName('name').AsString:=Dolh; 58
ADOTable2.Post; 58
end; 58
ADOTable4.Filter:='name='+''''+Oklad+''''; 58
if ADOTable4.IsEmpty then begin 58
error:=true; 58
ShowMessage('Незаведен вид окладов'); 58
end else 59
Oklad:=ADOTable4.FieldByName('id').AsString; 59
ADOTable5.Filter:='name='+''''+Razrad+''''; 59
if ADOTable5.IsEmpty then begin 59
error:=true; 59
ShowMessage('Незаведен вид разряда'); 59
end else 59
Razrad:=ADOTable5.FieldByName('id').AsString; 59
if error then 59
ShowMessage('Сотрудник '+Fio+' не будет добавлен!') 59
else begin 59
Приложение 1 59
ADOTable3.Filter:='kod='+kodFio; 59
if ADOTable3.IsEmpty then begin 59
ADOTable3.Insert; 59
ADOTable3.FieldByName('fid').AsString:=ADOTable1.FieldByName('id').AsString; 59
ADOTable3.FieldByName('kod').AsString:=kodFio; 59
ADOTable3.FieldByName('FIO').AsString:=Fio; 59
ADOTable3.FieldByName('vidoplat').AsString:=Oklad; 59
ADOTable3.FieldByName('dolh').AsString:=ADOTable2.FieldByName('id').AsString; 59
ADOTable3.FieldByName('razrad').AsString:=Razrad; 59
ADOTable3.Post; 59
end else 59
if MessageDlg('Заменить данные по сотруднику?'+#13+ 59
'Ф.И.О.: '+ADOTable3.FieldByName('FIO').AsString+#13+ 59
'Вид оплаты: '+ADOTable4.FieldByName('name').AsString+#13+ 59
'Должность: '+ADOTable2.FieldByName('name').AsString+#13+ 59
'Разряд: '+ADOTable5.FieldByName('name').AsString, 59
mtConfirmation, [mbYes, mbNo], 0) = mrYes 59
then begin 59
ADOTable3.Edit; 60
ADOTable3.FieldByName('fid').AsString:=ADOTable1.FieldByName('id').AsString; 60
ADOTable3.FieldByName('kod').AsString:=kodFio; 60
ADOTable3.FieldByName('FIO').AsString:=Fio; 60
ADOTable3.FieldByName('vidoplat').AsString:=Oklad; 60
ADOTable3.FieldByName('dolh').AsString:=ADOTable2.FieldByName('id').AsString; 60
ADOTable3.FieldByName('razrad').AsString:=Razrad; 60
ADOTable3.Post; 60
end; 60
end; 60
i:=i+1; 60
end; 60
Приложение 1 60
XL.ActiveWorkbook.Close; 60
XL.Application.Quit; 60
end; 60
end; 60
procedure TForm1.Action3Execute(Sender: TObject); 60
var 60
Frm: TForm3; 60
begin 60
if Action3.Tag=1 then begin 60
frm:= TForm3.Create(Owner); 60
frm.Caption:='Виды окладов'; 60
frm.DataSource1.DataSet:=Frm.ADOTable1; 60
Action3.Tag:=0; 60
end; 60
end; 60
procedure TForm1.Action4Execute(Sender: TObject); 60
var 60
Frm: TForm3; 61
begin 61
if Action4.Tag=1 then begin 61
frm:= TForm3.Create(Owner); 61
frm.Caption:='Разряды'; 61
frm.DataSource1.DataSet:=Frm.ADOTable2; 61
Action4.Tag:=0; 61
end; 61
end; 61
procedure TForm1.Action5Execute(Sender: TObject); 61
begin 61
Close; 61
end; 61
Приложение 1 61
procedure TForm1.Action6Execute(Sender: TObject); 61
var 61
Frm: TForm3; 61
begin 61
if Action6.Tag=1 then begin 61
frm:= TForm3.Create(Owner); 61
frm.Caption:='Должности'; 61
frm.DataSource1.DataSet:=Frm.ADOTable3; 61
Action6.Tag:=0; 61
end; 61
end; 61
procedure TForm1.Action7Execute(Sender: TObject); 61
var 61
Frm: TForm4; 61
begin 61
if Action7.Tag=1 then begin 61
frm:= TForm4.Create(Owner); 62
Action7.Tag:=0; 62
end; 62
end; 62
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); 62
begin 62
Action:=caFree; 62
Form1.Action7.Tag:=1; 62
end; 62
procedure TForm1.Action8Execute(Sender: TObject); 62
var f:string; 62
files:TextFile; 62
find:boolean; 62
begin 62
Приложение 1 62
if OpenDialog2.Execute then begin 62
f:=OpenDialog2.FileName; 62
AssignFile(files,StartDir+'\clear.bat'); 62
Rewrite(files); 62
writeln(files, WinToDos(':delite')); 62
writeln(files, WinToDos('del "'+StartDir+'\temp\*.*" /q /f')); 62
writeln(files, WinToDos('if ERRORLEVEL 1 goto delite')); 62
CloseFile(files); 62
WinExec(PChar(StartDir+'\clear.bat'),0); 62
Delay(3000); 62
WinExec(PChar(StartDir+'\7z.exe e -o"'+StartDir+'\temp" "'+f+'"'),0); 62
Delay(3000); 62
ConectionTable(Table1, StartDir+'\temp\DET_MEX.db'); 62
ADOTable6.Filter:='Oboz='+''''+Table1.FieldByName('ObozDetal').AsString+''''; 62
if ADOTable6.IsEmpty then begin 62
ADOTable6.Insert; 63
ADOTable6.FieldByName('Oboz').AsString:=Table1.FieldByName('ObozDetal').AsString; 63
ADOTable6.FieldByName('Name').AsString:=Table1.FieldByName('NameDet').AsString; 63
ADOTable6.FieldByName('Data').AsString:=Table1.FieldByName('Data').AsString; 63
ADOTable6.Post; 63
end else 63
if MessageDlg('Заменить данные по детали?'+#13+ 63
'№ чертежа: '+Table1.FieldByName('ObozDetal').AsString+#13+ 63
'Дата составления: '+Table1.FieldByName('Data').AsString, 63
mtConfirmation, [mbYes, mbNo], 0) = mrYes 63
then begin 63
ADOTable6.Edit; 63
ADOTable6.FieldByName('Oboz').AsString:=Table1.FieldByName('ObozDetal').AsString; 63
ADOTable6.FieldByName('Name').AsString:=Table1.FieldByName('NameDet').AsString; 63
ADOTable6.FieldByName('Data').AsString:=Table1.FieldByName('Data').AsString; 63
Приложение 1 63
ADOTable6.Post; 63
end; 63
ConectionTable(Table2, StartDir+'\temp\OP_MEX.db'); 63
Table2.First; 63
while not(Table2.Eof) do begin 63
ADOTable7.Filter:='name='+''''+Table2.FieldByName('Equipment1').AsString+''''; 63
if ADOTable7.IsEmpty then begin 63
ADOTable7.Insert; 63
ADOTable7.FieldByName('name').AsString:=Table2.FieldByName('Equipment1').AsString; 63
ADOTable7.Post; 63
end; 63
find:=finds(ADOTable8,'InfOper',Table2.FieldByName('InfOper').AsString); 63
if not(find) then begin 63
ADOTable8.Insert; 63
ADOTable8.FieldByName('NameOper').AsString:=Table2.FieldByName('NameOper').AsString; 64
ADOTable8.FieldByName('InfOper').AsString:=Table2.FieldByName('InfOper').AsString; 64
ADOTable8.Post; 64
end else 64
if MessageDlg('Заменить операцию?'+#13+ 64
'Название операции: '+ADOTable8.FieldByName('NameOper').AsString+#13+ 64
'Описание операции: '+ADOTable8.FieldByName('InfOper').AsString, 64
mtConfirmation, [mbYes, mbNo], 0) = mrYes 64
then begin 64
ADOTable8.Edit; 64
ADOTable8.FieldByName('NameOper').AsString:=Table2.FieldByName('NameOper').AsString; 64
ADOTable8.FieldByName('InfOper').AsString:=Table2.FieldByName('InfOper').AsString; 64
ADOTable8.Post; 64
end; 64
//ADOTable9.Filter:='idOborud='+ADOTable7.FieldByName('id').AsString; 64
find:=finds(ADOTable9,'idOborud',ADOTable7.FieldByName('id').AsString); 64
Приложение 1 64
if not(find) then begin 64
ADOTable9.Insert; 64
ADOTable9.FieldByName('idOborud').AsString:=ADOTable7.FieldByName('id').AsString; 64
ADOTable9.FieldByName('Tvspom').AsString:=Table2.FieldByName('Tvspom').AsString; 64
ADOTable9.FieldByName('Tosn').AsString:=Table2.FieldByName('Tosn').AsString; 64
ADOTable9.FieldByName('TimePZ').AsString:=Table2.FieldByName('TimePZ').AsString; 64
ADOTable9.FieldByName('TimeSHT').AsString:=Table2.FieldByName('TimeSHT').AsString; 64
ADOTable9.Post; 64
end else 64
if MessageDlg('Заменить данные по времени (t)?'+#13+ 64
't - вспомогательное: '+ADOTable9.FieldByName('Tvspom').AsString+#13+ 65
't - основное: '+ADOTable9.FieldByName('Tosn').AsString+#13+ 65
't - PZ: '+ADOTable9.FieldByName('TimePZ').AsString+#13+ 65
't - SHT: '+ADOTable9.FieldByName('TimeSHT').AsString, 65
mtConfirmation, [mbYes, mbNo], 0) = mrYes 65
then begin 65
ADOTable9.Edit; 65
ADOTable9.FieldByName('idOborud').AsString:=ADOTable7.FieldByName('id').AsString; 65
ADOTable9.FieldByName('Tvspom').AsString:=Table2.FieldByName('Tvspom').AsString; 65
ADOTable9.FieldByName('Tosn').AsString:=Table2.FieldByName('Tosn').AsString; 65
ADOTable9.FieldByName('TimePZ').AsString:=Table2.FieldByName('TimePZ').AsString; 65
ADOTable9.FieldByName('TimeSHT').AsString:=Table2.FieldByName('TimeSHT').AsString; 65
ADOTable9.Post; 65
end; 65
Table2.Next; 65
end; 65
end; 65
end; 65
procedure TForm1.Action9Execute(Sender: TObject); 65
var 65
Приложение 1 65
Frm: TForm3; 65
begin 65
if Action9.Tag=1 then begin 65
frm:= TForm3.Create(Owner); 65
frm.Caption:='Оборудование'; 65
frm.DataSource1.DataSet:=Frm.ADOTable4; 65
Action9.Tag:=0; 65
end; 65
end; 65
procedure TForm1.Action10Execute(Sender: TObject); 66
var 66
Frm: TForm5; 66
begin 66
if Action10.Tag=1 then begin 66
frm:= TForm5.Create(Owner); 66
Action10.Tag:=0; 66
end; 66
end; 66
procedure TForm1.Action11Execute(Sender: TObject); 66
var 66
Frm: TForm7; 66
begin 66
if Action11.Tag=1 then begin 66
frm:= TForm7.Create(Owner); 66
Action11.Tag:=0; 66
end; 66
end; 66
end. 66