Курсовая работа. Курсовая. Выбор среды разработки
Скачать 369.55 Kb.
|
ОглавлениеВведение 4 1.Выбор среды разработки 5 2.Реализация 6 3.Разработка программы 8 Выводы: 15 Список литературы: 15 Приложение а. Код программы. 15 ВведениеСветофор — оптическое устройство, подающее световые сигналы, регулирующие движение автомобильного, железнодорожного, водного и другого транспорта, а также пешеходов на пешеходных переходах. Постановка задачи: Требуется разработать светофор автоматического и ручного управления. Возможности программы: Включение и выключение автоматического режима работы светофора Ручное управление цветами светофора Изменение времени смены цветов в автоматическом режиме Выбор цвета фона программы Выбор среды разработкиПрограмма написана на объектно-ориентированном языке программирования 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. РеализацияВ разрабатываемом приложении реализуется светофор с дополнительной секцией по визуальным компонентам Delphi. Пользователь имеет возможность самостоятельно включать сигналы светофора или же включить автоматическую работу, а также менять скорость переключения сигналов. В процессе создания программного обеспечения были разработаны процедуры и функции, приведённые в таблице 1. Таблица 1.
Продолжение таблицы 1.
Разработка программыДля создания основного окна использовали компонент TForm. TForm - это важнейший компонент Delphi, на котором основана вся работа этой системы по проектированию и разработке приложений. Вид показан на рисунке 1. Рисунок 1. - вид компонента TForm. Чтобы прорисовать сам светофор, нам понадобились графические возможности Delphi – Canvas, что показано на рисунке 2. Рисунок 2. – Визуализация светофора. Создали компоненты CheckBox, TrackBar, RadioGroup и MainMenu для управления программой. Компонент Delphi CheckBox (флажок) находиться на странице "Standard" Палитры Компонентов. Он используется для обозначения включения или отключения какой либо опции. У нас данный компонент будет отвечать за автоматический режим. Вид компонента указан на рисунке 3.1. Рисунок 3.1. – Компонент CheckBox. Компонент Delphi TrackBar представляет собой визуальный элемент управления в виде ползунка, который можно перемещать клавишами или курсором мыши во время выполнения. Таким образом, пользователь может управлять какими-либо процессами: громкость звука, размером изображения и д.р. Ползунок может располагаться как вертикально, так и горизонтально, иметь шкалу с разных сторон и выделенный диапазон этой шкалы. TrackBar задаёт интервал смены сигналов в нашем светофоре. Вид компонента изображен на рисунке 3.2.1. Свойства компонента описаны на рисунке 3.2.2. Рисунок 3.2.1. – Компонент TrackBar. Рисунок 3.2.2. - Свойства компонента TrackBar. Компонент Delphi RadioGroup расположен на странице Standard Палитры Компонентов. Он представляет собой контейнер с группой компонентов RadioButton (переключателей). Такой компонент упрощает организацию работы переключателей, по сравнению другими групповыми контейнерами требующими добавлять переключатели вручную. Основное свойство компонента RadioGroup это Items. В нем находятся строки, которые являются заголовками переключателей. Двойным щелчком на многоточии рядом с Items в Инспекторе Объектов мы попадаем в редактор списков строк, где каждая отдельная строка будет заголовком переключателя (радиокнопки). Отсчет строк идет с нуля. RadioGroup будет отвечать за ручное переключение сигналов светофора. Редактор показан на рисунке 3.3.1. Сам компонент представлен на рисунке 3.3.2. Рисунок 3.3.1. – Редактор списков строк RadioGroup. Рисунок 3.3.2. – Компонент RadioGroup. Компонент 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. – Смена цвета фона программы. Для пункта «О программе» компонента MainMenu создали и привязали новую форму, в которой описывается информация о созданной нами программе. Она изображена на рисунке 4. Рисунок 4. – Форма «О программе». Для того, чтобы светофор работал в автоматическом режиме, нужно установить Timer.Interval для каждого сигнала, что по стандарту у нас составляет 5000 мс. Также используем оператор Case для того, чтобы присвоить цвета в цикле. Работу оператора наблюдается на рисунке 5.1. Привязываем интервал к TrackBar для изменения времени смены сигналов светофора от 5000 до 30000 мс. (от 5 до 30 сек.). Этот процесс виден на рисунке 5.2. Рисунок 5.1. – Оператор Case. Рисунок 5.2. – Привязка TrackBar к интервалу. Чтобы подключить к RadioGroup ручное управление светофором, используем привязку цветов оператором Case (Рисунок 5.1.) и с помощью того же оператора подсоединяем индексы, как показано на рисунке 6. Рисунок 6. – Подключение индексов. Выводы:Разработан светофор с дополнительной секцией, работающий как в автоматическом режиме, так и в ручном. Имеется возможность регулировки времени до смены светового сигнала путём передвижения ползунка на нужное пользователем время данное в секундах. Также можно изменить цветовое оформление с помощью вкладки «Цвет фона» на Светлый и Тёмный. Проведено тестирование программы. Изучены компоненты Delphi и компоненты интерфейса управления. Получен опыт разработки приложений с графическим интерфейсом. Список литературы:http://www.delphi-manual.ru/components.php https://en.wikipedia.org/wiki/Delphi_(IDE) Дарахвелидзе, П.Г. Программирование в Delphi 7 / Дарахвелидзе П.Г., Марков Е.П. - СПб.: БХВ-Петербург. - 2004. Моисеенко С.И. Разработка приложений в 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. |