Автор работы: Пользователь скрыл имя, 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 | Архангельский А. Я. Программирование в 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:
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',
edit1.text:=(' '+s)
end;
// Ввод числа '1'
procedure TFMain.Button1Click(Sender: TObject);
begin
Analiz_Kol_Razrjad_Chisla('1',
edit1.text:=(' '+s)
end;
// Ввод числа '2'
procedure TFMain.Button2Click(Sender: TObject);
begin
Analiz_Kol_Razrjad_Chisla('2',
edit1.text:=(' '+s)
end;
// Ввод числа '3'
procedure TFMain.Button3Click(Sender: TObject);
begin
Analiz_Kol_Razrjad_Chisla('3',
edit1.text:=(' '+s)
end;
// Ввод числа '4'
procedure TFMain.Button4Click(Sender: TObject);
begin
Analiz_Kol_Razrjad_Chisla('4',
edit1.text:=(' '+s)
end;
// Ввод числа '5'
procedure TFMain.Button5Click(Sender: TObject);
begin
Analiz_Kol_Razrjad_Chisla('5',
edit1.text:=(' '+s)
end;
// Ввод числа '6'
procedure TFMain.Button6Click(Sender: TObject);
begin
Analiz_Kol_Razrjad_Chisla('6',
edit1.text:=(' '+s)
end;
// Ввод числа '7'
procedure TFMain.Button7Click(Sender: TObject);
begin
Analiz_Kol_Razrjad_Chisla('7',
edit1.text:=(' '+s)
end;
// Ввод числа '8'
procedure TFMain.Button8Click(Sender: TObject);
begin
Analiz_Kol_Razrjad_Chisla('8',
edit1.text:=(' '+s)
end;
// Ввод числа '9'
procedure TFMain.Button9Click(Sender: TObject);
begin
Analiz_Kol_Razrjad_Chisla('9',
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#
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
Информация о работе Напишите программу, реализующую простой калькулятор