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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


курсовая работа Постановка задачи и описание программного продукта

Информация:

Тип работы: курсовая работа. Добавлен: 28.04.2012. Сдан: 2011. Страниц: 12. Уникальность по antiplagiat.ru: < 30%

Описание (план):


ВВЕДЕНИЕ 2
1. Объектно-ориентированное программирование в Delphi. 4
2. Постановка задачи и описание программного продукта. 10
2.1. Постановка задачи. 10
    2.2.     Описание компонент программы. 10
    2.2.1. Компоненты GroupBox и CheckBox 10
    2.2.2. Компонент TImage 10
    2.2.3. Компоненты OpenDialog, SaveDialog. 12
Заключение. 13
Список использованной литературы. 14
Приложение. 15
 

    ВВЕДЕНИЕ

               Работа с графикой в Delphi это не только линии и рисунки, но также и и печать текстовых документов. Поэтому в Delphi работе с графикой нужно уделить немного времени. Работа с графикой в Delphi предполагает обращение к Canvas - свойству Canvas компонентов. Canvas Delphi это холст, который позволяет программисту иметь доступ к каждой своей точке (пикселу), и словно художнику отображать то, что требуется. Конечно, рисовать попиксельно для работы с графикой в Delphi не приходится, система Delphi предоставляет для мощные средства работы с графикой, облегчающие задачу программиста. 
          В работе с графикой в Delphi в распоряжении программиста находятся Canvas (холст, полотно - свойствоCanvas Delphi компонентов), карандаш (свойство Pen), кисть (свойство Brush) того компонента или объекта, на котором предполагается рисовать. У карандаша Pen и кисти Brush можно менять цвет (свойство Color) и стиль (свойство Style). Доступ к шрифтам предоставляет свойство Canvas Font. Эти инструменты позволяют отображать как текст, так и достаточно сложные графики математического и инженерного содержания, а также рисунки. Кроме этого, работа с графикой позволяет использовать в Delphi такие ресурсы Windows как графические и видеофайлы. 
          Конечно, не все компоненты в Delphi имеют эти свойства. На вкладке Additional расположен специализированный компонент TImage, специально предназначенный для рисования, но также свойство Canvas имеют, например, такие компоненты как ListBox, ComboBox, StringGrid, а также и сама Форма, которая размещает наши компоненты.  Кроме того, для печати документов Delphi обращается к свойству Canvas такого объекта как принтер. 
          Основное свойство такого объекта как Canvas Delphi - Pixels[i, j] типа TColor, то есть это двумерный массив точек (пикселов), задаваемых своим цветом. Рисование на Canvas происходит в момент присвоения какой-либо точке канвы заданного цвета. Каждому пикселу может быть присвоен любой доступный для Windows цвет.                                         

 

    ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В DELPHI.

    По сравнению с традиционными способами программирования, ООП обладает рядом преимуществ. Главное из них заключается в том, что эта концепция в наибольшей степени соответствует внутренней логике функционирования  операционной системы [ОС] Windows. Программа, состоящая из отдельных объектов, отлично приспособлена к реагированию на события, происходящие в ОС. К другим преимуществам ООП можно отнести большую надежность кода и возможность повторного использования отработанных объектов.
    Основные механизмы ООП в Delphi - понятие класса и объекта;
    основные механизмы ООП: инкапсуляция, наследование и полиморфизм;.
    Класс и объект
    Классом называется структура языка, которая может иметь в своем составе переменные, функции и процедуры. Переменные, в зависимости от предназначения именуются полями или свойствами. Процедуры и функции класса - методами. Например:
    type TMyObject = class(TObject)  
     MyField: Integer;  
     function MyMethod: Integer;
    end;
    В этом примере описан класс "TMyObject", содержащий поле "MyField" и метод "MyMethod".
    Поля объекта аналогичны полям записи [record]. Методы - это процедуры и функции. описанные внутри класса и предназначенные для операций над его полями. От обычных процедур и функций методы отличаются тем, что им при вызове передается указатель на тот объект, который и вызвал. Внутри метода указатель на вызвавший его объект доступен пол зарезервированным именем "Self".
    Чтобы использовать класс в программе, нужно как минимум, объявить переменные этого типа. Переменная объектного типа называется экземпляром класса или объектом:
    var AMyObject: TMyObject;
    Класс - это описание, объект - то, что создано в соответствии с этим описанием. Объект "появляется на свет" в результате вызова специального метода, который инициализирует объект - конструктора. Созданный объект уничтожается другим методом - деструктором:
    AMyObject:= TMyObject.Create;  
     <действия с созданным объектом>
    AMyObject.Destroy;
    Взяв любой пример проекта в Delphi, вы почти не увидите там вызовов конструкторов и деструкторов. Дело в том, что любой компонент, попавший при визуальном проектировании в ваше приложение из Палитры компонентов, включается в определенную иерархию. Иерархия эта замыкается на форме [класс "TForm"]: для всех ее составных частей конструкторы и деструкторы вызываются автоматически, незримо для программиста. Кто создает и уничтожает формы? Это делает приложение [глобальный объект с именем "Application"]. В файле проекта [с расширением "dpr"] вы можете увидеть вызовы метода "Application.CreateForm", предназначенного для этой цели.
    Что же касается объектов, создаваемых динамически [во время выполнения приложения], то здесь нужен явный вызов конструктора и деструктора.
    Поля и методы
    Поля класса являются переменными, объявленными внутри класса. Они предназначены для хранения данных во время работы экземпляра класса [объекта]. Ограничений на тип полей в классе не предусмотрено. В описании класса поля должны предшествовать методам и свойствам. Обычно поля используются для обеспечения выполнения операций внутри класса.
    Методом называется объявленная в классе функция или процедура, которая используется для работы с полями и свойствами класса. Согласно принципам ООП [см. далее "Инкапсуляция"], обращаться к свойствам класса можно только через его методы. От обычных процедур и функций методы отличаются тем, что им при вызове передается указатель на тот объект, который вызвал. Поэтому обрабатываться будут данные именно того объекта, который вызвал метод. 
    Инкапсуляция
    В предыдущих разделах мы ввели ряд новых понятий, которыми будем пользоваться в дальнейшем. Теперь рассмотрим принципы, составляющие суть объектно-ориентрованного программирования. Таких принципов три - инкапсуляция, наследование и полиморфизм.
    Как правило, объект - это сложная конструкция, свойства и поведение составных частей которого находятся во взаимодействии. К примеру, если мы моделируем взлетающий самолет, то после набора им определенной скорости и отрыва от земли принципы управления им полностью изменяются. Поэтому в объекте "самолет" явно недостаточно просто увеличить значение поля "скорость" - такое изменение должно автоматически повлечь за собой целый ряд других.
    При создании программных объектов подобные ситуации можно моделировать, связывая со свойствами необходимые методы. Понятие инкапсуляция соответствует этому механизму.
    Классическое правило объектно-ориентированного программирования утверждает, что для обеспечения надежности нежелателен прямой доступ к полям объекта: чтение и обновление их содержимого должно производиться посредством вызова соответствующих методов. 
    Наследование
    Вторым принципом ООП является наследование. Это простой принцип означает , что если вы хотите создать новый класс, лишь немного отличающийся от старого, то совершенно нет необходимости в переписывании заново существующих полей и методов. Вы объявляете, что новый класс "TNewObject":
    TNewObject = class (TOldObject);
    является потомком или дочерним классом старого класса "TOldObject", называемого предком или родительским классом, и добавляете к нему новые поля, методы и свойства - иными словами, то, что нужно при переходе от общего к частному.
    Прекрасный пример, иллюстрирующий наследование, представляет собой иерархия классов VCL. В Delphi все классы являются потомками класса "TObject". Унаследованные от класса-предка поля и методы доступны в дочернем классе; если имеет место совпадение имен методов, то говорят что они перекрываются.
    Поведение методов при наследовании, без преувеличения, является "подводным камнем" объектно-ориентированного программирования. В зависимости от того, какие действия происходят при вызове, методы делятся на три группы. В первую группу относятся статические методы, во вторую - виртуальные [virtual] и динамические [dynamic] и, наконец, в третью - появившиеся только в Delphi 4 - перегружаемые [overload] методы.
    Методы первой группы полностью перекрываются в классах потомках при их переопределении. При этом можно полностью изменить объявление метода. Методы второй группы при наследовании должны сохранять наименование и тип. Перегружаемые методы дополняют механизм наследования возможностью использовать нужный вариант метода [собственный или родительский] в зависимости от условий применения.
    Полиморфизм
    Этот принцип представляет собой наиболее важный козырь ООП.
    Допустим, что вы имеете дело с некоторой совокупностью явлений и процессов. Чтобы смоделировать их средствами ООП, нужно выделить их самые общие черты. Те из них, которые не изменяют своего содержания, должны быть реализованы в виде статических методов. Те же, которые изменяются при переходе от общего к частному, лучше облечь в форму виртуальных методов. Основные методы надо описать в классе-предке и затем перекрывать  их в классах потомках. В этом состоит принцип полиморфизма.
    Наглядный пример использования полиморфизма дает среда Delphi. В ней имеется класс "TComponent", на уроне которого сосредоточены определенные "правила" взаимодействия со средой разработки и с другими компонентами. Следуя этим правилам, можно порождать от класса "TComponent" свои компоненты, настраивая Delphi на решение специальных задач. 
    Области видимости
    При описании нового класса важен разумный компромисс. С одной стороны, требуется скрыть от других методы и поля, представляющие собой внутренне устройство класса. Маловажные детали на уровне пользователя объекта будут бесполезны и только помешают целостности восприятия.
    С другой стороны, если слишком  ограничить того, кто будет порождать классы потомки, и не обеспечить ему достаточный набор инструментальных средств и свободу маневра, то он и не станет использовать ваш класс.
    В модели языка Delphi существует механизм доступа к составным частям объекта, определяющий области, где ими можно пользоваться [области видимости]. Поля и методы могут относиться к четырем группам, отличающимися областями видимости. Методы и свойства могут быть общими [секция  "public"], личными [секция "private"], защищенными [секция "protected"] и опубликованными [секция "published"].
    Области видимости, определяемые директивами, таковы:
    поля, свойства и методы секции "public" не имеют ограничений на видимость. Они доступны из других функций и методов объектов как в данном модуле, так и во всех прочих, ссылающихся на него;
    поля, свойства и методы, находящиеся в секции "private", доступны только в методах класса и в функциях, содержащихся в том же модуле, что и описываемый класс. Такая директива позволяет полностью скрыть детали внутренней реализации класса. Свойства и методы из секции "private" можно изменять, и это не будет сказываться а программах, работающих с объектами этого класса;
    поля, свойства и методы секции "protected" также доступны только внутри модуля с описываемым классом. Но - и это главное - они доступны в классах, являющихся потомками данного класса, в том числе и в других модулях. Такие элементы особенно необходимы для разработчиков новых компонентов-потомков уже существующих. Оставляя свободу модернизации класса, они все же скрывают детали реализации то того, кто только пользуется объектами этого класса;
    область видимости, определяемая четвертой директивой - "published", имеет особое значение для интерфейса визуального проектирования Delphi. В этой секции должны быть собраны те свойства объекта, которые будут видны не только во время исполнения приложения, но и из среды разработки. Все свойства компонентов доступны через "Инспектор объектов", являются их опубликованными свойствами. Во время выполнения такие свойства общедоступны как и "public".
    Три области видимости - "private", "protected","public" - как бы упорядочены по возрастанию видимости методов. В классах-потомках можно повысить видимость методов и свойств, но не понизить ее: если какое-либо свойство объекта из состава VCL принадлежит к области "public", вернуть его в "private" невозможно. Обратная процедура широко практикуется в Delphi. 

 

    ПОСТАНОВКА ЗАДАЧИ И ОПИСАНИЕ ПРОГРАММНОГО ПРОДУКТА.

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

    Целью курсовой работы является разработка и создание программы построения графиков функций. Для это будет использован объектро-ориентированный язык программирования Borland Delphi.

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

        Компоненты GroupBox и CheckBox

    GroupBox во многом похож на обычную панель. Он предназначен для группировки схожих по смыслу компонентов. Текст из свойства Caption выходит не посреди панели, а вверху, создавая таким образом заглавие этой панели. При перемещении GroupBox, будут перемещаться и все компоненты, расположенные на нем.
    CheckBox - простой переключатель. Свойство Checked компонента CheckBox показывает включен ли компонент, другими словами, установлена ли в нем "галочка". Название переключателя пишется в свойстве Caption.

      Компонент TImage

    Этот компонент служит для размещения на форме одного из трех поддерживаемых Delphi типов изображений: растровой картинки, пиктограммы или метафайла. Любой из этих типов изображения содержится в центральном свойстве компонента -- picture. В свойстве canvas содержится канва, с помощью которой при необходимости программа может отредактировать растровое изображение (но не пиктограмму или метафайл).
    Он  дает отображение на форме графического изображения. Свойство Picture типа TPicture содержит отображаемую графическую сотавляющюю у которой тип - битовая матрица, пиктограммы, метафайла или определенного пользователем типа. Свойство Canvas позволяет создавать и редактировать изображения.
    Основные свойства
    
    Свойство     Описание
    AutoSize property AutoSize: Boolean;      
Указывает, изменяется ли автомататом размер компонента, подстраиваясь под размер изображения. По умолчанию значение false -- не подстраивается.
    Canvas property Canvas: TCanvas     Определяет поверхность (холст, канву) для рисования пером Реп и кистью Brush, для наложения друг на друга нескольких изображений. Доступен только для чтения. Можно получить доступ, если в свойство Picture содержит битовую матрицу.
    Center property Center: Boolean;     Указывает, должно ли изображение центрироваться в поле компонента, если его размеры меньше размеров поля. При значении false изображение располагается в верхнем левом углу поля. Свойство не действует, если AutoSize установлено в true или если Stretch установлено в true и Picture содержит не пиктограмму.
    IncrementalDisplay property IncrementalDisplay: Boolean;     Указывает, должно ли изображение частично рисоваться во время медленных операций с большими изображениями. Вместо такого рисования часто можно использовать индикацию процесса обработкой событий OnProgress.
    Picture property Picture: TPicture     Определяет отображаемый графический объект типа TPicture. Может загружаться программно или во время проектирования с помощью Picture Editor.
    Stretch property Stretch: Boolean     Указывает, должны ли изменяться размеры изображения, подгоняясь под размеры компонента. Учтите то, что при изменении размеров изображения будет искажение, когда соотношение сторон графического объекта и компонента Image не совпадают.
    Transparent property Transparent: Boolean     Указывает, должен ли быть цвет фона изображения прозрачным, чтобы сквозь него было видно нижележащее изображение.
    Основные методы
    Никаких специальных методов в компоненте не объявлено. Компонет наследует множество методы от базового класса TControl.
    
    Событие     Описание
    OnProgress     События происходят при медленных процессах изменения графического изображения и позволяют построить индикатор хода процесса.

      Компоненты OpenDialog, SaveDialog.

    Компоненты OpenDialog -- диалог «Открыть файл» и SaveDialog -- диалог «Сохранить файл как...», пожалуй, используются чаще всего, в большинстве приложений.
    Все свойства этих компонентов одинаковы, только их смысл несколько различен для открытия и закрытия файлов. Основное свойство, в котором возвращается в виде строки выбранный пользователем файл, -- FileName. Значение этого свойства можно задать и перед обращением к диалогу. Тогда оно появится в диалоге как значение по умолчанию в окне Имя файла.
    Типы искомых файлов, появляющиеся в диалоге в выпадающем списке Тип файла, задаются свойством Filter. В процессе проектирования это свойство проще всего задать с помощью редактора фильтров, который вызывается нажатием кнопки с многоточием около имени этого свойства в Инспекторе Объектов. При этом открывается окно редактора. В его левой панели Filter Name вы записываете тот текст, который увидит пользователь в выпадающем списке Тип файла диалога. А в правой панели Filter записываются разделенные точками с запятой шаблоны фильтра.
 
 

    

    Заключение.

 

    Список использованной литературы.

    Архангельский А. Я. Программирование в Delphi г. Москва: издательство «Бином», 2005г. - 332 с.;
    Ахметов А. Р. Программирование в Delphi 7 . г.Москва: издательство «Бином-Пресс», 2003 г. - 780 с.;
    Бобровский С.И. Delphi7 - Учебный курс. г. Санкт-Петербург: издательство «Питер», 2004 г. - 736 с.;
    Глушаков С. В. Delphi 2007 г. Москва: издательство «Хранитель», 2008 г. - 635 с.;
 

    

    Приложение.

    unit Unit1; 

    interface 

    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls, StdCtrls, Gauges, MyMath, Unit2; 

    type
      TForm1 = class(TForm)
        StartBtn: TButton;
        Image1: TImage;
        ClearBtn: TButton;
        GroupBox1: TGroupBox;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Gauge1: TGauge;
        FormEd: TEdit;
        XStart: TEdit;
        XEnd: TEdit;
        StepEd: TEdit;
        LinesCh: TCheckBox;
        MashCh: TCheckBox;
        GroupBox2: TGroupBox;
        Label5: TLabel;
        Label6: TLabel;
        XEd: TEdit;
        YEd: TEdit;
        StartBtn2: TButton;
        OpenDialog: TOpenDialog;
        SaveDialog: TSaveDialog;
        OpenBtn: TButton;
        SaveBtn: TButton;
        AbBtn: TButton;
        procedure StartBtnClick(Sender: TObject);
        procedure ClearBtnClick(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        procedure FormCreate(Sender: TObject);
        procedure StartBtn2Click(Sender: TObject);
        procedure OpenBtnClick(Sender: TObject);
        procedure SaveBtnClick(Sender: TObject);
        procedure AbBtnClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end; 

    var
      Form1: TForm1; 

    implementation 

    {$R *.DFM} 

    var x,y:array of extended;
       xmnoj,ymnoj,ymin,ymax,xe,xs,step:extended;
       graph:boolean=false;
       ram:boolean=false;
       f:file of extended;
       fn:string; 

    procedure XYMinMax;
    var n:cardinal;
       imh,imw:word;
    begin
    form1.caption:='Graphics - Поиск минимальных и максимальных значений для масштабирования';
    form1.gauge1.maxvalue:=high(y);
    if form1.mashch.checked=true then
       begin
       //если масштабирование отмечено, то ищется множитель для x и y
       imh:=form1.image1.height;
       imw:=form1.image1.width;
       ymax:=y[1];
       ymin:=y[1];
       for n:=0 to high(y) do
          begin
          if ymax<y[n] then ymax:=y[n];
          if ymin>y[n] then ymin:=y[n];
          form1.gauge1.progress:=n;
          end;
       if ymax-ymin=0 then ymnoj:=1
          else ymnoj:=imh/abs(ymax-ymin);
       if xe-xs=0 then xmnoj:=1
          else xmnoj:=imw/abs(xe-xs);
       end else
       //а если масштабирование не отмечено, то множители равны нулю
       begin
       ymnoj:=1;
       xmnoj:=1;
       end;
    form1.caption:='Graphics - Поиск завершен';
    end; 

    procedure ris;
    var n:cardinal;
       imh,imw:word;
    begin
    form1.caption:='Graphics - Построение графика';
    form1.image1.canvas.pen.color:=clwhite;
    imh:=form1.image1.height;
    imw:=form1.image1.width;
    form1.gauge1.maxvalue:=high(x);
    //рисует оси
    with form1.image1.canvas do
       begin
       pen.style:=psdot;
       moveto(0,imh-trunc((-ymin)*ymnoj));
       lineto(imw,imh-trunc((-ymin)*ymnoj));
       moveto(trunc((-xs)*xmnoj),0);
       lineto(trunc((-xs)*xmnoj),imh);
       pen.style:=pssolid;
       end;
    if form1.linesch.checked=true then
       begin
       //если отмечено соединение линиями, то точки соединяются между собой...
       for n:=0 to high(x)-1 do
          begin
          with form1.image1.canvas do
             begin
             moveto(trunc((x[n]-xs)*xmnoj),imh-trunc((y[n]-ymin)*ymnoj));
             lineto(trunc((x[n+1]-xs)*xmnoj),imh-trunc((y[n+1]-ymin)*ymnoj));
             end;
          form1.gauge1.progress:=n;
          end;
       form1.gauge1.progress:=high(x);
       end else //а если нет, то не соединяются
       for n:=0 to high(x) do
          begin
          form1.image1.canvas.moveto(trunc((x[n]-xs)*xmnoj),imh-trunc((y[n]-ymin)*ymnoj));
          form1.image1.canvas.lineto(trunc((x[n]-xs)*xmnoj)+1,imh-trunc((y[n]-ymin)*ymnoj)+1);
          form1.gauge1.progress:=n;
          end;
    graph:=true;
    form1.caption:='Graphics - Построение завершено';
    end; 

    procedure TForm1.StartBtnClick(Sender: TObject);
    var n:cardinal;
       m:word;
       str:string;
    label a;
    и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


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