Реферат: Разработка программы для преобразования денежных сумм в чековой книжке из формата чисел в словесный формат
Название: Разработка программы для преобразования денежных сумм в чековой книжке из формата чисел в словесный формат Раздел: Рефераты по информатике, программированию Тип: реферат |
Пояснительная записка к заданию на вычислительную практику по дисциплине “Основы алгоритмизации и языки программирования” Выполнил : студент гр. 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. ПриложениеВ ( рекомендательное ) Результаты тестирования программы |