Автор работы: Пользователь скрыл имя, 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 ОБЩИЕ ПОЛОЖЕНИЯ
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 ОПИСАНИЕ ПОСТАНОВКИ ЗАДАЧИ (КОМПЛЕКСА ЗАДАЧ)
AC обеспечивает следующую выходную информацию:
Результат решения математической задачи, поставленной пользователем.
2.2 Входная информация
Входными данными являются данные, вводимые пользователем.
3 СХЕМА ФУНКЦИОНАЛЬНОЙ СТРУКТУРЫ И ЕЕ ХАРАКТЕРИСТИКА
3.1 Схема функциональной структуры
Схема функциональной структуры представлена на рисунке 1
3.2 Характеристика функциональной структуры
Программы, работающие на компьютере, можно разделить на три категории:
Данные категории программ в свою очередь так – же разделяются на несколько разделов. Например, прикладные программы можно разделить по уровню сложности обработки информации и результатов. Для математических вычислений существует множество различных програмных продуктов. Это известные всем пакеты 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.