Разработка автоматизированной системы учета движения ремонтируемой электроаппаратуры

Автор работы: Пользователь скрыл имя, 27 Марта 2015 в 17:54, дипломная работа

Краткое описание

Целью данного дипломного проекта является: разработка автоматизированной системы учёта движения ремонтируемых электроприборов Открытого Акционерного Общества Северного Производственного Объединения «Арктика» (ОАО СПО «Арктика»), которая предназначена для введения новой технологии учета наличия и движения ремонтируемых электроприборов.

Содержание

ВВЕДЕНИЕ 5
1. ПОСТАНОВКА ЗАДАЧИ 7
1.1. Характеристика комплекса задач 7
1.2. Функции автоматизированной системы 7
1.3. Выходные и входные данные 7
1.4. Требования к программному и техническому обеспечению АС 9
2. АНАЛИТИЧЕСКАЯ ЧАСТЬ 9
2.1. Организационная структура предприятия 9
2.2. Организация предметной области 10
2.2.1. Должностные обязанности кладовщика 11
2.3. Описание бизнес-процессов 12
2.4. Обзор существующих аналогов 16
2.5. Характеристика инструментальных средств 17
2.5.1. Характеристика CASE – средств 17
2.5.2. Характеристика СУБД 22
2.5.3. Характеристика средств программирования и отладки 23
3.1. Определение функции системы 26
3.4. Построение динамической модели данных 38
3.4.1. Диаграмма состояния системы 38
3.4.2. Диаграмма деятельности системы 38
3.4.3. Диаграмма топологии системы 39
3.4.4. Диаграмма последовательности (взаимодействия) 40
3.5. Описание интерфейсов и результатов работы программы 42
4. ЭКОНОМИЧЕСКАЯ ЧАСТЬ 49
4.1. Расчет стоимости покупных комплектующих и расходных материалов 49
4.2. Расчет трудоемкости создания программы 50
4.2. Расчет заработной платы 51
4.3. Расчет единого социального налога 51
4.4. Расчет прочих прямых расходов 51
4.5. Оценка экономической эффективности системы 52
5. ТРЕБОВАНИЯ К ТЕХНИКЕ БЕЗОПАСНОСТИ И ОХРАНЕ ЖИЗНЕДЕЯТЕЛЬНОСТИ 53
5.1 Анализ опасных и вредных факторов при работе на ЭВМ 53
5.2 Общие положения и область применения 54
5.3 Организация рабочего места пользователя 55
5.4. Микроклимат, содержание аэроионов и вредных химических веществ в воздухе помещений эксплуатации ЭВМ 56
5.5 Шум и вибрация 57
5.6 Освещение 58
5.7 Требования к помещениям для эксплуатации ЭВМ 58
5.8. Требования к монитору 59
5.9. Режим труда и отдыха 60
5.10. Защита от статического электричества и электромагнитных излучений 61
5.11. Требования к утилизации отходов при работе на компьютере 61
ЗАКЛЮЧЕНИЕ 63
ПЕРЕЧЕНЬ ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 64
ПРИЛОЖЕНИЕ 65

Вложенные файлы: 1 файл

Диплом.doc

— 1.14 Мб (Скачать файл)

FormOtchPer.QRLabel7.Caption:=DateToStr(DateTimePicker2.DateTime);

FormOtchPer.QRLabel17.Caption:=Podrazd;

ADOQuery1.Close;

ADOQuery1.Open;

FormOtchPer.QuickRep1.Preview;

end;

 

end.

 

 

unit UnitRepair;

 

interface

 

uses

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

  Dialogs, ExtCtrls, ADODB, DB, StdCtrls, Grids, DBGrids, Menus;

 

type

  TFormRepair = class(TForm)

    Panel1: TPanel;

    Panel2: TPanel;

    Panel3: TPanel;

    Label1: TLabel;

    Label2: TLabel;

    ComboBox1: TComboBox;

    Label3: TLabel;

    ComboBox2: TComboBox;

    ADOConnection1: TADOConnection;

    ADOTable1: TADOTable;

    ADOQuery1: TADOQuery;

    Panel4: TPanel;

    ADOQuery2: TADOQuery;

    DataSource1: TDataSource;

    DBGrid1: TDBGrid;

    ADOQuery2DEV_NAME: TStringField;

    ADOQuery2TYPE_DEVICE: TStringField;

    ADOQuery2SHEMA_NAIM: TStringField;

    ADOQuery2SHEM_NOM: TStringField;

    ADOQuery2ZAV_NOM: TStringField;

    ADOQuery2STATUS: TStringField;

    ADOQuery2RASPOLOG: TStringField;

    ADOQuery2MASS: TFloatField;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    N3: TMenuItem;

    ADOQuery3: TADOQuery;

    ADOQuery4: TADOQuery;

    N4: TMenuItem;

    N5: TMenuItem;

    N6: TMenuItem;

    N7: TMenuItem;

    N8: TMenuItem;

    N9: TMenuItem;

    N10: TMenuItem;

    procedure FormActivate(Sender: TObject);

    procedure ComboBox1Click(Sender: TObject);

    procedure Panel4Click(Sender: TObject);

    procedure ComboBox2Click(Sender: TObject);

    procedure N2Click(Sender: TObject);

    procedure N3Click(Sender: TObject);

    procedure N5Click(Sender: TObject);

    procedure N10Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

    UserSrlect: integer;

  end;

 

var

  FormRepair: TFormRepair;

 

 

implementation

 

uses UnitSelect, UnitRepSTat, UnitOtchMass, UnitApp;

 

{$R *.dfm}

 

procedure TFormRepair.FormActivate(Sender: TObject);

begin

ADOTable1.Open;

ComboBox1.Clear;

ADOTable1.First;

while ADOTable1.Eof=false do

begin

ComboBox1.Items.Add(ADOTable1.FieldByName('SHIP_ZAV_NOM').AsString);

ADOTable1.Next;

end;

 

end;

 

procedure TFormRepair.ComboBox1Click(Sender: TObject);

begin

ComboBox2.Clear;

ADOQuery1.Close;

ADOQuery1.Parameters.ParamByName('p').Value:=ComboBox1.Items.Strings[ComboBox1.ItemIndex];

ADOQuery1.Open;

ADOTable1.First;

while ADOQuery1.Eof=false do

begin

ComboBox2.Items.Add(ADOQuery1.FieldByName('IZD_OBOZN').AsString);

ADOQuery1.Next;

end;

end;

 

procedure TFormRepair.Panel4Click(Sender: TObject);

begin

FormSelect.Show;

FormRepair.Close;

end;

 

procedure TFormRepair.ComboBox2Click(Sender: TObject);

begin

ADOQuery2.Close;

ADOQuery2.Parameters.ParamByName('p').Value:=ComboBox1.Text;

ADOQuery2.Parameters.ParamByName('q').Value:=ComboBox2.Items.Strings[ComboBox2.ItemIndex];

ADOQuery2.Open;

end;

 

procedure TFormRepair.N2Click(Sender: TObject);

begin

ADOQuery3.Active:=true;

ADOQuery3.Parameters[0].Value:=ComboBox1.Text;

with FormRepStat do

begin

   QuickRep1.DataSet:=ADOQuery3;

   QRDBText1.DataSet:=ADOQuery3;

   QRDBText1.DataField:='IZD_OBOZN';

   QRDBText2.DataSet:=ADOQuery3;

   QRDBText2.DataField:='SHEMA_NAIM';

   QRDBText3.DataSet:=ADOQuery3;

   QRDBText3.DataField:='TYPE_DEVICE';

   QRDBText4.DataSet:=ADOQuery3;

   QRDBText4.DataField:='DEV_NAME';

   QRDBText5.DataSet:=ADOQuery3;

   QRDBText5.DataField:='SHEM_NOM';

   QRLabel2.Caption:='замены';

   QRLabel4.Caption:=ComboBox1.Text;

end;

ADOQuery3.Close;

ADOQuery3.Open;

FormRepStat.QuickRep1.Preview;

end;

 

procedure TFormRepair.N3Click(Sender: TObject);

begin

ADOQuery4.Active:=true;

ADOQuery4.Parameters[0].Value:=ComboBox1.Text;

 with FormRepStat do

begin

   QuickRep1.DataSet:=ADOQuery4;

   QRDBText1.DataSet:=ADOQuery4;

   QRDBText1.DataField:='IZD_OBOZN';

   QRDBText2.DataSet:=ADOQuery4;

   QRDBText2.DataField:='SHEMA_NAIM';

   QRDBText3.DataSet:=ADOQuery4;

   QRDBText3.DataField:='TYPE_DEVICE';

   QRDBText4.DataSet:=ADOQuery4;

   QRDBText4.DataField:='DEV_NAME';

   QRDBText5.DataSet:=ADOQuery4;

   QRDBText5.DataField:='SHEM_NOM';

   QRLabel2.Caption:='ремонта';

   QRLabel4.Caption:=ComboBox1.Text;

end;

ADOQuery4.Close;

ADOQuery4.Open;

FormRepStat.QuickRep1.Preview;

end;

 

procedure TFormRepair.N5Click(Sender: TObject);

begin

UserSrlect:=1;

FormAPP.Show;

FormRepair.Hide;

end;

 

procedure TFormRepair.N10Click(Sender: TObject);

begin

FormAPP.Show;

FormRepair.Hide;

end;

 

end.

 

 

unit UnitSearchDate;

 

interface

 

uses

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

  Dialogs, DB, Grids, DBGrids, ADODB, ComCtrls, StdCtrls, ExtCtrls;

 

type

  TFormSearchData = class(TForm)

    Panel1: TPanel;

    Label1: TLabel;

    DateTimePicker1: TDateTimePicker;

    ADOQuery1: TADOQuery;

    DataSource1: TDataSource;

    DBGrid1: TDBGrid;

    ADOQuery1NUMBER: TStringField;

    ADOQuery1DATE_CREATE: TDateTimeField;

    ADOQuery1PODRAZD_NAME: TStringField;

    ADOQuery1IZD_NAIM: TStringField;

    ADOQuery1DEV_NAME: TStringField;

    ADOQuery1SHEM_NOM: TStringField;

    ADOQuery1SHIP_ZAV_NOM: TStringField;

    Panel2: TPanel;

    Panel3: TPanel;

    Panel4: TPanel;

    Label2: TLabel;

    procedure Panel3Click(Sender: TObject);

    procedure Panel4Click(Sender: TObject);

    procedure FormActivate(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FormSearchData: TFormSearchData;

 

implementation

 

uses UnitJournal;

 

{$R *.dfm}

 

procedure TFormSearchData.Panel3Click(Sender: TObject);

begin

FormJournal.Show;

FormSearchData.Close;

end;

 

procedure TFormSearchData.Panel4Click(Sender: TObject);

begin

ADOQuery1.Close;

ADOQuery1.Parameters.ParamByName('p').Value:=DateTimePicker1.DateTime;

ADOQuery1.Open;

end;

 

procedure TFormSearchData.FormActivate(Sender: TObject);

begin

Label2.Caption:=FormJournal.ComboBoxPodrazd.Text;

end;

 

end.

 

 

unit UnitSearchPodrazd;

 

interface

 

uses

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

  Dialogs, StdCtrls, ExtCtrls, DB, Grids, DBGrids, ADODB;

 

type

  TFormSearchPodrazd = class(TForm)

    Panel1: TPanel;

    Panel2: TPanel;

    Label1: TLabel;

    Panel3: TPanel;

    ComboBox1: TComboBox;

    ADOQuery1: TADOQuery;

    DataSource1: TDataSource;

    DBGrid1: TDBGrid;

    ADOQuery1NUMBER: TStringField;

    ADOQuery1DATE_CREATE: TDateTimeField;

    ADOQuery1DEV_NAME: TStringField;

    ADOQuery1SHEM_NOM: TStringField;

    ADOQuery1IZD_OBOZN: TStringField;

    ADOQuery1SHIP_ZAV_NOM: TStringField;

    procedure FormActivate(Sender: TObject);

    procedure Panel3Click(Sender: TObject);

    procedure ComboBox1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FormSearchPodrazd: TFormSearchPodrazd;

 

implementation

 

uses UnitJournal;

 

{$R *.dfm}

 

procedure TFormSearchPodrazd.FormActivate(Sender: TObject);

begin

Label1.Caption:='Накладные, поступившие в '+FormJournal.ComboBoxPodrazd.Text+' из';

ComboBox1.Items := FormJournal.ComboBoxPodrazd.Items;

end;

 

procedure TFormSearchPodrazd.Panel3Click(Sender: TObject);

begin

FormJournal.Show;

FormSearchPodrazd.Close;

end;

 

procedure TFormSearchPodrazd.ComboBox1Click(Sender: TObject);

begin

ADOQuery1.Close;

ADOQuery1.Parameters.ParamByName('p').Value:=ComboBox1.Items.Strings[ComboBox1.ItemIndex];

ADOQuery1.Open;

end;

 

end.

 

 

 

unit UnitSprav;

 

interface

 

uses

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

  Dialogs, ComCtrls, ExtCtrls, DB, ADODB, StdCtrls, DBCtrls, Menus;

 

type

  TFormSprav = class(TForm)

    Panel1: TPanel;

    Panel2: TPanel;

    Panel3: TPanel;

    ADOTable1: TADOTable;

    GroupBox1: TGroupBox;

    Label1: TLabel;

    ComboBox1: TComboBox;

    GroupBox2: TGroupBox;

    Label2: TLabel;

    ComboBox2: TComboBox;

    ADOQuery1: TADOQuery;

    Label3: TLabel;

    Edit1: TEdit;

    Label4: TLabel;

    Edit2: TEdit;

    ADOQuery2: TADOQuery;

    Label5: TLabel;

    ComboBox3: TComboBox;

    ADOQuery3: TADOQuery;

    GroupBox3: TGroupBox;

    ADOTable2: TADOTable;

    Edit3: TEdit;

    Label6: TLabel;

    Label8: TLabel;

    ComboBox4: TComboBox;

    ADOQuery4: TADOQuery;

    ListBox1: TListBox;

    GroupBox4: TGroupBox;

    Label7: TLabel;

    ADOQuery5: TADOQuery;

    ADOQuery6: TADOQuery;

    Label9: TLabel;

    Edit4: TEdit;

    Label10: TLabel;

    Edit5: TEdit;

    Label11: TLabel;

    Label12: TLabel;

    Edit6: TEdit;

    Label13: TLabel;

    Edit7: TEdit;

    Edit8: TEdit;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N501: TMenuItem;

    N502: TMenuItem;

    ADOQuery7: TADOQuery;

    ADOQuery8: TADOQuery;

    procedure Panel3Click(Sender: TObject);

    procedure FormShow(Sender: TObject);

    procedure ComboBox1Click(Sender: TObject);

    procedure ComboBox2Click(Sender: TObject);

    procedure ComboBox3Click(Sender: TObject);

    procedure ComboBox4Click(Sender: TObject);

    procedure ListBox1Click(Sender: TObject);

    procedure N502Click(Sender: TObject);

    procedure N501Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FormSprav: TFormSprav;

  i: integer;

implementation

 

uses UnitAutor, UnitSelect,UnitOtchMass;

 

{$R *.dfm}

 

procedure TFormSprav.Panel3Click(Sender: TObject);

begin

Application.Terminate;

end;

 

procedure TFormSprav.FormShow(Sender: TObject);

begin

ComboBox1.Clear;

ADOTable1.Active:=true;

ADOTable1.First;

while ADOTable1.Eof=false do

begin

  ComboBox1.Items.Add(ADOTable1.Fields[1].AsString);

  ADOTable1.Next;

end;

end;

 

procedure TFormSprav.ComboBox1Click(Sender: TObject);

begin

ComboBox2.Clear;

ADOQuery1.Active:=true;

ADOQuery1.Parameters[0].Value:= ComboBox1.Items[ComboBox1.ItemIndex];

ADOQuery1.Close;

ADOQuery1.Open;

while ADOQuery1.Eof = false do

begin

ComboBox2.Items.Add(ADOQuery1.Fields[0].AsString);

ADOQuery1.Next;

end;

 

end;

 

procedure TFormSprav.ComboBox2Click(Sender: TObject);

begin

ADOQuery2.Active:=true;

ADOQuery2.Parameters[0].Value:=ComboBox2.Items[ComboBox2.ItemIndex];

ADOQuery2.Close;

ADOQuery2.Open;

Edit1.Text:=ADOQuery2.Fields[0].AsString;

Edit2.Text:=ADOQuery2.Fields[1].AsString;

ADOQuery3.Active:=true;

ADOQuery3.Parameters[0].Value:=ComboBox2.Items[ComboBox2.ItemIndex];

ADOQuery3.Close;

ADOQuery3.Open;

ADOQuery3.First;

while ADOQuery3.Eof=false do

begin

  ComboBox3.Items.Add(ADOQuery3.Fields[0].AsString);

  ADOQuery3.Next;

end;

 

end;

 

procedure TFormSprav.ComboBox3Click(Sender: TObject);

begin

ComboBox4.Clear;

ADOTable2.Active:=true;

ADOTable2.Locate('IZD_OBOZN',ComboBox3.Items[ComboBox3.ItemIndex],[]);

Edit3.Text:=ADOTable2.Fields[1].AsString;

ADOQuery4.Active:=true;

ADOQuery4.Parameters[0].Value:=ComboBox3.Items[ComboBox3.ItemIndex];

ADOQuery4.Close;

ADOQuery4.Open;

ADOQuery4.First;

while ADOQuery4.Eof=false do

begin

  ComboBox4.Items.Add(ADOQuery4.Fields[0].AsString);

  ADOQuery4.Next;

end;

 

end;

 

procedure TFormSprav.ComboBox4Click(Sender: TObject);

begin

ListBox1.Clear;

ADOQuery5.Active:=true;

ADOQuery5.Parameters[0].Value:=ComboBox4.Items[ComboBox4.ItemIndex];

ADOQuery5.Close;

ADOQuery5.Open;

ADOQuery5.First;

while ADOQuery5.Eof=false do

begin

  ListBox1.Items.Add(ADOQuery5.Fields[0].AsString+' '+ADOQuery5.Fields[1].AsString);

  ADOQuery5.Next;

end;

end;

 

procedure TFormSprav.ListBox1Click(Sender: TObject);

begin

ADOQuery5.RecNo:=ListBox1.ItemIndex+1;

ADOQuery6.Active:=true;

ADOQuery6.Parameters[0].Value:=ADOQuery5.Fields[2].AsInteger;

ADOQuery6.Close;

ADOQuery6.Open;

Edit4.Text:=ADOQuery6.Fields[0].AsString;

Edit5.Text:=ADOQuery6.Fields[1].AsString;

Edit6.Text:=ADOQuery6.Fields[3].AsString;

Edit7.Text:=ADOQuery6.Fields[4].AsString;

Edit8.Text:=ADOQuery6.Fields[2].AsString;

end;

 

procedure TFormSprav.N502Click(Sender: TObject);

begin

ADOQuery7.Active:=true;

ADOQuery7.Parameters[0].Value:=ComboBox2.Text;

with FormOtchMass do

begin

   QuickRep1.DataSet:=ADOQuery7;

   QRDBText1.DataSet:=ADOQuery7;

   QRDBText1.DataField:='IZD_OBOZN';

   QRDBText2.DataSet:=ADOQuery7;

   QRDBText2.DataField:='SHEMA_NAIM';

   QRDBText3.DataSet:=ADOQuery7;

   QRDBText3.DataField:='TYPE_DEVICE';

   QRDBText4.DataSet:=ADOQuery7;

   QRDBText4.DataField:='DEV_NAME';

   QRDBText5.DataSet:=ADOQuery7;

   QRDBText5.DataField:='SHEM_NOM';

   QRDBText6.DataSet:=ADOQuery7;

   QRDBText6.DataField:='MASS';

   QRLabel2.Caption:='менее';

   QRLabel5.Caption:=ComboBox2.Text;

   QRExpr2.Expression:='SUM(MASS)';

end;

ADOQuery7.Close;

ADOQuery7.Open;

FormOtchMass.QuickRep1.Preview;

end;

 

procedure TFormSprav.N501Click(Sender: TObject);

begin

ADOQuery8.Active:=true;

ADOQuery8.Parameters[0].Value:=ComboBox2.Text;

with FormOtchMass do

begin

   QuickRep1.DataSet:=ADOQuery8;

   QRDBText1.DataSet:=ADOQuery8;

   QRDBText1.DataField:='IZD_OBOZN';

   QRDBText2.DataSet:=ADOQuery8;

   QRDBText2.DataField:='SHEMA_NAIM';

   QRDBText3.DataSet:=ADOQuery8;

   QRDBText3.DataField:='TYPE_DEVICE';

   QRDBText4.DataSet:=ADOQuery8;

   QRDBText4.DataField:='DEV_NAME';

   QRDBText5.DataSet:=ADOQuery8;

   QRDBText5.DataField:='SHEM_NOM';

   QRDBText6.DataSet:=ADOQuery8;

   QRDBText6.DataField:='MASS';

   QRLabel2.Caption:='более';

   QRLabel5.Caption:=ComboBox2.Text;

   QRExpr2.Expression:='SUM(MASS)';

end;

ADOQuery8.Close;

ADOQuery8.Open;

FormOtchMass.QuickRep1.Preview;

end;

 

end.

 

 

unit UnitViborIzd;

 

interface

 

uses

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

  Dialogs, ExtCtrls, DB, ADODB, StdCtrls;

 

type

  TFormViborIzd = class(TForm)

    Panel1: TPanel;

    ComboBox1: TComboBox;

    Label1: TLabel;

    ComboBox2: TComboBox;

    Label2: TLabel;

    ADOTable1: TADOTable;

    Panel2: TPanel;

    Panel3: TPanel;

    ADOQuery1: TADOQuery;

    Label3: TLabel;

    ADOQuery2: TADOQuery;

    procedure FormActivate(Sender: TObject);

    procedure Panel3Click(Sender: TObject);

    procedure ComboBox1Click(Sender: TObject);

    procedure Panel2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FormViborIzd: TFormViborIzd;

  Podrazd: String;

implementation

 

uses UnitJournal, UnitOtchIZdelie;

 

{$R *.dfm}

 

procedure TFormViborIzd.FormActivate(Sender: TObject);

begin

ADOTable1.Open;

ADOTable1.First;

while ADOTable1.Eof=false do

begin

ComboBox1.Items.Add(ADOTable1.FieldByName('SHIP_ZAV_NOM').AsString);

ADOTable1.Next;

end;

Podrazd:=FormJournal.ComboBoxPodrazd.Text;

Label3.Caption:=Podrazd;

end;

 

procedure TFormViborIzd.Panel3Click(Sender: TObject);

begin

FormViborIzd.Close;

end;

 

procedure TFormViborIzd.ComboBox1Click(Sender: TObject);

begin

ADOQuery1.Parameters.ParamByName('p').Value:=ComboBox1.Text;

ADOQuery1.Close;

ADOQuery1.Open;

AdoQuery1.First;

while ADOQuery1.Eof=false do

begin

ComboBox2.Items.Add(ADOQuery1.FieldByName('IZD_OBOZN').AsString);

ADOQuery1.Next;

end;

end;

 

procedure TFormViborIzd.Panel2Click(Sender: TObject);

begin

ADOQuery2.Close;

ADOQuery2.Parameters.ParamByName('p').Value:=ComboBox1.Text;

ADOQuery2.Parameters.ParamByName('q').Value:=ComboBox2.Text;

FormIZDOTCH.QRLabel2.Caption:=Podrazd;

FormIZDOTCH.QRLabel4.Caption:=ComboBox2.Text;

FormIZDOTCH.QRLabel6.Caption:=ComboBox1.Text;

ADOQuery2.Open;

FormIZDOTCH.QuickRep1.Preview;

end;

 

end.

 

 


Информация о работе Разработка автоматизированной системы учета движения ремонтируемой электроаппаратуры