Заключение
Проделав курсовую работу, я приобрёл навыки объектно-ориентированного программирования, а также изучил и освоил RAD(rapid application development) технологию - технологию быстрого создания приложений, используемую в среде C++ Builder.
Список использованной литературы
Джарод Холингвэрт, Дэн Баттерфилд, Боб Сворт, Джэйми Оллсоп C++Builder 5. Руководство разработчика.
Borland C++ Builder 5. Энциклопедия программиста. Калверт Ч., Рейсдорф К., "ДиаСофт" - 2001, 944 стр.
Приложение а
Приложение б
#include <vcl.h>
#pragma hdrstop
#include<math.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TColor Color1;// глобальный цвет
TPoint *points1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
CLR1->Hide();// скроем таблицу цветов
Str_A->Text = "50"; // начальные параметры для наших сторон
Str_B->Text = "80";
Str_C->Text = "60";
Image1->Canvas->Rectangle(-50,-50,800,400);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CLR_BUTTClick(TObject *Sender) // открытие закрытие меню цвета
{
if (!CLR1->Visible) {
CLR1->Show();
}
else {
CLR1->Hide();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DOITClick(TObject *Sender)
{
int wei,hei,sigh,rad,kol;
double shag;
int x1,y1;
Image1->Canvas->Pen->Color = Color1;
Image1->Canvas->Brush->Color = Color1; //заливка и контур цвета, выбранного нами ранее
int index = FigureList->ItemIndex; //выбор фигуры в листе
switch(index) {
case 0: //рисуем квадрат
wei = StrToInt(Str_A->Text);
if (wei/2<=314) {
Image1->Canvas->Rectangle(314-wei/2,193-wei/2, 314+wei/2,193+wei/2);
} else ShowMessage("Выход за пределы экрана.");
break;
case 1: //рисуем прямоугльник
wei = StrToInt(Str_A->Text); hei = StrToInt(Str_B->Text);
if (hei/2 <=193 && wei/2<=314) {
Image1->Canvas->Rectangle(314-wei/2,193-hei/2, 314+wei/2,193+hei/2);
} else ShowMessage("Выход за пределы экрана.");
break;
case 3:// рисуем круг
rad = StrToInt(Str_A->Text);
if (rad/2 <= 193) {
Image1->Canvas->Ellipse(314-rad/2,193-rad/2,314+rad/2,193+rad/2);
} else ShowMessage("Выход за пределы экрана.");
break;
case 4: //Рисоавние n-угольника
kol = StrToInt(Str_B->Text);
wei = StrToInt(Str_A->Text);
if (wei/2 <=193) {
shag = (2*3.14 )/ kol;
points1 = new TPoint[kol];
for (int i = 0; i < kol; i++) {
x1 = 314+(wei/2)*cos(i*shag);
y1 = 193+(wei/2)*sin(i*shag);
points1[i] = Point(x1,y1);
}
Image1->Canvas->Polygon(points1,kol-1);
delete []points1;
}
else ShowMessage("Выход за пределы экрана.");
break;
case 5: //Рисование эллипса
wei = StrToInt(Str_A->Text); hei = StrToInt(Str_B->Text);
if (hei/2 <=193 && wei/2<=314) {
Image1->Canvas->Ellipse(314-wei/2,193-hei/2, 314+wei/2,193+hei/2);
} else ShowMessage("Выход за пределы экрана.");
break;
case 2: //Рисование треугольника
int a,b,c;
a = StrToInt(Str_A->Text);
b = StrToInt(Str_B->Text);
c = StrToInt(Str_C->Text);
bool round = false;
if (a<b+c)
if (b<c+a) // тут проверка на существование треугольника
if (c<b+a)
round = true;
TPoint points[3];
int x1,x2,x,y,ka = -1,kb = 0;
if (round == false) ShowMessage("Невозможно");
else
{
x1 = 314-(a/2);
x2 = 314+(a/2); //создаем две точки для одной стороны
points[0] = Point(x1, 216);
points[1] = Point(x2, 216);
for (x = 1; x<=680; x++) //ищем третью точку по всему полю
{
for (y = 1;y<=380; y++)
{
ka =sqrt(pow((x-x1),2) + pow((y-216),2));
kb =sqrt(pow((x-x2),2) + pow((y-216),2)); //меряем расстояние
if (ka==b && kb==c)
{
break;
}
}
if (ka==b && kb==c)
{
break;
}
}
points[2] = Point(x,y);
if (x>=680 && y>=380) ShowMessage("Выход за пределы поля");
else
Image1->Canvas->Polygon(points, 2);
break;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FigureListChange(TObject *Sender)
{
int index = FigureList->ItemIndex;
switch(index) //здесь скрываются\показываются поля для ввода
{
case 0: //квадрат
Str_A->Show(); Str_B->Hide(); Str_C->Hide();
Lab_A->Show(); Lab_B->Hide(); Lab_C->Hide();
Lab_A->Caption = "Сторона А";
break;
case 1: //прямоугольник
Str_A->Show(); Str_B->Show(); Str_C->Hide();
Lab_A->Show(); Lab_B->Show(); Lab_C->Hide();
Lab_A->Caption = "Сторона А"; Lab_B->Caption = "Сторона B";
break;
case 2: //треуглоьник
Str_A->Show(); Str_B->Show(); Str_C->Show();
Lab_A->Show(); Lab_B->Show(); Lab_C->Show();
Lab_A->Caption = "Сторона А"; Lab_B->Caption = "Сторона B";
Lab_C->Caption = "Сторона C";
break;
case 3: //круг
Str_A->Show(); Str_B->Hide(); Str_C->Hide();
Lab_A->Show(); Lab_B->Hide(); Lab_C->Hide();
Lab_A->Caption = "Радиус";
break;
case 4: //н-угольник
Str_A->Show(); Str_B->Show(); Str_C->Hide();
Lab_A->Show(); Lab_B->Show(); Lab_C->Hide();
Lab_A->Caption = "Радиус"; Lab_B->Caption = "Количество";
break;
case 5: //эллипс
Str_A->Show(); Str_B->Show(); Str_C->Hide();
Lab_A->Show(); Lab_B->Show(); Lab_C->Hide();
Lab_A->Caption = "Радиус А"; Lab_B->Caption = "Радиус В";
break;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Clear_ButClick(TObject *Sender)
{
Image1->Canvas->Pen->Color = clWhite; //тут экран очищается. просто создается
Image1->Canvas->Brush->Color = clWhite; //большой прямоугльник на весь экран
Image1->Canvas->Rectangle(-50,-50,800,400);
}
//--------------------------------------------------
void __fastcall TForm1::CLR1Change(TObject *Sender)
{
Color1 = CLR1->Selected;
}
//---------------------------------------------------------------------------
