РефератыИнформатика, программированиеРаРазработка программы для преобразования денежных сумм в чековой книжке из формата чисел в словесный формат

Разработка программы для преобразования денежных сумм в чековой книжке из формата чисел в словесный формат

Пояснительная записка к заданию на вычислительную практику по дисциплине “Основы алгоритмизации и языки программирования”


Выполнил : студент гр. 96 АЭ2 Ю. Ф. Фролкина


Пензенский государственный технический университет, Кафедра “Информационно - вычислительные системы”


1997


Пояснительная записка содержит 21 лист , 2 приложения , 2 источника.


Объектом работы является денежная сумма в чековой книжке.


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


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


Программа написана на языке Turbo Pascal и предназначена для эксплуотации под управлением операционной системы MS-DOS.


При разработке данной программы была использованя библиотека ТТТ , которая упростила как саму программу , так и процесс её разработки.


Введение


Сейчас, на пороге ХХI века, огромный выбор программ предназначенных для помощи человеку в различных сферах его деятельности.


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


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


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


1 Анализ требований


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


Определить целесообразность использования при проектировании данной задачи библиотеки ТТТ.


2 Техническое задание


2.1 Основание для разработки


Основанием для разработки служит задание на вычислительную практику по курсу "Основы алгоритмизации и языки программирования", выданное на кафедре ИВС ПГТУ , доцентом А.В. Ерёменко , утверждённое заведующим кафедрой профессором Э.К. Шаховым.


2.2 Назначение разработки


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


2.3 Требования к программе или программному изделию


2.3.1 Требования к функциональным характеристикам


Программа должна выполнять следующие функции:


а ) вывод на экран окна для запроса исходной числовой суммы


б ) организация ввода данных с отображением их на экране и контролем ввода нечисловых символов , а также с возможностью удаления уже введённых числовых символов


в ) перевод введённой суммы в словесный формат


г ) вывод введённой суммы на экран в словесном формате.


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


Выходными данными должны быть словесное выражение, составленное в соответствии введённой пользователем денежной суммы.


2.3.2 Требования к надёжности:


Программа должна работать без прерываний по программным ошибкам, а именно:


а ) При вводе нечислового символа, программа должна выводить звуковой сигнал и не учитывать этот символ


б) При заполненнии всего отведённого количества символов (9 символов) и попытке ввода следующего программа должна ввести этот символ как последний - девятый.


в ) При выводе полученного словесного выражения программа должна перенести это выражение на следующую строку экрана в том случае , если длина словесного выражения больше чем 60 символов.


2.3.3 Требования к составу и параметрам технических средств


Программа должна быть предназначена для использования на персональном компьютере типа IBM AT стандартной комплектации.


2.3.4 Требования к информационной и программной совместимости


Программа должна быть написана на языке Турбо-Паскаль 6.0 или выше. Для её функционирования на персональном компьютере должна быть установлена операционная система MS-DOS . В качестве дополнительных программных средств могут использоваться стандартные модули Турбо -Паскаля. Должна быть проанализирована целесообразность использования библиотеки TTT.


2.4 Требования к программной документации


Пояснительная записка должна содержать следующие программные документы:


а ) техническое задание


б ) описание программы


в ) текст программы


г ) программа и методика испытаний


д ) описание применения


е ) результаты тестирования.


Правила оформления и содержание этих программных документов регламентированы стандартами ЕСПД.


2.5 Порядок контроля и приёмки


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


3 Описание метода решения


Метод решения поставленной задачи заключается в последовательном просмотре введённой суммы в числовом формате , выделении в качестве строки символов и проверки каждой числовой тройки :


1 ) единицы , десятки и сотни


2 ) тысячи , десятки тысяч и сотни тысяч


3 ) миллионы , десятки и сотни миллионов.


Каждая числовая тройка (если она есть) преобразуется в соответствии со своим содержимым путём просмотра каждого элемента тройки и преобразования в словесный эквивалент с учётом падежей.


Если в какой-либо из троек не достаёт количества чисел , то вместо них подставляются пробелы и анализируются.


Затем полученные строковые выражения складываются вместе и выводятся на экран с учётом переноса строки , если она целиком не умещается на экране.


4. Описание программы


4.1 Общие сведения


Разработанная программа имеет название currency.exe. Программа написана на алгоритмическом языке Тurbo Pasca v. 6.0. , её исходный текст находится в файле currency.pas . Для её нормального функционирования на персональном компьютере должна быть установлена операционная система MS-DOS версии 3.0 или выше.


4.2 Функциональное назначение


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


4.3 Описание логической структуры


Данная программа содержит в себе необходимые процедуры и функции с использованием стандартных модулей языка Turbo Pascal :


Сrt - модуль , содержащий в себе функции , необходимые для работы с экраном в текстовом режиме


Strings - модуль , функции которого обеспечивают работу со строковыми переменными.


Так же при разработке программы для её упрощения были использованы модули из библиотеки ТТТ: FastTTT5 , StrnTTT , ReadTTT5 , WinTTT5 , которые предазначены для упрощения процесса программирования при работе с экраном , поцессом ввода и вывода информации.


В начале программы вызывается функция модуля WinTTT5 - СlearText , которая очищает заданную область экрана и запролняет его заданным цветом.


Затем вызывается фунуция модуля ReadTTT5 - Read_Longint , которая рисует на экране рамку в заданных координатах и заданным размером , выводит приглашение и организует ввод.


После ввода вызывается функция ValToStr с параметром sum типа Longint - введённая пользователем сумма. Эта функция выполняет перевод денежной суммы из числового формата в словесный. Она содержит в себе несколько служебных функций:


Функция STR0_9(n9,strS:char):String , где n9 - денежная сумма , находящаяся в интервале значений от 0 до 9 , strS - род деннежной единицы. Функция осуществляет перевод денежной единицы из числового формата в словесный на заданном интервале значений


Функция STR10_19(n19:char):String , где n19 - денежная сумма , находящаяся в интервале значений от 10 до 19 . Функция осуществляет перевод денежной единицы из числового формата в словесный на заданном интервале значений


Функция STR20_90(n99:char):String , где n99 - денежная сумма , находящаяся в интервале значений от 20 до 90 . Функция осуществляет перевод денежной единицы из числового формата в словесный на заданном интервале значений


Функция STR_Hund(nHund:char):String , где nHund - сотенная часть денежной суммы . Функция осуществляет перевод этой части денежной единицы из числового формата в словесный


Функция STR0_999(strP_100,strP_10,strP_1,strSex:char):String , где strP_100 - сотенный элемент денежная суммы , strP_10 - элемент десятков денежная суммы , strP_1 - элемент единиц денежная суммы , strSex - род денежной единцы . Функция осуществляет соединение в одну строку полученных значений в словесном эквиваленте для части денежной суммы , находящейся в интервале от 0 до 999.


Далее в основной программе вызывается фунуция модуля WinTTT5 - OffCursor , которая отключает изображение курсора на экране.


Затем вызывается фунуция модуля FastTTT5 - WriteAT , которая осуществляет вывод заданного текста нужным цветом в заданные координаты экрана.


В конце программы вызывается фунуция модуля WinTTT5 - Reset_StartUp_Mode , которая восстанавливает исходный режим экрана.


4.4 Используемые технические средства


Данная программа предназначена для её изпользования на персональном компьютере типа IBM - PC стандартной конфигурации с минимальным объёмом оперативной памяти 640 К.


4.5 Вызов и загрузка


Для вызова программы на выполнение необходимо с помощью команд операционной системы компьютера сделать текущим каталог , в котором находится файл cyrrency.exe и вызвать его на выполнение.


4.6 Входные данные


Входными данными является денежная сумма в числовом формате , вводимая пользователем с клавиатуры.


4.7 Выходные данные


Выходными данными является денежная сумма в словесном формате, отображается программой на экране.


5. Программа и методика испытаний


5.1 Цель испытаний


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


5.2 Средства и порядок испытаний


Для проведения испытаний необходим персональный компьютер типа IBM - PC стандартной конфигурации , файл программы - currency.exe , файлы библиотеки ТТТ. Для проверки правильности работы программы необходимо вызвать на выполнение файл currency.exe. Затем необходимо ввести все возможные варианты денежных сумм , проверить реакцию на ввод нечисловых данных.


5.3 Результаты испытания


При запуске программы и проверки её работоспособности были получены следующие результаты:


При вводе числа 1 - Сумма прописью : один рубль


При вводе числа 12 - Сумма прописью : двенадцать рублей


При вводе числа 123 - Сумма прописью : сто двадцать три рубля


При вводе числа 1234 - Сумма прописью : одна тысяча двести тридцать четыре рубля


При вводе числа 12345 - Сумма прописью : двенадцать тысяч триста сорок пять рублей


При вводе числа 123456 - Сумма прописью : сто двадцать три тысячи четыреста пятьдесят шесть рублей


При вводе числа 1234567 - Сумма прописью : один миллион двести тридцать четыре тысячи пятьсот шестьдесят семь рублей


При вводе числа 12345678 - Сумма прописью : двенадцать миллионов триста сорок пять тысяч шестьсот семьдесят восемь рублей


При вводе числ

а 123456789 - Сумма прописью : сто двадцать три миллиона четыреста пятьдесят шесть тысяч семьсот восемьдесят девять рублей.


При вводе нечислового символа - буквы "a" программа выдала звуковой сигнал.


6 Описание применения


Программа запускается обычным образом с клавиатуры персонального компьютера. Запускаемый файл называется currency.exe.


Программа currency.exe запускается из опереционной системы MS-DOS или из оболочки Norton Commander.


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


Диапазон входной информации равен от 0 до 999999999 рублей.


Окончанием ввода денежной суммы служит нажатие пользователем клавиши Enter.


В качестве результата программа выводит на экран словесный эквивалент введённой пользователем денежной суммы.


Заключение


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


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


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


Применение этой программы возможно на IBM - совместимых компьютерах , где установлена система MS - DOS и оснащённых любым видеоадаптером , поддерживающем текстовый режим 80х25 символов.


Список литературы


1. Шахов Э.К. Разработка и документирование программ. Методические ука зания к курсовой работе по программированию. -Пенза : Изд-во Пенз.гос.техн.ун-та,1994. - 59 с.,ил. 8 , табл. 6., библиогр.8 назв.


2. Сергиевский М.В., Шалашов А.В. Турбо Паскаль 7.0 язык, среда программирования. -М: Машиностроение.-1994,-254 с.ил.


Листинг программы


{Преобразование денежных сумм из числового формата в словесный}


Program Currency


Uses Strings, Crt, FastTTT5, StrnTTT5, ReadTTT5, WinTTT5


Const


{Денежныеединицы}


strUnit1 : String='рубль'


strUnit2 : String='рубля'


strUnitM : String='рублей'


{Род денежной единицы


М : мужской


Ж : женский}


strSex : Char='М'


var


ch : Char


Sum : LongInt


{Сумма в числовом формате}


Str1, Str2, Prop : String


{сумма в словесном формате}


Index : Byte


{для разбиения 'Prop' на две строки,


если 'Prop' длиннее 60 символов}


{Переводит денежную сумму из числового формата в словесный}


FUNCTION ValToStr(nSumNum:LongInt):String


var


Tmp_Prop :String


str1,str10,str100 : Char


{единицы, десятки, сотни}


nNum : String


{сумма в виде String}


nLenNum : Integer


{длина nNum}


{временные строки}


str99,strMld,strHun,strNOne,strTh,strNTh,strMln,strN_Mln : String


{*************** служебные функции ****************}


{перевод единиц,


n9 : число в символьном виде}


FUNCTION STR0_9(n9,strS:Char):String


begin


CASE n9 of


'1':IF strS='М' then str0_9:='один'


ELSE str0_9:='одна'


'2':IF strS='М' then str0_9:='два'


ELSE str0_9:='две'


'3': str0_9:='три'


'4': str0_9:='четыре'


'5': str0_9:='пять'


'6': str0_9:='шесть'


'7': str0_9:='семь'


'8': str0_9:='восемь'


'9': str0_9:='девять'


END


end


{str0_9}


{перевод второго десятка,


n19 : число в символьном виде}


FUNCTION STR10_19(n19:Char):String


begin


str10_19:=''


CASE n19 of


'0': str10_19:='десять'


'1': str10_19:='одиннадцать'


'2': str10_19:='двенадцать'


'3': str10_19:='тринадцать'


'4': str10_19:='четырнадцать'


'5': str10_19:='пятнадцать'


'6': str10_19:='шестнадцать'


'7': str10_19:='семнадцать'


'8': str10_19:='восемнадцать'


'9': str10_19:='девятнадцать'


END


end


{str10_19}


{перевод десятков,


n99 : число в символьном виде}


FUNCTION STR20_90(n99:Char):String


begin


str20_90:=''


CASE n99 of


'2': str20_90:='двадцать'


'3': str20_90:='тридцать'


'4': str20_90:='сорок'


'5': str20_90:='пятьдесят'


'6': str20_90:='шестьдесят'


'7': str20_90:='семьдесят'


'8': str20_90:='восемьдесят'


'9': str20_90:='девяносто'


END


end


{str20_90}


{перевод сотен,


nHund : число в символьном виде}


FUNCTION STR_Hund(nHund:Char):String


begin


str_Hund:=''


CASE nHund of


'1': str_Hund:='сто'


'2': str_Hund:='двести'


'3': str_Hund:='триста'


'4': str_Hund:='четыреста'


'5': str_Hund:='пятьсот'


'6': str_Hund:='шестьсот'


'7': str_Hund:='семьсот'


'8': str_Hund:='восемьсот'


'9': str_Hund:='девятьсот'


END


end


{str_Hund}


{составление строки из единиц, десятков и сотен}


FUNCTION Str0_999(strP_100,strP_10,strP_1,strSex:Char):String


var


Str100: String


begin


IF ((strP_100=' ') OR (strP_100='0')) then


str100:=''


ELSE


str100:=Str_Hund(strP_100)


IF ((strP_10=' ') OR (strP_10='0')) then


str99:=Str0_9(strP_1,'М')


ELSE


IF strP_10='1' then


str99:=Str10_19(strP_1)


ELSE


str99:=Str20_90(strP_10)+' '+str0_9(strP_1,'M')


str100:=Strip('B',' ',str100)


IF length(str100)>0 then


str100:=str100+' '


Str0_999:=Strip('B',' ',str100+str99)


end


{***************** ValToStr *********************************}


Begin


{функцияиз StrnTTT5-переводитцелоечисловстроку}


nNum:=Int_To_Str(nSumNum)


{функция из StrnTTT5-удаляет из строки символы,


(откуда удалять, что удалять, строка)}


nNum:=Strip('B',' ',nNum)


nLenNum:=length(nNum)


{вычисляемдлину}


strHun:=''


strTh:=''


strMln:=''


{если сумма меньше 100}


IF nLenNum<3 then


begin


{функция из StrnTTT5-добавляем слева несколько пробелов}


nNum:=Squeeze('L',' ',3-nLenNum)+nNum


nLenNum:=Length(nNum)


end


{выделяем единицы, десятки и сотни}


str1:=nNum[nLenNum]


str10:=nNum[nLenNum-1]


str100:=nNum[nLenNum-2]


IF NOT ((str1='0') AND (str10='0') AND (str100='0')) then


begin


{переводим в словесный формат сотни}


strHun:=str0_999(str100,str10,str1,strSex)


{выбираем 'рубль', 'рубля' или 'рублей'}


IF (str1='1') AND (str10<>'1') then


strNOne:=strUnit1


ELSE


IF (str1 in ['1'..'4']) AND (str10<>'1') then


strNOne:=strUnit2


ELSE


strNOne:=strUnitM


strHun:=strHun+' '+strNOne


end


ELSE


strHun:=strUnitM


{********}


{еслибольше 999}


IF nLenNum>3 then


begin


{еслименьше 999999}


IF nLenNum<6 then


begin


{добавляем недостающие пробелы}


nNum:=Squeeze('L',' ',6-nLenNum)+nNum


nLenNum:=Length(nNum)


end


{выделям тысячи, десятки и сотни тысяч}


str1:=nNum[nLenNum-3]


str10:=nNum[nLenNum-4]


str100:=nNum[nLenNum-5]


IF NOT ((str1='0') AND (str10='0') AND (str100='0')) then


begin


strTh:=str0_999(str100,str10,str1,'Ж')


{выбираемпадежслова 'тысяча'}


IF (str1='1') AND (str10<>'1') then


strNTh:='тысяча'


ELSE


IF (str1 in ['1'..'4']) AND (str10<>'1') then


strNTh:='тысячи'


ELSE


strNTh:='тысяч'


strTh:=strTh+' '+strNTh


end


END


{********}


{если больше больше 999.999}


IF nLenNum>6 then


begin


{еслименьше 999.999.999}


IF nLenNum<9 then


begin


{добавляемпробелы}


nNum:=Squeeze('L',' ',9-nLenNum)+nNum


nLenNum:=Length(nNum)


END


{выделяем миллионы, десятки и сотни миллионов}


str1:=nNum[nLenNum-6]


str10:=nNum[nLenNum-7]


str100:=nNum[nLenNum-8]


IF NOT ((str1='0') AND (str10='0') AND (str100='0')) then


begin


{выбираем падеж слова миллион}


strMln:=str0_999(str100,str10,str1,'M')


IF (str1='1') AND (str10<>'1') then


strN_Mln:='миллион'


ELSE


IF (str1 in ['1'..'5']) AND (str10<>'1') then


strN_Mln:='миллиона'


ELSE


strN_Mln:='миллионов'


strMln:=strMln+' '+strN_Mln


END


END


{********}


{удаляем пробелы из строки миллионов}


strMln:=Strip('B',' ',strMln)


IF Length(strMln)>0 then


strMln:=strMln+' '


{добавляем справа один пробел}


{удаляем пробелы из строки тысяч}


strTh:=Strip('B',' ',strTh)


IF Length(strTh)>0 then


strTh:=strTh+' '


{добавляем справа один пробел}


{удаляем пробелы из строки сотен}


strHun:=Strip('B',' ',strHun)


{складываем строки миллионов, тысяч и сотен в одну строку}


Tmp_Prop:=strMln+strTh+strHun


{переводим первый символ полученной строки в верхний регистр}


Tmp_Prop[1]:=UpCase(Tmp_Prop[1])


{возвращаем итоговую строку}


ValToStr:=Tmp_Prop


end


{ValToStr}


{*********** MAIN ***********}


Begin


Str1:=''


Str2:=''


clrscr


{функция из WinTTT5-очищаем экран от текста}


ClearText(1,1,80,25,White,Blue)


{функция из ReadTTT5-считываем длинное целое, допустимые значения 0-999999999


(столбец, строка, длина поля ввода, приглашение, тип рамки,


минимальное значение, максимальное значение)}


Read_LongInt(25,10,9,'Введите число : ',4,Sum,0,999999999)


{переводим из числового формата в символьный}


Prop:=ValToStr(sum)


{функция из WinTTT5-отключаем курсор}


OffCursor


Index:=61


{максимальная длина строки для вывода на экран}


{функция из FastTTT5-выводим текст в нужном месте


(столбец, строка, цвет текста, фон, текст)}


WriteAt(2,14,Yellow,Blue,'Суммапрописью : ')


{если символьная строка длиннее 60 символов}


if Length(Prop)>60 then


begin


{ищем слева от 60-го символа первый пробел}


repeat


dec(Index)


until Prop[Index]=' '


{выделяем левую часть символьной строки (до 60-го символа)}


Str1:=Squeeze('L',Prop,Index)


{выделяем правую часть символьной строки (после 60-го символа)}


Str2:=Squeeze('R',Prop,Length(Prop)-Index+1)


{выводимлевуючасть}


WriteAt(19,14,White,Blue,Str1)


{выводимправуючасть}


WriteAt(19,15,White,Blue,Str2)


end


else {выводимсимвольнуюстрокуполностью}


WriteAt(19,14,White,Blue,Prop)


{ждемнажатияклавиши}


ch:=readkey


{функция из WinTTT5-восстанавливаем исходный режим экрана}


Reset_StartUp_Mode


end.


ПриложениеВ


( рекомендательное )


Результаты тестирования программы

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Разработка программы для преобразования денежных сумм в чековой книжке из формата чисел в словесный формат

Слов:2802
Символов:26776
Размер:52.30 Кб.