|
||||||||||||
|
||||||||||||
|
|||||||||
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Розробка засобами Delphi дидактичного ілюстративного матеріалу для розв’язання задачі з аналітичної геометрРозробка засобами Delphi дидактичного ілюстративного матеріалу для розв’язання задачі з аналітичної геометр59 МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ УКРАЇНСЬКА ІНЖЕНЕРНО-ПЕДАГОГІЧНА АКАДЕМІЯ Гірничий факультет Кафедра інформаційних технологій ПОЯСНЮВАЛЬНА ЗАПИСКА ДО КУРСОВОГО ПРОЕКТУ НА ТЕМУ: «Розробка засобами Delphi дидактичного ілюстративного матеріалу для розв'язання задачі з аналітичної геометрії. По введеним вершинам чотирьохкутника визначити, в якому відношенні його діагональ АС ділить діагональ BD» з дисципліни «Прикладне програмування» Студент (Гостілов О.С.) Керівник проекту (Єфремова О.В.) м. Стаханов 2009 р УІПА, гірничий факультет Кафедра інформаційних технологій Дисципліна “Прикладне програмування” Спеціальність 6.01010036 Курс 2. Група ДГ-К7- 1. Семестр 4 ЗАВДАННЯ на курсовий проект студента Гостілов Олександр Сергійович (прізвище, ім'я, по батькові) 1. Тема проекту «Розробка засобами Delphi дидактичного ілюстративного матеріалу для розв'язання задачі з аналітичної геометрії. По введеним вершинам чотирьохкутника визначити, в якому відношенні його діагональ АС ділить діагональ BD» 2. Термін здачі студентом закінченого проекту до 25 травня 2009 р. 3. Вихідні дані до проекту Середовище програмування Delphi 7, бібліотека VCL. Діапазон значень на координатних осях , . 4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити): Вступ, з обов'язковим посиланням на літературу, в якій вказується актуальність і ефективність програмування в середовищі Delphi 7. Умова задачі, її аналітичне розв'язання в загальному вигляді з обов'язковим посиланням на літературу. Розв'язання задачі для самостійно заданих початкових даних з врахуванням градуювання осей координат. Програмування в консольному режимі, отримання результату. Сценарій проекту розв'язання задачі в Delphi. Програмна реалізація. Алгоритми процедур. Інтерфейс проекту обов'язково повинен включати вікна для графічного розв'язання задачі з контролем введення початкових даних та контролем можливості повного графічного відображення результату; вікно з описом аналітичного розв'язання задачі в загальному вигляді; вікно з даними автора проекту. Тестування проекту для тих даних, що використовувалися в консольному режимі. Опис інтерфейсу з екранними копіями. Висновки з обов'язковим переліком кількісних даних, що характеризують результати розробки. Використані джерела. Додатки. 5. Перелік графічного матеріалу (з точним зазначенням обов'язкових креслень) Сторінки формату А4 зі схемами алгоритмів окремих процедур. 6. Дата видачі завдання 2 лютого 2009 р. КАЛЕНДАРНИЙ ПЛАН
Студент _____________ Керівник _____________ Єфремова Оксана Володимирівна 2 лютого 2009 р. Зміст
Рисунок 1 - Чотирьохкутник Чотирьохкутник позначається вказівкою його вершин, при чому вершини, що стоять в позначенні поруч, повинні лежати на одній стороні. Сторонами чотирьохкутника є відрізки AB, ВС, СD та DА, вершинами -- точки А, В, С та D, кутами --А, В, С та D. Сторони AB та BC є сусідніми сторонами, а кути В та С -- сусідніми кутами. Сторони АВ та СD -- протилежні. Відрізок АС (та BD) називається діагоналлю даного чотирьохкутника, так як містить дві протилежні вершини. 1.2.2 ФормулиПо-перше, знайдемо значення за допомогою визначників: (1)Рівняння прямої для діагоналей АС та BD:; (2); ; .; (3); ; .Рівняння прямої, що проходить через точки А та С: (4)та B та D: (5)Щоб знайти точку перетину діагоналей запишемо рівняння (4) та (5) у систему: (6)Вирішимо систему через визначення.; ; ; ; ; (7)Точка перетину діагоналей О має такі координати: .Знаходимо довжину повної діагоналі BD:; (8)довжину OD:; (9)та довжину OB:(10)Тепер знайдемо відношення OB та OD:; .(11)1.3 Розв'язання задачі для самостійно заданих початкових данихЗадачаПо введеним вершинам чотирьохкутника визначити, в якому відношенні його діагональ АС ділить діагональ BD.Дано:Знайти: Відношення OB до OD.Рішення:Значення за допомогою визначників (1).Знаходимо рівняння прямої для діагоналей АС та BD (формули (2) та (3)):; ;; ; ; ;. .Рівняння прямої, що проходить через точки А та С (4):;та B та D (5):.Щоб знайти точку перетину діагоналей запишемо ці два рівняння у систему (6):.Вирішимо систему через визначники (7):; ; .; .Точка перетину діагоналей О має такі координати: .Знаходимо довжину повної діагоналі BD (8):;довжину OD (9):;та довжину OB (10):.Тепер знайдемо відношення OB та OD (11):; .Відповідь: діагональ АС ділить діагональ BD з відношенням 75% до 25%.2 Сценарій розв'язання задачі в Delphi 2.1 Програмування в консольному режимі 2.1.1 Блок-схема алгоритму2.1.2 Код додаткуprogram Project1;{$APPTYPE CONSOLE}usesSysUtils;varx0,y0:integer;xa,ya,xb,yb,xc,yc,xd,yd:real;OB,OD,D,BD:real;X1,Y1,X2,Y2,Z1,Z2,xO,yO:real;OBP,ODP:integer;beginwriteln('vvedite vershihy chetyrehugolnika');readln(xa,ya,xb,yb,xc,yc,xd,yd);X1:=yC-yA;Y1:=xA-xC;Z1:=xA*yC-xC*yA;X2:=yD-yB;Y2:=xB-xD;Z2:=xB*yD-xD*yB;D:=X1*Y2-Y1*X2;xO:=(Z1*Y2-Y1*Z2)/D;yO:=(X1*Z2-Z1*X2)/D;OB:=sqrt(sqr(xO-xB)+sqr(yO-yB));OD:=sqrt(sqr(xO-xD)+sqr(yO-yD));BD:=sqrt(sqr(xB-xD)+sqr(yB-yD));OBP:=round(OB*(100/BD));ODP:=100-OBP;writeln('Dlina OB: ',OB:4:2);writeln('Dlina OD: ',OD:4:2);writeln('Otnoshenie: ',OBP,'/',ODP);readln;end.2.1.3 Реакція ЕОМРисунок 2 - Реакція ЕОМ 2.2 Компоненти форми та їх властивості Створюючи дану програму я використовував різноманітні компоненти, такі як: Edit, Label, Button, GroupBox, CheckBox, PaintBox, ColorBox, ComboBox, Timer, MainMenu та OleContainer. Таблиця 1 - Загальна характеристика компонентів:
Рисунок 3 - Компонент GroupBox та CheckBox на ньому CheckBox -- це перемикач, що використовується для установки параметрів, що характеризуються двома значеннями: "Так" і "Ні" (True и False). Звичайно перемикач має два стана: увімкнений та вимкнений. Поточний стан визначається значенням властивості Checked. Якщо воно дорівнює значенню True, то перемикач увімкнений, інакше -- вимкнений. Буває, що перемикач має ще й третій стан -- невизначений (grayed). У цьому стані перемикач замальовується сірим кольором. Характерні властивості цього компоненту: - Alignment (визначає, з якої сторони від перемикача знаходиться текст: taRightJustify -- праворуч, taLeftJustify -- зліва); - AllowGrayed (якщо дорівнює True, то перемикач має три стана); - Caption (текст поруч із перемикачем); - Checked (визначає, чи увімкнений перемикач); 2.2.5 PaintBox Компонент PaintBox використовується для малювання не на всій формі, а у обмеженому прямокутнику. Цей компонент розміщається на формі у вигляді прозорого пунктирного квадрату, і в його межах можна малювати. Малювання виконується звертанням до властивості Canvas (графічна канва) цього компоненту: PaintBox1.Canvas. У нього, в свою чергу, є властивість Pixels (PaintBox1.Canvas.Pixels), яке представляє собою матрицю, двомірний масив заданого розміру -- поточений образ канви, де кожен елемент -- окрема точка. У Pixels[] відлік точок (пік селів екрану) починається з 0. Координати x та y відраховуються від верхнього лівого кута, тобто він вважається за точку з координатами (0, 0). Для конкретної точки вказується колір. Функція RGB() формує клір комбінацією інтенсивності червоного, зеленого та синього (інтенсивність задається числом від 0 до 255). Наприклад: чорний -- RGB(0,0,0), червоний -- RGB (255,0,0), синій -- RGB(0,0,255), білий -- RGB (255,255,255) [9]. 2.2.6 ComboBox та ColorBoxКомпоненти ComboBox та ColorBox забезпечують вибір із списку. ComboBox відображає списки рядків, ColorBox -- список кольорів. ComboBox дозволяє також редагувати дані та відображати список як у розгорнутому вигляді, так і у вигляді випадаючого вікна, що звичайно зручніше, так як це заощаджує площу вікна додатку. Основна властивість компоненту, що містить список рядків, -- Items, що має тип TStrings. Заповнити його під час проектування можна, натиснувши на кнопку з багатокрапкою біля цієї властивості у вікні Інспектора Об'єктів. Стиль зображення цього компоненту визначається властивістю Style, що може приймати наступні основні значення [4]: – csDropDown (випадаючий список з рядками однакової висоти та вікном редагування, що дозволяє користувачеві вводити або редагувати); – csSimple (розгорнутий список з рядками однакової висоти та з вікном редагування, що дозволяє користувачеві вводити або виводити текст); – csDropDownList (випадаючий список з рядками однакової висоти, що не містить вікна редагування). Вибір користувача або введений текс можна визначити по значенню властивості Text. Якщо ж треба визначити індекс елементу списку, що вибраний користувачем, то можна скористатися властивістю ItemIndex. Якщо початкове значення не задано, то у момент запуску додатку користувач не побачить у вікні компоненту одне із можливих значень. Властивість MaxLength визначає максимальну кількість символів, які користувач може ввести у вікно редагування. Якщо MaxLength = 0, то кількість символів, що вводиться, не обмежено. Властивість Sorted дозволяє впорядкувати список за абеткою. При Sorted= true нові рядки у список додаються не у кінець, а за абеткою. 2.2.7 TimerКомпонент Timer дозволяє задавати у додатку інтервали часу. Таймер знаходить численне застосування у: синхронізації мультиплікації, закритті деяких вікон, з якими користувач довгий час не працює, увімкнення хранителя екрану, завдання часу на відповідь у навчальних програмах -- все це безліч задач, в яких вимагається задавати інтервали часу, вирішується за допомогою таймеру. Таймер -- це не візуальний компонент, який може розміщуватись у будь-якому місці форми. Він має дві властивості, що дозволяють їм керувати: Interval -- інтервал часу у мілісекундах та Enabled -- доступність. Властивість Interval задає період спрацьовування таймеру. Через заданий інтервал часу таймер спрацьовує, викликаючи подію OnTimer. В обробнику цієї події записуються необхідні операції. Якщо необхідно у деякій процедурі запустити таймер, що відлічив би заданий інтервал, наприклад, 5 секунд, після чого треба виконати деякі операції та вимкнути таймер, це можна зробити наступним чином. При проектуванні таймер робиться доступним (Enabled = true), але властивість Interval задається порівнюваним 0. Таймер не буде працювати, доки у момент, коли треба запустити таймер, не буде виконатися оператор [7]. Timer1.Interval:= 5000; Через 5 секунд після цього наступить подія OnTimer. В її обробнику треба задати оператор, що відключить таймер, після чого можна виконувати необхідні операції: Timer1.Interval:= 0; Таймер точно витримує задані інтервали Interval, якщо вони достатньо великі -- сотні та тисячі мілісекунд. Якщо ж задавати інтервали довжиною десятки або одиниці мілісекунд, то реальні інтервали часу виявляються знатно більше внаслідок різноманітних накладних витрат, що пов'язані із викликами функцій та іншими обчислювальними аспект. 2.2.8 MainMenuМеню -- це не візуальний компонент, який у додатку представляє собою список об'єднаних за функціональною ознакою пунктів, кожен із яких визначає команду або вкладене меню (підменю). Вибір пункту меню відповідає виконанню заданої команди або розкриттю підменю.Існує два виду меню [5]:– головне меню (MainMenu) -- компонент, призначений для керування працею усього додатку. При роботі додатку воно розташовується у верхні частині форми під заголовком та містить найбільш загальні команди роботи;– спливаюче меню (PopupMenu) -- може визначатися для будь-якого об'єкту. Воно також містить команди, але вони, як правило, відносяться до відповідного об'єкту. У додатку спливаюче меню викликається натисканням по правій кнопці миші у момент, коли вказівник миші наведений на відповідний об'єкт. Таке меню ще називається контекстним, оскільки до нього входять ті команди, які можна виконувати над конкретним об'єктом у конкретний час.Оскільки меню -- не візуальні компоненти, то вони можуть розміщуватись у будь-якому зручному для програміста місці форми. Для створення та зміни пунктів меню у процесі розробки додатку призначений Конструктор Меню (Menu Designer).Усі пункти меню мають однакові властивості, які відображаються у Інспекторі Об'єктів. Наприклад, властивості Name та Caption. Властивість ShortCut може задавати «гарячі клавіші» для команди, що відповідає пункту. Якщо властивість Caption задати як « - » (тире), то в меню з'явиться розділова горизонтальна риса.Для кожного пункту меню повинен бути заданий метод, що визначає дії, які виконуються у відповідь на подію вибору відповідного пункту. Щоб задати такий метод, треба запустити Конструктор меню та виконати подвійне натискання по необхідному пункту.2.2.9 OLEContainerАбревіатура OLE означає Objects Linked and Embedded (приєднання та вбудовані об'єкти). OLE є подальшим розвитком ідеї поділюваних між додатками даних. OLE дозволяє легко вмонтувати в додаток обробку будь-яких типів даних. Кожен раз, коли в програмі-клієнті користувач звертається до OLE-об'єкту з метою перегляду або редагування даних (зазвичай подвійного клацання мишкою на об'єкті), запускається додаток-сервер, в якому і відбувається робота з даними [2]. Як випливає з назви, OLE-об'єкти можна або приєднати до OLE-контейнера, або включити до нього. У першому випадку дані будуть зберігатися в файлі на диску; будь-який додаток буде мати доступ до цих даних і зможе вносити зміни. У другому випадку дані включаються в OLE-контейнер, і тільки він зможе переглядати і модифікувати ці дані. Вибрати OLE-сервер можна, двічі натиснувши на компоненті (див. Рисунок 6). Рисунок 4 - Вибір OLE-сервера У цьому діалозі є список всіх зареєстрованих в системі OLE-серверів. Тип OLE-об'єкту визначається як раз тим сервером, який Ви вкажете. Якщо Ви створите новий об'єкт (Create New), то при натисканні на кнопку OK запуститься програма OLE-сервера, в якій і формується новий об'єкт. Також OLE-об'єкт можна створити, використовуючи вже існуючий файл у форматі одного з OLE-серверів. Для цього потрібно вибрати пункт Create from File (див. Рисунок 7). Рисунок 5 -- Створення із файлу Обраний об'єкт можна як включити до програми, так і приєднати, відзначивши пункт Link. Якщо під час дизайну Ви обираєте об'єкт для включення в OLE-контейнер, то він повністю записується у файл форми (formName.dfm) і в подальшому прикомпілюється до .exe файлу. У випадку дуже великих об'єктів це може призвести до тривалих пауз і навіть до виникнення помилки "Out of resource". Тому рекомендується великі об'єкти робити приєднаними (linked). 2.3 Алгоритми процедур Блок-схема алгоритму процедури графічної побудови: 2.4 Програмний код додатку Головна форма: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ExtCtrls, StdCtrls; type TForm1 = class(TForm) GroupBox1: TGroupBox; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; GroupBox2: TGroupBox; PaintBox1: TPaintBox; MainMenu1: TMainMenu; N1: TMenuItem; Button1: TButton; GroupBox3: TGroupBox; ColorBox1: TColorBox; Label6: TLabel; Label5: TLabel; CheckBox1: TCheckBox; Label7: TLabel; Button2: TButton; Label8: TLabel; ColorBox2: TColorBox; Label9: TLabel; CheckBox2: TCheckBox; Label10: TLabel; CheckBox3: TCheckBox; Label11: TLabel; ColorBox3: TColorBox; Label12: TLabel; Label13: TLabel; ColorBox4: TColorBox; ComboBox1: TComboBox; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; Bycnherwbz1: TMenuItem; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure ColorBox1Change(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure ColorBox2Change(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure CheckBox3Click(Sender: TObject); procedure ColorBox3Change(Sender: TObject); procedure ColorBox4Change(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure N2Click(Sender: TObject); procedure Activate(Sender: TObject); procedure N3Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure Bycnherwbz1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; x0,y0:integer; xe,ye:integer; x,y:real; dx,dy:real; Mx,My:real; xmin,xmax,ymin,ymax:integer; a1,a2,b1,b2:integer; xa,ya,xb,yb,xc,yc,xd,yd:real; v,c,c1:integer; OB,OD,D,BD:real; xn,yn,xn1,yn1:Real; X1,Y1,X2,Y2,Z1,Z2,xO,yO:real; w:integer; vis:integer; OBP,ODP:integer; implementation uses Unit3, Unit2, Unit4, Unit5, Unit6; {$R *.dfm} function ekrX(x:real):integer; //Преобразование X begin ekrX:=round(mx*(x-xmin)+a1); end; function ekrY(y:real):integer; //Преобразование Y begin ekrY:=round(my*(-y+ymax)+b1); end; procedure TForm1.Activate(Sender: TObject); begin if vis<>1 then begin Form2.ShowModal; end; End; procedure TForm1.FormCreate(Sender: TObject); begin xmin:=-4; xmax:=4; ymin:=-4; ymax:=4; a1:=10; a2:=410; b1:=10; b2:=410; dx:=1; dy:=1; with PaintBox1.Canvas do begin Brush.Color:=clWhite; Rectangle(-1,-1,PaintBox1.Width+1,PaintBox1.Height+1); Pen.width:=1; Pen.Color:=clBlack; Mx:=round((a2-a1)/(xmax-xmin)); My:=round((b2-b1)/(ymax-ymin)); x0:=a1-round(mx)*xmin; y0:=b1+round(my)*ymax; Pen.width:=1; Pen.Style:=psDot; Pen.Color:=Colorbox2.Selected;; Font.Color:=Colorbox3.Selected; if checkbox3.checked=true then begin TextOut(a2-10,y0-15,'X'); TextOut(x0+5,b1+5,'Y'); TextOut(x0+5,y0-18,'0'); end; x:=xmin; repeat Xe:=round(mx*(x-xmin)+a1); if Checkbox1.Checked=true then begin MoveTo(xe,b1);LineTo(xe,b2); end; if checkbox3.checked=true then begin if x<>0 then textOut(xe-5,y0+5,FloatToStr(x)); end; x:=x+dx; until(x>xmax); y:=ymin; repeat Ye:=round(my*(-y+ymax)+b1); if Checkbox1.Checked=true then begin MoveTo(a1,ye);LineTo(a2,ye); end; if checkbox3.checked=true then begin if y<>0 then textOut(x0-20,ye-5,FloatToStr(y)); end; y:=y+dy; until(y>ymax); Font.Color:=clBlack; If Checkbox2.Checked=true then begin Pen.Width:=2; Pen.Color:=Colorbox1.Selected;; Pen.Style:=psSolid; MoveTo(a1,y0); LineTo(a2,y0); MoveTo(x0,b1); LineTo(x0,b2); end; If v=1 then begin X1:=yC-yA;Y1:=xA-xC; Z1:=xA*yC-xC*yA; X2:=yD-yB;Y2:=xB-xD; Z2:=xB*yD-xD*yB; D:=X1*Y2-Y1*X2; If D<>0 then begin xO:=(Z1*Y2-Y1*Z2)/D; yO:=(X1*Z2-Z1*X2)/D; OB:=sqrt(sqr(xO-xB)+sqr(yO-yB)); OD:=sqrt(sqr(xO-xD)+sqr(yO-yD)); BD:=sqrt(sqr(xB-xD)+sqr(yB-yD)); OBP:=round(OB*(100/BD)); ODP:=100-OBP; label5.Caption:='OB='+FloatToStrF(OB,fffixed,4,2)+' '+IntToStr(OBP)+'%'+#13 +'OD='+FloatToStrF(OD,fffixed,4,2)+' '+intToStr(ODP)+'%'; Font.Color:=clRed; textOut(ekrX(xO)+6,ekrY(yO)-6,'O'); end else begin label5.Caption:=''; ShowMessage('Исправте координаты точек'); end; Case Combobox1.ItemIndex of 0:w:=1; 1:w:=2; end; Pen.Width:=w; Pen.Style:=psSolid; Pen.Color:=Colorbox4.Selected; MoveTo(ekrX(xa),ekrY(ya)); LineTo(ekrX(xb),ekrY(yb)); LineTo(ekrX(xc),ekrY(yc)); LineTo(ekrX(xd),ekrY(yd)); LineTo(ekrX(xa),ekrY(ya)); Pen.Width:=1;Pen.Style:=psDot; LineTo(ekrX(xc),ekrY(yc)); MoveTo(ekrX(xb),ekrY(yb)); LineTo(ekrX(xd),ekrY(yd)); Font.Color:=clRed; textOut(ekrX(xA)+6,ekrY(yA)+1,'A'); textOut(ekrX(xB)+6,ekrY(yB)+1,'B'); textOut(ekrX(xC)+6,ekrY(yC)+1,'C'); textOut(ekrX(xD)+6,ekrY(yD)+1,'D'); Font.Color:=clBlack; Pen.Color:=clBlack; Pen.Width:=1; Pen.Style:=psSolid; Ellipse(ekrX(xA)-3,ekrY(yA)-3,ekrX(xA)+3,ekrY(yA)+3); Ellipse(ekrX(xB)-3,ekrY(yB)-3,ekrX(xB)+3,ekrY(yB)+3); Ellipse(ekrX(xC)-3,ekrY(yC)-3,ekrX(xC)+3,ekrY(yC)+3); Ellipse(ekrX(xD)-3,ekrY(yD)-3,ekrX(xD)+3,ekrY(yD)+3); end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin v:=1; xA:=StrToFloat(Edit1.Text); yA:=StrToFloat(Edit2.Text); xB:=StrToFloat(Edit3.Text); yB:=StrToFloat(Edit4.Text); xC:=StrToFloat(Edit5.Text); yC:=StrToFloat(Edit6.Text); xD:=StrToFloat(Edit7.Text); yD:=StrToFloat(Edit8.Text); c:=0; repeat begin case c of 0:begin Xn:=xA;Yn:=yA;end; 1:begin Xn:=xB;Yn:=yB;end; 2:begin Xn:=xC;Yn:=yC;end; 3:begin Xn:=xD;Yn:=yD;end; end; c1:=0; repeat begin case c1 of 0:begin Xn1:=xA;Yn1:=yA;end; 1:begin Xn1:=xB;Yn1:=yB;end; 2:begin Xn1:=xC;Yn1:=yC;end; 3:begin Xn1:=xD;Yn1:=yD;end; end; if c<>c1 then begin If Xn=Xn1 then begin if Yn=Yn1 then begin ShowMessage('Найдены были одинаковые координаты двух точек.'+#13+ 'Пожалуйста откорректируйте введенные координаты.',); c:=4;c1:=4;v:=0; end; end; end; end; If (Xn<xmin) or (Xn>xmax) or (Yn<Ymin) or (Yn>Ymax) then begin c:=4;c1:=4;v:=0; ShowMessage('Одна из введенных точек выходит'+#13+'за пределы координатной плоскости'); end; c1:=c1+1; until(c1>3); end; c:=c+1; until(c>3); paintbox1.Repaint; end; procedure TForm1.ColorBox1Change(Sender: TObject); begin Paintbox1.Repaint; end; procedure TForm1.CheckBox1Click(Sender: TObject); begin Paintbox1.Repaint; end; procedure TForm1.Button2Click(Sender: TObject); begin v:=0; label5.Caption:=''; Paintbox1.Repaint; end; procedure TForm1.ColorBox2Change(Sender: TObject); begin Paintbox1.Repaint; end; procedure TForm1.CheckBox2Click(Sender: TObject); begin Paintbox1.Repaint; end; procedure TForm1.CheckBox3Click(Sender: TObject); begin Paintbox1.Repaint; end; procedure TForm1.ColorBox3Change(Sender: TObject); begin Paintbox1.Repaint; end; procedure TForm1.ColorBox4Change(Sender: TObject); begin Paintbox1.Repaint; end; procedure TForm1.ComboBox1Change(Sender: TObject); begin PaintBox1.Repaint; end; procedure TForm1.N2Click(Sender: TObject); begin Form3.ShowModal; end; procedure TForm1.N3Click(Sender: TObject); begin Form4.ShowModal; end; procedure TForm1.N4Click(Sender: TObject); begin Form5.ShowModal; end; procedure TForm1.Bycnherwbz1Click(Sender: TObject); begin Form6.ShowModal; end; end. Форма заставки: unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, OleCtnrs; type TForm2 = class(TForm) Timer1: TTimer; OleContainer1: TOleContainer; procedure Activate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation uses Unit1; {$R *.dfm} procedure TForm2.Activate(Sender: TObject); begin Timer1.Interval:=5000; Timer1.Enabled:=True; end; procedure TForm2.Timer1Timer(Sender: TObject); begin Form1.Visible:=True; vis:=1; Form2.Close; end; end. Форма «О программе»: unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtnrs; type TForm3 = class(TForm) OleContainer1: TOleContainer; private { Private declarations } public { Public declarations } end; var Form3: TForm3; implementation {$R *.dfm} end. Форма «Пример»: unit Unit4; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtnrs; type TForm4 = class(TForm) OleContainer1: TOleContainer; private { Private declarations } public { Public declarations } end; var Form4: TForm4; implementation {$R *.dfm} end. Форма «Аналитика»: unit Unit5; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtnrs; type TForm5 = class(TForm) OleContainer1: TOleContainer; private { Private declarations } public { Public declarations } end; var Form5: TForm5; implementation {$R *.dfm} end. Форма довідки: unit Unit6; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtnrs; type TForm6 = class(TForm) OleContainer1: TOleContainer; private { Private declarations } public { Public declarations } end; var Form6: TForm6; implementation {$R *.dfm} end. Код проекту: program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}, Unit3 in 'Unit3.pas' {Form3}, Unit4 in 'Unit4.pas' {Form4}, Unit5 in 'Unit5.pas' {Form5}, Unit6 in 'Unit6.pas' {Form6}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm3, Form3); Application.CreateForm(TForm4, Form4); Application.CreateForm(TForm5, Form5); Application.CreateForm(TForm6, Form6); Application.Run; end. 3 Опис інтерфейсу з екранними копіями3.1 Інтерфейс проектуЗапуск програми здійснюється подвійним натисканням на файл Project1.exe. При запуску програми перше, що відбувається, -- це презентація екранної заставки (Рисунок 6).Рисунок 6 - Екранна заставка Після завершення часу трансляції з'явиться головна форма (Рисунок 7). Рисунок 7 - Головна форма додатку Перш за все, слід ввести початкові дані, на підставі яких буде виконуватись обчислення. Вводяться вони у поля редагування поля «Начальные данные» (Рисунок 8). Рисунок 8 - Панель "Начальне данные" Введення цих даних обов'язково, бо без них неможливо розпочати роботу програми. Після заповнення цих полів можна розпочати власне саму графічну побудову рішення. Здійснюється це за допомогою кнопки «Рисовать» у нижній правій області форми. Поруч знаходиться кнопка «Стереть», за допомогою якої виконується очистка форми, а трохи вище -- панель «Результат», в якій після натискання на кнопку «Рисовать» відображається результат обчислення (Рисунок 9). Рисунок 9 - Панель "Результат" Зверху форми знаходиться панель «Настройка» (Рисунок 10), компоненти якої здійснюють налаштування інтерфейсу. Панель містить: – індикатори «Сетка», «Оси», «Оцифровка осей», що виконують регулювання відображення сітки, оцифровування осей та оцифровування осей відповідно (режим «відображати»/»не відображати»); – чотири випадаючих списка для регулювання кольорів на формі («Цвет сетки», «Цвет осей», «Цвет оцифровки», «Цвет рисунка»); – випадаючий список для регулювання товщини ліній («Толщина линий»). Рисунок 10 - Панель «Настройки» Підменю «Аналитическое» меню «Решение задач» познайомить користувача з аналітичними відомостями (Рисунок 12), а підменю «Пример» того ж меню надасть приклад математичного рішення (Рисунок 13). Рисунок 11 - «Решение задач» Рисунок 12 - Аналітичне рішення Рисунок 13 - Приклад рішення Меню «Инструкция» здійснює виклик довідки по користуванню додатком (Рисунок 14). Рисунок 14 - Інструкція користувача Відомості про автора можна побачити, натиснувши на меню «Об авторе» (Рисунок 15). Рисунок 15 - Про автора 3.2 Тестування проекту для тих даних, що використовувалися в консольному режимі Рисунок 16 - Приклад роботи програми ВисновкиДаний курсовий проект полягав у розробці дидактичного ілюстративного матеріалу в Delphi для визначення по введеним вершинам чотирьохкутника, в якому відношенні його діагональ АС ділить діагональ BD. Під час розробки додатку були вивчені теоретичні відомості з аналітичної геометрії, які згодом були застосовані у розробці.Аналізуючи отриманий результат, результат розробки можна вважати позитивним: програма зручна у використанні, інтерфейс додатку зручний та інтуїтивно зрозумілий, наявність функцій, які користувач може налаштувати під себе: ввімкнення та відключення відображення сітки, оцифровування, зміна кольорів.Таблица 1 - Файли проекту
Список використаних джерел 1. Інтернет-ресурс: http://expert.Delphi.int.ru/ (онлайн довідник по Delphi). 2. Інтернет-ресурс: http://www.delphiworld.narod.ru («Delphi World» -- статі про Delphi). 3. Інтернет-ресурс: http://ivt.kgpi.ru/. 4. Інтернет-ресурс: http://delhpi.mastak.ru. 5. Сухарёв М. В. Основы Delphi. Профессиональный подход -- СПб.: Наука и Техника, 2004. -- 600 с.: ил. 6. Коцюбинский А.О., Грошев С.В. Язык программирования Delphi 5 -- М.: «Издательство Триумф», 1999. -- 288 с. 7. Ильина Т.А. Программирование на Delphi 6 -- М.: Питер, 2000. -- 318 с. 8. Шапошников И. Delphi 5 -- М.: Санкт-Петербург, 2001. -- 203 с. 9. А.Я. Архангельский «Программирование в Delphi 6», Москва, ЗАО «Издательство БИНОМ», 2001 г., 1120 с. |
РЕКЛАМА
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА | ||
© 2010 |