Программа "Калькулятор двоичных и шестнадцатеричных систем счисления" - Курсовая работа

бесплатно 0
4.5 130
Создание программы для выполнения простейших математических функций с применением языка программирования ObjectPascal. Проектирование графического интерфейса Калькулятора двоичных и шестнадцатеричных систем. Описание алгоритма на естественном языке.


Аннотация к работе
В данной пояснительной записке рассматривается описание программы «Калькулятора двоичных и шестнадцатеричных систем счисления».Программа должна позволять выполнять простейшие математические функции.Функциональность: программа должна являться полностью завершенным программным продуктом, не требующим каких-либо дополнительных специальных компонентов.Минимальные технические характеристики компьютера, на котором гарантируется стабильная работа программы: - компьютер/процессор: компьютер с процессором класса Pentium II 450 МГЦ; монитор: монитор Super VGA с разрешением 800x600 точек или более высоким, поддерживающий 256 цветов;Главная форма содержит основные элементы интерфейса и дает доступ ко всем функциямПодсистема расчета реализована функцией: - PROCEDURETFORM1.Button17Click(Sender: TOBJECT) - производит арифметические операции над введенными числами; Основные методы: - procedure TFORM1.Button1Click(Sender: TOBJECT)вводцифровыхзначений 0-9, ‘A’-‘F’; procedure TFORM1.Button16Click(Sender: TOBJECT); procedure TFORM1.Button12Click(Sender: TOBJECT); procedure TFORM1.Button11Click(Sender: TOBJECT);В данном алгоритме происходит проверка условным оператором(if): COMBOBOX на индекс =0 (на форме “двоичная”), вызов функции BINTOINT для преобразования двух чисел двоичной системы счисления в десятичную систему счисления, арифметические операции ‘ ’,’-’,’*’,’/’ над введенными числами и перевод результата из десятичной в двоичную систему счисления функцией INTTOBIN.Для тестирования программы производились различные манипуляции с данными, искусственно создавались всевозможные критические ситуации. При вводе цифровых данных ошибок не возникает.Программа поставляется в виде исполнимого файла «Calc.exe» размером 14 КБ не требует установки и дополнительной настройки.Программа предназначена для произведения элементарных арифметических операций над двоичными и шестнадцатеричными числами.while a>0 do // выполняется пока наше значение a больше нуля. begin result:=figures[a mod 16] result; // делим на 16 наше значение А в массиве, и в массиве остается (по правилу переводу из десят. в шестнад. систему счисления)нужное нам значение. a:=a div 16; // берем целую часть после деления begin if Edit1.Text="0" then Edit1.Text:=""; // Описываем ONCLICK кнопокнаформе. Edit1.Text:=Edit1.Text "7"; // Прибавляем к уже имеющимся цифрам или просто выводим значение в Edit1. begin if Edit1.Text="0" then Edit1.Text:=""; Edit1.Text:=Edit1.

План
Содержание

Введение

1. Внешнее описание

1.1 Определение требований к программному средству

1.2 Спецификация качества программного обеспечения

1.3 Функциональная спецификация

2. Проектирование

2.1 Проектирование графического интерфейса

3. Программирование

3.1 Спецификация классов

3.2 Описание алгоритма на естественном языке

4. Аттестация

4.1 Тестирование

4.2 Руководство администратора

4.3 Руководство пользователя

Заключение

Приложение А. Листинг программы

Введение
В данной пояснительной записке рассматривается описание программы «Калькулятора двоичных и шестнадцатеричных систем счисления».

Данная программа предназначена для выполнения функций калькулятора. Со стороны пользователя программа очень проста в использовании и имеет простой и интуитивно-понятный интерфейс.

В качестве основного инструмента разработки применяется Delphi 7. Язык программирования Object Pascal.

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

При разработке данного программного средства применялся язык программирования OBJECTPASCAL.

Приложение А. Листинг МОДУЛЯFORM1 unit Unit1;

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, STDCTRLS;

type

TFORM1 = 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;

Button12: TBUTTON;

Button13: TBUTTON;

Button16: TBUTTON;

Button17: TBUTTON;

COMBOBOX1: TCOMBOBOX;

Button18: TBUTTON;

Button19: TBUTTON;

Button20: TBUTTON;

Button21: TBUTTON;

Button22: TBUTTON;

Button23: TBUTTON;

Button24: TBUTTON;

procedure Button1Click(Sender: TOBJECT);

procedure Button2Click(Sender: TOBJECT);

procedure Button3Click(Sender: TOBJECT);

procedure Button5Click(Sender: TOBJECT);

procedure Button6Click(Sender: TOBJECT);

procedure Button10Click(Sender: TOBJECT);

procedure Button7Click(Sender: TOBJECT);

procedure Button8Click(Sender: TOBJECT);

procedure Button9Click(Sender: TOBJECT);

procedure Button13Click(Sender: TOBJECT);

procedure FORMKEYDOWN(Sender: TOBJECT; var Key: Word;

Shift: TSHIFTSTATE);

procedure FORMSHOW(Sender: TOBJECT);

procedure Button17Click(Sender: TOBJECT);

procedure Button16Click(Sender: TOBJECT);

procedure Button12Click(Sender: TOBJECT);

procedure Button11Click(Sender: TOBJECT);

procedure Button4Click(Sender: TOBJECT);

procedure Button23Click(Sender: TOBJECT);

procedure Button18Click(Sender: TOBJECT);

procedure Button19Click(Sender: TOBJECT);

procedure Button20Click(Sender: TOBJECT);

procedure Button21Click(Sender: TOBJECT);

procedure Button22Click(Sender: TOBJECT);

procedure Button24Click(Sender: TOBJECT);

private

{ Private declarations }

ONEVOD: Integer; One: integer;

Oper: Byte;

Valuel1: String;

function BINTOINT (Value: integer): double; //обьявляемздесьнашифункции. function INTTOBIN(x: Integer): string;

function INTTOHEX(a:integer):string;

function HEXTOINT(HEXNUM: string): LONGINT;

public

{ Public declarations } end;

var

Form1: TFORM1;

implementation

{$R *.dfm} function TFORM1.BINTOINT (Value: integer): double; //функцияпереводаиздвоичнойсистемывдесятичную. var i,x,g,h,u,kol:integer; f,k: double;

begin kol:=0;

u:=Value;

while u>0 do //выполняемпокапер. u большенуля. begin u:=u div 10; // считаем в счетчик Kol сколько раз наше число u сможет поделиться на (10). kol:=kol 1;

end;

begin f:=0; x:=0;

for i:=1 to kol do // запускаем For выполняет пока i не будет равно kol.

Begin g:=Value mod 10; // делим наше число на 10 и присваиваем g остаток деления. h:=Value div 10; // делим наше число на 10 и присваиваем h целую часть после деления.

Value:=h;

k:=g*exp(x*ln(2)); // умножаем g на 2 в степени x. f:=f k; // суммируем все значения. x:=x 1; // счетчик степени x. end;

end;

BINTOINT:=f; // присваиваем конечное значение функции BINTOINT. end;

function TFORM1.INTTOBIN(x: Integer): string; // Функция перевода из десятичного числа в двоичную систему счисления. const t:array[0..1] of char = ("0","1"); // Массив с 2 уже заполнеными ячейками 1 и 0, когда мы будем делить наше число mod 2 в переменную res будет записывать 0 либо 1. var res:string;

d: integer;

begin res:="";

d:=0;

while (x0) do // выполняем пока наше число x неравно 0. begin d:=x mod 2; // делим наше число x на 2, и присваимваем остаток после деления пер. d. res:=t[d] res; // присваиваем строковому типо res 1 или 0. x:=x div 2; // берем целую часть после деления на 2. end;

INTTOBIN:=res; // присваиваем конечное значение функции Bin. end;

function TFORM1.INTTOHEX(a:integer):string; // функция перевода из десятичной в шестнадцатиричную систему счисления. const figures:array[1..15] of char = ("1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"); // Описываем массив и заполняем его значениями шестнадцатиричной системы счисления. begin result:="";

while a>0 do // выполняется пока наше значение a больше нуля. begin result:=figures[a mod 16] result; // делим на 16 наше значение А в массиве, и в массиве остается (по правилу переводу из десят. в шестнад. систему счисления)нужное нам значение. a:=a div 16; // берем целую часть после деления A. end;

end;

function TFORM1.HEXTOINT(HEXNUM: string): LONGINT; // Фукция перевода из шестнадцатеричной в десятичную систему счисления. begin //Delphi позволяет использовать шестнадцатиричные выражения (используя префикс $).

Result:=STRTOINT("$" HEXNUM); // Переводим STRTOINT из string(строкового вида) в integer, и присваиваем полученное значение нашей функции. end;

procedure TFORM1.Button1Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:=""; // Описываем ONCLICK кнопокнаформе. Если Edit1 равен 0 то убираем 0 и оставляем пустое окно ввода.

Edit1.Text:=Edit1.Text "7"; // Прибавляем к уже имеющимся цифрам или просто выводим значение в Edit1. Такжесделаемсостальнымикнопками 0-9,"A"-"F" end;

procedure TFORM1.Button2Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "8";

end;

procedure TFORM1.Button3Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "9";

end;

procedure TFORM1.Button5Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "4";

end;

procedure TFORM1.Button6Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "5";

end;

procedure TFORM1.Button10Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "6";

end;

procedure TFORM1.Button7Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "1";

end;

procedure TFORM1.Button8Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "2";

end;

procedure TFORM1.Button9Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "3";

end;

procedure TFORM1.Button13Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "0";

end;

procedure TFORM1.FORMKEYDOWN(Sender: TOBJECT; var Key: Word;

Shift: TSHIFTSTATE);

var s: String;

begin s:=Edit1.Text;

if Key=VK_BACK then Delete(s,Length(s),1);

if (s="-") or (s="") or (STRTOFLOAT(s)=0) then s:="0";

Edit1.Text:=s;

end;

procedure TFORM1.FORMSHOW(Sender: TOBJECT);

begin

ONEVOD:=0;

Valuel1:="";

Oper:=0;

end;

procedure TFORM1.Button17Click(Sender: TOBJECT);

var FOVOD,Znach2,Otvet: Integer; Znac1,Znac2,Result: double; Fo: string;

begin

If COMBOBOX1.ITEMINDEX=0 then // Если COMBOBOX=0 (или на форме двоичная) то переводим двоичн. значения в десятичную и производим с ними арифметические действия, результат переводим из десят. в двоичную систему счисления. begin

FOVOD:=STRTOINT(Edit1.Text); // FOVOD типа integer- Присваивает 2 значение которое пользователь введет на форме в Edit после нажатия на кнопку с "=". STRTOINT- перевод из string в integer.

Znac1:=BINTOINT(ONEVOD); // Znac1 - вызываем функцию BINTOINT (перевода из двоичн. в десятичную.) и отправляем значение ONEVOD (с первого ввода числа пользователем).

Znac2:=BINTOINT(FOVOD); // Znac2 - вызываем функцию BINTOINT (перевода из двоичн. в десятичную.) и отправляем значение FOVOD (с второго ввода числа пользователем). case Oper of // Case определяет Oper какое арифметическое действие выбрал пользователь и осуществляет его записывая результат в Result.

1: Result:=Znac1 Znac2; // Сумма

2: Result:=Znac1-Znac2; // Разность

3: Result:=Znac1*Znac2; // Произведение

4: Result:=Znac1/Znac2; // Частное else

Result:=Znac2; // end;

Edit1.Text:=INTTOBIN(Trunc(Result)); // Вызываемфункцию(перевода из десят. в двоичную систему счисления, округлив Result (Trunc) и выводим результат в Edit1. end else begin

Fo:=Edit1.Text; // Fo типа string - Присваивает 2 значение которое пользователь введет на форме в Edit после нажатия на кнопку с "=".

Znach2:=HEXTOINT(Fo); // Znach2 типа double - вызываем функцию HEXTOINT (перевод из шестнадцатеричной в десят. систему счисления) значение Fo. case Oper of //Case определяет Oper какое арифметическое действие выбрал пользователь и осуществляет его записывая результат в Result.

1: Result:=One Znach2; // Сумма

2: Result:=One-Znach2; //Разность

3: Result:=One*Znach2; //Произведение

4: Result:=One/Znach2; //Частное else

Result:=Znach2; // end;

Edit1.Text:=INTTOHEX(Trunc(Result)); // Вызываемфункцию(перевода из десят. в шестнад. систему счисления) и выводим результат в Edit1. end;

Valuel1:=""; // обнуляем переменные

ONEVOD:=0; // обнуляем переменные

Oper:=0; // обнуляемпеременные end;

procedure TFORM1.Button16Click(Sender: TOBJECT);

begin

Button17.Click;

if COMBOBOX1.ITEMINDEX=0 then // Проверяем COMBOBOX1 если позиция 0 (или на форме двоичная) то выполняем считывание данных с Edit1 в переменную ONEVOD типа(integer) преобразовавее STRTOINT. begin

ONEVOD:=STRTOINT(Edit1.Text);

Oper:=1; // Присваиваем Oper =1 (сумма) для Case. end else // Или COMBOBOX1 позиция 1 (или на форме шестнадцатеричная) то то выполняем считывание данных с Edit1 в переменную One типа(string). begin

One:=HEXTOINT(Edit1.Text);

Oper:=1; // Присваиваем Oper =1 (сумма) для Case. end;

Edit1.Text:="0"; // Убираем все значения с поля ввода Edit1 и оставляем 0 ноль. end;

procedure TFORM1.Button12Click(Sender: TOBJECT);

begin

Button17.Click;

if COMBOBOX1.ITEMINDEX=0 then begin

ONEVOD:=STRTOINT(Edit1.Text);

Oper:=2; // Присваиваем Oper =2 (разность) для Case. end else begin

One:=HEXTOINT(Edit1.Text);

Oper:=2; // Присваиваем Oper =2 (разность) для Case. end;

Edit1.Text:="0";

end;

procedure TFORM1.Button11Click(Sender: TOBJECT);

begin

Button17.Click;

if COMBOBOX1.ITEMINDEX=0 then begin

ONEVOD:=STRTOINT(Edit1.Text);

Oper:=3; // Присваиваем Oper =3 (произведение) для Case. end else begin

One:=HEXTOINT(Edit1.Text);

Oper:=3; // Присваиваем Oper =3 (произведение) для Case. end;

Edit1.Text:="0";

end;

procedure TFORM1.Button4Click(Sender: TOBJECT);

begin

Button17.Click;

if COMBOBOX1.ITEMINDEX=0 then begin

ONEVOD:=STRTOINT(Edit1.Text);

Oper:=4; // Присваиваем Oper 4 (Частное) для Case. end else begin

One:=HEXTOINT(Edit1.Text);

Oper:=4; // Присваиваем Oper 4 (Частное) для Case. end;

Edit1.Text:="0";

end;

procedure TFORM1.Button23Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "A";

end;

procedure TFORM1.Button18Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "B";

end;

procedure TFORM1.Button19Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "C";

end;

procedure TFORM1.Button20Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "D";

end;

procedure TFORM1.Button21Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "E";

end;

procedure TFORM1.Button22Click(Sender: TOBJECT);

begin if Edit1.Text="0" then Edit1.Text:="";

Edit1.Text:=Edit1.Text "F";

end;

procedure TFORM1.Button24Click(Sender: TOBJECT); // Сброс (обнуляем все переменные и готовы к новым арифметическим дествиям). begin

Valuel1:="";

ONEVOD:=0;

One:=0;

Edit1.Text:="0";

end;

end.

Размещено на
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?