Разработка калькулятора в Delphi

Автор работы: Пользователь скрыл имя, 07 Февраля 2013 в 21:28, курсовая работа

Краткое описание

Полное наименование АС: «Научный калькулятор». Краткое наименование АС: «Calculator».
Целью использования АС является выполнение простейших математических вычислений, направленное на облегчение работы пользователя.

Содержание

1 ОБЩИЕ ПОЛОЖЕНИЯ
1.1 Наименование разработанного проекта
1.2 Цели, назначение проекта
2 ОПИСАНИЕ ПОСТАНОВКИ ЗАДАЧИ (КОМПЛЕКСА ЗАДАЧ)
2.1 Выходная информация
2.2 Входная информация
3 СХЕМА ФУНКЦИОНАЛЬНОЙ СТРУКТУРЫ И ЕЕ ХАРАКТЕРИСТИКА
3.1 Схема функциональной структуры
3.2 Характеристика функциональной структуры
4 Структура разработанного проекта
4.1 Формы и модули
4.2 Блок – схема алгоритма к кнопке =
4.3 Блок – схема алгоритма вычисления факториала
Приложение 1. Исходный код главной формы

Вложенные файлы: 1 файл

Записка.doc

— 110.50 Кб (Скачать файл)

СОДЕРЖАНИЕ

 

1 ОБЩИЕ ПОЛОЖЕНИЯ

1.1 Наименование разработанного проекта

1.2 Цели, назначение проекта

2 ОПИСАНИЕ ПОСТАНОВКИ  ЗАДАЧИ (КОМПЛЕКСА ЗАДАЧ)

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

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

3 СХЕМА ФУНКЦИОНАЛЬНОЙ  СТРУКТУРЫ И ЕЕ ХАРАКТЕРИСТИКА

3.1 Схема функциональной структуры

3.2 Характеристика функциональной структуры

4 Структура разработанного проекта

4.1 Формы и модули

4.2 Блок – схема алгоритма к кнопке  =

4.3 Блок – схема алгоритма вычисления факториала

Приложение 1. Исходный код главной формы 
1 ОБЩИЕ ПОЛОЖЕНИЯ

 

1.1 Наименование  проектируемой АС

 

Полное наименование АС: «Научный калькулятор». Краткое наименование АС: «Calculator».

 

 

1.2 Цели и назначение АС

 

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

 

 

 

2 ОПИСАНИЕ  ПОСТАНОВКИ ЗАДАЧИ (КОМПЛЕКСА ЗАДАЧ)

 

    1. Метод решения

 

AC обеспечивает следующую выходную информацию:

Результат решения математической задачи, поставленной пользователем.

 

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

 

 

Входными данными являются данные, вводимые пользователем.

 

 

 

 

 

 

3 СХЕМА ФУНКЦИОНАЛЬНОЙ СТРУКТУРЫ И ЕЕ ХАРАКТЕРИСТИКА

 

3.1 Схема функциональной структуры

Схема функциональной структуры представлена на рисунке 1

 


 


 

 


 



 


                                     



 

 



 

 



 

 



 


 

 

 



 



 

 

 

 

3.2 Характеристика функциональной структуры

 

Программы, работающие на компьютере, можно разделить на три категории:

  1. Прикладные программы, непосредственно обеспечивающие выполнение необходимых пользователям работ: редактирование текстов, рисование, обработку информационных массивов и т.д.
  2. Системные программы, выполняющие различные вспомогательные функции, например диагностика компьютера или резервное копирование информации.
  3. Инструментальные системы (системы программирования), обеспечивающие создание новых программ.

Данные категории программ в  свою очередь так – же разделяются  на несколько разделов. Например, прикладные программы можно разделить по уровню сложности обработки информации и результатов. Для математических вычислений существует множество различных програмных продуктов. Это известные всем пакеты MathCad, MathLab, Mathematika, Axum. Есть и более порстые: всевозможные программы – калькуляторы (имитирующие работу обычного калькулятора). В среде Windows есть такая программа (Calc.exe), по аналогии с ней было сделано данное задание.

 

 

4 Структура разработанного проекта

 

4.1 Формы и модули

 

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

1. Алгебраические

2. Тригонометрические.

Алгебраические кнопки обеспечивают решение алгебраических задач, таких, как сложение, умножение, вычитание и т.д. Тригонометрические обеспечивают решение тригонометрических задач, таких, cos, sin и т.д.

4.1 Блок –  схема алгоритма к кнопке =


 

 

 

 

 

4.1 Блок –  схема вычисления факториала


 

 

 

 

 

 

Приложение 1

unit Main;

 

interface

 

uses

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

  Dialogs, StdCtrls, ExtCtrls;

 

type

  TFMain = class(TForm)

    Edit1: TEdit;

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    Button5: TButton;

    Button6: TButton;

    Button7: TButton;

    Button8: TButton;

    Button9: TButton;

    Button10: TButton;

    Button11: TButton;

    Button13: TButton;

    Button14: TButton;

    Button15: TButton;

    Button16: TButton;

    Button18: TButton;

    Button19: TButton;

    Button20: TButton;

    Button21: TButton;

    Button22: TButton;

    Button23: TButton;

    Button24: TButton;

    Button25: TButton;

    Button26: TButton;

    Button27: TButton;

    Button28: TButton;

    Button29: TButton;

    Button30: TButton;

    Button31: TButton;

    Button32: TButton;

    Bevel1: TBevel;

    Bevel2: TBevel;

    Bevel3: TBevel;

    Bevel4: TBevel;

    Bevel5: TBevel;

    Button17: TButton;

    procedure Button10Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure Button6Click(Sender: TObject);

    procedure Button7Click(Sender: TObject);

    procedure Button8Click(Sender: TObject);

    procedure Button9Click(Sender: TObject);

    procedure Button20Click(Sender: TObject);

    procedure Button16Click(Sender: TObject);

    procedure Button21Click(Sender: TObject);

    procedure Button15Click(Sender: TObject);

    procedure Button14Click(Sender: TObject);

    procedure Button26Click(Sender: TObject);

    procedure Button27Click(Sender: TObject);

    procedure Button12Click(Sender: TObject);

    procedure Button30Click(Sender: TObject);

    procedure Button13Click(Sender: TObject);

    procedure Button19Click(Sender: TObject);

    procedure Button37Click(Sender: TObject);

    procedure Button18Click(Sender: TObject);

    procedure Button22Click(Sender: TObject);

    procedure Button23Click(Sender: TObject);

    procedure Button24Click(Sender: TObject);

    procedure Button25Click(Sender: TObject);

    procedure Button28Click(Sender: TObject);

    procedure Button32Click(Sender: TObject);

    procedure Button29Click(Sender: TObject);

    procedure Button31Click(Sender: TObject);

    procedure Button38Click(Sender: TObject);

   procedure Button39Click(Sender: TObject);

    procedure Button34Click(Sender: TObject);

    procedure Button35Click(Sender: TObject);

    procedure Button11Click(Sender: TObject);

    procedure Button17Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  FMain: TFMain;

  s,s1,c:string;t,i,j:integer;

  x,y,m,z,f:real;cf:char;

 

implementation

 

{$R *.dfm}

 

procedure operat(x,y:real;c:string;var z:real);

begin

   if c='+' then z:=x+y;

   if c='-' then z:=x-y;

   if c='*' then z:=x*y;

   if c='x^y' then z:=exp(y*ln(x));

   if (c='/') then

    if (y<>0) then z:=x/y else

    messagedlg('На 0 делить нельзя',mterror,[mbok],0);

   if c='' then z:=y;

end;

 

procedure okr(var c:string);

var i,j:integer;x:real;

begin

  i:=length(c); j:=i;

while copy(c,j,1)='0' do

begin

  delete(c,j,1);

  j:=j-1;

end;

  val(c,x,i);

  if (x>1E+16) or (x<-1E+16) then

begin

   s:=' 0';

   messagedlg('Слишком большое чиссло',mtcustom,[mbok],0);

end;

end;

  procedure o(p:string; var c,c1:string);

begin

if length(c)<16 then

begin

c:=c+p;c1:=c;

end;

end;

 

procedure TFMain.Button10Click(Sender: TObject);

begin

o('0',s,s1);

edit1.text:=(' '+s)

 

end;

 

procedure TFMain.Button1Click(Sender: TObject);

begin

o('1',s,s1);

edit1.text:=(' '+s)

end;

 

procedure TFMain.Button2Click(Sender: TObject);

begin

o('2',s,s1);

edit1.text:=(' '+s)

end;

 

procedure TFMain.Button3Click(Sender: TObject);

begin

o('3',s,s1);

edit1.text:=(' '+s)

end;

 

procedure TFMain.Button4Click(Sender: TObject);

begin

o('4',s,s1);

edit1.text:=(' '+s)

end;

 

procedure TFMain.Button5Click(Sender: TObject);

begin

o('5',s,s1);

edit1.text:=(' '+s)

end;

 

procedure TFMain.Button6Click(Sender: TObject);

begin

o('6',s,s1);

edit1.text:=(' '+s)

end;

 

procedure TFMain.Button7Click(Sender: TObject);

begin

o('7',s,s1);

edit1.text:=(' '+s)

end;

 

procedure TFMain.Button8Click(Sender: TObject);

begin

o('8',s,s1);

edit1.text:=(' '+s)

end;

 

procedure TFMain.Button9Click(Sender: TObject);

begin

o('9',s,s1);

edit1.text:=(' '+s)

end;

 

procedure TFMain.Button20Click(Sender: TObject);

begin

if copy(s,1,1)='-'

then delete(s,1,1)

else s:='-'+s ;

s1:=s;

edit1.text:=(' '+s)

end;

 

procedure TFMain.Button16Click(Sender: TObject);

begin

val(s1,y,i);

  operat(x,y,c,z);

  x:=z;

  c:='+';

  str(z:6:6,s); okr(s);

   edit1.text:=(' '+s);

s:='' ;t:=0;

end;

 

procedure TFMain.Button21Click(Sender: TObject);

begin

val(s1,y,i);

  operat(x,y,c,z);

  x:=z;

  c:='-';

  str(z:6:6,s);okr(s);

   edit1.text:=(' '+s);

s:='' ;t:=0;

end;

 

procedure TFMain.Button15Click(Sender: TObject);

begin

val(s1,y,i);

  operat(x,y,c,z);

  x:=z;

  c:='*';

  str(z:6:6,s);okr(s);

   edit1.text:=(' '+s);

s:='';t:=0;

end;

 

procedure TFMain.Button14Click(Sender: TObject);

begin

val(s1,y,i);

  operat(x,y,c,z);

  x:=z;

  c:='/';

  str(z:6:6,s); okr(s);

   edit1.text:=(' '+s);

s:='';t:=0;

end;

 

procedure TFMain.Button26Click(Sender: TObject);

begin

val(s1,y,i);

  z:=y*y;

   str(z:6:6,s);okr(s);s1:=s;

   edit1.text:=(' '+s);

s:='';t:=0;

end;

 

procedure TFMain.Button27Click(Sender: TObject);

begin

val(s1,y,i);

  z:=y*y*y;

   str(z:6:6,s);okr(s);s1:=s;

   edit1.text:=(' '+s);

s:='';t:=0;

end;

 

procedure TFMain.Button12Click(Sender: TObject);

begin

c:='';

t:=0;

s:='';

s1:=s;

y:=0;

edit1.text:=(' 0');

end;

 

procedure TFMain.Button30Click(Sender: TObject);

begin

val(s1,y,i);

  z:=round(y);

   str(z:6:6,s);okr(s);s1:=s;

   edit1.text:=(' '+s);

s:='';t:=0;

end;

 

procedure TFMain.Button13Click(Sender: TObject);

begin

val(s1,y,i);

  operat(x,y,c,z);

  x:=z;

  c:='';

  str(z:6:6,s);

  okr(s);

  s1:=s;

   edit1.text:=(' '+s);

s:='';t:=0;

end;

 

procedure TFMain.Button19Click(Sender: TObject);

begin

  val(s1,y,i);

   if y<>0 then

begin

   z:=1/y;

   str(z:6:6,s);okr(s);s1:=s;

   edit1.text:=(' '+s);

end  else

begin

    messagedlg('На 0 делить нельзя',mterror,[mbok],0);

  { edit1.text:=('E ') ;}

end;

s:='';t:=0;

end;

 

procedure TFMain.Button37Click(Sender: TObject);

begin

t:=0;

s:='';

s1:=s;

edit1.text:=(' 0');

end;

 

procedure TFMain.Button18Click(Sender: TObject);

begin

val(s1,y,i);

   f:=y;

   z:=cos(f);

   str(z:6:6,s);okr(s);s1:=s;

   edit1.text:=(' '+s);

s:='';t:=0;

end;

 

procedure TFMain.Button22Click(Sender: TObject);

begin

val(s1,y,i);

  f:=y;

   z:=sin(f);

   str(z:6:6,s);okr(s);s1:=s;

   edit1.text:=(' '+s);

s:='';t:=0;

end;

 

procedure TFMain.Button23Click(Sender: TObject);

begin

val(s1,y,i);

  if y<>0

  then begin

   f:=y;

   z:=sin(f)/cos(f);

   str(z:6:6,s);okr(s);s1:=s;

   edit1.text:=(' '+s);

end  else

begin

    messagedlg('На 0 делить нельзя',mterror,[mbok],0);

end;

s:='';t:=0;

end;

 

procedure TFMain.Button24Click(Sender: TObject);

begin

val(s1,y,i);

  if y<>0

  then begin

   f:=y;

   z:=cos(f)/sin(f);

   str(z:6:6,s);okr(s);s1:=s;

   edit1.text:=(' '+s);

end  else

begin

    messagedlg('На 0 делить нельзя',mterror,[mbok],0);

end;

s:='';t:=0;

end;

 

procedure TFMain.Button25Click(Sender: TObject);

begin

val(s1,y,i);

   if y>=0 then begin

   z:=sqrt(y);

   str(z:6:6,s);okr(s);s1:=s;

   edit1.text:=(' '+s);

end else

begin

   messagedlg('Корень из отрицательного числа извлечь нельзя',mterror,[mbok],0);

   end;

s:='';t:=0;

end;

 

procedure TFMain.Button28Click(Sender: TObject);

begin

val(s1,y,i);

  operat(x,y,c,z);

  x:=z;

  c:='x^y';

  str(z:6:6,s);okr(s);

   edit1.text:=(' '+s);

s:='';t:=0;

end;

 

procedure TFMain.Button32Click(Sender: TObject);

begin

z:=3.14159265359;

   str(z:6:6,s);okr(s);s1:=s;

   edit1.text:=(' '+s);

s:='';t:=0;

end;

 

procedure TFMain.Button29Click(Sender: TObject);

begin

val(s1,y,i);

   if y>=1 then begin

   z:=ln(y);

   str(z:6:6,s);okr(s);s1:=s;

   edit1.text:=(' '+s);

end else

begin

   messagedlg('LN X<=0 неопределён',mterror,[mbok],0);

    end;

s:='';t:=0;

 

end;

 

procedure TFMain.Button31Click(Sender: TObject);

var k:integer; fact:real;

begin

val(s1,y,i);

fact:=1;

k:=1;

if (y>1) and (y<=18) then

begin

y:=round(y);

repeat

k:=k+1;

fact:=fact*k;

until k=y;

end

else

begin

   s:=' 0';

   messagedlg('Слишком большое чиссло',mtcustom,[mbok],0);

end;

z:=round(fact);

   str(z:6:6,s);okr(s);s1:=s;

   edit1.text:=(' '+s);

s:='';t:=0;

end;

 

procedure TFMain.Button38Click(Sender: TObject);

begin

val(s1,y,i); m:=m+y;

 s:='';t:=0;

end;

 

procedure TFMain.Button39Click(Sender: TObject);

begin

val(s1,y,i); m:=m-y;

s:='';t:=0;

 

end;

 

procedure TFMain.Button34Click(Sender: TObject);

begin

val(s1,y,i); m:=y;

   s:='';t:=0;

end;

 

procedure TFMain.Button35Click(Sender: TObject);

begin

str(m:6:6,s);okr(s);s1:=s;

  edit1.text:=(' '+s);

s:='';t:=0;

end;

 

procedure TFMain.Button11Click(Sender: TObject);

begin

if t=0 then

begin

s:=s+'.'; s1:=s;

edit1.text:=(' '+s);

t:=1

end;

end;

 

procedure TFMain.Button17Click(Sender: TObject);

begin

val(s1,y,i);

  z:=random;

   str(z:6:6,s);okr(s);s1:=s;

   edit1.text:=(' '+s);

s:='';t:=0;

end;

 

end.

 

 

 

 

 

 

 

 

 

 

 

 

 




Информация о работе Разработка калькулятора в Delphi