Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет по про.doc
Скачиваний:
69
Добавлен:
10.05.2015
Размер:
5.1 Mб
Скачать

4.2 Программно-технические средства при использовании программы

Для использования программы необходимы следующие программно-технические средства:

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

- процессор не ниже…………………………………………533 MHz

- объём оперативной памяти не ниже………………………1Gb

- жесткий диск………………………………………………..5 Gb

- монитор

- клавиатура

- мышь

- принтер

В качестве программного обеспечения необходимо иметь следующие программные продукты:

- Операционная система MS Windows ME, XP, 2000, 2003.

- Архиватор.

- Установленный пакет Microsoft Offise 2003.

4.3 Описание программы

Программа «Расчет нормы времени» разработана в среде программирования Borland Delphi 7.0 под управлением операционной системы Windows XP.

Структурное содержание директории программы

В корневом каталоге программы содержатся следующие файлы и подкаталоги:

  • Project.exe– файл программы;

  • Icons-каталог содержащий иконки;

  • time.dbe– база данных;

  • Наряд.xls– шаблон документа «Наряд на сдельные работы».

Запуск программы

Запускается программа из корневого каталога, файл Project.exe.

Завершение работы программы

Завершить работу с программой можно в любой момент времени. Чтобы завершить работу с программой нужно нажать на крестик в правом верхнем углу формы, либо выбрать пункт меню «Файл» – «Завершение работы».

Описание работы программы

После запуска файла на экране появится главная форма работы программы, на которой расположены меню и дублирующие его кнопки операций (рисунок 5).

Рис. 5. Главное окно программы

Для продолжения работы необходимо выбрать один из пунктов меню.

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

Выбрав пункт меню «Справочники» – «Номенклатура» или нажатием на дублирующую кнопку на панели откроется окно справочника номенклатуры (рисунок 3).

Выбрав пункт меню «Справочники» – «Покупатели» или нажатием на дублирующую кнопку на панели откроется окно справочника покупателей (рисунок 4).

Выбрав пункт меню «Справочники» – «Производители» или нажатием на дублирующую кнопку на панели откроется окно справочника производителей (рисунок 5).

Рис.3. Общий вид окна справочника номенклатуры

Выбрав пункт меню «Справочники» – «Производители» или нажатием на дублирующую кнопку на панели откроется окно справочника производителей (рисунок 5).

Рис.4. Общий вид окна справочника покупатели

Выбрав пункт меню «Справочники» – «Производители» или нажатием на дублирующую кнопку на панели откроется окно справочника производителей (рисунок 5).

Рис.5. Общий вид окна справочника производители,продолжение

Основные справочники имеют одинаковую организацию для удобства пользователя и содержат в себе: табличную часть с конкретными данными для каждого справочника и кнопки управления1 (рисунок 6) в верхней части.

Рис.6. Общий вид окна справочника

Описание функций панели справочников:

1 – Добавление новой записи;

2 – Удаление текущей записи;

3 – Редактирование текущей записи;

4 – Принятие изменений (активно только в режиме добавления или редактирования);

5 – Отмена изменений (активно только в режиме добавления или редактирования);

6 – Обновляет справочник.

Заполнения справочников «Должности», «Цеха и подразделения», «Сотрудники» можно автоматически воспользовавшись импортом данных из 1С: Предприятия для этого необходимо выбрать пункт меню Файл,Импорт,1С:Предприятие:

Рисунок диалога

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

Для расчета нормы времени необходимо ввести данные по операциям.

Для этого необходимо выбрать пункт меню Операции, Нормы рабочего времени.

Заполнения справочников «Оборудование» и списка операций с уже указанными нормами времени, можно автоматически воспользовавшись импортом данных из Архив - Autoproject для этого необходимо пункт меню Файл, Импорт, Архив – Autoproject.

Рисунок диалога

Для ввода нормы времени с бланка, поступившего от мастера цеха или участка необходимо нажать кнопку наряды на сдельные работы, откроется окно, содержащее меню сотрудники и описание работ (рисунок, )

Рисунок

После ввода документов возможна печать отчета «Наряд на сдельные работы».

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

Приложение 1

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ImgList, ActnList, XPStyleActnCtrls, ActnMan, ToolWin,

ActnCtrls, ActnMenus, ADODB, ExcelXP, OleServer, OleCtnrs, StdCtrls, DB,

Grids, DBGrids, DBTables, Buttons, ExtCtrls;

type

TForm1 = class(TForm)

ImageList1: TImageList;

ActionMainMenuBar1: TActionMainMenuBar;

ActionManager1: TActionManager;

Action1: TAction;

Action2: TAction;

OpenDialog1: TOpenDialog;

Action3: TAction;

Action4: TAction;

ADOConnection1: TADOConnection;

ADOTable1: TADOTable;

ADOTable2: TADOTable;

ADOTable3: TADOTable;

ADOTable4: TADOTable;

ADOTable5: TADOTable;

Action5: TAction;

Action6: TAction;

Action7: TAction;

Action8: TAction;

OpenDialog2: TOpenDialog;

Table1: TTable;

Table2: TTable;

Приложение 1

ADOTable6: TADOTable;

ADOTable7: TADOTable;

DataSource1: TDataSource;

ADOTable8: TADOTable;

DataSource2: TDataSource;

ADOTable9: TADOTable;

Action9: TAction;

Action10: TAction;

Action11: TAction;

Action12: TAction;

Panel1: TPanel;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

Bevel1: TBevel;

SpeedButton3: TSpeedButton;

SpeedButton4: TSpeedButton;

procedure Action1Execute(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Action2Execute(Sender: TObject);

procedure Action3Execute(Sender: TObject);

procedure Action4Execute(Sender: TObject);

procedure Action5Execute(Sender: TObject);

procedure Action6Execute(Sender: TObject);

procedure Action7Execute(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure Action8Execute(Sender: TObject);

function WinToDos(St: string): string;

procedure ConectionTable(Table: TTable; TName: string);

function finds(Table: TADOTable; TFild, TFind: string): boolean;

procedure Action9Execute(Sender: TObject);

Приложение 1

procedure Action10Execute(Sender: TObject);

procedure Action11Execute(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

StartDir:String;

XL: variant;

XLPic,XlSheet: OleVariant;

implementation

uses Unit2, Unit3, Unit4, ComObj, Unit5, Unit7;

{$R *.dfm}

procedure Delay(Value: Cardinal);

var

F, N: Cardinal;

begin

N := 0;

while N <= (Value div 10) do

begin

SleepEx(1, True);

Application.ProcessMessages;

Inc(N);

end;

F := GetTickCount;

repeat

Application.ProcessMessages;

N := GetTickCount;

Приложение 1

until (N - F >= (Value mod 10)) or (N < F);

end;

function TForm1.finds(Table: TADOTable; TFild, TFind: string): boolean;

var

f:boolean;

begin

f:=false;

Table.First;

while not(Table.Eof) do begin

if Table.FieldByName(TFild).AsString=TFind then begin

f:=true;

Break;

end else Table.Next;

end;

Result:=f;

end;

procedure TForm1.ConectionTable(Table: TTable; TName: string);

begin

Table.Active:=false;

repeat

until FileExists(TName);

Table.TableName:=TName;

Table.Active:=true;

end;

function TForm1.WinToDos(St: string): string;

var

Ch: PChar;

begin

Ch := StrAlloc(Length(St) + 1);

Приложение 1

AnsiToOem(PChar(St), Ch);

Result := Ch;

StrDispose(Ch);

end;

procedure TForm1.Action1Execute(Sender: TObject);

var

Frm: TForm2;

begin

if Action1.Tag=1 then begin

frm:= TForm2.Create(Owner);

Action1.Tag:=0;

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

var s:string;

begin

StartDir:=GetCurrentDir;

s:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+

StartDir+'\time.mdb;Mode=Share Deny None;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";'+

'Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;'+

'Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";'+

'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;'+

'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;';

ADOConnection1.Connected:=false;

ADOConnection1.ConnectionString:=s;

ADOConnection1.Connected:=true;

ADOTable1.Active:=false;

ADOTable2.Active:=false;

ADOTable3.Active:=false;

Приложение 1

ADOTable4.Active:=false;

ADOTable5.Active:=false;

ADOTable6.Active:=false;

ADOTable7.Active:=false;

ADOTable8.Active:=false;

ADOTable9.Active:=false;

ADOTable1.Active:=true;

ADOTable2.Active:=true;

ADOTable3.Active:=true;

ADOTable4.Active:=true;

ADOTable5.Active:=true;

ADOTable6.Active:=true;

ADOTable7.Active:=true;

ADOTable8.Active:=true;

ADOTable9.Active:=true;

end;

procedure TForm1.Action2Execute(Sender: TObject);

var i,st:integer;

NFile,kodFio,Fio,kodDolh,Dolh,kodPodr,Podr,Nach,Oklad,Razrad:String;

error,ok:boolean;

begin

if OpenDialog1.Execute then begin

NFile:=OpenDialog1.FileName;

XL := CreateOleObject('Excel.Application');

XL.DisplayAlerts := false;

XL.WorkBooks.Open(NFile);

XlSheet:=XL.WorkBooks[1].WorkSheets[1];

XL.Visible:= false;

i:=7; st:=1;

while XlSheet.Range['A'+IntToStr(i)].FormulaR1C1 <> '' do begin

Приложение 1

error:=false;

kodFio:=XlSheet.Range['B'+IntToStr(i)].FormulaR1C1;

Fio:=XlSheet.Range['C'+IntToStr(i)].FormulaR1C1;

kodDolh:=XlSheet.Range['D'+IntToStr(i)].FormulaR1C1;

Dolh:=XlSheet.Range['E'+IntToStr(i)].FormulaR1C1;

kodPodr:=XlSheet.Range['F'+IntToStr(i)].FormulaR1C1;

Podr:=XlSheet.Range['G'+IntToStr(i)].FormulaR1C1;

Nach:=XlSheet.Range['H'+IntToStr(i)].FormulaR1C1;

Oklad:=XlSheet.Range['I'+IntToStr(i)].FormulaR1C1;

Razrad:=XlSheet.Range['J'+IntToStr(i)].FormulaR1C1;

ADOTable1.Filter:='kod='+kodPodr;

ADOTable2.Filter:='kod='+kodDolh;

if ADOTable1.IsEmpty then begin

ADOTable1.Insert;

ADOTable1.FieldByName('kod').AsString:=kodPodr;

ADOTable1.FieldByName('name').AsString:=Podr;

ADOTable1.FieldByName('otv').AsString:=Nach;

ADOTable1.Post;

end else

if MessageDlg('Заменить данные по подразделению?'+#13+

'Наименование: '+ADOTable1.FieldByName('name').AsString+#13+'Ответственный: '+ADOTable1.FieldByName('otv').AsString,

mtConfirmation, [mbYes, mbNo], 0) = mrYes

then begin

ADOTable1.Edit;

ADOTable1.FieldByName('kod').AsString:=kodPodr;

ADOTable1.FieldByName('name').AsString:=Podr;

ADOTable1.FieldByName('otv').AsString:=Nach;

ADOTable1.Post;

end;

Приложение 1

if ADOTable2.IsEmpty then begin

ADOTable2.Insert;

ADOTable2.FieldByName('kod').AsString:=kodDolh;

ADOTable2.FieldByName('name').AsString:=Dolh;

ADOTable2.Post;

end else

if MessageDlg('Заменить данные по должности?'+#13+

'Наименование: '+ADOTable2.FieldByName('name').AsString,

mtConfirmation, [mbYes, mbNo], 0) = mrYes

then begin

ADOTable2.Edit;

ADOTable2.FieldByName('kod').AsString:=kodDolh;

ADOTable2.FieldByName('name').AsString:=Dolh;

ADOTable2.Post;

end;

ADOTable4.Filter:='name='+''''+Oklad+'''';

if ADOTable4.IsEmpty then begin

error:=true;

ShowMessage('Незаведен вид окладов');

end else

Oklad:=ADOTable4.FieldByName('id').AsString;

ADOTable5.Filter:='name='+''''+Razrad+'''';

if ADOTable5.IsEmpty then begin

error:=true;

ShowMessage('Незаведен вид разряда');

end else

Razrad:=ADOTable5.FieldByName('id').AsString;

if error then

ShowMessage('Сотрудник '+Fio+' не будет добавлен!')

else begin

Приложение 1

ADOTable3.Filter:='kod='+kodFio;

if ADOTable3.IsEmpty then begin

ADOTable3.Insert;

ADOTable3.FieldByName('fid').AsString:=ADOTable1.FieldByName('id').AsString;

ADOTable3.FieldByName('kod').AsString:=kodFio;

ADOTable3.FieldByName('FIO').AsString:=Fio;

ADOTable3.FieldByName('vidoplat').AsString:=Oklad;

ADOTable3.FieldByName('dolh').AsString:=ADOTable2.FieldByName('id').AsString;

ADOTable3.FieldByName('razrad').AsString:=Razrad;

ADOTable3.Post;

end else

if MessageDlg('Заменить данные по сотруднику?'+#13+

'Ф.И.О.: '+ADOTable3.FieldByName('FIO').AsString+#13+

'Вид оплаты: '+ADOTable4.FieldByName('name').AsString+#13+

'Должность: '+ADOTable2.FieldByName('name').AsString+#13+

'Разряд: '+ADOTable5.FieldByName('name').AsString,

mtConfirmation, [mbYes, mbNo], 0) = mrYes

then begin

ADOTable3.Edit;

ADOTable3.FieldByName('fid').AsString:=ADOTable1.FieldByName('id').AsString;

ADOTable3.FieldByName('kod').AsString:=kodFio;

ADOTable3.FieldByName('FIO').AsString:=Fio;

ADOTable3.FieldByName('vidoplat').AsString:=Oklad;

ADOTable3.FieldByName('dolh').AsString:=ADOTable2.FieldByName('id').AsString;

ADOTable3.FieldByName('razrad').AsString:=Razrad;

ADOTable3.Post;

end;

end;

i:=i+1;

end;

Приложение 1

XL.ActiveWorkbook.Close;

XL.Application.Quit;

end;

end;

procedure TForm1.Action3Execute(Sender: TObject);

var

Frm: TForm3;

begin

if Action3.Tag=1 then begin

frm:= TForm3.Create(Owner);

frm.Caption:='Виды окладов';

frm.DataSource1.DataSet:=Frm.ADOTable1;

Action3.Tag:=0;

end;

end;

procedure TForm1.Action4Execute(Sender: TObject);

var

Frm: TForm3;

begin

if Action4.Tag=1 then begin

frm:= TForm3.Create(Owner);

frm.Caption:='Разряды';

frm.DataSource1.DataSet:=Frm.ADOTable2;

Action4.Tag:=0;

end;

end;

procedure TForm1.Action5Execute(Sender: TObject);

begin

Close;

end;

Приложение 1

procedure TForm1.Action6Execute(Sender: TObject);

var

Frm: TForm3;

begin

if Action6.Tag=1 then begin

frm:= TForm3.Create(Owner);

frm.Caption:='Должности';

frm.DataSource1.DataSet:=Frm.ADOTable3;

Action6.Tag:=0;

end;

end;

procedure TForm1.Action7Execute(Sender: TObject);

var

Frm: TForm4;

begin

if Action7.Tag=1 then begin

frm:= TForm4.Create(Owner);

Action7.Tag:=0;

end;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

Action:=caFree;

Form1.Action7.Tag:=1;

end;

procedure TForm1.Action8Execute(Sender: TObject);

var f:string;

files:TextFile;

find:boolean;

begin

Приложение 1

if OpenDialog2.Execute then begin

f:=OpenDialog2.FileName;

AssignFile(files,StartDir+'\clear.bat');

Rewrite(files);

writeln(files, WinToDos(':delite'));

writeln(files, WinToDos('del "'+StartDir+'\temp\*.*" /q /f'));

writeln(files, WinToDos('if ERRORLEVEL 1 goto delite'));

CloseFile(files);

WinExec(PChar(StartDir+'\clear.bat'),0);

Delay(3000);

WinExec(PChar(StartDir+'\7z.exe e -o"'+StartDir+'\temp" "'+f+'"'),0);

Delay(3000);

ConectionTable(Table1, StartDir+'\temp\DET_MEX.db');

ADOTable6.Filter:='Oboz='+''''+Table1.FieldByName('ObozDetal').AsString+'''';

if ADOTable6.IsEmpty then begin

ADOTable6.Insert;

ADOTable6.FieldByName('Oboz').AsString:=Table1.FieldByName('ObozDetal').AsString;

ADOTable6.FieldByName('Name').AsString:=Table1.FieldByName('NameDet').AsString;

ADOTable6.FieldByName('Data').AsString:=Table1.FieldByName('Data').AsString;

ADOTable6.Post;

end else

if MessageDlg('Заменить данные по детали?'+#13+

'№ чертежа: '+Table1.FieldByName('ObozDetal').AsString+#13+

'Дата составления: '+Table1.FieldByName('Data').AsString,

mtConfirmation, [mbYes, mbNo], 0) = mrYes

then begin

ADOTable6.Edit;

ADOTable6.FieldByName('Oboz').AsString:=Table1.FieldByName('ObozDetal').AsString;

ADOTable6.FieldByName('Name').AsString:=Table1.FieldByName('NameDet').AsString;

ADOTable6.FieldByName('Data').AsString:=Table1.FieldByName('Data').AsString;

Приложение 1

ADOTable6.Post;

end;

ConectionTable(Table2, StartDir+'\temp\OP_MEX.db');

Table2.First;

while not(Table2.Eof) do begin

ADOTable7.Filter:='name='+''''+Table2.FieldByName('Equipment1').AsString+'''';

if ADOTable7.IsEmpty then begin

ADOTable7.Insert;

ADOTable7.FieldByName('name').AsString:=Table2.FieldByName('Equipment1').AsString;

ADOTable7.Post;

end;

find:=finds(ADOTable8,'InfOper',Table2.FieldByName('InfOper').AsString);

if not(find) then begin

ADOTable8.Insert;

ADOTable8.FieldByName('NameOper').AsString:=Table2.FieldByName('NameOper').AsString;

ADOTable8.FieldByName('InfOper').AsString:=Table2.FieldByName('InfOper').AsString;

ADOTable8.Post;

end else

if MessageDlg('Заменить операцию?'+#13+

'Название операции: '+ADOTable8.FieldByName('NameOper').AsString+#13+

'Описание операции: '+ADOTable8.FieldByName('InfOper').AsString,

mtConfirmation, [mbYes, mbNo], 0) = mrYes

then begin

ADOTable8.Edit;

ADOTable8.FieldByName('NameOper').AsString:=Table2.FieldByName('NameOper').AsString;

ADOTable8.FieldByName('InfOper').AsString:=Table2.FieldByName('InfOper').AsString;

ADOTable8.Post;

end;

//ADOTable9.Filter:='idOborud='+ADOTable7.FieldByName('id').AsString;

find:=finds(ADOTable9,'idOborud',ADOTable7.FieldByName('id').AsString);

Приложение 1

if not(find) then begin

ADOTable9.Insert;

ADOTable9.FieldByName('idOborud').AsString:=ADOTable7.FieldByName('id').AsString;

ADOTable9.FieldByName('Tvspom').AsString:=Table2.FieldByName('Tvspom').AsString;

ADOTable9.FieldByName('Tosn').AsString:=Table2.FieldByName('Tosn').AsString;

ADOTable9.FieldByName('TimePZ').AsString:=Table2.FieldByName('TimePZ').AsString;

ADOTable9.FieldByName('TimeSHT').AsString:=Table2.FieldByName('TimeSHT').AsString;

ADOTable9.Post;

end else

if MessageDlg('Заменить данные по времени (t)?'+#13+

't - вспомогательное: '+ADOTable9.FieldByName('Tvspom').AsString+#13+

't - основное: '+ADOTable9.FieldByName('Tosn').AsString+#13+

't - PZ: '+ADOTable9.FieldByName('TimePZ').AsString+#13+

't - SHT: '+ADOTable9.FieldByName('TimeSHT').AsString,

mtConfirmation, [mbYes, mbNo], 0) = mrYes

then begin

ADOTable9.Edit;

ADOTable9.FieldByName('idOborud').AsString:=ADOTable7.FieldByName('id').AsString;

ADOTable9.FieldByName('Tvspom').AsString:=Table2.FieldByName('Tvspom').AsString;

ADOTable9.FieldByName('Tosn').AsString:=Table2.FieldByName('Tosn').AsString;

ADOTable9.FieldByName('TimePZ').AsString:=Table2.FieldByName('TimePZ').AsString;

ADOTable9.FieldByName('TimeSHT').AsString:=Table2.FieldByName('TimeSHT').AsString;

ADOTable9.Post;

end;

Table2.Next;

end;

end;

end;

procedure TForm1.Action9Execute(Sender: TObject);

var

Приложение 1

Frm: TForm3;

begin

if Action9.Tag=1 then begin

frm:= TForm3.Create(Owner);

frm.Caption:='Оборудование';

frm.DataSource1.DataSet:=Frm.ADOTable4;

Action9.Tag:=0;

end;

end;

procedure TForm1.Action10Execute(Sender: TObject);

var

Frm: TForm5;

begin

if Action10.Tag=1 then begin

frm:= TForm5.Create(Owner);

Action10.Tag:=0;

end;

end;

procedure TForm1.Action11Execute(Sender: TObject);

var

Frm: TForm7;

begin

if Action11.Tag=1 then begin

frm:= TForm7.Create(Owner);

Action11.Tag:=0;

end;

end;

end.

Приложение 2

1Кнопки управления присутствуют на всех формах программы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]