Программно-технические средства при использовании программы
Основные справочники имеют одинаковую организацию для удобства пользователя и содержат в себе: табличную часть с конкретными данными для каждого справочника и кнопки управления Кнопки управления присутствуют на всех формах программы. (рисунок 6) в верхней части. Заполнения справочников «Оборудование» и списка операций с уже указанными нормами времени, можно автоматически воспользовавшись импортом… Читать ещё >
Программно-технические средства при использовании программы (реферат, курсовая, диплом, контрольная)
Для использования программы необходимы следующие программно-технические средства:
Аппаратная часть предусматривает использование следующего оборудования:
- — процессор не ниже…533 MHz
- — объём оперативной памяти не ниже…1Gb
- — жесткий диск…5 Gb
- — монитор
- — клавиатура
- — мышь
- — принтер
В качестве программного обеспечения необходимо иметь следующие программные продукты:
- — Операционная система MS Windows ME, XP, 2000, 2003.
- — Архиватор.
- — Установленный пакет Microsoft Offise 2003.
Описание программы
Программа «Расчет нормы времени» разработана в среде программирования Borland Delphi 7.0 под управлением операционной системы Windows XP.
Структурное содержание директории программы
В корневом каталоге программы содержатся следующие файлы и подкаталоги:
- · Project. exe — файл программы;
- · Icons — каталог содержащий иконки;
- · time. dbe — база данных;
- · Наряд. xls — шаблон документа «Наряд на сдельные работы».
Запуск программы
Запускается программа из корневого каталога, файл Project.exe.
Завершение работы программы
Завершить работу с программой можно в любой момент времени. Чтобы завершить работу с программой нужно нажать на крестик в правом верхнем углу формы, либо выбрать пункт меню «Файл» — «Завершение работы».
Описание работы программы
После запуска файла на экране появится главная форма работы программы, на которой расположены меню и дублирующие его кнопки операций (рисунок 5).
Для продолжения работы необходимо выбрать один из пунктов меню.
Перед тем, как начать работу с программой, следует заполнить начальные справочники «Цеха и подразделения», «Должности», «Сотрудники», «Оборудование», «Классификаторы», выбрав соответствующие пункты меню.
Выбрав пункт меню «Справочники» — «Номенклатура» или нажатием на дублирующую кнопку на панели откроется окно справочника номенклатуры (рисунок 3).
Выбрав пункт меню «Справочники» — «Покупатели» или нажатием на дублирующую кнопку на панели откроется окно справочника покупателей (рисунок 4).
Выбрав пункт меню «Справочники» — «Производители» или нажатием на дублирующую кнопку на панели откроется окно справочника производителей (рисунок 5).
Рис. 3 Общий вид окна справочника номенклатуры
Выбрав пункт меню «Справочники» — «Производители» или нажатием на дублирующую кнопку на панели откроется окно справочника производителей (рисунок 5).
Рис. 4 Общий вид окна справочника покупатели
Выбрав пункт меню «Справочники» — «Производители» или нажатием на дублирующую кнопку на панели откроется окно справочника производителей (рисунок 5).
Рис. 5 Общий вид окна справочника производители, продолжение
Основные справочники имеют одинаковую организацию для удобства пользователя и содержат в себе: табличную часть с конкретными данными для каждого справочника и кнопки управления Кнопки управления присутствуют на всех формах программы. (рисунок 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;
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);
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;
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);
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+' ime. 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;
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.
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;
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.
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;
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;
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.
if OpenDialog2. Execute then begin.
f:=OpenDialog2.FileName;
AssignFile (files, StartDir+'clear.bat');
Rewrite (files);
writeln (files, WinToDos (':delite'));
writeln (files, WinToDos ('del «'+StartDir+' emp*.*» /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 eo" '+StartDir+' emp" «'+f+'» '), 0);
Delay (3000);
ConectionTable (Table1, StartDir+' empDET_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;
ADOTable6.Post;
end;
ConectionTable (Table2, StartDir+' empOP_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);
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.
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