Автор работы: Пользователь скрыл имя, 19 Сентября 2013 в 18:23, лабораторная работа
Руководство пользователя
Программа «Конвертер физических величин» предназначена для конвертации физических величин по 10 категориям:
масса,
площадь,
объем,
мощность,
время,
давление,
Южно-Уральский
Кафедра ЭВМ
Контрольная работа
по курсу Delphi
Выполнил:
студенты группы ПС-399
С.Е.Сахацкий
Проверил:
В.А.Парасич
Челябинск
2005
Задание:
Написать программу «Конвертер физических величин» в среде разработки Delphi.
Руководство пользователя
Программа «Конвертер физических величин» предназначена для конвертации физических величин по 10 категориям:
Интерфейс программы представлен на рисунке 1.
Рис.1 Интерфейс программы
Для конвертации одной величины в другую необходимо в группе переключателей «Категория величин» выбрать группу величины, в группе «Конвертируемая величина» выбрать единицу измерения и значение конвертируемой величины, а в группе «Результирующая величина» выбрать единицу измерения. В поле «Значение» группы «Результирующая величина» появится искомое значение.
Программа сама
отслеживает изменения
Имеется контроль на вводимые значения в поле «Значение конвертируемой величины» и на температуру ниже абсолютного нуля.
Кнопка «Выход» предназначена для выхода из программы.
Кнопка «О программе» выводит диалог со сведениями о программе и разработчике.
Листинг программы
unit ValConv;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;
const
i_MaxArrayUnit = 16; // макс. массив единиц
i_MaxArrayKat = 10; // макс. массив категорий
type
sseUnit = record
name : string; // Название единицы измерения
convert : extended;
// коэффициент перевода
end;
sseArrayUnit = array [1..i_MaxArrayUnit] of sseUnit; // массив единиц по 1-й категории
sseArrayKat = array [1..i_MaxArrayKat] of sseArrayUnit; // массив категорий
TForm1 = class(TForm)
RadioGroup1: TRadioGroup;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
ComboBox1: TComboBox;
Edit1: TEdit;
GroupBox2: TGroupBox;
Label3: TLabel;
Label4: TLabel;
ComboBox2: TComboBox;
Edit2: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure Edit1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure sseCalk(i_Kat : integer);
procedure sseCombo(i_Kat : integer);
procedure BitBtn1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
OldText1,OldText2 : String; // для фильтра ввода
a_Units : sseArrayKat; // массив единиц и коэффициентов перевода
implementation
uses About;
//uses Unit1;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
OldText1:='1';
OldText2:='';
// заполним массив единиц и коэффициентов перевода
// 1. масса
a_Units[1][1].name:='граммы';
a_Units[1][1].convert:=1;
a_Units[1][2].name:='фунты';
a_Units[1][2].convert:=453.
a_Units[1][3].name:='граны';
a_Units[1][3].convert:=0.
a_Units[1][4].name:='унции';
a_Units[1][4].convert:=28.
a_Units[1][5].name:='килогаммы
a_Units[1][5].convert:=1000;
a_Units[1][6].name:='тонны';
a_Units[1][6].convert:=
a_Units[1][7].name:='миллиграм
a_Units[1][7].convert:=0.001;
// 2. площадь
a_Units[2][1].name:='кв. метры';
a_Units[2][1].convert:=1;
a_Units[2][2].name:='кв. километры';
a_Units[2][2].convert:=
a_Units[2][3].name:='кв. мили';
a_Units[2][3].convert:=
a_Units[2][4].name:='акры';
a_Units[2][4].convert:=4046.
a_Units[2][5].name:='ары';
a_Units[2][5].convert:=100;
a_Units[2][6].name:='гектары';
a_Units[2][6].convert:=1000;
a_Units[2][7].name:='кв. миллиметры';
a_Units[2][7].convert:=10e-6;
a_Units[2][8].name:='кв. сантиметры';
a_Units[2][8].convert:=0.0001;
a_Units[2][9].name:='кв. дюймы';
a_Units[2][9].convert:=0.
a_Units[2][10].name:='кв. футы';
a_Units[2][10].convert:=0.
a_Units[2][11].name:='кв. ярды';
a_Units[2][11].convert:=0.
// 3. объем
a_Units[3][1].name:='литры (куб. дециметры)';
a_Units[3][1].convert:=1;
a_Units[3][2].name:='куб. миллиметры';
a_Units[3][2].convert:=10e-6;
a_Units[3][3].name:='куб. сантиметры';
a_Units[3][3].convert:=10e-3;
a_Units[3][4].name:='куб. дюймы';
a_Units[3][4].convert:=0.
a_Units[3][5].name:='куб. фунты';
a_Units[3][5].convert:=28.
a_Units[3][6].name:='куб. метры';
a_Units[3][6].convert:=1000;
a_Units[3][7].name:='галлоны (США)';
a_Units[3][7].convert:=4.
a_Units[3][8].name:='галлоны (Анг.)';
a_Units[3][8].convert:=4.
a_Units[3][9].name:='пинты (Анг.)';
a_Units[3][9].convert:=0.
a_Units[3][10].name:='унции (США)';
a_Units[3][10].convert:=0.
a_Units[3][11].name:='унции (Анг.)';
a_Units[3][11].convert:=0.
a_Units[3][12].name:='сух. пинты (США)';
a_Units[3][12].convert:=0.
a_Units[3][13].name:='жидк. пинты (США)';
a_Units[3][13].convert:=0.
a_Units[3][14].name:='баррели'
a_Units[3][14].convert:=158.98
a_Units[3][15].name:='миллилит
a_Units[3][15].convert:=0.001;
a_Units[3][16].name:='сантилит
a_Units[3][16].convert:=0.01;
// 4. мощъность
a_Units[4][1].name:='ватты';
a_Units[4][1].convert:=1;
a_Units[4][2].name:='
a_Units[4][2].convert:=0.001;
a_Units[4][3].name:='
a_Units[4][3].convert:=1000;
a_Units[4][4].name:='
a_Units[4][4].convert:=735.
// 5. время
a_Units[5][1].name:='минуты';
a_Units[5][1].convert:=1;
a_Units[5][2].name:='секунды';
a_Units[5][2].convert:=1/60;
a_Units[5][3].name:='часы';
a_Units[5][3].convert:=60;
a_Units[5][4].name:='дни';
a_Units[5][4].convert:=1440;
a_Units[5][5].name:='недели';
a_Units[5][5].convert:=10080;
a_Units[5][6].name:='годы';
a_Units[5][6].convert:=525960;
// 6. давление
a_Units[6][1].name:='паскали';
a_Units[6][1].convert:=1;
a_Units[6][2].name:='
a_Units[6][2].convert:=101235;
a_Units[6][3].name:='торры';
a_Units[6][3].convert:=133.
a_Units[6][4].name:='фунты на кв. дюйм';
a_Units[6][4].convert:=6894.
a_Units[6][5].name:='бары';
a_Units[6][5].convert:=10e5;
// 7. длинна
a_Units[7][1].name:='метры';
a_Units[7][1].convert:=1;
a_Units[7][2].name:='километры
a_Units[7][2].convert:=1000;
a_Units[7][3].name:='мили';
a_Units[7][3].convert:=1609.
a_Units[7][4].name:='морские мили';
a_Units[7][4].convert:=1852.
a_Units[7][5].name:='световые года';
a_Units[7][5].convert:=9.
a_Units[7][6].name:='
a_Units[7][6].convert:=0.001;
a_Units[7][7].name:='сантиметр
a_Units[7][7].convert:=0.01;
a_Units[7][8].name:='дюймы';
a_Units[7][8].convert:=0.254;
a_Units[7][9].name:='фунты';
a_Units[7][9].convert:=0.3048;
a_Units[7][10].name:='ярды';
a_Units[7][10].convert:=0.
// 8. температура
a_Units[8][1].name:='цельсии';
a_Units[8][1].convert:=1;
a_Units[8][2].name:='кельвины'
a_Units[8][2].convert:=1;
a_Units[8][3].name:='фаренгейт
a_Units[8][3].convert:=1;
// 9. энергия
a_Units[9][1].name:='джоули';
a_Units[9][1].convert:=1;
a_Units[9][2].name:='килоджоул
a_Units[9][2].convert:=1000;
a_Units[9][3].name:='ватт-
a_Units[9][3].convert:=1;
a_Units[9][4].name:='ватт-
a_Units[9][4].convert:=3600;
a_Units[9][5].name:='киловатт-
a_Units[9][5].convert:=
a_Units[9][6].name:='электрон-
a_Units[9][6].convert:=1.
a_Units[9][7].name:='калории';
a_Units[9][7].convert:=4.1858;
a_Units[9][8].name:='килокалор
a_Units[9][8].convert:=4185.8;
// 10. скорость
a_Units[10][1].name:='метры в секунду';
a_Units[10][1].convert:=1;
a_Units[10][2].name:='километр
a_Units[10][2].convert:=1/3.6;
a_Units[10][3].name:='мили в час';
a_Units[10][3].convert:=0.
a_Units[10][4].name:='мили в секунду';
a_Units[10][4].convert:=1609.
a_Units[10][5].name:='узлы';
a_Units[10][5].convert:=0.
a_Units[10][6].name:='скорости звука';
a_Units[10][6].convert:=340.
// заполним ComboBox и расчитаем
sseCombo(RadioGroup1.
sseCalk(RadioGroup1.ItemIndex+
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
// фильтр ввода
if Edit1.Text<>'' then
begin
try
StrToFloat(Edit1.Text);
OldText1:=Edit1.Text;
except
Edit1.Text:=OldText1;
Edit1.SelStart:=Length(Edit1.
Edit1.SelText:=''
end;
// пересчет
sseCalk(RadioGroup1.ItemIndex+
end
else
Edit2.Text:='';
end;
// процедура расчета и вывода результата
procedure TForm1.sseCalk(i_Kat : integer);
var
f_Rez,f_Rez1,f_Abs : real;
c_Rez : string;
begin
// температура- особая песня
f_Abs:=0;
if i_Kat=8 then
begin
if ComboBox1.ItemIndex+1=1 then // цельсии
begin
if ComboBox2.ItemIndex+1=1 then // цельсии
begin
f_Rez1:=StrToFloat(Edit1.Text)
f_Rez:=f_Rez1;
end;
if ComboBox2.ItemIndex+1=2 then // кельвин
begin
f_Rez1:=StrToFloat(Edit1.Text)
f_Rez:=f_Rez1+273.15;
end;
if ComboBox2.ItemIndex+1=3 then // фаренгейт
begin
f_Rez1:=StrToFloat(Edit1.Text)
f_Rez:=32+1.8*f_Rez1;