Простой калькулятор

     Основные  данные о работе

     Версия  шаблона      2.1
     Филиал      Искитимский
     Вид работы      Курсовая  работа
     Название  дисциплины      Программирование  на языке высокого уровня
     Тема      Простой калькулятор
     Фамилия студента      Несяев
     Имя студента      Владимир
     Отчество  студента      Викторович
     № контракта      06014100609001

      

     Содержание

     Введение

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

       Актуальность данной темы обусловлена  популярностью простейших математических  расчетов в повседневной работе, а т.к. в большинстве случаев работать происходит за компьютером, то, следовательно калькулятор должен быть виртуальным.

     Одним из лучших языком для изучения и освоения программирования для  Windows является Паскаль, а одной из лучших в мире системой программирования для MS-DOS - Turbo Pascal. Delphi продолжила серию Паскаль-ориентированных средств программирования и является наиболее удобным инструментом для программирования под Windows.1

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

     Для математических вычислений существует множество различных программных продуктов. Это известные всем пакеты MathCAD, Math Lab, Mathematical, Axum.2 Есть и более простые: всевозможные программы – калькуляторы (имитирующие работу обычного калькулятора). В среде Windows есть такая программа (Calc.exe), по аналогии с ней было сделано данное задание.

     Основная  часть

  1. Разработка  эскизного и технического проектов программы
    1. Задание

     Разработка  приложения для Windows, реализующая простой калькулятор.

     Условия задачи:

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

    1. Назначение  и область применения

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

     . Область применения: Пользователи ПК. Поскольку ставится задача разработать приложение для Windows, то использоваться программа может только под управле-нием ОС Windows.

  1. Технические характеристики
    1. Постановка  задачи

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

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

     

     Рисунок 1-окно программы «калькулятор»

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

     У программы так же есть мню с  двумя пунктами: «Файл» и «Справка»  это так же видно на рисунке 1. В меню «файл» находится закладка «закрыть», а в «справке» находятся краткие сведения о программе и разработчике.

     Список  использованных переменных

     В программе Calculator были использованы стандартные элементы Delphi 7. В программе использованы элементы закладок Standard (TButton, TEdit, TMainMenu, TLabel) В главной форме-Form1, которая является самим калькулятором (рисунок 2) и в меню «о программе»-Form2 (рисунок 3)

     

     Рисунок 2-форма Form1 Рисунок 3-форма Form2

     Первые 11 элементов TButton (названия от _0 до _9) осуществляют функцию ввода чисел. А 12й элемент с именем ‘Dot’, служит для отделения дробной части от целой. При нажатии на одну из этих кнопок число отображается на дисплее и заносится в переменную ‘back’ с типом  string которая хранит в себе данные о введенных числах.  Остальные элементы TButton являются функциональными клавишами, 1 кнопка вывода результата (‘=’). При нажатии на функциональную клавишу, арифметический знак так же отображается на дисплее и заносится в переменную ‘s’ типа string. После этого у нас есть все необходимые данные для вычисления результата действий (события OnClick для кнопки со значением “=”). Результат вычисления заносится в переменную rez типа real и выводится на дисплей.

       Элемент TMainmenu используются для реализации меню программы с пунктами: Файл,  Справка(на Form1), Закрыть(на Form2)

                Выход О программе

     Элемент TLabel применен для отображения текста информации о программе в одноименном меню.

    1. Описание  алгоритма
  1. Ввод данных
  2. Обработка полученного символа
  3. Произведение соответствующих вычислений
  4. Вывод результата на дисплей

     Обобщенная  схема алгоритма приведена в  ПРИЛОЖЕНИИ 1

    1. Организация входных и выходных данных

     Входные данные. Любые числа представленные в виде  вещественного типа данных, положительные и отрицательные. Для ввода входных данных используются поля редактирования, поддерживающие стандартные операции редактирования: ввод текста, копирование, вставку и удаление.3

     Выходные  данные. Числа вещественного типа данных.

    1. Выбор состава технических  и программных  средств

     Среда Delphi позволяет достаточно быстро разрабатывать приложе-ния для Windows.

     Технические характеристики компьютера:

     Pentium II и выше 

     Объем оперативной памяти не менее 64 Мб;

     Необходимое пространство на жестком диске 600 Мб.

     Дополнительных  средств (принтер, сканер, дополнительные дисководы и т.д.) не требуется.

  1. Разработка  рабочего проекта
    1. Разработка  программы

     Для разработки приложения программы “Калькулятор”  используется среда визуального  программирования Delphi. Проект программы  содержит два окна:

     1. Form1 – калькулятор.

     2. Form2 – Справка

     Окно  Form1 – калькулятор изображён на Рисунке 4

     

             Рисунок 4- Окно Form1 

1Компонент Form1

Свойства:

Сaption – Калькулятор

Border –  bsSingle;

BiSystemMenu – false;

BiMinimaze – false;

BiHelp –  False;

События: нет

2-компонент button_0

Свойства:

Сaption – 0

Сursor – crHandPoin

Height –  25

Left –  72

Taborder –  6

Top –  136

Width –  35 

3-компонент button_00

Свойства:

Сaption – 00

Сursor – crHandPoin

Height –  25

Left –  40

Taborder –  8

Top –  136

Width –  35 

4-компонент button_1

Свойства:

Сaption – 1

Сursor – crHandPoin

Height – 25

Left –  8

Taborder –  0

Top –  40

Width –  35 

5-компонент button_2

Свойства:

Сaption – 2

Сursor – crHandPoin

Height –  25

Left –  40

Taborder –  1

Top –  40

Width –  25 

6-компонент button_3

Свойства:

Сaption – 3

Сursor – crHandPoin

Height –  25

Left –  72

Taborder –  2

Top –  40

Width –  25   

7-компонент button_4

Свойства:

Сaption – 4

Сursor – crHandPoin

Height –  25

Left – 

Taborder –  3

Top –  72

Width –  25 

8-компонент button_5

Свойства:

Сaption – 5

Сursor – crHandPoin

Height –  25

Left –  40

Taborder –  4

Top – 72

Width –  25 

9-компонент button_6

Свойства:

Сaption – 6

Сursor – crHandPoin

Height –  25

Left –  72

Taborder –  2

Top –  40

Width –  25 

10-компонент button_7

Свойства:

Сaption – 7

Сursor – crHandPoin

Height –  25

Left –  8

Taborder –  5

Top –  104

Width –  25 

11-компонент button_8

Свойства:

Сaption – 8

Сursor – crHandPoin

Height –  25

Left –  40

Taborder –  16

Top –  104

Width –  25 

12-компонент button_9

Свойства:

Сaption – 9

Сursor – crHandPoin

Height –  25

Left –  72

Taborder –  15

Top –  104

Width –  25 

13-компонент button1

Свойства:

Сaption – «+»

Сursor – crHandPoin

Height –  25

Left –  120

Taborder –  10

Top –  40

Width –  33 

14-компонент button2

Свойства:

Сaption – «-»

Сursor – crHandPoin

Height –  25

Left –  120

Taborder –  11

Top –  72

Width –  33 

15-компонент button3

Свойства:

Сaption – «*»

Сursor – crHandPoin

Height –  25

Left –  120

Taborder –  12

Top –  104

Width –  33   

16-компонент button4

Свойства:

Сaption – «/»

Сursor – crHandPoin

Height –  25

Left –  120

Taborder –  13

Top –  136

Width –  33 

17 - компонент button5

Свойства:

Сaption – «=»

Сursor – crHandPoin

Height –  57

Left –  192

Taborder –  14

Top –  72

Width –  89

18 - компонент Dot

Свойства:

Сaption – «,»

Сursor – crHandPoin

Height –  25

Left –  120

Taborder –  13

Top –  136

Width 33 

19 – компонент TМainMenu

Свойства:

Items

Файл (N1)  Справка  (N3)        Выход (N2) о прграмме (N4)

Для N1 –  событие BitBtn1Click (приводится ниже).

N2Click –  закончить работу с приложением.

Для (N3)

N4Click –  перейти к работе со второй  формой.

20 – компонент Tedit PoleСвойства:

Сursor – crHandPoin

     Height – 21

     Left – 8

     Taborder – 9

     Top – 8

     Width – 289

    1. Спецификация  программы

     Исполняемый файл программы «калькулятор»  имеет  название Calculator.exe и расположен в  архиве Калькулятор.rar в каталоге Калькулятор\программа калькулятор. Состав проекта:

Наименование Обозначение Примечание
Calculator.Dof Файл параметров проекта Содержит текущие  установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы
Calculatort.Dpr Файл проекта Связывает все  файлы, из которых состоит приложение
Calculatort.Dsk Файл, содержащий Desktop – настройки проекта Содержит информацию о том, какие окна открыты и в каких позициях они расположены
Calculator.Res Файл ресурсов Содержит пиктограммы, графические изображения
Unit1.Pas Файл программного модуля для формы № 1 Определяет  функциональность формы № 1
Unit2.Pas Файл программного модуля для формы № 2 Определяет  функциональность формы № 2
Unit1.Dfm Файл формы  № 1 Содержит список свойств всех компонентов, включенных в форму № 1
Unit2.Dfm Файл формы  № 2 Содержит список свойств всех компонентов, включенных в форму № 2
Unit1.Dcu Объектный файл для Unit1.Pas Откомпилированная версия Unit1.Pas
calculator.ico Иконка в  верхний левый угол Откомпилированная версия Unit3.Pas4

    1. Текст программы

     Полный листинг программы:

     unit Unit1;

     interface

     uses

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

       Dialogs, Buttons, StdCtrls, Menus; 

     type

       TForm1 = class(TForm)

         _1: TButton;

         _2: TButton;

         _3: TButton;

         _4: TButton;

         _5: TButton;

         _6: TButton;

         _7: TButton;

         _8: TButton;

         _9: TButton;

         _0: TButton;

         _00: TButton;

         Dot: TButton;

         Pole: TEdit;

         Button1: TButton;

         Button2: TButton;

         Button3: TButton;

         Button4: TButton;

         MainMenu1: TMainMenu;

         N1: TMenuItem;

         N2: TMenuItem;

         N3: TMenuItem;

         N4: TMenuItem;

         Button5: TButton;

         procedure _1Click(Sender: TObject);

         procedure _2Click(Sender: TObject);

         procedure _3Click(Sender: TObject);

         procedure _4Click(Sender: TObject);

         procedure _5Click(Sender: TObject);

         procedure _6Click(Sender: TObject);

         procedure _7Click(Sender: TObject);

         procedure _8Click(Sender: TObject);

         procedure _9Click(Sender: TObject);

         procedure DotClick(Sender: TObject);

         procedure _00Click(Sender: TObject);

         procedure _0Click(Sender: TObject);

         procedure Button1Click(Sender: TObject);

         procedure Button2Click(Sender: TObject);

         procedure Button3Click(Sender: TObject);

         procedure Button4Click(Sender: TObject);

         procedure Button5Click(Sender: TObject);

         procedure PoleChange(Sender: TObject);

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

         procedure N2Click(Sender: TObject);

         procedure N4Click(Sender: TObject);

       private

         { Private declarations }

       public

         { Public declarations }

       end;

     var

       Form1: TForm1;

     implementation

     {$R *.dfm}

     uses

       Math, Unit2;

     var

       rez: real;

     procedure TForm1._1Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'1';

     end;

     procedure TForm1._2Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'2';

     end;

     procedure TForm1._3Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'3';

     end;

     procedure TForm1._4Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'4';

     end;

     procedure TForm1._5Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'5';

     end;

     procedure TForm1._6Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'6';

     end;

     procedure TForm1._7Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'7';

     end;

     procedure TForm1._8Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'8';

     end;

     procedure TForm1._9Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'9';

     end;

     procedure TForm1.DotClick(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+',';

     end;

     procedure TForm1._00Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'00';

     end;

     procedure TForm1._0Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'0';

     end;

     procedure TForm1.Button1Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'+';

     end;

     procedure TForm1.Button2Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'-';

     end;

     procedure TForm1.Button3Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'*';

     end;

     procedure TForm1.Button4Click(Sender: TObject);

     begin

       Pole.Text:= Pole.Text+'/';

     end;

     procedure TForm1.Button5Click(Sender: TObject);

     var

       s: string;

       i: word;

       First: boolean;

     begin

       s:=Pole.Text;

       rez:=0;

       while (s[1]='+')or(s[1]='*')or(s[1]='/')or(s[1]='^') do

     delete(s,1,1);

       First:=true;

       for i:=1 to length(s) do

           if s[i]=' ' then delete(s,i,1)

                       else if s[i]='.' then

                            begin

                              delete(s,i,1);

                              insert(',',s,i);

                            end;

       for i:=1 to length(s) do

           if (s[i]='+')or(s[i]='-')or(s[i]='*')or(s[i]='/')or(s[i]='^')then

              if (First=false) then delete(s,i,length(s)-i+1)

                               else First:=false;

       Pole.Text:='';

       i:=1;

       while (s[i]<>'+')and(s[i]<>'-')and(s[i]<>'*')and(s[i]<>'/')and(s[i]<>'^') do

             inc(i);

       if i<length(s) then

       begin

         if s[i]='+' then rez:= StrToFloat(copy(s,1,i-1))+StrToFloat(copy(s,i+1,length(s)-i+1));

         if s[i]='-' then rez:= StrToFloat(copy(s,1,i-1))-StrToFloat(copy(s,i+1,length(s)-i+1));

         if s[i]='*' then rez:= StrToFloat(copy(s,1,i-1))*StrToFloat(copy(s,i+1,length(s)-i+1));

         if s[i]='/' then rez:= StrToFloat(copy(s,1,i-1))/StrToFloat(copy(s,i+1,length(s)-i+1));

         if s[i]='^' then rez:= power(StrToFloat(copy(s,1,i-1)),StrToFloat(copy(s,i+1,length(s)-i+1)));

         Pole.Text:=FloatToStr(rez);

        

       end;

Простой калькулятор