Docsity
Docsity

Подготовься к экзаменам
Подготовься к экзаменам

Учись благодаря многочисленным ресурсам, которые есть на Docsity


Получи баллы для скачивания
Получи баллы для скачивания

Заработай баллы, помогая другим студентам, или приобретай их по тарифом Премиум


Руководства и советы
Руководства и советы

Компонент перевода чисел в различные системы счисления курсовая по программированию и компьютерам , Дипломная из Программирование

Компонент перевода чисел в различные системы счисления курсовая по программированию и компьютерам

Вид: Дипломная

2016/2017
Специальное предложение
30 Баллы
Discount

Предложение без ограничения по времени


Загружен 11.04.2017

refbank22393
refbank22393 🇷🇺

4.7

(3)

11 документы

1 / 33

Toggle sidebar
Discount

Специальное предложение

Сопутствующие документы


Частичный предварительный просмотр текста

Скачай Компонент перевода чисел в различные системы счисления курсовая по программированию и компьютерам и еще Дипломная в формате PDF Программирование только на Docsity! В курсовой работе разработан собственный компонент, осуществляющий перевод чисел в различные системы счисления. Реализация модулей, описанных при создании данного компонента, произведена в среде программирования Borland C++Builder 6. Содержание Введение……………………………………………………………………………….5 1 Анализ технического задания……………………………………………………7 2 Проектирование структуры программы и базовых алгоритмов…………..10 3 Программная реализация разработанной структуры и алгоритмов……..12 4 Руководство программиста……………………………………………………..18 5 Руководство пользователя……………………………………………………...20 6 Результаты тестирования созданного программного продукта…………..22 Заключение…………………………………………………………………………..24 Список использованной литературы…………………………………………….25 ПРИЛОЖЕНИЕ А……………………………………………………………………26 1 Анализ технического задания В курсовой работе необходимо создать собственный компонент перевода чисел из одной системы счисления в другую. Создаваемый компонент должен предоставлять пользователю возможность задавать исходную и конечную системы счисления, переводить числа в заданную систему счисления, проверять правильность ввода числа. Компонент перевода будет разработан в среде Borland C++ Builder 6, которая представляет собой совершенную интерактивную среду программирования на языке C++. Система обеспечивает высокую продуктивность и производительность, удовлетворяя современным требованиям к разработке приложений под Windows. C++Builder предоставляет неограниченные возможности создания новых компонентов и обладает такими элементами языка, как свойства, методы, события, которые в свою очередь обеспечивают ускоренную разработку приложений в рамках объектно-ориентированного программирования. В ходе выполнения работы необходимо выполнить следующие действия: • Создание модуля нового компонента. • Наследование производного компонентного класса от базового. • Добавление нужных свойств, событий и методов. • Регистрация компонента в C++Builder. • Испытание компонента. • Установка компонента на Палитру компонентов. • Сохранение файлов компонента. Первым шагом создания компонента будет определение базового класса. Компоненты разделяются на видимые (визуальные) и невидимые (невизуальные). Визуальные компоненты появляются во время выполнения точно так же, как и во время проектирования. Примерами являются кнопки и редактируемые поля. Невизуальные компоненты появляются во время проектирования как пиктограммы на форме. Они никогда не видны во время выполнения, но обладают определенной функциональностью. Анализируя поставленные задачи, можно сделать вывод, что создаваемый компонент будет невизуальным, т.к. он будет содержать метод перевода и нет необходимости в том, чтобы он был видимым на форме в процессе выполнения приложения. Метод перевода числа можно описать различными способами, например, описать методы перевода числа для каждой из возможных систем счисления, но это сделает код функции очень громоздким. Также можно воспользоваться стандартными функциями перевода среды C++ Builder (IntToHex, IntToBin, HexToBin, BinToHex), но тогда придется включать в компонент лишние модули, в которых они описаны. К тому же придется вводить размер (длину) получаемого результата, что сделает неудобной работу с компонентом. Кроме того, если воспользоваться этими функциями, то будет возможной работа только с тремя системами счисления (десятичной, двоичной и шестнадцатеричной). Удобнее всего написать собственные функции перевода – перевод в десятичную систему счисления и перевод из десятичной системы счисления в нужную. Этих функций будет достаточно для работы со всеми системами счисления, т. к. для различных систем счисления используются одинаковые алгоритмы перевода. Таким образом, функция перевода будет вызывать еще две функции в зависимости от задаваемых систем счисления. Чтобы не возникали ошибки в работе функций, необходимо проверять, соответствует ли введенное число заданной системе счисления. Для этого функция перевода будет вызывать и функцию проверки. При несоответствии введенного числа заданной системе счисления будет выдано сообщение об ошибке. Следует отметить, что существуют программные продукты, выполняющие похожие функции, например Калькулятор. Но Калькулятор позволяет переводить числа в двоичную, восьмеричную, десятичную и шестнадцатеричную системы счисления. Компонент перевода позволит работать с системами счисления с основаниями 2..10 и 16. Таким образом, в курсовой работе будет разработан невизуальный компонент, позволяющий переводить числа из одной системы счисления в другую с проверкой соответствия введенного числа и исходной системы счисления. 3 Программная реализация разработанной структуры и алгоритмов Компонент «Перевод чисел из одной системы счисления в другую» разработан в среде программирования Borland C++ Builder 6. Создание компонента проходит несколько этапов: 1. Выбор базового класса и создание нового класса наследованием от выбранного базового. Разрабатываемый компонент называется NumberConverter. Как уже было сказано, при использовании компонента пользователю важна лишь функция перевода числа, поэтому нет необходимости в том, чтобы компонент был визуальным, значит наследование нужно осуществлять от класса TСomponent. 2. Теперь нужно описать новые свойства и методы компонента. NumberConverter имеет два свойства: SourceSysS – исходная система счисления и FinalSysS – конечная система счисления. Эти свойства должны отображаться в инспекторе объектов, поэтому их описание нужно поместить в раздел published. __published: __property int SourceSysS = {read = FSourceSysS, write = FSourceSysS, default = 10}; __property int FinalSysS = {read = FFinalSysS, write = FFinalSysS, default = 2}; Так как компонент позволяет работать только с определенными системами счисления, то для избежания ошибок лучше создать редакторы этих свойств в виде выпадающих списков. Для этого в файле заголовков компонента необходимо привести описание класса редактора свойств. class TSysSPropertyEditor : public TIntegerProperty { public: TPropertyAttributes __fastcall GetAttributes (); void __fastcall GetValues (TGetStrProc IntVal); }; В файле кодов нужно описать функции редактора свойств. Разрешить раскрывающийся список значений свойства: TPropertyAttributes __fastcall TSysSPropertyEditor::GetAttributes() { return TPropertyAttributes () << paValueList; } Задать значения: void __fastcall TSysSPropertyEditor::GetValues(TGetStrProc IntVal) { IntVal("2"); …………… IntVal("10"); IntVal("16"); } Затем нужно зарегистрировать созданный редактор свойств: PTypeInfo typeinfo = *GetPropInfo (__typeinfo(TNumberConverter), "SourceSysS")->PropType; RegisterPropertyEditor(typeinfo, __classid(TNumberConverter), "SourceSysS", __classid(TSysSPropertyEditor)); RegisterPropertyEditor(typeinfo, __classid(TNumberConverter), "FinalSysS", __classid(TSysSPropertyEditor)); Кроме двух новых свойств компонент содержит метод перевода, т. к. он доступен пользователю, то его объявление должно быть в разделе public. AnsiString __fastcall Convert (AnsiString); Параметр, передаваемый в функцию, и возвращаемый результат имеют тип AnsiString, т. к. переводимое число и результат могут содержать буквы. Кроме метода Convert, компонент имеет еще три метода: CheckingNumber, ConvToDec и ConvFromDec. Все три метода являются недоступными пользователю, поэтому их объявления помещены в раздел protected: int __fastcall ConvToDec (AnsiString); AnsiString __fastcall ConvFromDec (int); int __fastcall CheckingNumber (AnsiString); Метод Convert действует следующим образом. Сначала вызывается функция проверки. Метод CheckingNumber осуществляет проверку правильности ввода числа, тип которого AnsiString, а также проверяет, являются ли введенные системы счисления возможными для работы компонента. Функция возвращает одно из значений: 0, 1, 2. Значение “0” соответствует верному вводу, “1” – несоответствие числа системе счисления, ”2” – одна из введенных систем счисления или обе не являются системами счисления с основаниями 2..10 или 16. В зависимости от ошибки или ее отсутствия выводятся соответствующие сообщения или выполняется перевод. switch (CheckingNumber(Numb)) { case 1:ShowMessage("Ошибка! Проверьте правильность ввода числа"); return "Error"; Затем если конечная система счисления не десятичная, осуществляется перевод из десятичной системы счисления в конечную. if (FinalSysS != 10) RezultNumber = ConvFromDec (StrToInt (RezultNumber)); Здесь перевод заканчивается и возвращается результат. return RezultNumber; Алгоритмы функций ConvFromDec и ConvToDec показаны в приложении. После описания новых свойств и методов нужно откомпилировать модули компонента, зарегистрировать его и провести установку на палитру компонент. Регистрация компонента: namespace Numberconverter { void __fastcall PACKAGE Register() { TComponentClass classes[1] = {__classid (TNumberConverter)}; RegisterComponents("MyComponents", classes, 0); } } Таким образом был создан собственный компонент NumberConverter, осуществляющий перевод чисел из одной системы счисления в другую. Для проверки работоспособности компонента было создано тестирующее приложение. 4 Руководство программиста Компонент NumberConverter разработан в среде Borland C++ Builder 6 и предназначен для перевода чисел из одной системы счисления в другую. В качестве базового класса был выбран класс TСomponent, т.к. наследование от него предполагает создание невизуального компонента. В компонент были добавлены два новых свойства: исходная система счисления SourceSysS и конечная система счисления FinalSysS, имеющие тип int. Эти свойства отображаются в инспекторе объектов и описаны в разделе published следующим образом: __property int SourceSysS = {read = FSourceSysS, write = FSourceSysS, default = 10}; __property int FinalSysS = {read = FFinalSysS, write = FFinalSysS, default = 2}; Еще в компонент добавлены четыре метода: Convert – перевод числа, CheckingNumber - проверка, ConvToDec – перевод в десятичную систему счисления, ConvFromDec – перевод из десятичной системы счисления. Пользователю доступен только метод Convert, поэтому он объявлен в разделе public. Остальные три метода объявлены в разделе protected для того, чтобы их можно было изменять при дальнейшем наследовании. В компонент были включены следующие дополнительныые модули: DesignIntf.hpp и DesignEditors.hpp – для создания редактора свойств, math.h – для использования функции возведения в степень pow, dialogs.hpp – для использования функции ShowMessage. Дальнейшее редактирование компонента возможно при наличии среды программирования Borland C++ Builder версии 6, т. к. в предыдущих версиях редакторы свойств описываются по-другому. Созданный компонент может переводить только целые числа. К существующим возможностям компонента можно добавить возможность перевода дробных чисел, путем использования алгоритмов отдельного перевода целой и дробной частей числа с последующим объединением результатов. Для этого число должно быть предварительно разделено. NumberConverter работает с системами счисоения с основаниями 2..10 и 16. Можно усовершенствовать его, добавив новые системы счисления. 6 Результаты тестирования созданного программного продукта Как было сказано выше, для проверки работоспособности созданного компонента было создано тестирующее приложение. Форма тестирующего приложения выглядит следующим образом: Рисунок 5 - Форма тестирующего приложения Работа компонента показана на рисунках 6-8. Рисунок 6 - Перевод чисел Рисунок 7 - Ошибка ввода числа Рисунок 8 - Неправильный ввод системы счисления Результаты тестирования показали, что компонент NumberConverter полностью работоспособен. Заключение В курсовой работе был разработан собственный компонент NumberConverter, позволяющий переводить числа из одной системы счисления в другую с проверкой правильности ввода данных. В ходе тестирования было разработано тертирующее приложение, демонстрирующее работу компонента. В результате была проверена работа всех функций компонента и установлено, что компонент полностью работоспособен. Допустимо и дальнейшее усовершенствование компонента. Например, можно реализовать алгоритмы перевода дробных чисел. Также можно описать работу с другими системами счисления. В целом поставленная в курсовой работе задача была выполнена. Достоинством созданного компонента является удобство и простота его использования при создании разнообразных программ. Список использованной литературы 1 Архангельский А.Я. Программирование в C++Builder 6. – М.:ЗАО «Издательство БИНОМ», 2004. 2 Страуструп Б. Язык программирования C++. Ч 1: Пер. с англ. – Киев: ДиаСофт, 1993. 3 Страуструп Б. Язык программирования C++. Ч 2: Пер. с англ. – Киев: ДиаСофт, 1993. 5 ист Дата Подпись № докум. Лист Изм. 7 Лист Дата Подпись № докум. Лист Изм. 6 Лист Дата Подпись № докум. Лист Изм. 8 Лист Дата Подпись № докум. Лист Изм. 10 Лист Дата Подпись № докум. Лист Изм. компонент конечная СС исходная СС перевод в десятичную СС перевод в конечную СС проверка перевод 11 Лист Дата Подпись № докум. Лист Изм. 12 Лист Дата Подпись № докум. Лист Изм. 13 Лист Дата Подпись № докум. Лист Изм. 14 Лист Дата Подпись № докум. Лист Изм. 9 Лист Лист Дата Подпись № докум. Лист Изм. 23 Лист Дата Подпись № докум. Лист Изм. 21 Лист Дата Подпись № докум. Лист Изм. 24 Лист Дата Подпись № докум. Лист Изм. 25 Лист Дата Подпись № докум. Лист Изм. - + masi=Numberi i=1(1)len - + - + - + - + - + - + masi=15 masi=14 masi=Numberi masi=13 masi=12 masi=11 masi=10 Numberi=F Numberi=D Numberi=E Numberi=C Numberi=B Numberi=A i=1(1)len SisS=16 Len=StrLen(Number) ConvToDec начало ConvToDec конец Return (RezNum) RezNum=RezNum+masi*SisSlen-i i=1(1)len RezNum=0
Docsity logo