Uploaded by merkli ironman

Пояснительная записка

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
ЛУГАНСКОЙ НАРОДНОЙ РЕСПУБЛИКИ
ЛУГАНСКИЙ НАЦИОНАЛЬНЫЙ УНИВЕРСИТЕТ
ИМЕНИ ВЛАДИМИРА ДАЛЯ
Стахановский учебно-научный институт
горных и образовательных технологий
Кафедра информационных технологий
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
К КУРСОВОМУ ПРОЕКТУ НА ТЕМУ:
«Разработка средствами Delphi дидактического иллюстративного материала для
решения задачи по аналитической геометрии. Определение координат точки
при условии, что начало координатной оси перенесено в одну из заданных
точек»
по дисциплине «Прикладное и Web-программирование»
Студент
(Зинченко А.А. )
(подпись)
Руководитель проекта
(фамилия, инициалы)
(Карчевский В. П.)
(подпись)
г. Стаханов
2017 г.
(фамилия, инициалы)
Луганский Национальный государственный университет
имени Владимира Даля
СУНИГОТ
(наименование высшего учебного заведения)
Кафедра информационных технологий
Дисциплина “ Прикладное и Web-программирование”
Специальность 6.010104.06
Курс 3. Группа ЗГ-К4-1. Семестр 6. Вариант 12 с МУ
ЗАДАНИЕ
на курсовой проект студента
Зинченко Анатолия Анатольевича
(фамилия, имя, отчество)
1. Тема проекта: «Разработка средствами Delphi дидактического
иллюстративного материала для решения задачи по аналитической геометрии.
Нахождение координат точки при условии, что начало координатной оси
перенесено в одну из заданных точек».
2. Срок сдачи студентом законченного проекта
до 25 мая 2017 г.
3. Относительно некоторой системы координат точка А имеет координаты
x=+7 y=-5
Вычислить координаты этой же точки при условии, что начало координат
перенесено в одну из следующих точек:
О1 (+1; +3)
О2 (-4; +7)
О3 (+3; -9)
О4 (-1; -2)
О5 (+3; -5)
Графически проиллюстрировать решение на координатной плоскости.
Лист
6.010104 (06) ДГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
2
4. Содержание расчетно-пояснительной записки (перечень вопросов, которые
необходимо рассмотреть):
Введение, с обязательной ссылкой на литературу, в которой указывается
актуальность и эффективность программирования в среде разработки Delphi
Условие задачи, ее аналитическое решение в общем виде с обязательной
ссылкой на литературу.
Сценарий проекта решения задачи в Delphi. Программная реализация.
Алгоритмы процедур. Интерфейс проекта должен включать окна для
графического решений задачи с контролем ввода начальных данных и
контролем возможности полного графического отображения результата; окно с
описанием аналитического решения задачи в общем виде; окно с данным об
авторе проекта. Тестирование проекта для тех данных, которые использовались
в консольном режиме.
Описание интерфейса с экранными копиями.
Выводы с обязательным перечнем количественных данных, которые
характеризуют результаты разработки.
Использованные источники.
Приложения.
5. Перечень графического материала (с точным указанием обязательных
чертежей). Страницы формата А4 со схемами алгоритмов отдельных процедур.
Студент
______________
Зинченко А.А.
(подпись)
Руководитель_____________
Карчевский В.П.
(подпись)
6. Дата выдачи задания 26 января 2017 г.
КАЛЕНДАРНЫЙ ПЛАН
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
3
№
Наименование этапов
з/п
курсового проектирования
1. Вступление. Математическое решение
задачи.
2. Решение задачи в консольном режиме.
3. Разработка сценария проекта в Delphi,
алгоритмов процедур.
4. Программная
реализация
проекта.
Тестирование проекта, внесения в проект
необходимых изменений и дополнений.
5. Оформление
текста
объяснительной
записки : вступление, основной текст,
выводы, список источников и дополнения.
Представление проекта на проверку
руководителю.
6. Подготовка работы к защите.
7. Защита курсовой работы
Срок
выполнение
24.05
Примечания
Комиссия
РЕФЕРАТ
Курсовой проект: 35 с., 4 дополнения, 9 источников.
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
4
Объектом проектирования интегрированная среда разработки Delphi и
возможность ее использования для решения задачи из аналитической
геометрии.
Предметом проектирования является определение координат точки при
условии, что начало координатной оси перенесено в одну из заданных точек с
помощью программного обеспечения и умения проектирования программного
обеспечения такого рода.
Целью проектирования является разработка программного обеспечения
для определения координат точки при условии, что начало координатной оси
перенесено в одну из заданных точек.
Методы проектирования. Для решения поставленной цели применены:
общенаучные методы;
математические методы;
методы создания программных средств учебного назначения.
Практическая значимость проектирования:
Дан курсовой проект актуальный в самих разных областях. Во-первых, его
можно использовать в учебе. С помощью данного продукта можно наглядно
показать ученикам расположение точки координатной оси. Во-вторых, его
можно использовать для быстрых и качественных научных вычислений.
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
5
СОДЕРЖАНИЕ
ВСТУПЛЕНИЕ ......................................................................................................................................7
1 МАТЕМАТИЧЕСКОЕ РЕШЕНИЕ ЗАДАЧИ В ОБЩЕМ ВИДЕ .............................................9
2 УСЛОВИЕ ЗАДАЧИ, ЕЕ АНАЛИТИЧЕСКОЕ РЕШЕНИЕ В ОБЩЕМ ВИДЕ ..................10
3 РЕШЕНИЕ ЗАДАЧИ В ИНТЕГРИРОВАННОЙ СРЕДЕ РАЗРАБОТКИ DELPHI ...........11
3.1 Интерфейс проекта ................................................................................................................. 11
4 ОПИСАНИЕ РАБОТЫ С ПРОГРАММОЙ ................................................................................16
5 КОМПОНЕНТЫ И ИХ СВОЙСТВА ...........................................................................................20
ВЫВОДЫ ..............................................................................................................................................25
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ......................................................................26
ПРИЛОЖЕНИЕ 1................................................................................................................................27
ПРИЛОЖЕНИЕ 2................................................................................................................................28
ПРИЛОЖЕНИЕ 3................................................................................................................................35
ПРИЛОЖЕНИЕ 4................................................................................................................................36
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
6
ВСТУПЛЕНИЕ
В последнее время резко вырос интерес к программированию. Это связано
с развитием и внедрением в повседневную жизнь информационнокоммуникационных технологий. Если человек имеет дела с компьютером, то
рано или поздно у нее возникнет желание, а иногда и необходимость,
программировать.
Delphі 7 - могучая система визуального объектно-ориентированного
программирования, а также среда быстрой разработки, в которой как язык
программирования используется язык Delphі. С ее помощью, даже начинающие
программисты, могут создавать оконные интерфейсы, которые удовлетворяют
стандартам Wіndows, причем очень быстро. Спектр отраслей, в которых
возможное применение Delphі, достаточно широк: инженерные, офисные,
торговые и другие. Delphі является одним из самых распространенных средств
создания дополнений баз данных. Простота языка и эффективность (небольшие
размеры и большая производительность) создаваемых с его помощью программ
сделали Delphі незаменимым средством разработки дополнений для доступа к
базам данным.
Delphі используется для генерирования и печатания сложных отчетов баз
данных.
Delphі предоставляет возможность связываться из своего дополнения с
такими продуктами как Mіcrosoft Word, Excel и другие, используя их
возможность создавать могучие системы помощи.
Создания прикладных программ, или дополнений, Delphі выполняется в
интегрированной среде разработки ІDE (Іntegrated Development Envіronment).
ІDE служат для организации взаимодействия с программистом и содержит в
себе ряд окон, которые содержат разные управляющие элементы. С помощью
средств интегрированной среды разработчик может удобно проектировать
интерфейсную часть дополнению, а так же писать программный код и
связывать его с управляющими элементами. При этом вся работа по созданию
дополнения, включая налаживание, происходит в интегрированной среде
разработки.
Благодаря средствам визуальной разработки можно работать с объектами,
держа их перед глазами и получать результаты практически сразу. Способность
видеть объекты такими, которыми они появляются в ходе выполнения
программы, снимает необходимость проведения огромного количества
операций вручную, что характерно для работы в среде, которая не владеет
визуальными средствами, - вне зависимости от того, есть она объектноориентированной или нет. После того, как объект помещен в форму среды
визуального программирования, все его атрибуты сразу отображаются в виде
кода, который отвечает объекту как единице, которая выполняется в ходе
работы программы.
Система Delphi воплощает в себе лучшие достижения современной теории
программирования. Иногда говорят, что Delphi - это интегрирована среда для
разработки программ. Действительно, она сочетает в себе огромное количество
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
7
полезных инструментов и готовых компонентов, из которых, как дом из
кирпичиков, собираются проекты - пользователи программы. Delphi визуальная среда разработки программ. Это значит, что внешний вид каждой
программы (ее лицо«, или интерфейс) создается простым перемещением
составных элементов из некоторого набора.
Delphi - это комбинация нескольких важнейших технологий:
1) высокопроизводительный компилятор в машинный код;
2) объектно-ориентированная модель компонент;
3) визуальное (а следовательно, и скоростное) построение дополнений из
программных прототипов. Базовым языком программирования в Delphi служит
язык Object Pascal - объектно-ориентированный Паскаль.
Производительным ядром, из которого буйно разрослось зеленое дерево Delphi,
был старый и добрый язык программирования Turbo Pascal. Принципиальное
отличие систем программирования Delphi и Turbo Pascal (Turbo - Торговая
марка разработчика системы фирмы Borland International, Inc. (США))
заключается в использовании экранного режима монитора : Turbo Pascal
ориентирован на текстовый режим операционной системы DOS, a Delphi, как и
в Windows, - на графический. Тем не менее программы, написанные на языке
Turbo Pascal после небольшой настройки могут выполняться в среде Delphi.
Объектная ориентация Delphi здесь используется лишь постольку, поскольку
это необходимо для иллюстрации замысла учебного проекта, но главным
образом лишь для создания его оболочки из готовых программных заготовок объектов Delphi (ее компонентов).
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
8
1 МАТЕМАТИЧЕСКОЕ РЕШЕНИЕ ЗАДАЧИ В ОБЩЕМ ВИДЕ
y=b+Y
x=a+X
X=x-a
Y=y-b
а) X = 7 - 2 = 5
Y= -5 - 3 = - 8
г) X = 7 - (-1) = 8
Y = -5 - (-2) = -3
б) X = 7 - (-4) = 11
Y = -5 - 7 = 12
д) X = 7 - 3 = 4
Y = -5 - (-5) = 0
в) X = 7 - 3 = 4
Y = -5 - (-9) = 4
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
9
2 УСЛОВИЕ ЗАДАЧИ, ЕЕ АНАЛИТИЧЕСКОЕ РЕШЕНИЕ В
ОБЩЕМ ВИДЕ
1
2
3
Чертим эллипс по заданным параметрам.
Чертим линию по заданным параметрам.
Решаем систему уравнений, и приводим ее к виду квадратного
уравнения
4
5
Находим и проверяем дискриминант квадратного уравнения.
При положительном дискриминанте находим координаты двух точек
пересечения.
При нулевом дискриминанте находим одну точку пересечения.
При отрицательном дискриминанте точек пересечения нет.
6
7
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
10
3 РЕШЕНИЕ ЗАДАЧИ В ИНТЕГРИРОВАННОЙ СРЕДЕ
РАЗРАБОТКИ DELPHI
3.1 Интерфейс проекта
Процесс решения поставленного задания разбивается на 3 этапа, первый из
которых заключается в построении интерфейса пользователя на основе
экранных форм и визуальных объектов проектирования. Выполним разработку
экранных форм, которые будут показывать расположение введенной точки
относительно четырехугольника.
Форма заставки при загрузке
Создадим экранную форму Form2(Рис.3.1), которая будет отображаться
первой при запуске программы и являет собой заставку. Image1 - для вывода
рисунку заставки
Рисунок 3.1 – Форма заставки
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
11
Создание главной формы
При создании данной формы использовались такие компоненты как:
PaintBox, MainMenu, Edit, GroupBox, Button, CheckBox, Label (Рис. 3.2).
Главное меню обеспечивает доступ ко всем окнам приложения. Оно создано с
помощью компонента MainMenu. Для ввода координат точек применяется
компоненты Edit которые сгруппированы при помощи GroupBox, и кнопка
Button для расчета результата. С помощью компонентов CheckBox включается
сетка на координатной оси.
Рисунок 3.2 - Главная форма
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
12
Создание формы «Общее решение»
На форме используется компонент Image ,(Рис. 3.3), форма выводится без
контура и по центру экрана.
Рисунок 3.3 - форма «Общее решение»
Создание формы «Пример»
На форме используется компонент Image ,(Рис. 3.4) форма выводится без
контура и по центру экрана.
Рисунок 3.4 - форма «Пример»
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
13
Создание формы «Инструкция»
На форме используется компоненты Image ,(Рис. 3.5) форма выводится
без контура и по центру экрана.
Рисунок 3.5 - Инструкция
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
14
Создание формы «О программе»
На форме используется компоненты Image ,(Рис. 3.6) форма выводится
без контура и по центру экрана.
Рисунок 3.6– О программе
Создание формы «Об авторе»
На форме используется компоненты Image ,(Рис. 3.7) форма выводится
без контура и по центру экрана.
Рисунок 3.7 – Об авторе
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
15
4 ОПИСАНИЕ РАБОТЫ С ПРОГРАММОЙ
Разработанная программа являет собой файл с названием .exe размером
986 КБ. В программе определяется расположения точек пересечения линии и
эллипса (две точки, одна точка, ни одной точки). После запуска программы
появляется окно главной программы, с заданными начальными данными,
изображенное на рис 4.1.
Рисунок 4.1 - Главная форма программы
Для того чтобы произвести расчеты в данном
приложении нужно ввести исходные коэффициенты
уравнений A,B,C,D.
Для расчета точек пересечения необходимо нажать
кнопку «Расчитать».
Вывод точек реализован в компонент Label.
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
16
Еще можно использовать сетку на оси
координат. Для этого необходимо поставить
галочку напротив слова «Показать сетку».
В меню можно выбрать пункт «Общее решение» для информации по
аналитическому решению
Рисунок 4.2 – Общее решение
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
17
В меню также есть инструкция по работе с программой.
Рисунок 4.3 – Инструкция
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
18
Окно информации о разработчике
Рисунок 4.4 – Об авторе
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
19
5 КОМПОНЕНТЫ И ИХ СВОЙСТВА
Создавая данную программу я использовал различные компоненты: Edit,
Label, PaintBox, GroupBox, MainMenu, Button.
Таблица 5.1- общая характеристика компонентов
Компонент
Значок
Панель
компонентов
Button
(командная кнопка)
Standard
Edit
(окно
редактирования)
Standard
Label
(метка)
Standard
PaintBox
(окно для рисования)
System
GroupBox
(групповое окно)
Standard
MainMenu
(главное меню)
Standard
Описание
Используется для создания кнопок,
которыми пользователь выбирает
команды в приложении.
Отображения,
ввода
и
редактирования
однострочных
текстов.
Есть
возможность
оформления объемного бордюра.
Основное свойство - Text.
Отображение текста, не из-меняется
пользователем. Никакого оформления
текста не предусмотрено, кроме цвета
отметки и текста. Основное свойство
- Caption.
Используется для создания на форме
некоторой области, в которой можно
рисовать.
Есть контейнером, объединяет группу
связанных органов управления, таких,
как
Радиокнопка
RadioButton,
контрольные индикаторы Checkbox и
т.д.
Позволяет
конструировать
и
создавать полосу главного меню
формы
и
выпадающие
меню.
Компонент не визуальный.
5.1 Edit
В компоненте Edit вводимый текст содержится в свойстве Text. Это
свойство можно устанавливать в процессе проектирования или указывать
программно. Выравнивание текста, как это имеет место в отметках и панелях,
невозможно. Невозможно также реализовать перенос строк. Текст, который не
умещается по длине в окно, просто сдвигается, и пользователь может
перемещаться по нему с помощью курсора.
Свойство AutoSize в окнах редактирования автоматически подстраивает
под размер текста только высоту, но не ширину окна.
Окна редактирования обеспечены типовыми комбинациями «горячих»
клавиш: Ctrl-C - копирование выделенного текста в буфер обмена (команда
Copy), Ctrl X - вырезание выделенного текста в буфер (команда Cut) Ctrl-V вставка текста из буфера в позицию курсора ( команда Paste), Ctrl-Z - отмена
последней команды редактирования [10].
Edit можно использовать и просто как компоненты отображения текста.
Для этого нужно установить в true его свойство ReadOnly и целесообразно
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
20
установить AutoSelect в false. В этом случае пользователь не сможет изменять
отображаемый текст, и окно редактирования становится подобным отметкам.
При использовании окон редактирования для ввода, вывода и
редактирования чисел необходимо использовать функции взаимного
преобразования строк и чисел. Для вывода это функции FloatToStr и IntToStr.
При введении это функции StrToFloat - преобразование строки в значение с
плавающей запятой, и StrToInt - преобразование строки в целое значение.
Если вводимый текст не соответствует числу (например, содержит
недопустимые символы), то функции преобразования генерируют исключение
EConvertError. Поэтому в программе необходимо предусмотреть обработку
этого исключения. Например, если вы хотите, чтобы пользователь мог вводить
в окно редактирования Edit только цифры и символ точки, вы можете в
обработчик события OnKeyPress этого компонента вставить оператор [2]:
if not (Key in ['0'..'9', ',']) then Key := #0;
Этот оператор подменит все символы, кроме цифр и комы, нулевым
символом, который не будет занесен в текст окна Edit.
Свойство MaxLength определяет максимальную длину вводимого текста.
Если MaxLength = 0, то длина текста не ограничено. В противном случае
значение MaxLength указывает максимальное число символов, которое может
ввести пользователь.
5.2Label
Компонент Label используется для отображения различных надписей на
форме. Label - это отметки, специально предназначенные для отображения
текста.
Текст, отображаемый в компоненте, определяется значением свойства
Caption. Ее можно устанавливать в процессе проектирования или задавать и
изменять программно во время выполнения программы. Например [2]:
Label1.Caption:= 'Новый текст';
Если нужно отобразить числовую информацию, можно воспользоваться
функциями FloatToStr и IntToStr, что переводят соответственно числа с
плавающей запятой и цели в строку. Для формирования текста, состоит из
нескольких фрагментов, можно использовать операцию «+», которая для срок
означает их склеивания (конкатенацию). Например, если в программе есть
целый переменная I, отражает количество сотрудников некоторой организации,
то вывести в отметку Label1 информацию об этом можно оператором [2]:
Label1.Caption := 'Число сотрудников: '+IntToStr(I);
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
21
Цвет фона компонента определяется свойством Color, а цвет надписи свойством Font.
Для отметки Label цвет и шрифт - единственные доступные элементы
оформления надписи. Таким образом, с точки зрения оформления текста,
выводимого Label предоставляет минимальные возможности.
Размещение компонента на форме определяется, в частности, свойствами
Тор (координата верхнего края), Left (координата левого края), Height (высота)
и Width (ширина). Есть также свойства, определяющие изменение размера
компонента при изменении пользователем во время выполнения приложения
размеров окна. Это общие свойства всех оконных компонентов: Align
(выравнивание компонента по всей верхней, левой, правой, нижней части
контейнера или по его клиентской области), Anchors (привязка сторон
компонента к сторонам контейнера), Constraints (ограничения допустимых
изменений размеров).
Размер отметок Label определяется также свойством AutoSize. Если это
свойство установлено в true, то вертикальный и горизонтальный размеры
компонента определяются размером надписи. Если же AutoSize равно false, то
выравнивание текста внутри компонента определяется свойством Alignment,
которое позволяет выравнивать текст по левому краю, правому краю или по
центру клиентской области отметки.
В отметке Label есть свойство Wordwrap - допустимость переноса слов
длинной надписи, на новую строку. Чтобы такой перенос мог осуществляться,
нужно установить свойство WordWrap в true, свойство AutoSize в false (чтобы
размер компонента не определялся размером надписи) и сделать высоту
компонента такой, чтобы в нем могло поместиться несколько строк. Если
WordWrap не установлено в true при AutoSize, равной false, то длинный текст,
не умещается в рамке отметки, просто обрезается.
5.3 Button
Основное с точки зрения внешнего вида свойство кнопки - Caption
(надпись). В надписях кнопок можно предусматривать использование клавиш
быстрого доступа, выделяя для этого один из символов надписи. Перед
символом, который должен отвечать клавиши быстрого доступа, относится
символ амперсанта «&». Этот символ не появляется в надписи, а следующий за
ним символ оказывается подчеркнутым. Тогда пользователь может вместо
щелчка на кнопке нажать в любой момент клавиши Alt вместе с клавишей
выделенного символа.
Основное событие любой кнопки - OnClick, возникающее при нажатии на
нее. Именно в обработчик этого события записываются операторы, которые
должны выполняться при нажатии пользователя на кнопке. Кроме этого есть
еще ряд событий, связанных с различными манипуляциями клавишами и
кнопками мыши.
Свойство Cancel, если его установить в true, определяет, что нажатие
пользователем клавиши Esc будет эквивалентно нажатию на эту кнопку. Это
свойство целесообразно задавать равным true для кнопок «" Отменить "» в
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
22
различных диалоговых окнах, чтобы можно было выйти из диалога, нажав на
эту кнопку или нажав клавишу Esc.
Свойство Default, если его установить в true, определяет, что нажатие
пользователем клавиши ввода Enter будет эквивалентно нажатию на эту
кнопку, даже если эта кнопка в данный момент не находится в фокусе. Правда,
если в момент нажатия Enter в фокусе находится другая кнопка, то все-таки
сработает именно кнопка в фокусе.
5.4 PaintBox
Компонент PaintBox представляет собой некоторую ограниченную
поверхность с канвой, на которую можно заносить изображения. При этом
компонент PaintBox, собственно говоря, не дает ничего нового по сравнению с
рисованием на канве формы. Рисование на PaintBox вместо формы не имеет
никаких преимуществ, кроме как некоторого облегчения в расположении
одного или нескольких рисунков на площади окна.
5.5 GroupBox
GroupBox - это сама по себе пуста панель, назначение которой - служить
контейнером для других управляющих элементов, в частности для радиокнопок RadioButton.
Панель GroupBox не имеет таких широких возможностей задачи
различных стилей оформления, как Panel. Но она имеет встроенную рамку с
надписью, которая обычно используется для выделения на форме группы
функционально объединенных компонентов. Надпись этот определяется
свойством Caption. Никаких особых свойств панель GroupBox нет.
5.6 MainMenu
MainMenu - это не визуальный компонент, то есть место его размещения
на форме в процессе проектирования не имеет никакого значения для
пользователя - он все равно увидит не один компонент, а только меню,
сгенерированное им.
Обычно на форму помещается один компонент MainMenu. В этом случае
его имя автоматически заносится в свойство формы Menu. Но можно
разместить на форме и несколько компонентов MainMenu с различными
наборами разделов, соответствующих различным режимам работы программы.
В этом случае при проектировании свойства Menu формы предоставляется
ссылка на один из этих компонентов. А в процессе выполнения в нужные
моменты это свойство можно изменять, меняя соответственно состав главного
меню приложения.
Основное свойство компонента - Items. Его заполнение осуществляется с
помощью Конструктора Меню, которое вызывается двойным щелчком на
компоненте MainMenu или нажатием кнопки с многоточием рядом со
свойством Items в окне Инспектора Объектов. В результате откроется окно, вид
которого представлен на Рисунке 8. В этом окне вы можете спроектировать все
меню.
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
23
При работе в конструкторе меню новые разделы можно вводить,
располагая курсор в рамку из точек, обозначающих местоположение нового
раздела. Если при этом раздел был введен не на нужном вам месте, вы можете
отбуксировать его мышью туда, куда вам надо. Другой путь введения нового
раздела - использование контекстного меню, всплывающего при нажатии
правой кнопкой мыши. Если вы предварительно выделите какой-то раздел
меню и выберете из контекстного меню команду Insert, то рамка нового раздела
вставится перед раньше выделенным. Из контекстного меню вы можете
выполнить команду Create Submenu, что позволяет ввести подменю в
выделенный раздел.
Свойство Caption означает надпись раздела. Заполнение этого свойства
подчиняется тем же правилам, что и заполнения аналогичной свойства в
кнопках, включая использование символа амперсант ( «&») для обозначения
клавиш быстрого доступа. Если вы как значение Caption очередного раздела
введете символ минус "-", то вместо раздела в меню появится разделитель.
Свойство Name задает имя объекта, соответствующего раздела меню.
Очень полезно давать этим объектам осмысленные имена, иначе вы скоро
запутаетесь в ничего именах, ничего не говорят, типа N21. Куда понятнее
имена типа MFile, MOpen, MSave и т. Д.
Свойство Shortcut определяет клавиши быстрого доступа к меню «горячие» клавиши, с помощью которых пользователь, даже не заходя в меню,
может в любой момент вызвать выполнение процедуры, связанной с данным
разделом. Чтобы определить клавиши быстрого доступа, надо открыть
выпадающий список свойства Shortcut в окне Инспектора Объектов и выбрать в
нем нужную комбинацию клавиш. Эта комбинация появится в строке раздела
меню.
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
24
ВЫВОДЫ
Данный курсовой проект был выполнен в полном соответствии
поставленному заданию в среде DELPHІ 7.0. В ходе выполнения курсовой
работы была разработанная программа для определения точек пересечения
прямой и эллипса (две точки, одна точка, ни одной точки). В результате
выполнения данной курсовой работы я убедился в широких возможностях
языка программирования Object Pascal и среды проектирования Delphі 7, а
также закрепил практические навыки работы с этой средой.
Результаты представлены в виде сообщения о нахождении точек, а также
представлен наглядный график функций прямой и эллипса. Также есть
возможность настраивать сетку на форме. Пользователь может включить или
отключить сетку в зависимости от того, как ему более легко воспринимать
графическую информацию. Также есть проверка на корректность ввода данных
(запрет ввода букв).
Разработанная программа может применяться в учебном процессе при
изучении соответствующих тем из курса аналитической геометрии.
К объяснительной записке добавляется диск общим размером 3,7 Мб.
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
25
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Культин Н.Б. Основы программирования Delphi 7./ Н.Б. Культин - СПб.:
БХВ. Петербург, 2002. - 608с.: ил
2. Карчевский В.П. Прикладное программирование. Методические указания
к выполнению курсового проекта из дисциплины "Прикладное
программирование" для специальности 6.010100.36 "Профессиональная
учеба. Компьютерные технологии в управлении и учебе" ./ Карчевский
В.П., Єфремова О. В., Черная О. С. - Стаханов: ГФ УІПА, 2009. - 40 с.
3. Фаронов В.В. Turbo Pascal 7.0. Начальный курс./ Фаронов В.В. - М.:
Нолидж, 2000.
4. Фаронов В.В. "DELPHI. Программирование на языке высокого уровня". /
Фаронов В.В. - Питер, 2005.
5. Алферов, С.М., Программирование на языке высокого уровня: метод.
указания к лаборатор. работам / С.М. Алферов, Е.Н. Сафьянова. - Томск:
Томск. гос. ун-т систем управления и радиоэлектроники, 2007. - 72 с.
6. Вирт, Н. Алгоритмы + Структуры данных = программа - М.: Мир, 1985.
БФ, 1998. - 384с.
7. Бежанова, М. М. Практическое программирование: Приемы создания
программ на языке Паскаль: Учебное пособие для вузов/ М. М. Бежанова,
Лариса Анатольевна Москвина. - М.: Научный Мир, 2001. - 270 с.
8. Справочник из программирования Delphi. [Электронный ресурс] / Режим
доступа к ресурсу. http://expert.Delphi.int.ru
9. Кривые второго порядка [Электронный ресурс] / Режим доступа к
ресурсу. https://ru.wikiversity.org/wiki/Кривые_второго_порядка
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
26
ПРИЛОЖЕНИЕ 1
Блок-схема алгоритма процедуры главной формы
1
Начало
2
Ввод
исходных
данных
3
Расчет
дискриминан
та
4
Да
D > 0
Нет
5
7
Расчет точек
пересечения
Да
D = 0
Нет
8
8
6
Расчет точки
пересечения
Вывод точек
пересечения
10
Точек
пересечения
нет
9
8
Вывод точек
пересечения
Конец
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
27
ПРИЛОЖЕНИЕ 2
Код программы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ToolWin, ActnMan, ActnCtrls, ActnMenus, ExtCtrls, StdCtrls,
Menus, XPMan, Math, ShellApi;
type
TForm1 = class(TForm)
XPManifest1: TXPManifest;
MainMenu1: TMainMenu;
Button1: TButton;
PaintBox1: TPaintBox;
Label6: TLabel;
CheckBox1: TCheckBox;
GroupBox1: TGroupBox;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N4: TMenuItem;
N11: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure PaintBox1Paint(Sender: TObject);
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
28
procedure CheckBox1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Edit4KeyPress(Sender: TObject; var Key: Char);
procedure Edit4Click(Sender: TObject);
procedure Edit2Click(Sender: TObject);
procedure Edit3Click(Sender: TObject);
procedure Edit1Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N11Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
x0=300;y0=300;S=30;
var
Form1: TForm1;
i,x1,x2,y1,y2,a,b,c,d,x,y,OS_09,ofset9,band9:integer;
c1,d1,aD,bD,cD,discr,tx1,tx2,ty1,ty2,xline1,xline2,yline1,yline2,x9,x29,y9,ste
p9:real;
implementation
uses Unit2,Unit3,Unit4,Unit5,Unit6,Unit7;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
randomize;
a:=strtoint(Edit1.Text);
b:=strtoint(Edit2.Text);
c:=strtoint(Edit3.Text);
d:=strtoint(Edit4.Text);
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
29
aD:=d*sqr(b)+c*sqr(a);
bD:=-80*a*c;
cD:=c*1600-c*d*sqr(b);
discr:=sqr(bd)-4*ad*cd;
if discr>0 then begin
tx1:=(-bd+sqrt(discr))/(2*ad);
tx2:=(-bd-sqrt(discr))/(2*ad);
ty1:=(a*tx1-40)/b;
ty2:=(a*tx2-40)/b;
label6.Caption:='Точки
пересечения:'+#13+'P1('+floattostrf(tx1,ffFixed,10,2)+',
'+floattostrf(ty1,ffFixed,10,2)+')'+#13+'P2('+floattostrf(tx2,ffFixed,10,2)+',
'+floattostrf(ty2,ffFixed,10,2)+')';
end;
if discr=0 then begin
tx1:=-bd/(2*ad);
ty1:=(a*tx1-40)/b;
label6.Caption:='Точка
пересечения:'+#13+'P1('+floattostrf(tx1,ffFixed,10,2)+',
'+floattostrf(ty1,ffFixed,10,2)+')';
end;
if discr<0 then label6.Caption:='Точек пересечения нет.';
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
label
start1,start2;
begin
with PaintBox1.Canvas do
begin
Font.Size:=8;
Font.Style:=[fsItalic];
Brush.Color:=clWhite;
Rectangle(-1,-1,paintbox1.Width+3,paintbox1.Height+3);
Pen.Color:=clBlack;
TextOut(580,280,'X');
TextOut(310,10,'Y');
TextOut(305,280,'0');
x:=1;
for i:=-10 to 10 do begin
if i=0 then
begin
x:=x+10;
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
30
continue;
end;
TextOut(x,310,inttostr(i*3));
TextOut(275,x,inttostr(-i*3));
x:=x+S;
end;
Pen.Width:=2;
Pen.Color:=clRed;
Pen.Style:=psSolid;
MoveTo(0,x0); LineTo(x0*2,y0);
MoveTo(x0,0); LineTo(x0,y0*2);
Pen.Color:=clBlack;
Brush.Style:=bsClear;
Pen.Style:=psSolid;
Pen.Width:=1;
a:=strtoint(Edit1.Text);
b:=strtoint(Edit2.Text);
c:=strtoint(Edit3.Text);
d:=strtoint(Edit4.Text);
x1:=Round(-sqrt(c));
x2:=Round(sqrt(c));
y1:=Round(-sqrt(d));
y2:=Round(sqrt(d));
Ellipse((x1+x0)+x1*10,(y1+y0)+y1*10,(x2+x0)+x2*10,(y2+y0)+y2*10);
x9 := -30;
x29:= 30;
band9:= PaintBox1.Width;
ofset9:= (PaintBox1.Width - band9) div 2;
step9:= (x29-x9)/band9;
if x9 <= 0 then begin
OS_09:=Round ((band9 /(x29-x9))*abs(x9));
end;
for I:=1 to band9 do
begin
y9 := (a*x9-40)/b;
x9 := x9+step9;
if i=1 then MoveTo(i+ofset9, PaintBox1.Height-Round(y9*15)-y0);
if i=band9 then lineto(i+ofset9, PaintBox1.Height-Round(y9*15)-y0);
end;
end;
end;
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
31
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
PaintBox1.Repaint;
with PaintBox1.Canvas do begin
if CheckBox1.Checked=True then
begin
PaintBox1.Repaint;
Pen.Color:=clBlack;
Pen.Style:=psDot;
pen.Width:=1;
x:=S; y:=S;
while x<>x0*2 do begin
if x=x0 then
begin
x:=x+S; y:=y+S;
continue;
end;
MoveTo(0,y);LineTo(x0*2,y);
MoveTo(x,0);LineTo(x,y0*2);
x:=x+S; y:=y+S;
end;
end;
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
PaintBox1.Repaint;
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
PaintBox1.Repaint;
end;
procedure TForm1.Edit3Change(Sender: TObject);
begin
PaintBox1.Repaint;
end;
procedure TForm1.Edit4Change(Sender: TObject);
begin
PaintBox1.Repaint;
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
32
end;
procedure TForm1.N2Click(Sender: TObject);
begin
Halt;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
form3.ShowModal;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
form4.ShowModal;
end;
procedure TForm1.N9Click(Sender: TObject);
begin
form5.ShowModal;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', #8]) then Abort;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', #8]) then Abort;
end;
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', #8]) then Abort;
end;
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', #8]) then Abort;
end;
procedure TForm1.Edit4Click(Sender: TObject);
begin
Edit4.SelStart:=0;
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
33
Edit4.SelLength:=4;
Edit4.SetFocus;
end;
procedure TForm1.Edit2Click(Sender: TObject);
begin
Edit2.SelStart:=0;
Edit2.SelLength:=4;
Edit2.SetFocus;
end;
procedure TForm1.Edit3Click(Sender: TObject);
begin
Edit3.SelStart:=0;
Edit3.SelLength:=4;
Edit3.SetFocus;
end;
procedure TForm1.Edit1Click(Sender: TObject);
begin
Edit1.SelStart:=0;
Edit1.SelLength:=4;
Edit1.SetFocus;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
form6.ShowModal;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
form7.ShowModal;
end;
procedure TForm1.N11Click(Sender: TObject);
begin
ShellExecute(Handle, nil, 'term\Project2.exe ', nil,nil, Sw_ShowNormal);
end;
end.
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
34
ПРИЛОЖЕНИЕ 3
Таблица – Описание файлов проекта
№
п/п
Імя файла
Описание
Размер
1
Project2.cfg
файл конфигурации консольного приложения
1 КБ
2
Project2.dof
текущие параметры консольного приложения
2 КБ
3
Project2.dpr
файл проекта консольного приложения
2 КБ
4
Project2.exe
исполняемый файл консольного приложения
43 КБ
6
Project1.dof
текущие параметры проекта
2 КБ
7
Project1.dpr
файл проекта
1 КБ
8
Project1.exe
исполняемый файл проекта
9
Project1.res
Двоичный файл ресурсов программы
1 КБ
13
Unit2.dcu
скомпилированный код заставки
4 КБ
15
Unit2.dfm
описание компонентов формы заставки
16
Unit2.pas
исходный код заставки
17
Unit3.dcu
скомпилированный код заставки
18
Unit3.dfm
описание компонентов формы сведений об авторе
1 КБ
19
Unit3.pas
исходный код сведений об авторе
4 КБ
20
Unit4.dcu
скомпилированный код аналитическое решение
1 КБ
21
Unit4.dfm
описание компонентов формы общее решение
58 КБ
22
Unit4.pas
исходный код аналитическое решение
1 КБ
23
Unit5.dcu
скомпилированный код примера
4 КБ
24
Unit5.dfm
описание компонентов формы примера
86 КБ
25
Unit5.pas
исходный код примера
1 КБ
26
Unit6.dcu
скомпилированный код справки
4 КБ
27
Unit6.dfm
описание компонентов справки
216 КБ
28
Unit6.pas
исходный код справки
1 КБ
29
Unit1.dcu
скомпилированный код заставки
4 КБ
30
Unit1.dfm
описание компонентов формы заставки
310 КБ
31
Unit1.pas
исходный код заставки
9 КБ
987 КБ
3 165 КБ
4 КБ
310 КБ
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
35
ПРИЛОЖЕНИЕ 4
Код консольного приложения:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
a,b,c,d:integer;
ad,bd,cd,discr,tx1,tx2,ty1,ty2:real;
begin
writeln('Enter values A,B,C,D:');
readln(a,b,c,d);
aD:=d*sqr(b)+c*sqr(a);
bD:=-80*a*c;
cD:=c*1600-c*d*sqr(b);
discr:=sqr(bd)-4*ad*cd;
if discr>0 then begin
tx1:=(-bd+sqrt(discr))/(2*ad);
tx2:=(-bd-sqrt(discr))/(2*ad);
ty1:=(a*tx1-40)/b;
ty2:=(a*tx2-40)/b;
writeln('Points of intersection:');
writeln('P1(',tx1:5:2,', ',ty1:5:2,')');
writeln('P2(',tx2:5:2,', ',ty2:5:2,')');
end;
if discr=0 then begin
tx1:=-bd/(2*ad);
ty1:=(a*tx1-40)/b;
writeln('Point of intersection:');
writeln('P1(',tx1:5:2,', ',ty1:5:2,')');
end;
if discr<0 then writeln('Point of intersection not found.');
readln;
end.
Лист
6.010104 (06) ЗГ-ПО5-К
Змн. Лист
№ докум.
Подпись Дата
36
Download