Главная страница
Навигация по странице:

  • Процедура Описание

  • Delphi

  • CheckBox , TrackBar , RadioGroup и MainMenu

  • Delphi MainMenu

  • MainMenu

  • Курсовая работа. Курсовая. Выбор среды разработки


    Скачать 369.55 Kb.
    НазваниеВыбор среды разработки
    АнкорКурсовая работа
    Дата14.01.2022
    Размер369.55 Kb.
    Формат файлаdocx
    Имя файлаКурсовая.docx
    ТипПрограмма
    #331119



    Оглавление


    Введение 4

    1.Выбор среды разработки 5

    2.Реализация 6

    3.Разработка программы 8

    Выводы: 15

    Список литературы: 15

    Приложение а. Код программы. 15


    Введение


    Светофор — оптическое устройство, подающее световые сигналы, регулирующие движение автомобильного, железнодорожного, водного и другого транспорта, а также пешеходов на пешеходных переходах.

    Постановка задачи:
    Требуется разработать светофор автоматического и ручного управления.

    Возможности программы:

    • Включение и выключение автоматического режима работы светофора

    • Ручное управление цветами светофора

    • Изменение времени смены цветов в автоматическом режиме

    • Выбор цвета фона программы
    1. Выбор среды разработки


    Программа написана на объектно-ориентированном языке программирования Delphi.

    Среда разработки - Turbo Delphi - Интегрированная среда разработки, разработанная компанией CodeGear, ориентированная в первую очередь на студентов, индивидуальных пользователей и программистов-любителей. Основана на языке программирования Delphi, который является диалектом языка Object Pascal.

    Среда предназначена для быстрой (RAD) разработки прикладного ПО для операционных систем Windows, Mac OS X, а также iOS и Android. Она позволяет взаимодействовать с операционной системой, а также с библиотеками, написанными на C/C++. Созданные программы независимы от стороннего ПО, как то Microsoft .NET Framework или Java Virtual Machine. Выделение и освобождение памяти контролируется в основном пользовательским кодом, что делает возможным создание сложных приложений с высокими требованиями к отзывчивости (работа в реальном времени). В кросс-компиляторах для мобильных платформ предусмотрен автоматический подсчёт ссылок на объекты, облегчающий задачу управления их временем жизни.

    Среда разработки Delphi ориентирована, прежде всего, на создание программ для Windows. При этом большое внимание уделяется возможности визуальной разработки приложений с помощью большого набора готовых компонентов Delphi, позволяющих избежать ручного кодирования. Рассмотрим наиболее часто используемые компоненты в Delphi. Они располагаются на панели инструментов standard и additional.
    1. Реализация


    В разрабатываемом приложении реализуется светофор с дополнительной секцией по визуальным компонентам Delphi. Пользователь имеет возможность самостоятельно включать сигналы светофора или же включить автоматическую работу, а также менять скорость переключения сигналов.

    В процессе создания программного обеспечения были разработаны процедуры и функции, приведённые в таблице 1.

    Таблица 1.

    Процедура

    Описание

    procedure FormCreate

    Создаёт форму

    procedure RadioGroup1Click

    Панель радиокнопок, которая меняет сигналы светофора по выбору кнопки

    procedure CheckBox1Click

    Флажок визуализирующий состояние включен-выключен автоматизированной работы светофора

    procedure TrackBar1Change

    Ползунок, который можно перемещать клавишами или курсором мыши для изменения времени смены сигнала

    procedure N1Click

    Элемент главного меню «О программе»

    procedure Light1Click

    Элемент, меняющий тему программы на светлую

    procedure Dark1Click

    Элемент, меняющий тему программы на тёмную

    Продолжение таблицы 1.

    procedure TTrafficLights.Paint;

    Рисует светофор с дополнительной секцией и цвета сигналов светофора

    procedure TTrafficLights.SetStatus

    Определяет статус

    procedure TTrafficLights.XXXX

    Отвечает за порядок работы сигналов





    1. Разработка программы


    1. Для создания основного окна использовали компонент TForm.
      TForm - это важнейший компонент Delphi, на котором основана вся работа этой системы по проектированию и разработке приложений.
      Вид показан на рисунке 1.



    Рисунок 1. - вид компонента TForm.

    1. Чтобы прорисовать сам светофор, нам понадобились графические возможности Delphi – Canvas, что показано на рисунке 2.



    Рисунок 2. – Визуализация светофора.

    1. Создали компоненты CheckBox, TrackBar, RadioGroup и MainMenu для управления программой.

      1. Компонент Delphi CheckBox (флажок) находиться на странице "Standard" Палитры Компонентов. Он используется для обозначения включения или отключения какой либо опции. У нас данный компонент будет отвечать за автоматический режим. Вид компонента указан на рисунке 3.1.



    Рисунок 3.1. – Компонент CheckBox.

      1. Компонент Delphi TrackBar представляет собой визуальный элемент управления в виде ползунка, который можно перемещать клавишами или курсором мыши во время выполнения. Таким образом, пользователь может управлять какими-либо процессами: громкость звука, размером изображения и д.р. Ползунок может располагаться как вертикально, так и горизонтально, иметь шкалу с разных сторон и выделенный диапазон этой шкалы. TrackBar задаёт интервал смены сигналов в нашем светофоре. Вид компонента изображен на рисунке 3.2.1. Свойства компонента описаны на рисунке 3.2.2.



    Рисунок 3.2.1. – Компонент TrackBar.



    Рисунок 3.2.2. - Свойства компонента TrackBar.

      1. Компонент Delphi RadioGroup расположен на странице Standard Палитры Компонентов. Он представляет собой  контейнер с группой компонентов RadioButton (переключателей). Такой компонент  упрощает организацию работы переключателей, по сравнению другими групповыми контейнерами требующими добавлять переключатели вручную. Основное свойство компонента  RadioGroup это Items. В нем находятся строки, которые являются заголовками переключателей. Двойным щелчком на многоточии рядом с Items в Инспекторе Объектов мы попадаем  в редактор списков строк, где каждая отдельная строка будет заголовком переключателя (радиокнопки). Отсчет строк идет с нуля. RadioGroup будет отвечать за ручное переключение сигналов светофора. Редактор показан на рисунке 3.3.1. Сам компонент представлен на рисунке 3.3.2.



    Рисунок 3.3.1. – Редактор списков строк RadioGroup.



    Рисунок 3.3.2. – Компонент RadioGroup.

      1. Компонент MainMenu'>Delphi MainMenu предназначен для добавления к программе главного меню, элемента, без которого не обходится ни одно из приложений для Windows.
        Чтобы добавить к программе Delphi главное меню, нужно расместить на Форме в произвольном месте компонент MainMenu. Компонент MainMemu невизуальный, то есть, хотя и отображается на прототипе Формы как небольшой квадрат, в работающей программе не будет виден. Опции главного меню создаются с помощью специального редактора. Редактор меню вызывается с помощью двойного щелчка по компоненту MainMenu. Первоначально меню пустое, но имеет один выделенный элемент показанный на рисунке 3.4.1.



    Рисунок 3.4.1. – Меню компонента MainMenu.

    Для создания первой опции нужно перейти в Инспектор объектов и свойству Caption присвоить нужное название. Тем самым создаём пункт «Цвет фона», в котором присутствует возможность сменить цвет фона на светлый и тёмный, а также пункт «О программе». Данные изменения мы можем наблюдать на рисунке 3.4.2. Чтобы наша программа меняла корректно свой фон, нужно изменить и цвет всего текста для лучшей видимости, что было сделано и показано на рисунке 3.4.3.



    Рисунок 3.4.2. – Компонент MainMenu.



    Рисунок 3.4.3. – Смена цвета фона программы.

    1. Для пункта «О программе» компонента MainMenu создали и привязали новую форму, в которой описывается информация о созданной нами программе. Она изображена на рисунке 4.



    Рисунок 4. – Форма «О программе».

    1. Для того, чтобы светофор работал в автоматическом режиме, нужно установить Timer.Interval для каждого сигнала, что по стандарту у нас составляет 5000 мс. Также используем оператор Case для того, чтобы присвоить цвета в цикле. Работу оператора наблюдается на рисунке 5.1. Привязываем интервал к TrackBar для изменения времени смены сигналов светофора от 5000 до 30000 мс. (от 5 до 30 сек.). Этот процесс виден на рисунке 5.2.



    Рисунок 5.1. – Оператор Case.



    Рисунок 5.2. – Привязка TrackBar к интервалу.

    1. Чтобы подключить к RadioGroup ручное управление светофором, используем привязку цветов оператором Case (Рисунок 5.1.) и с помощью того же оператора подсоединяем индексы, как показано на рисунке 6.



    Рисунок 6. – Подключение индексов.

    Выводы:


    Разработан светофор с дополнительной секцией, работающий как в автоматическом режиме, так и в ручном. Имеется возможность регулировки времени до смены светового сигнала путём передвижения ползунка на нужное пользователем время данное в секундах. Также можно изменить цветовое оформление с помощью вкладки «Цвет фона» на Светлый и Тёмный. Проведено тестирование программы. Изучены компоненты Delphi и компоненты интерфейса управления. Получен опыт разработки приложений с графическим интерфейсом.

    Список литературы:


    1. http://www.delphi-manual.ru/components.php

    2. https://en.wikipedia.org/wiki/Delphi_(IDE)

    3. Дарахвелидзе, П.Г. Программирование в Delphi 7 / Дарахвелидзе П.Г., Марков Е.П. - СПб.: БХВ-Петербург. - 2004.

    4. Моисеенко С.И. Разработка приложений в Microsoft Office Access: Краткое руководство. - 2006.

    Приложение а. Код программы.


    unit UnitMainForm;

    interface

    uses

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

    Dialogs, TrafficLights, StdCtrls, ExtCtrls, Vcl.ComCtrls, Vcl.Menus;

    type

    TForm1 = class(TForm)

    RadioGroup1: TRadioGroup;

    CheckBox1: TCheckBox;

    TrackBar1: TTrackBar;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    Label7: TLabel;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    Light1: TMenuItem;

    Dark1: TMenuItem;

    Label8: TLabel;

    Label9: TLabel;

    Label10: TLabel;

    Label11: TLabel;

    Label12: TLabel;

    Label13: TLabel;

    Label14: TLabel;

    procedure FormCreate(Sender: TObject);

    procedure RadioGroup1Click(Sender: TObject);

    procedure CheckBox1Click(Sender: TObject);

    procedure TrackBar1Change(Sender: TObject);

    procedure N1Click(Sender: TObject);

    procedure Light1Click(Sender: TObject);

    procedure Dark1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var Form1: TForm1;

    var Temp, Temp2:TTrafficLights;

    implementation

    {$R *.dfm}

    uses Unit2;

    procedure TForm1.CheckBox1Click(Sender: TObject);

    begin

    If CheckBox1.Checked then temp2.Status:=auto

    else temp2.Status:=manual;

    If CheckBox1.Checked then Form1.Caption:='Светофор | On'

    else Form1.Caption:='Светофор | Off';

    If CheckBox1.Checked then temp2.Status:=auto

    else temp2.TrafficLightColor:=off;

    If CheckBox1.Checked then TRadioButton(RadioGroup1.Controls[0]).Enabled := False

    else TRadioButton(RadioGroup1.Controls[0]).Enabled := True;

    If CheckBox1.Checked then TRadioButton(RadioGroup1.Controls[1]).Enabled := False

    else TRadioButton(RadioGroup1.Controls[1]).Enabled := True;

    If CheckBox1.Checked then TRadioButton(RadioGroup1.Controls[2]).Enabled := False

    else TRadioButton(RadioGroup1.Controls[2]).Enabled := True;

    If CheckBox1.Checked then TRadioButton(RadioGroup1.Controls[3]).Enabled := False

    else TRadioButton(RadioGroup1.Controls[3]).Enabled := True;

    If CheckBox1.Checked then TRadioButton(RadioGroup1.Controls[4]).Enabled := False

    else TRadioButton(RadioGroup1.Controls[4]).Enabled := True;

    If CheckBox1.Checked then RadioGroup1.ItemIndex:= 0

    else RadioGroup1.ItemIndex:= 0;

    end;

    procedure TForm1.FormCreate(Sender: TObject);

    begin

    Temp2:=TTrafficLights.Create(Self);

    Temp2.Parent:=Self;

    Temp2.Top:=20;

    Temp2.Left:=20;

    end;

    procedure TForm1.Light1Click(Sender: TObject);

    begin

    Color:=clBtnFace;

    font.Color:=clWindowText;

    end;

    procedure TForm1.Dark1Click(Sender: TObject);

    begin

    Color:=cl3DDkShadow;

    font.Color:=clwhite;

    end;

    procedure TForm1.N1Click(Sender: TObject);

    begin

    Form2.Show;

    end;

    procedure TForm1.RadioGroup1Click(Sender: TObject);

    begin

    Case RadioGroup1.ItemIndex of

    0: temp2.TrafficLightColor:=off;

    1: temp2.TrafficLightColor:=Red;

    2: temp2.TrafficLightColor:=Yellow;

    3: temp2.TrafficLightColor:=Green;

    4: temp2.TrafficLightColor:=Greenstrelka;

    End;

    end;

    procedure TForm1.TrackBar1Change(Sender: TObject);

    begin

    temp2.FtimeGreen:=TrackBar1.Position;

    temp2.FTimeGreenstrelka:=TrackBar1.Position;

    end;

    end.

    unit TrafficLights;

    interface

    uses

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

    Dialogs, StdCtrls, ExtCtrls;

    type

    TsvetColor=(Red, Yellow, Yellowy , Green, Greenstrelka, Off);

    TStatus=(auto,manual);

    TTrafficLights = class(TGraphicControl)

    private

    Procedure SetColor(newValue:TsvetColor);

    Procedure SetStatus(newValue:TStatus);

    Procedure XXXX(Sender:Tobject);

    public

    FColor:TsvetColor;

    FStatus:TStatus;

    Timer:Ttimer;

    FTimeRed,FTimeGreen,FTimeYellowy,FTimeYellow,FTimeOff,FTimeGreenstrelka: integer;

    Property Status:TStatus read FStatus write SetStatus;

    Property TrafficLightColor: TsvetColor read Fcolor write SetColor;

    procedure Paint;override;

    constructor Create(AOwner: TComponent); override;

    { Public declarations }

    published

    { Published declarations }

    end;

    implementation

    { TTrafficLights }

    constructor TTrafficLights.Create(AOwner: TComponent);

    begin

    inherited;

    Width:=250;

    Height:=305;

    FColor:=off;

    FStatus:=manual;

    Timer:=Ttimer.Create(AOwner);

    Timer.Enabled:=false;

    Timer.Interval:=500;

    Timer.OnTimer:=XXXX;

    FTimeRed:=1; FtimeGreen:=5000;

    FTimeYellowy:=1500; FTimeYellow:=1; FTimeGreenstrelka:=5000; FTimeOff:=1;

    end;

    var M:array[1..7] of Tpoint;

    procedure TTrafficLights.Paint;

    begin

    inherited;

    Canvas.Brush.Color:=clSilver;

    Canvas.Rectangle(0,0,147,305);

    Canvas.Rectangle(147,192,250,305);

    Canvas.Brush.Color:=clGray;

    Canvas.Ellipse(35,20,110,95);

    Canvas.Ellipse(35,115,110,190);

    Canvas.Ellipse(35,210,110,285);

    Canvas.Ellipse(160,210,235,285);

    M[1].X:=170; M[1].Y:=240;

    M[2].X:=200; M[2].Y:=240;

    M[3].X:=200; M[3].Y:=225;

    M[4].X:=225; M[4].Y:=247;

    M[5].X:=200; M[5].Y:=270;

    M[6].X:=200; M[6].Y:=255;

    M[7].X:=170; M[7].Y:=255;

    Canvas.Polygon(M);

    if Fcolor=Red then

    begin

    Canvas.Brush.Color:=clRed;

    Canvas.Ellipse(35,20,110,95);

    end

    else

    if Fcolor=Green then

    begin

    Canvas.Brush.Color:=clLime;

    Canvas.Ellipse(35,210,110,285);

    end

    else

    if Fcolor=Yellowy then

    begin

    Canvas.Brush.Color:=clYellow;

    Canvas.Ellipse(35,115,110,190);

    Canvas.Brush.Color:=clRed;

    Canvas.Ellipse(35,20,110,95);

    end

    else

    if Fcolor=Greenstrelka then

    begin

    Canvas.Brush.Color:=clLime;

    M[1].X:=170; M[1].Y:=240;

    M[2].X:=200; M[2].Y:=240;

    M[3].X:=200; M[3].Y:=225;

    M[4].X:=225; M[4].Y:=247;

    M[5].X:=200; M[5].Y:=270;

    M[6].X:=200; M[6].Y:=255;

    M[7].X:=170; M[7].Y:=255;

    Canvas.Polygon(M);

    Canvas.Brush.Color:=clRed;

    Canvas.Ellipse(35,20,110,95);

    end

    else

    if Fcolor=Yellow then

    begin

    Canvas.Brush.Color:=clYellow;

    Canvas.Ellipse(35,115,110,190);

    end

    end;

    procedure TTrafficLights.SetColor(newValue: TsvetColor);

    begin

    FColor:=newValue; Paint;

    end;

    procedure TTrafficLights.SetStatus(newValue: TStatus);

    begin

    Fstatus:=newValue;

    if FStatus=auto then

    begin

    TrafficLightColor:=Red;

    Timer.Interval:=FTimeRed;

    Timer.Enabled:=True

    end

    else Timer.Enabled:=False;

    Paint;

    end;

    procedure TTrafficLights.XXXX(Sender: Tobject);

    begin

    if FColor
    Fcolor:=Succ(Fcolor)

    else

    Fcolor:=Red;

    case Fcolor of

    Red: Timer.Interval:=FTimeRed;

    Yellow: Timer.Interval:=FTimeYellow;

    Yellowy: Timer.Interval:=FTimeYellowy;

    Green: Timer.Interval:=FTimeGreen;

    Greenstrelka: Timer.Interval:=FTimeGreenstrelka;

    Off: Timer.Interval:=FTimeOff;

    end;

    Paint;

    end;

    end.

    unit Unit2;

    interface

    uses

    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

    type

    TForm2 = class(TForm)

    Label3: TLabel;

    Label4: TLabel;

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Form2: TForm2;

    implementation

    {$R *.dfm}

    end.


    написать администратору сайта