скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыКурсовая работа: Технология строительства метрополитена

  s:='Stuff = '+TableSTUFF.FieldByName('Code').AsString;

  rxDBFilter1.Filter.Add(S);

  rxDBFilter1.Activate;

end;

procedure TForm1.DBGrid1DblClick(Sender: TObject);

var

  Mass, R_press, R_stretch, Puasson, PuassonP, R1, Rb, R, A, B: Double;

  P0, P2: Double;

  C1, C2: Double;

  K0, K1, K2, K3, K4: Double;

  L, L1: Double;

  ALFA1, ALFA2: Double;

  BETA, BETA1, BETA2: Double;

  DELTA1, DELTA2: Double;

  GAMMA1, GAMMA2: Double;

  D1, D2: Double;

  F: Double;

  SIGMARS, SIGMARR, SIGMASS, SIGMASR: Double;

  i: Integer;

  Pkr, PkrOld: Double;

  Eo, Ep, J: Double;

procedure Calc;

begin

    C1 := R1/Rb;

    C2 := R/R1;

    F := (C2*C2-1)/(C1*C1-1)*(C2*C2-1)/(C1*C1-1)*

         (C2*C2-1)/(C1*C1-1)*(1+B/A);

    D2 := (C2*C2+1)*(C2*C2+1)*(C2*C2+1)/(Puasson+1);

    D1 := (C1*C1-1)*(C1*C1-1)/(Puasson+1);

    DELTA2 := C2*C2*(C2*C2+1);

    DELTA1 := C2*C2*(3-C2*C2);

    GAMMA2 := C2*C2*(2*C2*C2*C2*C2+C2*C2+1);

    GAMMA1 := C2*C2*(3+C2*C2);

    BETA := (3+R/Rb*R/Rb)/(3-R/Rb*R/Rb);

    BETA2 := C2*C2*C2*C2*(C2*C2+1)-D2+F*(C1*C1+1+D1);

    BETA1 := 3*C2*C2-1-D2+F*((3-C2*C2)*C1*C1*C1*C1+D1);

    ALFA2 := C2*C2*(2+C2*C2+C2*C2*C2*C2)-          

             D2+F*(2*C1*C1*C1*C1+C1*C1+1+D1);

    ALFA1 := 3*C2*C2+1+D2+F*((C1*C1+3)*C1*C1*C1*C1-D1);

    K4 := (ALFA2*DELTA1-ALFA1*DELTA2)/(ALFA2*BETA1-ALFA1*BETA2);

    K3 := (ALFA1*GAMMA2-ALFA2*GAMMA1)/(ALFA2*BETA1-ALFA1*BETA2);

    K2 := (BETA2*DELTA1-BETA1*DELTA2)/(ALFA2*BETA1-ALFA1*BETA2);

    K1 := (BETA1*GAMMA2-BETA2*GAMMA1)/(ALFA2*BETA1-ALFA1*BETA2);

    L1 := 4*C2*C2*(C2*C2+1-BETA)-(K1+BETA*K2)*((C1*C1+1)*(C1*C1+1)

          +4*C2*C2)+2*(K3+BETA*K4)*((C2*C2+1)*(C2*C2+1)-2);

    L := (K1+BETA*K2)*(C1*C1+1)-(K3+BETA*K4);

    K0 := 3*C2*C2/((1+B/A)*(C2*C2-1)/(C1*C1-1)*(2+C1*C1)+2*C2*C2+1);

  end;

begin

  with TableDATA do begin

    Mass := FieldByName('Mass').AsFloat;

    R_press := FieldByName('R_press').AsFloat;

    R_stretch := FieldByName('R_stretch').AsFloat;

    Puasson := FieldByName('Puasson').AsFloat;

    R1 := FieldByName('R1').AsFloat;

    Rb := FieldByName('Rb').AsFloat;

    R := FieldByName('R').AsFloat;

    A := FieldByName('A').AsFloat;

    B := FieldByName('B').AsFloat;

  end;

  if RadioButton1.Checked then begin

    Calc;

    if TableDATA.FieldByName('Stuff').AsInteger = 0 {Железо-бетон} then begin

      PLines[isP0,1] := (C1*C1-1)*Mass*R_press/2*C1*C1*K0*(1+B/A);

      PLines[isP2,1] := (C1*C1-1)*(C1*C1-1)*

                        Mass*R_press/4*C1*C1*K0*(1+B/A);

      PLines[isP0,2] := -(C1*C1-1)*Mass*R_stretch/2*C1*C1*K0*(1+B/A);

      PLines[isP2,2] := (C1*C1-1)*(C1*C1-1)*

                        Mass*R_stretch/4*C1*C1*K0*(1+B/A);

      PLines[isP0,4] := (C2*C2-1)*Mass*R_press/(2*C2*C2-K0*

                        (C2*C2+1));

      PLines[isP2,4] := (C2*C2-1)*(C2*C2-1)*Mass*R_press/L1;

      PLines[isP0,5] := -(C2*C2-1)*

                        Mass*R_stretch/(2*C2*C2-K0*(C2*C2+1));

      PLines[isP2,5] := (C2*C2-1)*(C2*C2-1)*Mass*R_stretch/L1;

    end

    else begin         {Чугун}

      PLines[isP0,1] := (C1*C1-1)*Mass*R_press/2*C1*K0*(1+B/A);

      PLines[isP2,1] := (C2*C2-1)*(C2*C2-1)*

                        Mass*R_press/4*C1*C1*K0*(1+B/A);

      PLines[isP0,2] := -(C2*C2-1)*Mass*R_stretch/2*C1*K0*(1+B/A);

      PLines[isP2,2] := (C1*C1-1)*(C1*C1-1)*

                        Mass*R_stretch/4*C1*C1*K0*(1+B/A);

      PLines[isP0,4] := (C2*C2-1)*Mass*R_press/(2*C2*C2-K0*

                        (C2*C2+1));

      PLines[isP2,4] := (C2*C2-1)*(C2*C2-1)*Mass*R_press/L1;

      PLines[isP0,5] := -(C2*C2-1)*Mass*R_stretch/(2*C2*C2-K0*

                        (C2*C2+1));

      PLines[isP2,5] := (C2*C2-1)*(C2*C2-1)*Mass*R_stretch/L1;

    end;

    DrawForm.ShowModal;

  end

  else if RadioButton2.Checked then begin

    Calc;

    P0 := StrToFloat(Edit1.Text);

    P2 := StrToFloat(Edit2.Text);

    SIGMARS := ABS(2*C1*C1/(C1*C1-1)*(1+B/A)*(P0*K0+2*P2*L/

                  (C1*C1-1)));

    SIGMARR := ABS(2*C1*C1/(C1*C1-1)*(1+B/A)*(P0*K0-2*P2*L/

                  (C1*C1-1)));

    SIGMASS := ABS(P0/(C2*C2-1)*(2*C2*C2-K0*(C2*C2+1))+P2*L1/

                  (C2*C2-1)*(C2*C2-1));

    SIGMASR := ABS(P0/(C2*C2-1)*(2*C2*C2-K0*(C2*C2+1))-P2*L1/

                  (C2*C2-1)*(C2*C2-1));

    if (SIGMARS>Mass*R_press) or (SIGMARR>Mass*R_stretch) or

       (SIGMASS>Mass*R_press) or (SIGMASR>Mass*R_stretch)

    then

      MessageDlg('Несущая способность не

                  обеспечена',mtInformation,[mbOk],0)

    else

      MessageDlg('Несущая способность

                  обеспечена',mtInformation,[mbOk],0);

  end

  else begin

    i:=1;

    PkrOld :=0;

    repeat

      i := i+1;

      Pkr := (i*i-1)*Eo*J/((1-Puasson)*(1-Puasson)*R*R*R)+Ep/(2*

             (1+PuassonP))*((i+1)*(i+1)/(i*i*(i-1))+(i-1)*

             (i-1)/(i*i*(i+1)*(3-4*PuassonP)));

      if Pkr < PkrOld then PkrOld := Pkr else i:=0;

    until i = 0;

    P0 := StrToFloat(Edit1.Text);

    if P0<=Pkr then

       MessageDlg('Устойчивость обеспечена',mtInformation,[mbOk],0)

    else

       MessageDlg('Устойчивость не

                   обеспечена',mtInformation,[mbOk],0);

  end;

end;

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

  Label2.Visible := False;

  Label3.Visible := False;

  Edit1.Visible := False;

  Edit2.Visible := False;

end;

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

  Label2.Visible := True;

  Label3.Visible := True;

  Edit1.Visible := True;

  Edit2.Visible := True;

end;

procedure TForm1.RadioButton3Click(Sender: TObject);

begin

  Label2.Visible := True;

  Label3.Visible := False;

  Edit1.Visible := True;

  Edit2.Visible := False;

end;

end.

unit Draw;

interface

uses

  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,  

  Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;

type

     TDrawForm = class(TForm)

     BitBtn1: TBitBtn;

procedure FormActivate(Sender: TObject);

private

    { Private declarations }

public

    { Public declarations }

end;

  TPaintData = (isP0,isP2);

  TDiagramArray = Array[TPaintData,1..5] of Double;

var

  PLines : TDiagramArray;

  DrawForm: TDrawForm;

implementation

{$R *.DFM}

procedure TDrawForm.FormActivate(Sender: TObject);

var

  R: TRect;

  MaxX, MinX: Double;

  MaxY, MinY: Double;

  Nx, Ny: Integer;

  Kx, Ky: Double;

  i: Byte;

  PointMin, PointMax: Double;

procedure DrawLine(X0, k, b:Double);

begin

    Canvas.MoveTo(R.Left+60+Round(Kx*X0),R.Bottom-30);

    if k<0 then

      Canvas.LineTo(R.Left+60,Round(R.Bottom - 33 -  

                   (Ky*(b+(k*(10)/Kx)))))

    else

      Canvas.LineTo(R.Right-10,Round(R.Bottom - 33 -

                   (Ky*(-b+(k*((R.Right-R.Left-70)/Kx))))));

  end;

begin

  PLines[isP0,3] := 0;

  PLines[isP2,3] := 0;

  MaxX := 0.0;

  MinX := 0.0;

  MaxY := 0.0;

  MinY := 0.0;

  for i := 1 to 5 do begin

    if PLines[isP0,i] > MaxX then MaxX := PLines[isP0,i];

    if PLines[isP2,i] > MaxY then MaxY := PLines[isP2,i];

    if PLines[isP0,i] < MinX then MinX := PLines[isP0,i];

    if PLines[isP2,i] < MinY then MinY := PLines[isP2,i];

  end;

  if MaxX > 200 then Nx := 100 else Nx := 10;

   MaxX := Round(MaxX/Nx)*Nx+Nx;

  if MaxY > 200 then Ny := 100 else Ny := 10;

  MaxY := Round(MaxY/Ny)*Ny+Ny;

  with DrawForm do begin

    Canvas.Pen.Color := clBlack;

    R.Left := 10;

    R.Top := 10;

    R.Right := Width - 15;

    R.Bottom := Height - 70;

    Canvas.FrameRect(R);

    Canvas.Brush.Color := clBtnFace;

    Kx := (R.Right - R.Left - 80)/MaxX;

    Ky := (R.Bottom - R.Top - 80)/MaxY;

    {Ось Po}

    Canvas.MoveTo(R.Left+10,R.Bottom-30);

    Canvas.LineTo(R.Right-10,R.Bottom-30);

    {Ось P2}

    Canvas.MoveTo(R.Left+60,R.Top+30);

    Canvas.LineTo(R.Left+60,R.Bottom-30);

    i := 0;

    while i*Nx<MaxX do begin

      Inc(i);

      Canvas.MoveTo(R.Left+60+Round(Kx*i*Nx),R.Bottom-33);

      Canvas.LineTo(R.Left+60+Round(Kx*i*Nx),R.Bottom-27);

      Canvas.TextOut(R.Left+50+Round(Kx*i*Nx), R.Bottom-20,

                     IntToStr(i*Nx));

    end;

    i := 0;

    while i*Ny<MaxY do begin

      Inc(i);

      Canvas.MoveTo(R.Left+63,R.Bottom-30-Round(Ky*i*Ny));

      Canvas.LineTo(R.Left+57,R.Bottom-30-Round(Ky*i*Ny));

      Canvas.TextOut(R.Left+30, R.Bottom-35-Round(Ky*i*Ny),

                     IntToStr(i*Ny));

    end;

    if PLines[isP0,1] > PLines[isP0,4] then

      PointMax := PLines[isP0,4]

    else PointMax := PLines[isP0,1];

    if PLines[isP0,2] > PLines[isP0,5] then

      PointMin := PLines[isP0,2]

    else PointMin := PLines[isP0,5];

    if PointMin < 0 then PointMin := 0.0;

    DrawLine(PLines[isP0,1],

             -(PLines[isP2,1]/PLines[isP0,1]),PLines[isP2,1]);

    DrawLine(PLines[isP0,2],

             -(PLines[isP2,2]/PLines[isP0,2]),PLines[isP2,2]);

    DrawLine(0,1,0);

    DrawLine(PLines[isP0,4],

             -(PLines[isP2,4]/PLines[isP0,4]),PLines[isP2,4]);

    DrawLine(PLines[isP0,5],

             -(PLines[isP2,5]/PLines[isP0,5]),PLines[isP2,5]);

    Canvas.Brush.Color := clGreen;

    Canvas.FloodFill(Round((((PointMax-PointMin)/2)*Kx)+R.Left+60),

                     R.Bottom-55, clBlack, fsBorder);

    Canvas.Brush.Color := clBtnFace;

    Canvas.TextOut(R.Right-80, R.Bottom-50, 'P0, TC/M*2');

    Canvas.TextOut(R.Left+20, R.Top+10, 'P2, TC/M*2');

  end;

end;

end.

unit Edittub;

interface

uses

  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,   

  Controls,Forms, Dialogs, DBFilter, DB, DBTables, Grids, DBGrids, 

  RXLookup, ExtCtrls, DBCtrls;

type

    TEditDataForm = class(TForm)

    Panel1: TPanel;

    rxDBLookupCombo1: TrxDBLookupCombo;

    TableSTUFF: TTable;

    DataSourceSTUFF: TDataSource;

    DBGrid1: TDBGrid;

    DataSourceDATA: TDataSource;

    TableDATA: TTable;

    TableDATAMass: TFloatField;

    TableDATAR_press: TFloatField;

    TableDATAR_stretch: TFloatField;

    TableDATAPuasson: TFloatField;

    TableDATAR1: TFloatField;

    TableDATARb: TFloatField;

    TableDATAR: TFloatField;

    TableDATAA: TFloatField;

    TableDATAB: TFloatField;

    rxDBFilter1: TrxDBFilter;

    TableDATAStuff: TSmallintField;

    DBNavigator1: TDBNavigator;

   procedure rxDBLookupCombo1Change(Sender: TObject);

   procedure DBNavigator1Click(Sender: TObject; Button:

                               TNavigateBtn);

   procedure DBGrid1DblClick(Sender: TObject);

private

    { Private declarations }

public

    { Public declarations }

end;

var

  EditDataForm: TEditDataForm;

implementation

{$R *.DFM}

uses

   EditForm;

procedure TEditDataForm.rxDBLookupCombo1Change(Sender: TObject);

var

  S: String;

begin

  rxDBFilter1.Deactivate;

  rxDBFilter1.Filter.Clear;

  s:='Stuff = '+TableSTUFF.FieldByName('Code').AsString;

  rxDBFilter1.Filter.Add(S);

  rxDBFilter1.Activate;

end;

procedure TEditDataForm.DBNavigator1Click(Sender: TObject; Button:

                                          TNavigateBtn);

begin

  case Button of

    nbInsert:

      begin

        EditDataTub(TableDATA, True,

                    TableSTUFF.FieldByName('Code').AsInteger);

      end;

    nbEdit:

      begin

        EditDataTub(TableDATA, False,

                    TableSTUFF.FieldByName('Code').AsInteger);

      end;

  end;

end;

procedure TEditDataForm.DBGrid1DblClick(Sender: TObject);

begin

  EditDataTub(TableDATA, False,

              TableSTUFF.FieldByName('Code').AsInteger);

end;

end.

unit Editform;

interface

uses

  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,

  Controls, Forms, Dialogs, StdCtrls, Mask, DBCtrls, ExtCtrls, DB,  

  DBTables, Buttons;

type

    TEdTubForm = class(TForm)

    DataSource1: TDataSource;

    Panel1: TPanel;

    DBEdit1: TDBEdit;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    DBEdit2: TDBEdit;

    DBEdit3: TDBEdit;

    Label4: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    DBEdit4: TDBEdit;

    DBEdit5: TDBEdit;

    DBEdit6: TDBEdit;

    Label7: TLabel;

    DBEdit7: TDBEdit;

    Label8: TLabel;

    Label9: TLabel;

    Panel2: TPanel;

    Panel3: TPanel;

    DBEdit8: TDBEdit;

    DBEdit9: TDBEdit;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    Table1: TTable;

    Label10: TLabel;

    DBText1: TDBText;

    DataSource2: TDataSource;

    Query1: TQuery;

    Query1Material: TStringField;

procedure FormCreate(Sender: TObject);

public

    FCode: Integer;

    function EditTub( Table: TTable; IsNew: Boolean; Code: Integer):

                      Boolean;

  end;

var

  EdTubForm: TEdTubForm;

function EditDataTub(Table: TTable; IsNew: Boolean; Code: Integer):

                     Boolean;

implementation

{$R *.DFM}

function EditDataTub(Table: TTable; IsNew: Boolean; Code: Integer):

                     Boolean;

begin

  Result := False;

  with TEdTubForm.Create(Application) do

  try

    FCode := Code;

    Result := EditTub(Table, IsNew, Code);

  finally

    Free;

  end;

end;

function TEdTubForm.EditTub(Table: TTable; IsNew: Boolean; Code:

                            Integer): Boolean;

begin

  if Table <> nil then

    DataSource1.DataSet := Table

  else begin

Страницы: 1, 2, 3, 4, 5, 6, 7


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.