Напишите программу, реализующую простой калькулятор

Автор работы: Пользователь скрыл имя, 25 Апреля 2012 в 11:52, курсовая работа

Описание работы

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

Содержание работы

Введение 3
Основная часть 5
1 Анализ аппаратного и программного обеспечения 5
1.1. Постановка задачи………...………………………………………………..5
1.2. Функциональная структура и ее характеристика 6
1.3. Анализ программного и аппаратного обеспечения для выяснения оптимизационных показателей для будущей системы 7
1.4 . Обзор существующих аналогов……………………………………………...8
2 Реализация проекта 11
2.1. Выбор средств реализации 11
2.2. Описание экранной формы………………………………………………..13
2.3. Тестирование и отладка 19
Заключение 20
Глоссарий 22
Список использованных источников

Файлы: 1 файл

Калькулятор.doc

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

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

1

Архангельский А. Я. Программирование в Delphi.  Издание 2-е, переработанное и дополненное. - М.: ЗОА «Издательство БИНОМ», 2000г.

2

Нил Дж. Рубенкинг Язык программирования Delphi для "чайников". Введение в Borland Delphi 2006 = Delphi for Dummies. — М.: «Диалектика», 2007. — С. 336.

3

А.Н. Вальвачев, К.А. Сурков, Д.А. Сурков, Ю.М. Четырько Программирование на языке Delphi. Учебное пособие. — 2005.

4

Бобровский, С. И. Технологии Delphi 2006. Новые возможности [Текст] / С. И. Боб-ровский. – СПб. : Питер, 2006.

5

Тод Миллер, Дэвид Пауэл и др. «Специальное издание. Использование Delphi 6» – Киев-Москва: «Диалектика», 1997;

6

Архангельский, А. Я. Приемы программирования в Delphi на основе VCL [Текст]  / А. Я. Архангельский. – М. : Бином-Пресс, 2006.

7

Том Сван «Секреты 32-разрядного программирования в Delphi» - Киев: «Диалектика», 1997

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение А

Рис.1. Главное окно

 

Код:

unit Main;

 

interface

 

uses

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

  Dialogs, StdCtrls, ExtCtrls;

 

type

  TFMain = class(TForm)

 

   Edit1: TEdit;  //Поле ввода и отображеня чисел

 

   // Клавиши Калькулятора

   Button1: TButton;   //кл. числа '1'

   Button2: TButton;   //кл. числа '2'

   Button3: TButton;   //кл. числа '3'

   Button4: TButton;   //кл. числа '4'

   Button5: TButton;   //кл. числа '5'

   Button6: TButton;   //кл. числа '6'

   Button7: TButton;   //кл. числа '7'

   Button8: TButton;   //кл. числа '8'

   Button9: TButton;   //кл. числа '9'

   Button10: TButton;  //кл. числа '0'

   Button11: TButton;  //кл. '.' отделения целой части числа от дробной

 

   Button12: TButton;  //кл. 'C' очистки поля ввода чисел

   Button13: TButton;  //кл. '=' получения результа выполненной операции

   Button14: TButton;  //кл. '/' операция деления

   Button15: TButton;  //кл. '*' операция умножения

   Button16: TButton;  //кл. '+' операция сложения

   Button21: TButton;  //кл. '-' операция вычитания

   Button19: TButton;  //кл. '1/x' получение обратного числа

   Button20: TButton;  //кл. '/-/' ввод отрицательного числа

 

   Button18: TButton;  //кл. 'cos' получение cos числа

   Button22: TButton;  //кл. 'sin' получение sin числа

   Button23: TButton;  //кл. 'tg' получение tg числа

   Button24: TButton;  //кл. 'ctg' получение ctg числа

 

   Button25: TButton;  //кл. 'sqrt' получение квадратного корня числа

   Button26: TButton;  //кл. 'x^2' возведение числа в квадратную степень

   Button27: TButton;  //кл. 'x^3' возведение числа в кубическую степень

   Button28: TButton;  //кл. 'x^n' возведение числа в любую степень

 

   Button29: TButton;  //кл. 'Ln' натуральный логарифм числа

   Button30: TButton;  //кл. 'Rnd' округление до целой части числа

   Button31: TButton;  //кл. 'N!' фактариал числа

   Button32: TButton;  //кл. 'Pi' число пи

 

   Bevel1: TBevel;

   Bevel2: TBevel;

   Bevel3: TBevel;

   Bevel4: TBevel;

   Bevel5: TBevel;

 

 

   // Операции выполняемые при нажатии клавиш Калькулятора

   procedure Button1Click(Sender: TObject); // ввод числа '1'

   procedure Button2Click(Sender: TObject); // ввод числа '2'

   procedure Button3Click(Sender: TObject); // ввод числа '3'

   procedure Button4Click(Sender: TObject); // ввод числа '4'

   procedure Button5Click(Sender: TObject); // ввод числа '5'

   procedure Button6Click(Sender: TObject); // ввод числа '6'

   procedure Button7Click(Sender: TObject); // ввод числа '7'

   procedure Button8Click(Sender: TObject); // ввод числа '8'

   procedure Button9Click(Sender: TObject); // ввод числа '9'

   procedure Button10Click(Sender: TObject); // ввод числа '0'

   procedure Button11Click(Sender: TObject);//выпол. выделение целой части числа

 

 

   procedure Button12Click(Sender: TObject); // выпол. очистку поля ввода чисел

   procedure Button13Click(Sender: TObject); // выпол. получения результа выполненной операции

   procedure Button14Click(Sender: TObject); // выпол. операцию деления

   procedure Button15Click(Sender: TObject); // выпол. операцию умножения

   procedure Button16Click(Sender: TObject); // выпол. операцию сложения

   procedure Button21Click(Sender: TObject); // выпол. операцию вычитания

   procedure Button19Click(Sender: TObject); // выпол. получение обратного числа

   procedure Button20Click(Sender: TObject); // выпол. ввод отрицательного числа

 

   procedure Button18Click(Sender: TObject); // выпол. получение cos числа

   procedure Button22Click(Sender: TObject); // выпол. получение sin числа

   procedure Button23Click(Sender: TObject); // выпол. получение tg числа

   procedure Button24Click(Sender: TObject); // выпол. получение ctg числа

 

   procedure Button25Click(Sender: TObject); // выпол. получение квадратного корня числа

   procedure Button26Click(Sender: TObject); // выпол. возведение числа в квадратную степень

   procedure Button27Click(Sender: TObject); // выпол. возведение числа в кубическую степень

   procedure Button28Click(Sender: TObject); // выпол. возведение числа в любую степень

 

   procedure Button29Click(Sender: TObject); // выпол. натуральный логарифм числа

   procedure Button30Click(Sender: TObject); // выпол. округление до целой части числа

   procedure Button31Click(Sender: TObject); // выпол. фактариал числа

   procedure Button32Click(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;

 

// Анализ кол-во разрядности вводимого числа, не более 16 разрядов

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

begin

if length(c)<16 then

begin

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

end;

end;

 

// Ввод числа '0'

procedure TFMain.Button10Click(Sender: TObject);

begin

Analiz_Kol_Razrjad_Chisla('0',s,s1);

edit1.text:=(' '+s)

end;

// Ввод числа '1'

procedure TFMain.Button1Click(Sender: TObject);

begin

Analiz_Kol_Razrjad_Chisla('1',s,s1);

edit1.text:=(' '+s)

end;

// Ввод числа '2'

procedure TFMain.Button2Click(Sender: TObject);

begin

Analiz_Kol_Razrjad_Chisla('2',s,s1);

edit1.text:=(' '+s)

end;

// Ввод числа '3'

procedure TFMain.Button3Click(Sender: TObject);

begin

Analiz_Kol_Razrjad_Chisla('3',s,s1);

edit1.text:=(' '+s)

end;

// Ввод числа '4'

procedure TFMain.Button4Click(Sender: TObject);

begin

Analiz_Kol_Razrjad_Chisla('4',s,s1);

edit1.text:=(' '+s)

end;

// Ввод числа '5'

procedure TFMain.Button5Click(Sender: TObject);

begin

Analiz_Kol_Razrjad_Chisla('5',s,s1);

edit1.text:=(' '+s)

end;

// Ввод числа '6'

procedure TFMain.Button6Click(Sender: TObject);

begin

Analiz_Kol_Razrjad_Chisla('6',s,s1);

edit1.text:=(' '+s)

end;

// Ввод числа '7'

procedure TFMain.Button7Click(Sender: TObject);

begin

Analiz_Kol_Razrjad_Chisla('7',s,s1);

edit1.text:=(' '+s)

end;

// Ввод числа '8'

procedure TFMain.Button8Click(Sender: TObject);

begin

Analiz_Kol_Razrjad_Chisla('8',s,s1);

edit1.text:=(' '+s)

end;

// Ввод числа '9'

procedure TFMain.Button9Click(Sender: TObject);

begin

Analiz_Kol_Razrjad_Chisla('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;

// Получение cos числа

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;

// Получение sin числа

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;

// Получение tg числа

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;

// Получение ctg числа

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;

// Получение cos числа

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.Button11Click(Sender: TObject);

begin

if t=0 then

begin

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

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

t:=1

end;

end;

end.

 

 

 

 

Приложение Б

object FMain: TFMain

  Left = 244

  Top = 161

  Width = 376

  Height = 228

  Caption = #1050#1072#1083#1100#1082#1091#1083#1103#1090#1086#1088

  Color = clBtnFace

  Font.Charset = DEFAULT_CHARSET

  Font.Color = clWindowText

  Font.Height = -11

  Font.Name = 'MS Sans Serif'

  Font.Style = []

  OldCreateOrder = False

  PixelsPerInch = 96

  TextHeight = 13

  object Bevel1: TBevel

    Left = 120

    Top = 48

    Width = 73

    Height = 105

  end

  object Bevel2: TBevel

    Left = 8

    Top = 48

    Width = 105

    Height = 137

  end

  object Bevel3: TBevel

    Left = 200

    Top = 48

    Width = 49

    Height = 137

  end

  object Bevel4: TBevel

    Left = 256

    Top = 48

    Width = 50

    Height = 138

  end

Информация о работе Напишите программу, реализующую простой калькулятор