Конвертер физических величин

Автор работы: Пользователь скрыл имя, 19 Сентября 2013 в 18:23, лабораторная работа

Описание

Руководство пользователя
Программа «Конвертер физических величин» предназначена для конвертации физических величин по 10 категориям:
масса,
площадь,
объем,
мощность,
время,
давление,

Работа состоит из  1 файл

Отчёт.doc

— 95.50 Кб (Скачать документ)

Южно-Уральский государственный  университет

Кафедра ЭВМ

 

 

 

 

 

 

 

 

 

 

 

Контрольная работа

по курсу 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;    // коэффициент перевода относительно 1-й един. в массиве

  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.5970244;

  a_Units[1][3].name:='граны';

  a_Units[1][3].convert:=0.05479890;

  a_Units[1][4].name:='унции';

  a_Units[1][4].convert:=28.34949254;

  a_Units[1][5].name:='килогаммы';

  a_Units[1][5].convert:=1000;

  a_Units[1][6].name:='тонны';

  a_Units[1][6].convert:=1000000;

  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:=1000000;

  a_Units[2][3].name:='кв. мили';

  a_Units[2][3].convert:=2589988.11;

  a_Units[2][4].name:='акры';

  a_Units[2][4].convert:=4046.856422;

  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.00064516;

  a_Units[2][10].name:='кв. футы';

  a_Units[2][10].convert:=0.09290304;

  a_Units[2][11].name:='кв. ярды';

  a_Units[2][11].convert:=0.83612739;

  // 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.01638706;

  a_Units[3][5].name:='куб. фунты';

  a_Units[3][5].convert:=28.31684669;

  a_Units[3][6].name:='куб. метры';

  a_Units[3][6].convert:=1000;

  a_Units[3][7].name:='галлоны (США)';

  a_Units[3][7].convert:=4.404883772;

  a_Units[3][8].name:='галлоны (Анг.)';

  a_Units[3][8].convert:=4.546090006;

  a_Units[3][9].name:='пинты (Анг.)';

  a_Units[3][9].convert:=0.56826125;

  a_Units[3][10].name:='унции (США)';

  a_Units[3][10].convert:=0.02957352;

  a_Units[3][11].name:='унции (Анг.)';

  a_Units[3][11].convert:=0.02841306;

  a_Units[3][12].name:='сух. пинты (США)';

  a_Units[3][12].convert:=0.55061047;

  a_Units[3][13].name:='жидк. пинты (США)';

  a_Units[3][13].convert:=0.47317647;

  a_Units[3][14].name:='баррели';

  a_Units[3][14].convert:=158.9872891;

  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.4988;

  // 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.322;

  a_Units[6][4].name:='фунты на кв. дюйм';

  a_Units[6][4].convert:=6894.757188;

  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.34398;

  a_Units[7][4].name:='морские мили';

  a_Units[7][4].convert:=1852.000012;

  a_Units[7][5].name:='световые года';

  a_Units[7][5].convert:=9.460528405e15;

  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.9144;

  // 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:=3600000;

  a_Units[9][6].name:='электрон-врольты';

  a_Units[9][6].convert:=1.60219e-19;

  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.44703999;

  a_Units[10][4].name:='мили в секунду';

  a_Units[10][4].convert:=1609.344;

  a_Units[10][5].name:='узлы';

  a_Units[10][5].convert:=0.51444444;

  a_Units[10][6].name:='скорости звука';

  a_Units[10][6].convert:=340.29;

 

  // заполним ComboBox и расчитаем

  sseCombo(RadioGroup1.ItemIndex+1);

  sseCalk(RadioGroup1.ItemIndex+1);

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.Text);

        Edit1.SelText:=''

      end;

      // пересчет

      sseCalk(RadioGroup1.ItemIndex+1);

     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;

Информация о работе Конвертер физических величин