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

 

Содержание


Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

Введение


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

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

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

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


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


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


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


Функциональность: программа должна являться полностью завершенным программным продуктом, не требующим каких-либо дополнительных специальных компонентов.

Надёжность: программа должна быть автономной.

Эффективность: программа должна функционировать без наличия привода CD/DVD-дисков, должна предъявлять минимальные требования к аппаратному обеспечению, требования к аппаратным ресурсам должны быть намного ниже, чем для самой ОС.Программа должна иметь интуитивно понятный пользовательский графический интерфейс.


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


Минимальные технические характеристики компьютера, на котором гарантируется стабильная работа программы:

-компьютер/процессор: компьютер с процессором класса Pentium II 450 МГц;

-память: 64 МБОЗУ;

-монитор: монитор Super VGA с разрешением 800x600 точек или более высоким, поддерживающий 256 цветов;

-операционная система: операционная система Windows 2000, необходимо наличие Microsoft.NET FrameworkRuntime v2.0;

-наличие свободного дискового пространства на жёстком диске (порядка 1 мегабайта).

Внешние функции:

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

Критические случаи:

-завершение работы Windows. В этом случае программа должна завершать свою работу.


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


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


Главная форма содержит основные элементы интерфейса и даёт доступ ко всем функциям


Рисунок 1 - главная форма программы


Форма Form1 содержит следующие элементы управления:

-поле для просмотра введенных и вычисленных значений;

-цифровые, арифметические и клавиши управления: для ввода цифр, арифметических операций и функций очистки и вычисления данных;


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


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


Подсистема расчета реализована функцией:

-procedureTForm1.Button17Click(Sender: TObject) - производит арифметические операции над введенными числами;

Подсистема интерфейса - объединяет все остальные подсистемы. Здесь реализован весь пользовательский интерфейс.

Основные методы:

-procedure TForm1.Button1Click(Sender: TObject)вводцифровыхзначений 0-9, A-F;

-procedure TForm1.Button16Click(Sender: TObject); TForm1.Button12Click(Sender: TObject);TForm1.Button11Click(Sender: TObject);TForm1.Button4Click(Sender: TObject); - ввод арифметической операции.

-procedure TForm1.Button24Click(Sender: TObject) - сброс значений и операций

-procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;: TShiftState) - удаление последнего символа во введенном числе клавишей BackSpace.

?functionTForm1.BinToInt (Value: integer): double; - функция перевода числа из двоичной системы счисления в десятичную систему счисления.

?????functionTForm1.Bin(x: Integer): string; - функция перевода числа из десятичной в двоичную систему счисления.

?????functionTForm1.HEX(a:integer):string; - функция перевода числа из десятичной в шестнадцатеричную систему счисления.

????functionTForm1.HexToInt(HexNum: string): LongInt; - функция перевода числа из шестнадцатеричной в десятичную систему счисления.

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


Работу программы можно разбить на несколько независимых алгоритмов. Каждый алгоритм запускается соответствующим событием.

Алгоритм арифметической операции. В данном алгоритме происходит проверка условным оператором(if):на индекс =0 (на форме двоичная), вызов функции BinToInt для преобразования двух чисел двоичной системы счисления в десятичную систему счисления, арифметические операции +,-,*,/ над введенными числами и перевод результата из десятичной в двоичную систему счисления функцией IntToBin.на индекс =1 (на форме шестнадцатеричная), вызов функции HexToInt для преобразования двух чисел шестнадцатеричной системы счисления в десятичную систему счисления, арифметические операции +,-,*,/ над введенными числами и перевод результата из десятичной в шестнадцатеричную систему счисления функцией IntToBin.


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


.1 Тестирование


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

Тест 1. Ввод цифровых данных.

При вводе цифровых данных ошибок не возникает.

Тест 2. Ввод арифметических операций.

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


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


Программа поставляется в виде исполнимого файла «Calc.exe» размером 14 КБ не требует установки и дополнительной настройки.

Программа не разделяет полномочия на пользовательские и администраторские, вследствие чего руководство администратора будет идентично руководству пользователя.


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

программа калькулятор интерфейс алгоритм

Программа предназначена для произведения элементарных арифметических операций над двоичными и шестнадцатеричными числами.

Для ввода числовых, знаковых и арифметических значений используются соответствующие клавиши на форме.

Для очистки и удаления введенного значения используются клавиши Сброс.

Заключение


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

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


Приложение А. Листинг модуляForm1

Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls;= class(TForm): TEdit;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TComboBox;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;: TButton;Button1Click(Sender: TObject);Button2Click(Sender: TObject);Button3Click(Sender: TObject);Button5Click(Sender: TObject);Button6Click(Sender: TObject);Button10Click(Sender: TObject);Button7Click(Sender: TObject);Button8Click(Sender: TObject);Button9Click(Sender: TObject);Button13Click(Sender: TObject);FormKeyDown(Sender: TObject; var Key: Word;: TShiftState);FormShow(Sender: TObject);Button17Click(Sender: TObject);Button16Click(Sender: TObject);Button12Click(Sender: TObject);Button11Click(Sender: TObject);Button4Click(Sender: TObject);Button23Click(Sender: TObject);Button18Click(Sender: TObject);Button19Click(Sender: TObject);Button20Click(Sender: TObject);Button21Click(Sender: TObject);Button22Click(Sender: TObject);Button24Click(Sender: TObject);

{ Private declarations }: Integer; One: integer;: Byte;: String;BinToInt (Value: integer): double; //обьявляемздесьнашифункции.IntToBin(x: Integer): string;IntToHex(a:integer):string;HexToInt(HexNum: string): LongInt;

{ Public declarations };: TForm1;

{$R *.dfm}TForm1.BinToInt (Value: integer): double; //функцияпереводаиздвоичнойсистемывдесятичную.i,x,g,h,u,kol:integer; f,k: double;:=0;:=Value;u>0 do //выполняемпокапер. u большенуля.:=u div 10; // считаем в счетчик Kol сколько раз наше число u сможет поделиться на (10).:=kol + 1;;:=0; x:=0;i:=1 to kol do // запускаем For выполняет пока i не будет равно kol.:=Value mod 10; // делим наше число на 10 и присваиваем g остаток деления.:=Value div 10; // делим наше число на 10 и присваиваем h целую часть после деления.:=h;:=g*exp(x*ln(2)); // умножаем g на 2 в степени x.:=f+k; // суммируем все значения.:=x+1; // счетчик степени x.;;:=f; // присваиваем конечное значение функции BinToInt.;TForm1.IntToBin(x: Integer): string; // Функция перевода из десятичного числа в двоичную систему счисления.t:array[0..1] of char = ('0','1'); // Массив с 2 уже заполнеными ячейками 1 и 0, когда мы будем делить наше число mod 2 в переменную res будет + записывать 0 либо 1.res:string;: integer;:='';:=0;(x<>0) do // выполняем пока наше число x неравно 0.:=x mod 2; // делим наше число x на 2, и присваимваем остаток после деления пер. d.:=t[d]+res; // присваиваем строковому типо res 1 или 0.:=x div 2; // берем целую часть после деления на 2.;:=res; // присваиваем конечное значение функции Bin.;TForm1.IntToHex(a:integer):string; // функция перевода из десятичной в шестнадцатиричную систему счисления.figures:array[1..15] of char = ('1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'); // Описываем массив и заполняем его значениями шестнадцатиричной системы счисления.:='';a>0 do // выполняется пока наше значение a больше нуля.:=figures[a mod 16] + result; // делим на 16 наше значение А в массиве, и в массиве остается (по правилу переводу из десят. в шестнад. систему счисления)нужное нам значение.:=a div 16; // берем целую часть после деления A.;;TForm1.HexToInt(HexNum: string): LongInt; // Фукция перевода из шестнадцатеричной в десятичную систему счисления.//Delphi позволяет использовать шестнадцатиричные выражения (используя префикс $).:=StrToInt('$' + HexNum); // Переводим StrToInt из string(строкового вида) в integer, и присваиваем полученное значение нашей функции.;TForm1.Button1Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:=''; // Описываем OnClick кнопокнаформе. Если Edit1 равен 0 то убираем 0 и оставляем пустое окно ввода..Text:=Edit1.Text+'7'; // Прибавляем к уже имеющимся цифрам или просто выводим значение в Edit1. Такжесделаемсостальнымикнопками 0-9,'A'-'F';TForm1.Button2Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'8';;TForm1.Button3Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'9';;TForm1.Button5Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'4';;TForm1.Button6Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'5';;TForm1.Button10Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'6';;TForm1.Button7Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'1';;TForm1.Button8Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'2';;TForm1.Button9Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'3';;TForm1.Button13Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'0';;TForm1.FormKeyDown(Sender: TObject; var Key: Word;: TShiftState);s: String;:=Edit1.Text;Key=VK_BACK then Delete(s,Length(s),1);(s='-') or (s='') or (StrToFloat(s)=0) then s:='0';.Text:=s;;TForm1.FormShow(Sender: TObject);:=0;:='';:=0;;TForm1.Button17Click(Sender: TObject);FoVod,Znach2,Otvet: Integer; Znac1,Znac2,Result: double; Fo: string;ComboBox1.ItemIndex=0 then // Если ComboBox=0 (или на форме двоичная) то переводим двоичн. значения в десятичную и производим с ними арифметические действия, результат переводим из десят. в двоичную систему счисления.:=StrToInt(Edit1.Text); // FoVod типа integer- Присваивает 2 значение которое пользователь введет на форме в Edit после нажатия на кнопку с '='. StrToInt- перевод из string в integer.:=BinToInt(OneVod); // Znac1 - вызываем функцию BinToInt (перевода из двоичн. в десятичную.) и отправляем значение OneVod (с первого ввода числа пользователем).:=BinToInt(FoVod); // Znac2 - вызываем функцию BinToInt (перевода из двоичн. в десятичную.) и отправляем значение FoVod (с второго ввода числа пользователем).Oper of // Case определяет Oper какое арифметическое действие выбрал пользователь и осуществляет его записывая результат в Result.

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

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

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

: Result:=Znac1/Znac2; // Частное:=Znac2; //;.Text:=IntToBin(Trunc(Result)); // Вызываемфункцию(перевода из десят. в двоичную систему счисления, округлив Result (Trunc) и выводим результат в Edit1.:=Edit1.Text; // Fo типа string - Присваивает 2 значение которое пользователь введет на форме в Edit после нажатия на кнопку с '='.:=HexToInt(Fo); // Znach2 типа double - вызываем функцию HexToInt (перевод из шестнадцатеричной в десят. систему счисления) значение Fo.Oper of //Case определяет Oper какое арифметическое действие выбрал пользователь и осуществляет его записывая результат в Result.

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

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

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

: Result:=One/Znach2; //Частное:=Znach2; //;.Text:=IntToHex(Trunc(Result)); // Вызываемфункцию(перевода из десят. в шестнад. систему счисления) и выводим результат в Edit1.;:=''; // обнуляем переменные:=0; // обнуляем переменные:=0; // обнуляемпеременные;TForm1.Button16Click(Sender: TObject);.Click;ComboBox1.ItemIndex=0 then // Проверяем ComboBox1 если позиция 0 (или на форме двоичная) то выполняем считывание данных с Edit1 в переменную OneVod типа(integer) преобразовавеё StrToInt.:=StrToInt(Edit1.Text);:=1; // Присваиваем Oper =1 (сумма) для Case.// Или ComboBox1 позиция 1 (или на форме шестнадцатеричная) то то выполняем считывание данных с Edit1 в переменную One типа(string).:=HexToInt(Edit1.Text);:=1; // Присваиваем Oper =1 (сумма) для Case.;.Text:='0'; // Убираем все значения с поля ввода Edit1 и оставляем 0 ноль.;TForm1.Button12Click(Sender: TObject);.Click;ComboBox1.ItemIndex=0 then:=StrToInt(Edit1.Text);:=2; // Присваиваем Oper =2 (разность) для Case.:=HexToInt(Edit1.Text);:=2; // Присваиваем Oper =2 (разность) для Case.;.Text:='0';;TForm1.Button11Click(Sender: TObject);.Click;ComboBox1.ItemIndex=0 then:=StrToInt(Edit1.Text);:=3; // Присваиваем Oper =3 (произведение) для Case.:=HexToInt(Edit1.Text);:=3; // Присваиваем Oper =3 (произведение) для Case.;.Text:='0';;TForm1.Button4Click(Sender: TObject);.Click;ComboBox1.ItemIndex=0 then:=StrToInt(Edit1.Text);:=4; // Присваиваем Oper 4 (Частное) для Case.:=HexToInt(Edit1.Text);:=4; // Присваиваем Oper 4 (Частное) для Case.;.Text:='0';;TForm1.Button23Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'A';;TForm1.Button18Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'B';;TForm1.Button19Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'C';;TForm1.Button20Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'D';;TForm1.Button21Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'E';;TForm1.Button22Click(Sender: TObject);Edit1.Text='0' then Edit1.Text:='';.Text:=Edit1.Text+'F';;TForm1.Button24Click(Sender: TObject); // Сброс (обнуляем все переменные и готовы к новым арифметическим дествиям).:='';:=0;:=0;.Text:='0';;.



Содержание Введение 1.Внешнее описание 1.1Определение требований к программному средству 1.2Спецификация качества программного обеспечения .3

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ