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