16224

Создание контроллеров автоматизации приложений Microsoft Office

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа №14 Создание контроллеров автоматизации приложений Microsoft Office Цель работы: Изучить принципы обмена данными между клиентом пользовательским приложением и сервером на примере приложения компании Microsoft Office Постановка задачи: Разработать кон...

Русский

2013-06-20

129.5 KB

6 чел.

Лабораторная работа №14

Создание контроллеров автоматизации приложений Microsoft Office

Цель работы: Изучить принципы обмена данными между клиентом (пользовательским приложением) и сервером на примере приложения компании  Microsoft Office

Постановка задачи: Разработать контроллер автоматизации решения нелинейных уравнений с возможностью передачи полученной текстовой, табличной и графической информации в Microsoft Excel

Краткие теоретические сведения:

Весь Excel построен на иерархических объектах. Самый верхний уровень – рабочая книга (workbook). Она содержит в себе коллекцию листов (sheets). Лист включает в себя ячейки (cell). К книгам и листам можно обращаться как к элементам массивов – Sheet.Item(1). Добавлять книги и листы можно методом. ADD, который имеет каждая коллекция.

Приложение Excel является объектом класса Application, поэтому для просмотра его членов нужно искать вначале класс Application в списке, а затем уже просматривать его члены – свойства, методы и пр.

В Delphi удобно подключаться к COM-серверу не напрямую, а используя специальные компоненты, инкапсулирующие методы для работы с сервером.

Текст программы:

UMainForm:

unit UMainForm;

interface

uses

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

 Dialogs, StdCtrls, ExtCtrls, ComCtrls, TeeProcs, TeEngine, Chart, Series,

 Buttons, UEquation, BubbleCh, OleServer, ExcelXP;

type

 TForm1 = class(TForm)

   EditMin: TEdit;

   EditMax: TEdit;

   RadioGroup1: TRadioGroup;

   EditEpsilon: TEdit;

   Label1: TLabel;

   Label2: TLabel;

   Label3: TLabel;

   Panel1: TPanel;

   Label4: TLabel;

   Label5: TLabel;

   Panel2: TPanel;

   Bevel1: TBevel;

   Label6: TLabel;

   Panel3: TPanel;

   Label7: TLabel;

   EditResult: TEdit;

   CheckBox1: TCheckBox;

   UpDown1: TUpDown;

   EditRound: TEdit;

   DisplayChart: TChart;

   Series1: TLineSeries;

   Series2: TPointSeries;

   SpeedButton1: TSpeedButton;

   CheckBox2: TCheckBox;

   SpeedButton2: TSpeedButton;

   Panel4: TPanel;

   Series3: TFastLineSeries;

   EditDelay: TEdit;

   UpDown2: TUpDown;

   Label8: TLabel;

   RadioGroup2: TRadioGroup;

   BitBtn1: TBitBtn;

   ExcelApplication1: TExcelApplication;

   procedure CheckBox1Click(Sender: TObject);

   procedure SpeedButton1Click(Sender: TObject);

   procedure Wait(x: double);

   procedure EditRoundChange(Sender: TObject);

   procedure FormCreate(Sender: TObject);

   procedure SpeedButton2Click(Sender: TObject);

   procedure EditEpsilonKeyPress(Sender: TObject; var Key: Char);

   procedure CheckBox2Click(Sender: TObject);

   procedure EditDelayChange(Sender: TObject);

   procedure RadioGroup2Click(Sender: TObject);

   procedure BitBtn1Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

type

 TCalculationThread = class(TThread)

 private

   { Private declarations }

   FMessage: string;

 protected

   procedure Execute; override;

   procedure Mess;

 end;

var

 Form1: TForm1;

 e: TEquation;

 s: TCalculationThread;

 delayTime: integer=500;

implementation

{$R *.dfm}

procedure TCalculationThread.Execute;

begin

 { Place thread code here }

 try

   try

     e.Calculate;

   except

     on e1: Exception do

             begin

               FMessage:=e1.Message;

               Synchronize(Mess);

             end;

   end;

 finally

   Form1.CheckBox1Click(Form1.CheckBox1);  //Просто запись значения в EditResult с учётом округлять/не округлять

   Self.Terminate;

   Form1.SpeedButton1.Enabled:=true;

   Form1.SpeedButton2.Enabled:=false;

   Form1.Panel4.Enabled:=true;

   Self.Free;

 end;

end;

procedure TCalculationThread.Mess;

begin

 MessageDlg(FMessage, mtWarning, [mbOK], 0);

end;

procedure TForm1.CheckBox1Click(Sender: TObject);

begin

 EditRound.Enabled:=(Sender as TCheckBox).Checked;

 UpDown1.Enabled:=(Sender as TCheckBox).Checked;

 try

   if (Sender as TCheckBox).Checked then

     EditResult.Text:=FloatToStrF(e.Res, ffFixed, 15, StrToInt(EditRound.Text))

   else

     EditResult.Text:=FloatToStrF(e.Res, ffFixed, 15, 15);

 finally

 end;

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);

begin

 try

   e.Min:=StrToFloat(EditMin.Text);

   e.Max:=StrToFloat(EditMax.Text);

   e.Epsilon:=StrToFloat(EditEpsilon.Text);

   e.Method:=RadioGroup1.ItemIndex;

 except

   on e1: ECantBeZero do

             begin

               MessageDlg(e1.Message, mtWarning, [mbOK], 0);

               exit;

             end;

   else

             begin

               MessageDlg('Неверное число!'#13#10'Проверьте, возможно в одно из полей введено не число!', mtError, [mbOK], 0);

               exit;

             end;

 end;

 SpeedButton1.Enabled:=false;

 SpeedButton2.Enabled:=true;

 Panel4.Enabled:=false;

 s:=TCalculationThread.Create(false);

end;

procedure TForm1.Wait(x: double);

begin

 if CheckBox2.Checked then

   sleep(delayTime);

end;

procedure TForm1.EditRoundChange(Sender: TObject);

begin

 CheckBox1Click(CheckBox1);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

 e:=TEquation.Create(0.5, 2, 0.001, RadioGroup1.ItemIndex, DisplayChart);

 e.Calculate;

 e.OnNextStep:=Wait;

 CheckBox1Click(CheckBox1); //Просто запись значения в EditResult с учётом округлять/не округлять

end;

procedure TForm1.SpeedButton2Click(Sender: TObject);

begin

 if s.Suspended then

   s.Resume

 else

   s.Suspend;

end;

procedure TForm1.EditEpsilonKeyPress(Sender: TObject; var Key: Char);

begin

 if not (Key in ['0'..'9', ',', '-', #8]) then

   Key:=chr(0);

end;

procedure TForm1.CheckBox2Click(Sender: TObject);

begin

 EditDelay.Enabled:=(Sender as TCheckBox).Checked;

 UpDown2.Enabled:=(Sender as TCheckBox).Checked;

end;

procedure TForm1.EditDelayChange(Sender: TObject);

begin

 delayTime:=StrToInt((Sender as TEdit).Text);

end;

procedure TForm1.RadioGroup2Click(Sender: TObject);

begin

 case (Sender as TRadioGroup).ItemIndex of

 0:  begin

       e.Free;

       e:=TEquation.Create(0.5, 2, 0.001, RadioGroup1.ItemIndex, DisplayChart);

       EditMin.Text:='0,5';

       EditMax.Text:='2';

       EditEpsilon.Text:='0,001';

       e.Calculate;

       CheckBox1Click(CheckBox1);

       e.OnNextStep:=Wait;

     end;

 1:  begin

       e.Free;

       e:=TEquation1.Create(2, 3, 0.001, RadioGroup1.ItemIndex, DisplayChart);

       EditMin.Text:='2';

       EditMax.Text:='3';

       EditEpsilon.Text:='0,001';

       e.Calculate;

       CheckBox1Click(CheckBox1);

       e.OnNextStep:=Wait;

     end;

 2:  begin

       e.Free;

       e:=TEquation2.Create(2, 3, 0.001, RadioGroup1.ItemIndex, DisplayChart);

       EditMin.Text:='2';

       EditMax.Text:='3';

       EditEpsilon.Text:='0,001';

       e.Calculate;

       CheckBox1Click(CheckBox1);

       e.OnNextStep:=Wait;

     end;

 end;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

var r: ExcelRange;

begin

 ExcelApplication1.Connect;

 ExcelApplication1.Workbooks.Add(EmptyParam, 1);

 r:=ExcelApplication1.Range['A1', 'F2'];

 r.Borders.Item[7].LineStyle:=xlDouble;

 r.Borders.Item[8].LineStyle:=xlDouble;

 r.Borders.Item[9].LineStyle:=xlDouble;

 r.Borders.Item[10].LineStyle:=xlDouble;

 r.Borders.Item[11].LineStyle:=xlDot;

 r.Borders.Item[xlInsideHorizontal].LineStyle:=xlDot;

 r.Borders.Item[xlInsideVertical].LineStyle:=xlDot;

 //ExcelApplication1.ActiveCell

 ExcelApplication1.Cells.HorizontalAlignment:=xlCenter;

 ExcelApplication1.Cells.VerticalAlignment:=xlCenter;

 r:=ExcelApplication1.Range['A1', 'A1'];

 r.Formula:='Уравнение';

 r.Font.Bold:=true;

 r.ColumnWidth:=20;

 r:=ExcelApplication1.Range['B1', 'B1'];

 r.Formula:='Метод вычислений';

 r.Font.Bold:=true;

 r.ColumnWidth:=20;

 r:=ExcelApplication1.Range['C1', 'D1'];

 r.Merge(EmptyParam);

 r.Formula:='Промежуток';

 r.Font.Bold:=true;

 r.ColumnWidth:=10;

 r:=ExcelApplication1.Range['E1', 'E1'];

 r.Formula:='Точность';

 r.Font.Bold:=true;

 r.ColumnWidth:=10;

 r:=ExcelApplication1.Range['F1', 'F1'];

 r.Formula:='Результат';

 r.Font.Bold:=true;

 r.ColumnWidth:=15;

 r:=ExcelApplication1.Range['A2', 'A2'];

 r.Formula:=RadioGroup2.Items.Strings[RadioGroup2.ItemIndex];

 r:=ExcelApplication1.Range['B2', 'B2'];

 r.Formula:=RadioGroup1.Items.Strings[RadioGroup1.ItemIndex];

 r:=ExcelApplication1.Range['C2', 'C2'];

 r.Formula:=e.Min;

 r:=ExcelApplication1.Range['D2', 'D2'];

 r.Formula:=e.Max;

 r:=ExcelApplication1.Range['E2', 'E2'];

 r.Formula:=e.Epsilon;

 r:=ExcelApplication1.Range['F2', 'F2'];

 r.Formula:=e.Res;

 

 ExcelApplication1.Visible[0]:=true;

 ExcelApplication1.Disconnect;

end;

end.

UEquation:

unit UEquation;

interface

uses SysUtils, Chart, Math;

const drawFSteps=50;

     drawFSpace=0.05;

     FMaxIterations=100;

type

 EMinNotLessThenMax=class(Exception);

 ETooMuchIterations=class(Exception);

 EDontMatchCondition=class(Exception);

 EZeroDenominator=class(Exception);

 EZeroDerivatite=class(Exception);

 ECantBeZero=class(Exception);

type

 TNextStepEvent=procedure(x: double) of object;

type

 TEquation=class

 private

   FMin: Double;

   FMax: Double;

   FEpsilon: Double;

   FResult: Double;

   FMethod: Integer;

   FOnNextStep: TNextStepEvent;

   FChart: TChart;

 public

   constructor Create; overload;

   constructor Create(AMin, AMax, AEpsilon: double; AMethod: integer; AChart: TChart); overload;

   function F(x: Double): Double; virtual;

   function Phi(x: Double): Double; virtual;

   function FirstDerivative(x: Double): Double; virtual;

   function SecondDerivative(x: Double): Double; virtual;

   procedure SetEpsilon(AEpsilon: double); virtual;

   property Min: Double read FMin write FMin;

   property Max: Double read FMax write FMax;

   property Epsilon: Double read FEpsilon write SetEpsilon;

   property Res: Double read FResult;

   property Method: integer read FMethod write FMethod;

   property Chart: TChart read FChart write FChart;

   property OnNextStep: TNextStepEvent read FOnNextStep write FOnNextStep;

   procedure Calculate; virtual;

   function Calculate_HalfDividing: Double; virtual;

   function Calculate_Iterations: Double; virtual;

   function Calculate_Newton: Double; virtual;

   procedure DrawF; virtual;

   procedure DrawStep(x: double); virtual;

   procedure DrawStep2(x: double); virtual;

 end;

 TEquation1=class(TEquation)

 public

   function F(x: Double): Double; override;

   function Phi(x: Double): Double; override;

   function FirstDerivative(x: Double): Double; override;

   function SecondDerivative(x: Double): Double; override;

 end;

 TEquation2=class(TEquation)

 public

   function F(x: Double): Double; override;

   function Phi(x: Double): Double; override;

   function FirstDerivative(x: Double): Double; override;

   function SecondDerivative(x: Double): Double; override;

 end;

implementation

//TEquation1

 function TEquation1.F(x: Double): Double;

 begin

   Result:=3*sin(sqrt(x))+0.35*x-3.8;

 end;

 function TEquation1.Phi(x: Double): Double;

 begin

   Result:=-8.571*sin(sqrt(x))+10.8571;

 end;

 function TEquation1.FirstDerivative(x: Double): Double;

 begin

   Result:=1.5*cos(sqrt(x))/sqrt(x)+0.35;

 end;

 function TEquation1.SecondDerivative(x: Double): Double;

 begin

   Result:=-0.75*(sin(sqrt(x))+cos(sqrt(x)))/(x*sqrt(x));

 end;

//TEquation1

 function TEquation2.F(x: Double): Double;

 begin

   Result:=ln(x)-x+1.8;

 end;

 function TEquation2.Phi(x: Double): Double;

 begin

   Result:=ln(x)+1.8;

 end;

 function TEquation2.FirstDerivative(x: Double): Double;

 begin

   Result:=1/x-1;

 end;

 function TEquation2.SecondDerivative(x: Double): Double;

 begin

   Result:=-1/sqr(x);

 end;

//TEquation

 constructor TEquation.Create;

 begin

   inherited Create;

   FMin:=0;

   FMax:=2;

   FEpsilon:=0.001;

 end;

 constructor TEquation.Create(AMin, AMax, AEpsilon: double; AMethod: integer; AChart: TChart);

 begin

   inherited Create;

   FMin:=AMin;

   FMax:=AMax;

   FEpsilon:=AEpsilon;

   FMethod:=AMethod;

   FChart:=AChart;

   DrawF;

 end;

 procedure TEquation.SetEpsilon(AEpsilon: double);

 begin

   if (AEpsilon=0) then

     raise ECantBeZero.Create('Точность не может равняться 0!');

     FEpsilon:=abs(AEpsilon);

 end;

 procedure TEquation.Calculate;

 begin

   if not (FMin<FMax) then

     raise EMinNotLessThenMax.Create('Нижняя граница должна быть меньше верхней!');

   if assigned(FChart) then

   begin

     FChart.Series[1].Clear;

     FChart.Series[2].Clear;

   end;

   case FMethod of

   1: FResult:=Calculate_Iterations;

   2: FResult:=Calculate_Newton;

   else

      FResult:=Calculate_HalfDividing;

   end;

 end;

 procedure TEquation.DrawF;

 var

   leftBorder, rightBorder, h, x: double;

   i: integer;

 begin

   if assigned(FChart) then

   begin

     FChart.Series[0].Clear;

     leftBorder:=FMin-(FMax-Fmin)*drawFSpace;

     rightBorder:=FMax+(FMax-Fmin)*drawFSpace;

     h:=(rightBorder-leftBorder)/drawFSteps;

     x:=leftBorder;

     for i:=0 to drawFSteps do

     begin

       FChart.Series[0].AddXY(x, f(x));

       x:=x+h;

     end;

   end;

 end;

 function TEquation.F(x: Double): Double;

 begin

   Result:=0.25*power(x, 3)+x-1.2502;

 end;

 function TEquation.Phi(x: Double): Double;

 begin

   Result:=-0.25*power(x, 3)+1.2502;

 end;

 function TEquation.FirstDerivative(x: Double): Double;

 begin

   Result:=0.75*power(x, 2)+1;

 end;

 function TEquation.SecondDerivative(x: Double): Double;

 begin

   Result:=1.5*x+1;

 end;

 function TEquation.Calculate_HalfDividing: Double;

 var B, A, x0: double;

     N: integer;

 begin

   if not (F(FMin)*F(FMax)<0) then

     raise EDontMatchCondition.Create('Для метода половинного деления необходимо, чтобы функция на концах промежутка иммела разные знаки!');

   N:=0;

   B:=FMax;

   A:=FMin;

   if F(A)=0 then

   begin

     Result:=A;

     DrawStep(A);

     exit;

   end;

   if F(B)=0 then

   begin

     Result:=B;

     DrawStep(B);

     exit;

   end;

   while ((B-A)>(FEpsilon*2)) do

   begin

     if N>FMaxIterations then

       raise ETooMuchIterations.Create('Превышено максимальное количество итераций ('+inttostr(FMaxIterations)+')!');

     x0:=(B+A)/2;

     if F(x0)=0 then

       break;

     DrawStep(x0);

     if (F(A)*F(x0)<0) then

       B:=x0

     else

       A:=x0;

     inc(N);

     if Assigned(FChart) then

     begin

         FChart.Series[0].Title:='Функция ('+inttostr(N)+' итераций).';

         FChart.Series[1].Title:='X='+FloatToStr(x0);

     end;

     if Assigned(FOnNextStep) then

       FOnNextStep(x0);

   end;

   Result:=(B+A)/2;

   if Assigned(FChart) then

   begin

       FChart.Series[0].Title:='Функция ('+inttostr(N)+' итераций).';

       FChart.Series[1].Title:='X='+FloatToStr(Result);

   end;

 end;

 function TEquation.Calculate_Iterations: Double;

 var N: integer;

     x0, x1{, x2, y0, y1, y2, d1, d2}: double;

 begin

    N:=1;

    x1:=(FMax+FMin)/2;

    DrawStep(x1);

    repeat

     x0:=x1;

      if N>FMaxIterations then

       raise ETooMuchIterations.Create('Превышено максимальное количество итераций ('+inttostr(FMaxIterations)+')!');

     inc(N);

     x1:=Phi(x0);

     DrawStep(x1);

     if Assigned(FChart) then

     begin

         FChart.Series[0].Title:='Функция ('+inttostr(N)+' итераций).';

         FChart.Series[1].Title:='X='+FloatToStr(x1);

     end;

     if Assigned(FOnNextStep) then

       FOnNextStep(x1);

    until ((x1-x0)<FEpsilon);

    Result:=x1;

   {N:=1;

   x1:=(FMax+Fmin)/2;

   y1:=F(x1);

   x2:=Phi(x1);

   y2:=F(x2);

   repeat

     x0:=x1;

     y0:=y1;

     x1:=x2;

     y1:=y2;

     if N>FMaxIterations then

       raise ETooMuchIterations.Create('Превышено максимальное количество итераций ('+inttostr(FMaxIterations)+')!');

     inc(N);

     if ((x1=y1) or ( (x0-y0)=(x1-y1) ) ) then

       raise EZeroDenominator.Create('Метод итераций: знаменатель равен нулю на '+inttostr(N)+' шаге!');

     x2:=x1+(x1-x0)/((x0-y0)/(x1-y1)-1);

     y2:=Phi(x2);

     DrawStep(x2);

     if Assigned(FChart) then

   begin

       FChart.Series[0].Title:='Функция ('+inttostr(N)+' итераций).';

       FChart.Series[1].Title:='X='+FloatToStr(x2);

   end;

     if Assigned(FOnNextStep) then

       FOnNextStep(x2);

     if abs(x2)>1 then

     begin

       d1:=(x2-x1)/x2;

       d2:=(x2-y2)/x2;

     end

     else

     begin

       d1:=x2-x1;

       d2:=x2-y2;

     end;

   until ((d1<=10*FEpsilon) and (d2<=10*FEpsilon));

   Result:=x2;

   if Assigned(FChart) then

   begin

       FChart.Series[0].Title:='Функция ('+inttostr(N)+' итераций).';

       FChart.Series[1].Title:='X='+FloatToStr(Result);

   end; }

 end;

 function TEquation.Calculate_Newton: Double;

 var N: integer;

     x0, x1, d: double;

 begin

   N:=1;

   x1:=FMin;

   if F(FMax)*SecondDerivative(FMax)>0 then

     x1:=FMax;

   DrawStep2(x1);

   if Assigned(FOnNextStep) then

       FOnNextStep(x1);

   repeat

     if N>FMaxIterations then

       raise ETooMuchIterations.Create('Превышено максимальное количество итераций ('+inttostr(FMaxIterations)+')!');

     x0:=x1;

     if FirstDerivative(X0)=0 then

       raise EZeroDerivatite.Create('На шаге '+inttostr(N)+' производная стала равна нулю!');

     x1:=x0-(F(x0)/FirstDerivative(X0));

     DrawStep2(x1);

     inc(N);

     if Assigned(FChart) then

     begin

         FChart.Series[0].Title:='Функция ('+inttostr(N)+' итераций).';

         FChart.Series[1].Title:='X='+FloatToStr(x1);

     end;

     if Assigned(FOnNextStep) then

       FOnNextStep(x1);

     if abs(x1)>1 then

       d:=(x1-x0)/x1

     else

       d:=x1-x0;

   until ((d<=FEpsilon) and (abs(F(x1))<=100*Fepsilon));

   Result:=x1;

   if Assigned(FChart) then

     begin

         FChart.Series[0].Title:='Функция ('+inttostr(N)+' итераций).';

         FChart.Series[1].Title:='X='+FloatToStr(Result);

     end;

 end;

 procedure TEquation.DrawStep(x: Double);

 begin

   if Assigned(FChart) then

     FChart.Series[1].AddXY(x, F(x));

 end;

 procedure TEquation.DrawStep2(x: Double);

 begin

   if Assigned(FChart) then

   begin

     if ((F(x)<0) and (FirstDerivative(x)>0)) then

     begin

       FChart.Series[1].AddXY(x, F(x));

       FChart.Series[2].AddXY(x, 0);

       FChart.Series[2].AddXY(x, F(x));

     end

     else

     begin

       FChart.Series[1].AddXY(x, F(x));

       FChart.Series[2].AddXY(x, F(x));

       FChart.Series[2].AddXY(x, 0);

     end

   end;

 end;

end.

Результаты работы программы:

 

 

 

Выводы: таким образом, мы изучили способы работы с сервером автоматизации MS Excel. Это является весьма удобным способом передачи данных для печати с возможностью их редактирования.


 

А также другие работы, которые могут Вас заинтересовать

43699. Проектирование системы электроснабжения электрооборудования и электрохозяйства станкостроительного завода «Луч» 3.17 MB
  Здесь для реализации технологического процесса используется прежде всего оборудование связанное с обработкой металлов токарные фрезерные станки станки типа обрабатывающий центр шлифовальные станки печи плавки металла для литья и т. Потребителями электрической энергии в этом технологическом оборудовании являются прежде всего асинхронный двигатели с короткозамкнутым ротором малой и средней мощности двигатели постоянного тока малой мощности нагревательные элементы. В состав перечисленного оборудования входят асинхронные двигатели и...
43700. Центр реабилитации в городе Берн, Швейцария 3.87 MB
  Проложить хорошую связь между жилым районом Альтенберг и рекой. Обеспечить удобный и безопасный доступ к реке Ааре. Великолепная долина реки Ааре, лесистый склон и исторический городской памятник в настоящее время недоступны для всех горожан.
43701. Проектирование технологического процесса обработки вала червячного, который входит в состав одноступенчатого червячного редуктора 4.67 MB
  Выбор заготовки Техникоэкономическое обоснование способа получения заготовки. Техникоэкономическое обоснование метода получения заготовки. Например для машиностроительной продукции к числу таких факторов относят: точность оборудования; жесткость системы станокприспособление инструментдеталь; посторонние включения в материал заготовки; температурные колебания; квалификация обслуживающего персонала; погрешность режущего инструмента; режимы механической обработки; точность соблюдения параметров предварительной термической обработки и др.
43702. Разработка путей улучшения управлением финансового состояния «Российского Союза Автостраховщиков» 509.73 KB
  Система показателей и методов характеризующих финансовое состояние предприятия Анализ финансового состояния Российский Союз Автостраховщиков Организационно-экономическая характеристика Российского Союза Автостраховщиков Анализ финансового состояния Российского Союза Автостраховщиков Оценка потенциальной неплатежеспособности РСА Разработка путей улучшения управлением финансового состояния Российского Союза Автостраховщиков.
43703. Употребления артикля в текстах газетно-публицистического стиля 72.67 KB
  В результате образования двух соотносительных форм артикля, противопоставляемых по значению определенности и неопределенности существительного, постепенно происходит отрыв артикля от указательного местоимения и числительного и превращение в особый вид служебных слов с чисто грамматическим значением.
43704. Разработка автоматизированной информационно-справочной системы для учета нефтедобывающего оборудования и контроля выполнения ремонтных работ предприятия «НоябрьскНефтеГазАвтоматика» 1.91 MB
  Целью данного дипломного проекта является разработка автоматизированной информационно-справочной системы для учета нефтедобывающего оборудования и контроля выполнения ремонтных работ предприятия НоябрьскНефтеГазАвтоматика. Задачами данного дипломного проекта являются: изучение предметной области; разработка модели бизнеспроцессов складских операций; выявление недостатков существующих бизнеспроцессов обработки информации при приеме заказов на монтаж и ремонт...
43705. Шляхи удосконалення маркетингової діяльності та маркетингової конкурентної стратегії ТОВ «Мар-Трейд» 837.15 KB
  Стратегія блакитних океанів Основні фактори формування та реалізації маркетингових конкурентних стратегій Розділ ІІ Дослідження маркетингової діяльності та маркетингової конкурентної стратегії ТОВ МарТрейд 2. Ці дослідники запропонували різні визначення терміна “конкурентна стратегія†та види базових конкурентних стратегій описали методи їх розроблення і впровадження в умовах розвинутої економіки. У процесі дослідження були використані наступні сучасні методи дослідження: статистичного аналізу при збиранні даних що аналізуються...
43706. УКРАЇНСЬКА МОВА ЗА ПРОФЕСІЙНИМ СПРЯМУВАННЯМ. Модульний курс 4.88 MB
  Містить комплекс вправ і завдань для вироблення навичок грамотного використання засобів української мови у професійній сфері. Розроблено систему вправ, спрямованих на формування умінь аналізу наукового стилю, написання текстів різних жанрів наукового мовлення, виявлення їх особливостей та оформлення, редагування, коригування та перекладу наукових текстів.
43707. Повышение финансовой устойчивости страховой организации на примере ОСАО «РЕСО-гарантия» 22.03 MB
  Дипломная работа построена следующим образом: в первой части рассмотрены теоретические аспекты, а именно: понятие и сущность финансовой устойчивости; во второй части проведен анализ финансово-хозяйственной деятельности организации; в третьей части проведенаработка мероприятий по оптимизации финансовой устойчивости, проведена оценка эффективности внедрения предложенных мероприятий.