Помощь в написании студенческих работ
Антистрессовый сервис

Построение графиков функций

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

В состав windows 7 вошли как некоторые разработки, исключённые из windows vista, так и новшества в интерфейсе и встроенных программах. из состава windows 7 были исключены игры inkball, ultimate extras; приложения, имеющие аналоги в windows live (почта windows, календарь windows и пр.), технология microsoft agent, windows meeting space; из меню «пуск» исчезла возможность вернуться к классическому… Читать ещё >

Построение графиков функций (реферат, курсовая, диплом, контрольная)

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

Программу может использовать любой пользователь. Программа очень проста в использовании.

Для написания данной программы я выбрал визуальную среду разработки Borland Delphi Eenterprise 7, так как этот язык наиболее подходит для решения поставленной задачи.

1. Постановка задачи

1.1 Описание предметной области

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

Программа должна соответствовать следующим требованиям:

— должен быть реализован простой и удобный пользовательский интерфейс;

— должен быть реализован просмотр постоянной информации;

Данная программа может использоваться всеми пользователями имеющими персональный компьютер.

1.2 Входная информация

К входной информации относятся данные, вводимые пользователем для изменения переменных функции.

1.3 Выходная информация

Выходной информацией является графическое отображение функции.

1.4 Описание алгоритма

Таблица — Блоки

Решение — блок выбора направления выполнения алгоритма в зависимости от некоторых условий. В результате проверки условия осуществляется выбор одного из нескольких возможных путей.

Решение — блок выбора направления выполнения алгоритма в зависимости от некоторых условий. В результате проверки условия осуществляется выбор одного из нескольких возможных путей.

Предопределенный процесс — блок описания процесса из одной или нескольких операций, описанных в отдельном модуле (самостоятельном алгоритме).

соединитель — указание связи между прерванными линиями потока, связывающими блоки.

терминатор — обозначает начало или конец алгоритма.

линия потока — отображает потоки данных и управления в алгоритме.

Данные — блок описания операции ввода / вывода данных, для которой не определено конкретное устройство.

После запуска программы на экране появится окно приветствия, через несколько секунд автоматически откроется главное окно программы.

В колонке «Выбор функции графика» находятся 9 функций графиков, выбрать можно только 1 функцию (по умолчанию выбрана первая функция). При нажатии на главном меню пункта «Перейти» открываются две кнопки:

— «Выбор функции графика» — заблокирован, так как мы находимся как раз в этой форме.

— «Построение графика» — дублирует кнопку «Далее».

При нажатии на главном меню пункта «Справка» открываются две кнопки:

— «Помощь» — Инструкция к программе (Быстрый вызов — F1).

— «О программе» — краткие сведения об авторе.

При нажатии на главном меню пункта «Выход» открывается окно «Завершить программу?». При нажатии «Да» происходит завершение программы; «Нет» — программа продолжает работу.

При нажатии кнопки «Далее» происходит переход на следующую форму.

На следующей форме, при нажатии на кнопку «Нарисовать» отображается слева ранее выбранная функция графика (по умолчанию первая). При нажатии кнопки «Выход» открывается окно «Завершить программу?». При нажатии «Да» происходит завершение программы; «Нет» — программа продолжает работу. В некоторых функциях можно ввести свои переменные, о чем свидетельствует появление полей ввода (на второй форме при выборе той или иной функции (на первой форме). При нажатии на кнопку «Функции графиков» происходит возврат на первую форму, где находится список всех рабочих функций.

2. Вычислительная система

2.1 Основные характеристики выбранного персонального компьютера

Платформа разработки:

— процессор: Intel® Core™ i3 CPU M 350 @2.27GHz 927 МГц;

— оперативная память: DDR-3, 3Gb;

— жесткий диск: HDD 300Gb;

— монитор;

— клавиатура;

— мышь;

Минимальные требования:

— процессор: Intel Pentium 500Hz;

— оперативная память: DDR-1, 64Мб;

— монитор, поддерживающий расширение экрана 1024×768;

— не менее 135 Мб свободного места на жестком диске;

— клавиатура;

— мышь;

— звуковая карта;

2.2 Характеристика программных средств

Операционная система Персональная электронно-вычислительная система должна быть обеспечена операционной системой MS Windows 2000/XP/Vista/Seven/8;

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

Версия windows 7 — операционная система семейства Windows NT, следующая за Windows Vista. В линейке Windows NT система носит номер версии 6.1 (windows 2000 — 5.0, windows xp — 5.1, windows server 2003 — 5.2, windows vista и windows server 2008 — 6.0). серверной версией является windows server 2008 r2, версией для интегрированных систем — windows embedded standard 2011 (quebec) [1], мобильной — windows embedded compact 2011 (chelan, windows ce 7.0).

Операционная система поступила в продажу 22 октября 2009 года, меньше чем через три года после выпуска предыдущей операционной системы, Windows Vista. Партнёрам и клиентам, обладающим лицензией Volume Licensing, доступ к RTM был предоставлен 24 июля 2009 года. Финальная (копия с дисков, которые потом пошли в продажу) пиратская версия была доступна всем с первых чисел августа 2009 года.

В состав windows 7 вошли как некоторые разработки, исключённые из windows vista, так и новшества в интерфейсе и встроенных программах. из состава windows 7 были исключены игры inkball, ultimate extras; приложения, имеющие аналоги в windows live (почта windows, календарь windows и пр.), технология microsoft agent, windows meeting space; из меню «пуск» исчезла возможность вернуться к классическому меню и автоматическая пристыковка браузера и клиента электронной почты.

Новая 11 версия DirectX, впервые выпущенная именно в составе этой операционной системы, имеет следующие улучшения: добавлена поддержка новых вычислительных шейдеров, возможность многопоточного рендеринга, улучшена тесселяция, появились новые алгоритмы компресии текстур и др.

В windows 7 реализована более гибкая настройка user account control (uac), которая в отличие от windows vista имеет ещё два промежуточных состояния между режимами «всегда уведомлять» и «никогда не уведомлять» — «уведомлять, только при попытках программ внести изменения в компьютер» (положение по умолчанию), «уведомлять, только при попытках программ внести изменения в компьютер (не затемнять рабочий стол)».

Стоит заметить, что в отличие от Vista, затемнение происходит только если программа активна и находится на переднем плане. Если вы совершили клик в момент открытия UAC и деактивировали программу, затемнения может и не произойти.

Улучшения коснулись и брандмауэра Windows — вернулась функция уведомления пользователя о блокировке программы, которая пытается получить доступ к сети.

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

Критика основывается на следующих аргументах:

— Результаты независимых тестов показывают, что приложения на Windows 7 работают немногим быстрее, чем на Vista и медленнее, чем на старой Windows XP.

— Низкая производительность системы, показанная в ряде независимых тестов, связана с усложнением ОС и, следовательно, более интенсивным использованием вычислительного ресурса, что в свою очередь может выражаться в увеличении потребления энергии и снижении времени работы батарей нетбуков до 30% по сравнению с Windows XP.

— windows 7 имеет такие же высокие системные требования, как и vista. так, рекомендованные microsoft аппаратные требования для нормальной работы windows 7 и vista составляют 1 гб озу и 16 гб свободного дискового пространства, в то время как для windows xp они составляют 128 мб озу и 1,5 гб на диске

— Однако не стоит забывать, что Windows XP вышла почти за десятилетие до Windows 7 и 128 мб ОЗУ по тем временам были высокими требованиями.

Система программирования

Borland Delphi — средство разработки приложений под Windows. Достоинство Delphi — это быстрый компилятор, большие возможности для работы с базами данных и большой набор компонентов. Простота, скорость и эффективность Delphi объясняют её популярность. Есть и другие достоинства: простота изучения Object Pascal; программы, написанные на Delphi, не требуется снабжать дополнительными библиотеками.

Для создания программы были использованы следующие вкладки: Standard, Additional, Win32, System, Internet.

3. Описание программы

3.1 Описание компонентов

В данной программе имеется 4 формы с различными компонентами. Ниже приводятся описания компонентов, которые используются в данной программе. Описание компонентов используемых в программе приведено в таблицах 1−4.

Таблица 1 — Form1

Компонент

Описание

MainMenu1

Главное меню программы

BitBtn1

Кнопка, открывает форму построения график

XpManifest

Менеджер тем

Label1

Служит для отображения текста на форме

Label2

Служит для отображения подсказкина форме

Label3

Служит для отображения текста на форме

RadioGroup1

Список функций графиков

Таблица 2 — Form3

Компонент

Описание

MainMenu1

Главное меню программы

BitBtn1

Кнопка, служит для прорисовки графика на Paintbox1

BitBtn3

Кнопка, служит для возвращения на форму 2

BitBtn4

Кнопка, служит для выхода из программы

LabeledEdit1

Служит для ввода первой переменной в формулу

LabeledEdit2

Служит для ввода первой переменной в формулу

LabeledEdit3

Служит для ввода первой переменной в формулу

UpDown1

Ассоциируется с LabeledEdit1

UpDown2

Ассоциируется с LabeledEdit2

UpDown3

Ассоциируется с LabeledEdit3

Label1

Служит для отображения текста на форме

Label2

Служит для отображения подсказки на форме

GroupBox1

Контейнер компонентов

Label3

Служит для отображения текста на форме

Таблица 3 — Form4

Компонент

Описание

Image1

Служит для хранения фонового изображения

Label1

Служит для отображения текста на форме

Label2

Служит для отображения текста на форме

Label3

Служит для отображения текста на форме

Label4

Служит для отображения текста на форме

MediaPlayer1

Компонент для проигрывания звуковых файлов

XpManifest

Менеджер тем

Timer1

Таймер

WebBrowser1

Окно браузера

Таблица 4 — Form5

Компонент

Описание

Image1

Служит для хранения изображения

Label1

Служит для отображения текста на форме

Label2

Служит для отображения текста на форме

Button1

Кнопка, закрывающая форму.

XPManifet

Менеджер тем

3.2 Интерфейс программы

Рисунок 1 — Окно загрузки программы «Построение графиков функций»

Окно загрузки программы «Построение графиков функций» представлено следующими компонентами: Image1, Label1, Label2, Label3, Label4, MediaPlayer1, XpManifest, Timer1, WebBrowser1.

Рисунок 2 — Окно «Выбор функции графика»

Окно «Выбор функции графика» представлено следующими компонентами: MainMenu1, BitBtn1, XpManifest, Label1, Label2, Label3, RadioGroup1.

Рисунок 3 — Окно «Ввод переменных и построение графика функции»

Окно «Ввод переменных и построение графика функции» представлено следующими компонентами: MainMenu1, BitBtn1, BitBtn3, BitBtn4, LabeledEdit1, LabeledEdit2, LabeledEdit3, UpDown1, UpDown2, UpDown3, Label1, Label2, Label3, GroupBox1.

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

Окно Окно «О программе» представлено следующими компонентами: Image1, Label1, Label2, Button1, XPManifet.

3.3 Описание модулей, процедур и функций

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

Таблица 5 — Модуль Form1

Процедура

Описание

procedure N4Click (Sender: TObject);

Переход к Построению графика (в главном меню)

procedure FormClose (Sender: TObject; var Action: TCloseAction);

Закрытие формы

procedure N5Click (Sender: TObject);

Выход

procedure FormActivate (Sender: TObject);

1) Центрирует окно

2) Кнопка «Выбор графика функции» в гл. меню отключена

3) LabeledEdit3 и UpDown3 на форме3 изначально скрыты (для корректного выбора по умолчанию)

4) Подсказка

procedure BitBtn1Click (Sender: TObject);

1) Переход к построению графика

2) Воспроизведение звука

procedure RadioGroup1Click (Sender: TObject);

Скрывает или показывает компоненты при выборе той или иной функции

procedure N7Click (Sender: TObject);

Вызов справки «О программе»

procedure FormKeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

Вызов справки F1

procedure N6Click (Sender: TObject);

Вызов справки в гл. меню

Таблица 6 — Модуль Form3

Процедура

Описание

procedure FormActivate (Sender: TObject);

1) Центрирует окно

2) Кнопка «Построение графика» в гл. меню отключена

procedure N2Click (Sender: TObject);

1) Возврат к Выбору типа графика функции в гл. меню

2) Строка, показывающая корректную формулу, сбрасывается

procedure N5Click (Sender: TObject);

Выход в гл. меню меню

procedure FormClose (Sender: TObject; var Action: TCloseAction);

Закрытие формы

procedure FormContextPopup (Sender: TObject; MousePos: TPoint;

var Handled: Boolean);

procedure BitBtn1Click (Sender: TObject);

1) Постройка графика

2) Воспроизведение звука

procedure BitBtn3Click (Sender: TObject);

Возврат к Выбору функции графика

procedure BitBtn4Click (Sender: TObject);

Выход

procedure LabeledEdit1KeyPress (Sender: TObject; var Key: Char);

Фильтр ввода (только числа)

procedure LabeledEdit1KeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

Фильтр пустого ввода

procedure LabeledEdit2KeyPress (Sender: TObject; var Key: Char);

Фильтр ввода (только числа)

procedure LabeledEdit2KeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

Фильтр пустого ввода

procedure LabeledEdit3KeyPress (Sender: TObject; var Key: Char);

Фильтр ввода (только числа)

procedure LabeledEdit3KeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

Фильтр пустого ввода

procedure N7Click (Sender: TObject);

Вызов справки «О программе»

procedure FormKeyUp (Sender: TObject; var Key: Word; Shift: TShiftState);

Вызов справки F1

procedure N6Click (Sender: TObject);

Вызов помощи в гл. меню

Таблица 7 — Модуль Form4

Процедура

Описание

procedure Timer1Timer (Sender: TObject);

Скрыте формы4 и переход к форме1

procedure FormActivate (Sender: TObject);

1) Фоновая картинка

2) Центрирование окна

3) Значение Timer1. Tag = 8 (время, сколько висит приветствие)

4) Загрузка gif анимации через окно браузера (компонент WebBrowser1)

5) Текст на форме

procedure WebBrowser1DownloadComplete (Sender: TObject);

1) Скрытие ползунков в окне браузера, отключение 3d эффекта

procedure Timer2Timer (Sender: TObject);

2) Дата и время, отвечающее за форму 1,3,4,5

Таблица 8 — Модуль Form5

Процедура

Описание

procedure Button1Click (Sender: TObject);

Закрыте формы подтверждением (Ok)

procedure FormActivate (Sender: TObject);

1) Центрирует окно

2) Текст на форме

procedure FormKeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

Вызов справки F1

3.4 Вызов и загрузка программы

Для запуска приложения необходимо запустить файл Project. exe после чего откроется форма приветствия и по истечению нескольких секунд произойдет переход к основному окну программы.

4. Программа тестирования и методика испытаний

Цель испытаний: проверить правильность постройки, убедиться в том, что программа защищена от некорректного ввода данных. Объектом испытаний является программный продукт, реализованный в рамках данного курсового проекта.

Тест

Ожидаемый результат

Полученный Результат

Добавление числовых данных в поля ввода

Заполнив поля, должен был построиться график линейной функции

Все данные введены корректно, график построился правильно

В ходе отладки все недочеты были успешно устранены и программа готова к эксплуатации.

5. Руководство пользователя

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

Рисунок 1

Работа программы начинается после загрузки приветствия (Рисунок 1). Через несколько секунд открывается главное окно со списком функций (Рисунок 2).

В колонке «Выбор функции графика» находятся 9 функций графиков, выбрать можно только 1 функцию (по умолчанию выбрана первая функция). При нажатии на главном меню пункта «Выход» открывается окно «Завершить программу?». При нажатии «Да» происходит завершение программы; «Нет» — программа продолжает работу. Справочную информацию по программе можно получить при нажатии кнопки F1 или при выборе пункта «Справка» — «О программе». После выбора функции переходим на вторую форму для прорисовки графика. Для этого служит кнопка «Далее» на форме или пункт «Перейти» — «Построение графика».

На следующей форме пользователю предоставляется возможность нарисовать выбранный график, нажав на кнопку «Нарисовать» (Рисунок 3).

Рисунок 3

В некоторых случаях пользователю предоставляется возможность подставить свои переменные в выбранную функцию (например, линейная функция). Остальные графики будут отображаться с готовыми переменными, не задаваемыми пользователем. При нажатии на кнопку «Функции графиков» происходит возврат на первую форму, где находится список всех рабочих функций.

Для вызова справки «О программе» нужно выбрать пункт «Справка» — «О программе» (Рисунок 4)

Рисунок 4

Заключение

Данный программный продукт был разработан в среде программирования Borland Delphi 7 Enterprise, так как это система наиболее подходит для разработки данного приложения.

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

Разработка данного программного продукта завершена, но эта программа может быть изменена и дополнена по желанию пользователей.

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

Приложение

Листинг программы

Form1

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, XPMan, shellapi;

type

TForm1 = class (TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N4: TMenuItem;

About1: TMenuItem;

N5: TMenuItem;

Label1: TLabel;

XPManifest1: TXPManifest;

Label2: TLabel;

RadioGroup1: TRadioGroup;

BitBtn1: TBitBtn;

N6: TMenuItem;

N7: TMenuItem;

Label3: TLabel;

procedure N4Click (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure N5Click (Sender: TObject);

procedure FormActivate (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

procedure RadioGroup1Click (Sender: TObject);

procedure N7Click (Sender: TObject);

procedure FormKeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure N6Click (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

help, help2: string;

implementation

uses Unit2, Unit3, Unit4, Unit5;

{$R *.dfm}

procedure TForm1. BitBtn1Click (Sender: TObject); // Выбор функции

begin

form4.mediaplayer1. FileName:=ExtractFilePath (ParamStr (0))+'base/click.wav';

form4.mediaplayer1. Open;

form4.mediaplayer1.play;

form3. Show;

form1. Hide;

end;

procedure TForm1. RadioGroup1Click (Sender: TObject); // Блокировка далее ненужных переходов

begin

case RadioGroup1. ItemIndex of

0:begin N4. Enabled:=true;

form3. LabeledEdit1. EditLabel. Caption:='Переменная k';

form3. LabeledEdit2. EditLabel. Caption:='Переменная b';

form3. LabeledEdit1. Show;

form3. LabeledEdit2. Show;

form3. LabeledEdit3. hide;

form3. LabeledEdit1. Clear;

form3. LabeledEdit2. Clear;

form3. UpDown1. Show;

form3. UpDown2. Show;

form3. UpDown3. hide; end;

1:begin N4. Enabled:=true;

form3. LabeledEdit1. hide;

form3. LabeledEdit2. Hide;

form3. LabeledEdit3. hide;

form3. UpDown1. hide;

form3. UpDown2. hide;

form3. UpDown3. hide; end;

2:begin N4. Enabled:=true;

form3. LabeledEdit1. EditLabel. Caption:='Переменная a';

form3. LabeledEdit2. EditLabel. Caption:='Переменная b';

form3. LabeledEdit3. EditLabel. Caption:='Переменная c';

form3. LabeledEdit1. Show;

form3. LabeledEdit2. show;

form3. LabeledEdit3. show;

form3. LabeledEdit1. Clear;

form3. LabeledEdit2. Clear;

form3. LabeledEdit3. Clear;

form3. UpDown1. Show;

form3. UpDown2. show;

form3. UpDown3. show; end;

3:begin N4. Enabled:=true;

form3. LabeledEdit1. EditLabel. Caption:='Переменная a';

form3. LabeledEdit1. Show; // провал

form3. LabeledEdit2. Hide;

form3. LabeledEdit3. Hide;

form3. LabeledEdit1. Clear;

form3. UpDown1. Show;

form3. UpDown2. hide;

form3. UpDown3. hide; end;

4:begin N4. Enabled:=true;

form3. LabeledEdit1. EditLabel. Caption:='Переменная a';

form3. LabeledEdit1. Show;

form3. LabeledEdit2. hide;

form3. LabeledEdit3. hide;

form3. LabeledEdit2. Clear;

form3. UpDown1. show;

form3. UpDown2. hide;

form3. UpDown3. hide; end;

5:begin N4. Enabled:=true;

form3. LabeledEdit1. Hide;

form3. LabeledEdit2. Hide;

form3. LabeledEdit3. Hide;

form3. UpDown1. hide;

form3. UpDown2. hide;

form3. UpDown3. hide; end;

6:begin N4. Enabled:=true;

form3. LabeledEdit1. Hide;

form3. LabeledEdit2. hide;

form3. LabeledEdit3. hide;

form3. UpDown1. hide;

form3. UpDown2. hide;

form3. UpDown3. hide; end;

7:begin N4. Enabled:=true;

form3. LabeledEdit1. Hide;

form3. LabeledEdit2. hide;

form3. LabeledEdit3. hide;

form3. UpDown1. hide;

form3. UpDown2. hide;

form3. UpDown3. hide; end;

8:begin N4. Enabled:=true;

form3. LabeledEdit1. Hide;

form3. LabeledEdit2. hide;

form3. LabeledEdit3. hide;

form3. UpDown1. hide;

form3. UpDown2. hide;

form3. UpDown3. hide; end;

9:begin N4. Enabled:=true;

form3. LabeledEdit1. Show;

form3. LabeledEdit2. Hide;

form3. LabeledEdit1. Clear;

form3. UpDown1. show;

form3. UpDown2. hide; end;

end;

end;

procedure TForm1. N4Click (Sender: TObject); // Переход к Построению графика (в меню)

begin

form3. Show;

form1. Hide;

end;

procedure TForm1. FormClose (Sender: TObject; var Action: TCloseAction); // Закрытие формы

begin

A:= Application. MessageBox ('Завершить программу?', 'Выход', mb_YesNo + mb_IconAsterisk);

If (A = idYes) then form4. close else Abort;

end;

procedure TForm1. N5Click (Sender: TObject); // Выход в меню

begin

A:= Application. MessageBox ('Завершить программу?', 'Выход', mb_YesNo + mb_IconAsterisk);

If (A = idYes) then form4. close else Abort;

end;

procedure TForm1. FormActivate (Sender: TObject);

begin

Form1. Left:= (Screen. Width div 2) — (Form1. Width div 2); // Центрируем окно

Form1. Top:= (Screen. Height div 2) — (Form1. Height div 2);

N2. Enabled:=false;

form3. LabeledEdit3. hide;

form3. UpDown3. hide;

label2.caption:='Подсказка: После выбора нужной функции'+#10#13+'нажмите кнопку «Далее», чтобы перейти к'+#10#13+'вводу переменных и построению графика'+#10#13+'функции';

end;

procedure TForm1. N7Click (Sender: TObject);

begin

form5. Show;

end;

procedure TForm1. FormKeyUp (Sender: TObject; var Key: Word; // Вызов справки по F1

Shift: TShiftState);

begin

if Key = vk_F1 then

ShellExecute (Application. Handle, 'open', PChar ('base/help.chm'), nil, nil, SW_SHOW);

end;

procedure TForm1. N6Click (Sender: TObject);

begin // Вызов справки

ShellExecute (Application. Handle, 'open', PChar ('base/help.chm'), nil, nil, SW_SHOW);

end;

end.

Form3

unit Unit3;

interface

uses

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

Dialogs, ExtCtrls, StdCtrls, Buttons, Math, Menus, ComCtrls, shellapi;

type

TForm3 = class (TForm)

GroupBox1: TGroupBox;

PaintBox1: TPaintBox;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N4: TMenuItem;

About1: TMenuItem;

N5: TMenuItem;

Label1: TLabel;

Label2: TLabel;

UpDown1: TUpDown;

UpDown2: TUpDown;

BitBtn1: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

LabeledEdit1: TLabeledEdit;

LabeledEdit2: TLabeledEdit;

N6: TMenuItem;

N7: TMenuItem;

LabeledEdit3: TLabeledEdit;

UpDown3: TUpDown;

Label3: TLabel;

procedure FormActivate (Sender: TObject);

procedure N2Click (Sender: TObject);

procedure N5Click (Sender: TObject);

procedure FormClose (Sender: TObject; var Action: TCloseAction);

procedure FormContextPopup (Sender: TObject; MousePos: TPoint;

var Handled: Boolean);

procedure BitBtn1Click (Sender: TObject);

procedure BitBtn3Click (Sender: TObject);

procedure BitBtn4Click (Sender: TObject);

procedure LabeledEdit1KeyPress (Sender: TObject; var Key: Char);

procedure LabeledEdit1KeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure LabeledEdit2KeyPress (Sender: TObject; var Key: Char);

procedure LabeledEdit2KeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure N7Click (Sender: TObject);

procedure FormKeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure N6Click (Sender: TObject);

procedure LabeledEdit3KeyPress (Sender: TObject; var Key: Char);

procedure LabeledEdit3KeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

private

{Private declarations}

public

{Public declarations}

end;

var

Form3: TForm3;

x, y: real; // расчет х и у

x0, y0, tx, ty, i: Integer; // начало координат по х и у

m: Integer; // масштаб

info:string;

implementation

uses Unit1, Unit2, Unit4, Unit5;

{$R *.dfm}

procedure TForm3. BitBtn1Click (Sender: TObject);

begin

form4.mediaplayer1. FileName:=ExtractFilePath (ParamStr (0))+'base/click.wav';

form4.mediaplayer1. Open;

form4.mediaplayer1.play;

if (Length (LabeledEdit1.text)=0) or (LabeledEdit1. Text='-') then LabeledEdit1. Text:='0'; // Если поле пустое, пишем туда 0

if (Length (LabeledEdit2.text)=0) or (LabeledEdit2. Text='-') then LabeledEdit2. Text:='0';

case form1. RadioGroup1. ItemIndex of

4:begin if (strtofloat (LabeledEdit1.text)<1) or (strtofloat (LabeledEdit1.text)>7) then begin showmessage ('Числа от 1 до 7'); abort; end; end;

end;

PaintBox1. Canvas. Brush. Color:=clWhite; // Цвет фона белый

PaintBox1. Canvas. FillRect (ClientRect); // Очистка рабочей области PaintBox1

x0:= paintbox1. Width div 2; // узнаем центр формы по х

y0:= paintbox1. Height div 2; // узнаем центр формы по у

paintbox1. Canvas. Pen. Color:=clsilver; // Рисуем клетки

tx:=0;

ty:=0;

for i:=1 to 25 do begin

paintbox1. Canvas. MoveTo (tx, ty+10); // .Вертикально

paintbox1. Canvas. LineTo (tx+260, ty+10);

ty:=ty+10;

end;

tx:=0;

ty:=0;

for i:=1 to 25 do begin // .Горизонтально

paintbox1. Canvas. MoveTo (tx+10, ty);

paintbox1. Canvas. LineTo (tx+10, ty+260);

tx:=tx+10;

end;

paintbox1. Canvas. Pen. Color:=clblack; // …завершение

// чертим х ось

paintbox1. Canvas. MoveTo (0, y0);

paintbox1. Canvas. LineTo (paintbox1. Width, y0);

// чертим у ось

paintbox1. Canvas. MoveTo (x0, 0);

paintbox1. Canvas. LineTo (x0, paintbox1. Height);

// стрелка у

paintbox1. Canvas. Brush. Color:= clblack;

paintbox1. Canvas. Polygon ([Point (x0,0), Point (x0+3, 20), Point (x0−3, 20)]);

paintbox1. Canvas. Brush. Color:= clwhite;

paintbox1. Canvas. TextOut (x0−30,10,'y');

// стрелка x

paintbox1. Canvas. Brush. Color:= clblack;

paintbox1. Canvas. Polygon ([Point (260, y0), Point (240, y0−3), Point (240, y0+3)]);

paintbox1. Canvas. Brush. Color:= clwhite;

paintbox1. Canvas. TextOut (240, y0+20,'x');

m:= 10; // задаем масштаб, иначе будет очень мелкий график

x:= -20; // зададим диапазон от куда до куда будем считать наш график

// собственно прорисовывем

while x <= 20 do

begin

case form1. RadioGroup1. ItemIndex of

0:begin y:=strtofloat (LabeledEdit1. Text)*x+strtofloat (LabeledEdit2. Text); info:='y=kx+b'; end;

1:begin y:=power (x, 2); info:='y=x2'; end;

2:begin y:=strtofloat (LabeledEdit1. Text)*sqr (x)+strtofloat (LabeledEdit2. Text)*x+strtofloat (LabeledEdit3. Text); info:='y=a (x2)+bx+c'; end;

3:begin y:=strtofloat (labelededit1.text)/x; info:='y=a/x'; end;

4:begin y:=power (strtofloat (LabeledEdit1. Text), x); info:='y=a^x'; end;

5:begin y:=sin (x); info:='y=sin (x)'; end;

6:begin y:=cos (x); info:='y=cos (x)'; end;

7:begin y:=sin (x)/cos (x); info:='y=tg (x)'; end;

8:begin y:=cos (x)/sin (x); info:='y=ctg (x)'; end;

end;

paintbox1.canvas. TextOut (190, x0−100, info);

label2. Caption:='Подсказка:'+#10#13+'Ваша функция'+#10#13+info;

paintbox1. Canvas. Pixels [x0+Round (x*m), y0-Round (y*m)]: = clGreen;

x:= x + 0.01;

end;

end;

procedure TForm3. FormActivate (Sender: TObject);

begin

Form3. Left:= (Screen. Width div 2) — (Form3. Width div 2);

Form3. Top:= (Screen. Height div 2) — (Form3. Height div 2);

N4. Enabled:=false;

end;

procedure TForm3. N2Click (Sender: TObject); // Возврат к Выбору функции графика

begin

form1. Show;

form3. Hide;

label2. Caption:='';

end;

procedure TForm3. BitBtn3Click (Sender: TObject); // Возврат к Выбору функции графика (Кнопка)

begin

form4.mediaplayer1. FileName:=ExtractFilePath (ParamStr (0))+'base/click.wav';

form4.mediaplayer1. Open;

form4.mediaplayer1.play;

form1. Show;

form3. Hide;

label2. Caption:='';

end;

procedure TForm3. N5Click (Sender: TObject); // Выход в гл. меню меню

begin

A:= Application. MessageBox ('Завершить программу?', 'Выход', mb_YesNo + mb_IconAsterisk);

If (A = idYes) then form4. close else Abort;

paintbox1. Refresh;

end;

procedure TForm3. LabeledEdit1KeyPress (Sender: TObject; var Key: Char); // Фильтр ввода

// Множество цифр, допустимых для ввода в edit:

const Digit: set of Char=['1'.'9', '0',#8];

// Множество символов, воспринимаемых как символ-разделитель:

Separator: set of Char=['/', '.', ', ', 'ю', 'Ю', 'б', 'Б'];

begin

form4.mediaplayer1. FileName:=ExtractFilePath (ParamStr (0))+'base/keyboard.wav';

form4.mediaplayer1. Open;

form4.mediaplayer1.play;

if Length (LabeledEdit1.text)>2 then key:=#0; // Ограничивает максимальное число (до 999)

with (Sender as TLabeledEdit) do

begin

if (Key in Separator)

then Key:=DecimalSeparator //Delphi-константа типа Char, равная символу-разделителю Windows

else

if (not (Key in Digit))

then Key:=#0;

if ((Key=DecimalSeparator) and (pos (DecimalSeparator, Text)<>0))

then Key:=#0;

end;

end;

procedure TForm3. LabeledEdit2KeyPress (Sender: TObject; var Key: Char); // Запрет ввода лишнего B

// Множество цифр, допустимых для ввода в edit:

const Digit: set of Char=['1'.'9', '0',#8];

// Множество символов, воспринимаемых как символ-разделитель:

Separator: set of Char=['/', '.', ', ', 'ю', 'Ю', 'б', 'Б'];

begin

form4.mediaplayer1. FileName:=ExtractFilePath (ParamStr (0))+'base/keyboard.wav';

form4.mediaplayer1. Open;

form4.mediaplayer1.play;

if Length (LabeledEdit2.text)>2 then key:=#0; // Ограничивает максимальное число (до 999)

with (Sender as TLabeledEdit) do

begin

if (Key in Separator)

then Key:=DecimalSeparator //Delphi-константа типа Char, равная символу-разделителю Windows

else

if (not (Key in Digit))

then Key:=#0;

if ((Key=DecimalSeparator) and (pos (DecimalSeparator, Text)<>0))

then Key:=#0;

end;

end;

procedure TForm3. FormClose (Sender: TObject; var Action: TCloseAction); // Закрытие формы

begin

A:= Application. MessageBox ('Завершить программу?', 'Выход', mb_YesNo + mb_IconAsterisk);

If (A = idYes) then form4. close else Abort;

paintbox1. Refresh;

end;

procedure TForm3. LabeledEdit1KeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

var n: Integer;

S: String;

begin

if (LabeledEdit1. Text='-') then Abort;

with (Sender as TLabeledEdit) do

begin

if pos (DecimalSeparator, Text)=1 then

begin

Text:='0'+Text;

SelStart:=Length (Text);

end;

if (pos (DecimalSeparator, Text)<>Length (Text)) then

if Text [Length (Text)]<>'0' then

if FloatToStr (StrToFloat (Text))<>'0' then

Text:=FloatToStr (StrToFloat (Text));

if Key=8 then

begin

n:=SelStart;

S:=Text;

Delete (S, n, 1);

Text:=S;

end;

SelStart:=Length (Text);

end;

end;

procedure TForm3. LabeledEdit2KeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

var n: Integer;

S: String;

begin

if (LabeledEdit2. Text='-') then Abort;

with (Sender as TLabeledEdit) do

begin

if pos (DecimalSeparator, Text)=1 then

begin

Text:='0'+Text;

SelStart:=Length (Text);

end;

if (pos (DecimalSeparator, Text)<>Length (Text)) then

if Text [Length (Text)]<>'0' then

if FloatToStr (StrToFloat (Text))<>'0' then

Text:=FloatToStr (StrToFloat (Text));

if Key=8 then

begin

n:=SelStart;

S:=Text;

Delete (S, n, 1);

Text:=S;

end;

SelStart:=Length (Text);

end;

end;

procedure TForm3. BitBtn4Click (Sender: TObject); // Выход по кнопке

begin

A:= Application. MessageBox ('Завершить программу?', 'Выход', mb_YesNo + mb_IconAsterisk);

If (A = idYes) then begin form3. Hide; form4. Close; end;

If (a = idNo) then Abort;

paintbox1. Refresh;

end;

procedure TForm3. FormContextPopup (Sender: TObject; MousePos: TPoint;

var Handled: Boolean);

begin

Handled:=true;

end;

procedure TForm3. N7Click (Sender: TObject); // О программе

begin

form5. Show;

end;

procedure TForm3. FormKeyUp (Sender: TObject; var Key: Word; // Хелп по F1

Shift: TShiftState);

begin

if Key = vk_F1 then

ShellExecute (Application. Handle, 'open', PChar ('base/help.chm'), nil, nil, SW_SHOW);

end;

procedure TForm3. N6Click (Sender: TObject); // Хелп

begin

ShellExecute (Application. Handle, 'open', PChar ('base/help.chm'), nil, nil, SW_SHOW);

end;

procedure TForm3. LabeledEdit3KeyPress (Sender: TObject; var Key: Char);

// Множество цифр, допустимых для ввода в edit:

const Digit: set of Char=['1'.'9', '0',#8];

// Множество символов, воспринимаемых как символ-разделитель:

Separator: set of Char=['/', '.', ', ', 'ю', 'Ю', 'б', 'Б'];

begin

form4.mediaplayer1. FileName:=ExtractFilePath (ParamStr (0))+'base/keyboard.wav';

form4.mediaplayer1. Open;

form4.mediaplayer1.play;

if Length (LabeledEdit3.text)>2 then key:=#0; // Ограничивает максимальное число (до 999)

with (Sender as TLabeledEdit) do

begin

if (Key in Separator)

then Key:=DecimalSeparator //Delphi-константа типа Char, равная символу-разделителю Windows

else

if (not (Key in Digit))

then Key:=#0;

if ((Key=DecimalSeparator) and (pos (DecimalSeparator, Text)<>0))

then Key:=#0;

end;

end;

procedure TForm3. LabeledEdit3KeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

var n: Integer;

S: String;

begin

if (LabeledEdit3. Text='-') then Abort;

with (Sender as TLabeledEdit) do

begin

if pos (DecimalSeparator, Text)=1 then

begin

Text:='0'+Text;

SelStart:=Length (Text);

end;

if (pos (DecimalSeparator, Text)<>Length (Text)) then

if Text [Length (Text)]<>'0' then

if FloatToStr (StrToFloat (Text))<>'0' then

Text:=FloatToStr (StrToFloat (Text));

if Key=8 then

begin

n:=SelStart;

S:=Text;

Delete (S, n, 1);

Text:=S;

end;

SelStart:=Length (Text);

end;

end;

end.

Form4

unit Unit4;

interface

uses

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

Dialogs, ExtCtrls, StdCtrls, OleCtrls, SHDocVw, MSHTML, MPlayer,

jpeg, XPMan;

type

TForm4 = class (TForm)

Timer1: TTimer;

MediaPlayer1: TMediaPlayer;

Image1: TImage;

Label1: TLabel;

Label2: TLabel;

XPManifest1: TXPManifest;

WebBrowser1: TWebBrowser;

Label3: TLabel;

Timer2: TTimer;

Label4: TLabel;

procedure Timer1Timer (Sender: TObject);

procedure FormActivate (Sender: TObject);

procedure WebBrowser1DownloadComplete (Sender: TObject);

procedure Timer2Timer (Sender: TObject);

private

{Private declarations}

public

{Public declarations}

end;

var

Form4: TForm4;

A:integer;

implementation

uses Unit1, Unit2, Unit3, Unit5;

{$R *.dfm}

procedure TForm4. WebBrowser1DownloadComplete (Sender: TObject); // Убрать из анимации лишнееа

var

Doc: IHTMLDocument2;

Element: IHTMLElement;

begin

Doc:= IHTMLDocument2 (TWebBrowser (Sender).Document);

if Doc = nil then Exit;

Element:= Doc. body;

if Element = nil then Exit;

Element.style.borderStyle:= 'none';

WebBrowser1. OleObject.document.body.style.overflowX:= 'hidden';

WebBrowser1. OleObject.document.body.style.overflowY:= 'hidden';

end;

procedure TForm4. Timer1Timer (Sender: TObject);

begin

timer1. Tag:=timer1. Tag-1;

case timer1. Tag of

0:begin timer1. Enabled:=false; form4. Hide;

form1. Show; end;

end;

end;

procedure TForm4. FormActivate (Sender: TObject);

begin

image1. Picture. LoadFromFile (ExtractFilePath (ParamStr (0))+'base/1.jpg');

Form4. Left:= (Screen. Width div 2) — (Form4. Width div 2);

Form4. Top:= (Screen. Height div 2) — (Form4. Height div 2);

timer1. Tag:=8;

label1. Caption:='Построение графиков функций';

WebBrowser1. Navigate (ExtractFilePath (ParamStr (0))+'base/1.html');

end;

procedure TForm4. Timer2Timer (Sender: TObject);

beginabel3. Caption:=FormatDateTime ('dd.mm.yyyy tt', now);

form1. Label3. Caption:=FormatDateTime ('dd.mm.yyyy tt', now);

form3. Label3. Caption:=FormatDateTime ('dd.mm.yyyy tt', now);

form5. Label2. Caption:=FormatDateTime ('dd.mm.yyyy tt', now);

end;

end.

Form5

unit Unit5;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls, shellapi, XPMan;

type

TForm5 = class (TForm)

Image1: TImage;

Label1: TLabel;

Button1: TButton;

XPManifest1: TXPManifest;

Label2: TLabel;

procedure Button1Click (Sender: TObject);

procedure FormActivate (Sender: TObject);

procedure FormKeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

private

{Private declarations}

public

{Public declarations}

end;

var

Form5: TForm5;

implementation

uses Unit1, Unit2, Unit3, Unit4;

{$R *.dfm}

procedure TForm5. Button1Click (Sender: TObject);

begin

form5.close;

end;

procedure TForm5. FormActivate (Sender: TObject);

begin

image1. Picture. LoadFromFile (ExtractFilePath (ParamStr (0))+'base/1.bmp');

Form5. Left:= (Screen. Width div 2) — (Form5. Width div 2); // Центрирует окно

Form5. Top:= (Screen. Height div 2) — (Form5. Height div 2);

label1. Caption:='Построение графиков функций'+#10#13+

'Версия 1.0'+#10#13+#10#13+

'Copyright 2012 '+#10#13+

'Код программы разработал Дремлюк Н'+#10#13+#10#13+

'Описание: программа разработана'+#10#13+

'для построения графиков функции.'+#10#13+

'Пользователю предоставляется '+#10#13+

'возможность выбора нужной функции'+#10#13+

'и ввода переменных в поля ввода.';

end;

procedure TForm5. FormKeyUp (Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if Key = vk_F1 then

ShellExecute (Application. Handle, 'open', PChar ('base/help.chm'), nil, nil, SW_SHOW);

end;

end.

Список использованных источников

1) Фленов, М. Е. Библия Delphi. М. Е. Фленов, — СПб.:2004.-884 с.

2) Фаронов, В. В. Программирование баз данных в Delphi 7. Учебный курс. В. В. Фаронов, — СПб.: Питер, 2006;261 с.

3) Глушаков, С. В. Программирование в среде Delphi 7.0−2-е издание, дополненное и переработанное / С. В. Глушаков, А. Л. Клевцов. — Харьков: Изд-во «Фолио», 2003. — 528с

Показать весь текст
Заполнить форму текущей работой