Автор: Пользователь скрыл имя, 04 Апреля 2012 в 21:33, курсовая работа
Для обеспечения безопасного использования машин большой мощности, способных развивать высокие скорости движения, проектируются тормозные системы, которые могут эффективно противодействовать мощности и скорости.
Тормоза предназначены для уменьшения поступательной скорости, экстренной остановки или удержания на уклоне.
В данной работе необходимо рассчитать удельную мощность трения дисков фрикционного тормоза, необходимую для торможения колеса, в зависимости от момента трения тормоза и числа пар трения.
ВВЕДЕНИЕ 5
1. МАТЕМАТИЧЕСКОЕ РЕШЕНИЕ ЗАДАЧИ 6
2. АЛГОРИТМИЗАЦИЯ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ 8
3. ТАБЛИЦА ИДЕНТИФИКАТОРОВ 9
5. СТРУКТУРА ПРОГРАММНОГО ПРИЛОЖЕНИЯ 16
5.1. Падающее и контекстное меню 16
5.2. Статусная строка 16
5.3. Обработка исключительных ситуаций 17
5.4. Построение графических зависимостей 18
5.5. Создание анимации 18
5.6. Вызов внешнего приложения 19
5.7. Динамически подключаемые библиотеки 20
5.8. Использование системных диалогов 21
7. РАСЧЁТ КОНТРОЛЬНОГО ПРИМЕРА 28
ЗАКЛЮЧЕНИЕ 31
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ИНФОРМАЦИИ 32
LabeledEdit6: TLabeledEdit;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
GroupBox3: TGroupBox;
LabeledEdit7: TLabeledEdit;
LabeledEdit8: TLabeledEdit;
LabeledEdit9: TLabeledEdit;
GroupBox4: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
StatusBar1: TStatusBar;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
N10: TMenuItem;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
N11: TMenuItem;
N6: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
PopupMenu1: TPopupMenu;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
procedure N9Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure leFloatKeyPress(Sender: TObject; var Key: Char);
procedure leIntKeyPress(Sender: TObject; var Key: Char);
procedure N13Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N14Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
var
Fr, Fw: textfile;
n,m,i,j,zmin,zmax:Integer;
Mtrmin,Mtrmax,Ri,Re,Wr:Real;
implementation
uses Unit2, Unit3, Unit4, Unit5;
Procedure Ras(Var Mtr,z:real; Var Pud:real);
external 'Project2.dll';
{$R *.dfm}
procedure TForm1.N9Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
WinExec('calc.exe',SW_RESTORE)
end;
procedure TForm1.N5Click(Sender: TObject);
begin
Form5.ShowModal;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Form2.BitBtn3.Click;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
WinHelp(Handle, 'help/help.hlp', HELP_CONTEXT, 2);
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
WinExec('calc.exe',SW_RESTORE)
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var Mtr,Mtrmin,Mtrmax,z,zmin,zmax,
n,m,i,j:Integer;
begin
DecimalSeparator:='.';
n:=StrToInt(Form1.
m:=StrToInt(Form1.
Mtrmin:=StrToFloat(
Mtrmax:=StrToFloat(
zmin:=StrToInt(LabeledEdit4.
zmax:=StrToInt(LabeledEdit5.
Wr:=StrToFloat(LabeledEdit7.
Re:=StrToFloat(LabeledEdit8.
Ri:=StrToFloat(LabeledEdit9.
AssignFile(Fw,'Данные.txt');
Rewrite(Fw);
writeLn(Fw,labeledEdit1.text);
writeLn(Fw,labeledEdit2.text);
writeLn(Fw,labeledEdit3.text);
writeLn(Fw,labeledEdit4.text);
writeLn(Fw,labeledEdit5.text);
writeLn(Fw,labeledEdit6.text);
writeLn(Fw,labeledEdit7.text);
writeLn(Fw,labeledEdit8.text);
writeLn(Fw,labeledEdit9.text);
CloseFile(Fw);
If (Mtrmin<>0) then
begin
MessageDlg('Некорректно
введены данные',mtWarning,[
LabeledEdit1.SetFocus;
Exit;
end;
If (Mtrmin>Mtrmax) then
begin
MessageDlg('Mtrmin равен нулю',mtWarning,[mbOk],
LabeledEdit1.SetFocus;
Exit;
end;
If (Mtrmax>30715) or (Mtrmax<Mtrmin) then
begin
MessageDlg('Некорректно
введены данные',mtWarning,[
LabeledEdit2.SetFocus;
Exit;
end;
If (zmin<=0) then
begin
MessageDlg('zmin положительная величина',mtWarning,[mbOk],0);
LabeledEdit4.SetFocus;
Exit;
end;
If (zmax>16) then
begin
MessageDlg('Максимальное количество пар трения равно 16',mtWarning,[mbOk],0);
LabeledEdit5.SetFocus;
Exit;
end;
If (n<>zmax) then
begin
MessageDlg('Некорректно
введены данные',mtWarning,[
LabeledEdit6.SetFocus;
Exit;
end;
If (n<=0) then
begin
MessageDlg('количество точек разбиения должно быть больше нуля',mtWarning,[mbOk],0);
LabeledEdit6.SetFocus;
Exit;
end;
If (m<=0) then
begin
MessageDlg('количество точек разбиения должно быть больше нуля',mtWarning,[mbOk],0);
LabeledEdit3.SetFocus;
Exit;
end;
If (m>1000) then
begin
MessageDlg('количество точек разбиения не должно превышать 1000',mtWarning,[mbOk],0);
LabeledEdit3.SetFocus;
Exit;
end;
stMtr:=(Mtrmax-Mtrmin)/m;
stz:=(zmax-zmin+1)/n;
With Form2.StringGrid1 do
begin
cells[0,0]:='Mtr\z';
RowCount:=m+1;
ColCount:=n+1;
Mtr:=Mtrmin;
z:=zmin;
for i:=1 to n do
for j:=1 to m do
begin
Mtr:=Mtrmin+j*stMtr;
z:=zmin+i*stz-1;
Ras(Mtr,z,Pud);
Cells[i,0]:=FloattoStr(z);
Cells[0,j]:=FloatToStr(
Cells[n-i+1,j]:=FloatToStr(
end;
Form2.ShowModal;
end;
end;
procedure TForm1.leFloatKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9', #8:;
'.', ',': Key := DecimalSeparator
else
Key := #0;
end;
end;
procedure TForm1.leIntKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0'..'9', #8:;
else
Key := #0;
end;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
AssignFile(Fw,'Данные.txt');
Rewrite(Fw);
WriteLn(Fw,labeledEdit1.text);
WriteLn(Fw,labeledEdit2.text);
WriteLn(Fw,labeledEdit3.text);
WriteLn(Fw,labeledEdit4.text);
WriteLn(Fw,labeledEdit5.text);
WriteLn(Fw,labeledEdit6.text);
WriteLn(Fw,labeledEdit7.text);
WriteLn(Fw,labeledEdit8.text);
WriteLn(Fw,labeledEdit9.text);
CloseFile(Fw);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DecimalSeparator:='.';
Assignfile(Fr,'Данные.txt') ;
Reset(Fr);
readLn(Fr,Mtrmin);
readLn(Fr,Mtrmax);
readLn(Fr,n);
readLn(Fr,zmin);
readLn(Fr,zmax);
readLn(Fr,m);
readLn(Fr,Wr);
readLn(Fr,Re);
readLn(Fr,Ri);
closeFile(Fr);
LabeledEdit1.Text:=FloatToStr(
LabeledEdit2.Text:=FloatToStr(
LabeledEdit3.Text:=FloatToStr(
LabeledEdit4.Text:=IntToStr(
LabeledEdit5.Text:=IntToStr(
LabeledEdit6.Text:=IntToStr(m)
LabeledEdit7.Text:=FloatToStr(
LabeledEdit8.Text:=FloatToStr(
LabeledEdit9.Text:=FloatToStr(
end;
procedure TForm1.N11Click(Sender: TObject);
begin
OpenDialog1.Execute;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
Form1.BitBtn1.Click;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
WinHelp(Handle, 'help/help.hlp', HELP_CONTEXT, 1);
end;
procedure TForm1.N12Click(Sender: TObject);
begin
LabeledEdit1.Clear;
LabeledEdit2.Clear;
LabeledEdit3.Clear;
LabeledEdit4.Clear;
LabeledEdit5.Clear;
LabeledEdit6.Clear;
LabeledEdit7.Clear;
LabeledEdit8.Clear;
LabeledEdit9.Clear;
end;
procedure TForm1.N13Click(Sender: TObject);
begin
Assignfile(Fr,'Данные.txt') ;
Reset(Fr);
readLn(Fr,Mtrmin);
readLn(Fr,Mtrmax);
readLn(Fr,n);
readLn(Fr,zmin);
readLn(Fr,zmax);
readLn(Fr,m);
readLn(Fr,Wr);
readLn(Fr,Re);
readLn(Fr,Ri);
closeFile(Fr);
LabeledEdit1.Text:=FloatToStr(
LabeledEdit2.Text:=FloatToStr(
LabeledEdit3.Text:=FloatToStr(
LabeledEdit4.Text:=IntToStr(
LabeledEdit5.Text:=IntToStr(
LabeledEdit6.Text:=IntToStr(m)
LabeledEdit7.Text:=FloatToStr(
LabeledEdit8.Text:=FloatToStr(
LabeledEdit9.Text:=FloatToStr(
end;
procedure TForm1.N17Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N16Click(Sender: TObject);
begin
WinExec('calc.exe',SW_RESTORE)
end;
procedure TForm1.N15Click(Sender: TObject);
begin
Form5.ShowModal;
End;
procedure TForm1.N14Click(Sender: TObject);
begin
BitBtn1.Click;
end;
end.
Unit2.pas
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, ComCtrls, Buttons, Menus,ComObj, TypInfo,
WebServExp, WSDLBind, XMLSchema, WSDLPub;
type
TForm2 = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
Label2: TLabel;
StatusBar1: TStatusBar;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn6: TBitBtn;
BitBtn7: TBitBtn;
SaveDialog1: TSaveDialog;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1, Unit3, Unit4;
{$R *.dfm}
procedure AutoSizeGridColmn(Grid:
var i,temp,max:Integer;
begin
max:=0;
for i:=0 to (Grid.RowCount-1) do
begin
temp:=Grid.Canvas.TextWidth(
if temp>max then max:= temp;
end;
Grid.ColWidths[Column]:=max+
end;
procedure TForm2.FormCreate(Sender: TObject);
var n,m,i,j:Integer;
begin
DecimalSeparator:='.';
n:=StrToInt(Form1.
m:=StrToInt(Form1.
With StringGrid1 do
begin
ColCount:=n+1;
RowCount:=m+1;
Cells[0,0]:='Mrt\z';
for i:=1 to n do
Cells[i,0]:=IntToStr(i);
for j:=1 to m do
Cells[0,j]:=IntToStr(j);
end;
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
Close;
end;
procedure TForm2.BitBtn3Click(Sender: TObject);
var n,m,i,j,zmin,zmax:Integer;
Mtrmin,Mtrmax,Ri,Re,Wr,z,Pud1,
Mtr,stMtr:Real;
begin
DecimalSeparator:='.';
n:=StrToInt(Form1.
m:=StrToInt(Form1.
Mtrmin:=StrToFloat(Form1.
Mtrmax:=StrToFloat(Form1.