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

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

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 25.01.2011
Размер файла 75,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Реферат по дисциплине

"Информатика и программирование"

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

  • 1. Цели и задачи работы

Получить практические навыки программирования основных алгоритмических структур в среде Lazarus.

2. Постановка задачи

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

3. Задание на выполнение

Номер варианта для выполнения M=4, N=8.

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

Таблица 1

№ направления

Город

Код города

Тариф (руб./мин.)

1

Астрахань

851

8,80

6

Новосибирск

383

11,50

11

Уфа

347

6,25

13

Талин

374

16,80

Тариф - стоимость одной полной минуты разговора на январь 2005 г.

Таблица 2

M

Наименование

Задание по варианту

4

№ направления

1

6

11

13

время (мин.)

4

5

6

2

Таблица 3

N

8

код города, разговор с которым бал самым продолжительным;

количество разговоров, стоимость которых не превышает 35 руб;

список стоимостей разговоров по заданным направлениям в виде строки в порядке, обратном относительно бланка оплаты;

4. Выполнение заданий

Модуль преобразования символов

При написании проекта в качестве комментарий используются символы кириллицы. А при запуске проекта возникает проблема со шрифтом - неправильное отображение букв кириллицы. Причина ошибки - консольное приложение создается в ИСР, где используется операционная система Windows с кодировкой ANSI, а исполняется под управлением операционной системы MS DOS, использующей кодировку ASCII. Для решения проблемы нужно делать перекодировку букв кириллицы из стандарта ANSI в стандарт ASCII. Для этого в проект BlankOplaty добавим модуль с функцией Rus преобразования строк ANSI в ASCII.

Порядок создания и использования модуля преобразования символов одной кодировки в другую:

1. Создаем проект консольного приложения;

2. Сохраняем его под именем BlankOplaty в папке KR;

3. Выбираем команду Файл => Новый => Модуль. В редакторе кода проекта возникает дополнительная страничка с заготовкой модуля;

4. Заполняем ее кодом:

Программа Rus Trans

программа pascal модуль кодировка

unit RusTrans; //Заголовок главного модуля, имя которого

//изменяется после сохранения модуля

interface // Раздел описания

uses

SysUtils; // Ссылка на подключаемые модули

function Rus(mes:string):string; // Заголовок функции с переменной mes

implementation // Раздел реализации

function Rus(mes:string):string; //Преобразует строку Windows под

// строку MS DOS

var i:integer; //Номер обрабатываемого символа

begin // Тело функции

for i:=1 to length(mes) do

case mes[i] of // Оператор выбора

'А'..'п': mes[i] := chr(ord(mes[i])-64); //преобразование символа в код

'р'..'я' : mes[i] := chr(ord(mes[i])-16); //преобразование символа в код

'Ё':mes[i]:=chr(ord(mes[i])+72); //преобразование символа в код

'ё':mes[i]:=chr(ord(mes[i])+57); //преобразование символа в код

end;

result:=mes; //возвращаемый результат в переменную result

end;

end.

Обобщенная блок-схема алгоритма:

Подпрограмма стоимости St

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Детализированный алгоритм задачи

Подробное раскрытие блоков формирования 10,25, вывода строк бланка 31,34,35 и блок-схемы алгоритма задач:

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Описание детализированного алгоритма.

Программа начинается с того, что запрашиваются данные (блок 1) длительности и тарифа. В следующем блоке 2 ставится условие того, что длительность разговора и тарифа не должна быть меньше нуля. При выполнении данного условия происходит расчет стоимости по формуле: стоимость разговора = длительность * тариф (блок3). Иначе выводится сообщение "неверный ввод данных" (блок4) и идет переход к началу программы (блок1). Если верно, то выводится вычисление стоимости междугороднего разговора (блок5).Затем идет обнуление флагов(блок 6) и ввод города и кода соответствующих нашему варианту( блок 8-9). Если код оказался одним из заданных (блок 9),то далее вводятся тариф и длительности разговора. В противном случае выводится сообщение об ошибке (блок 26). Затем в бланк оплаты записываем данные по нашему варианту (блок 10-22). При этом стоимость разговора заданного направления получается путем умножения времени на соответствующие значения тарифа по этому направлению. Причем , первое же обращение к одному из заданных направлений отмечается путем установки флага обращения (блоки 15, 23). При последующих повторных обращениях выводится оповещающее об этом сообщение (блоки 16, 24). Цикл завершается либо по факту перебора всех 16 направлений (блок 7), либо по выбору последнего из заданных путем проверки условия установки флагов по всем направлениям (блок 27). Затем формируется шапка бланка оплаты, содержащая пять столбцов: "Код города", "Время, мин", "Тариф, руб/мин", "Стоимость, руб.", "Город". Создание четырех записей бланка оплаты целесообразно организовать в виде вложенного циклического процесса, где параметром i внешнего цикла является номер записи, а параметром j внутреннего цикла - номер столбца. Вывод бланка оплаты. Для расчета суммарной стоимости телефонных переговоров по всем направлениям в цикле накапливается сумма по столбцу "Стоимость" всех записей. Результат завершает вывод бланка оплаты .

Затем идет выполнение задач.

4.4 Код проекта.

program BlankOplaty;

{$APPTYPE CONSOLE}

uses

SysUtils,

RusTrans;

Label

Flag1,Flag2,Flag3;

Var

Gorod:array[1..4]of string;

Cod,time:array[1..4]of integer;

Tarif,stoim:array[1..4]of real;

X,y:real;

Z,p,error:byte;

y1:integer;

begin

writeln;

writeln(rus('Вычисление стоимости междугородних разговоров'));

writeln;

writeln(rus('Введите необходимую информацию'));

for z:=1 to 4 do

begin

writeln(rus('Направление'),z,':',16);

Flag1:write(rus('Код города -> '));

readln(cod[z]);

case cod[z] of

851:gorod[z]:=rus('Астрахань');

383:gorod[z]:=rus('Новосибирск');

347:gorod[z]:=rus('Уфа');

374:gorod[z]:=rus('Таллин');

Else begin writeln(rus('Код города введен не верно'));end;

End;

For error:=1 to z-1 do

If cod[z]=cod[error] then

Begin

Writeln(rus('Направление в город'),gorod[z],rus('уже занесено'));

Goto Flag1;

End;

Writeln(rus('Город -> '),gorod[z]);

Flag2:write(rus('Тариф -> '));

Readln(tarif[z]);

If tarif[z]<0 then

Begin

Writeln(rus('Тариф введен не верно'));

Goto Flag2;

End;

Flag3:write(rus('Время разговора( целое колличество минут) -> '));

Readln(time[z]);

If time[z]<=0 then

Begin

Writeln(rus('Время введено не верно'));

Goto Flag3;

End;

End;

y:=0;

For p:=1 to 4 do

Begin

Stoim[p]:=tarif[p]*time[p];

y:=y+stoim[p];

End;

Writeln;

writeln;

writeln('---------------------------------------------------------------------------');

writeln(rus(' БЛАНК ОПЛАТЫ '));

writeln('---------------------------------------------------------------------------');

writeln(rus('КОД ГОРОДА| ГОРОД |ТАРИФ руб/мин|ВРЕМЯ мин.| СТОИМОСТЬ руб. '));

writeln('----------|------------|-------------|----------|--------------------------');

for p:=1 to 4 do

begin

write('| ',cod[p]:3,' |',gorod[p]:12,'|');

if tarif[p]<10 then write(' ',tarif[p]:3:2)

else write(' ',tarif[p]:3:2);

write(' | ',time[p]:4,' |');

if stoim[p]<10 then writeln(' ',stoim[p]:4:2)

else

if stoim[p]<100 then writeln(' ',stoim[p]:4:2)

else writeln(' ', stoim[p]:4:2);

writeln('---------------------------------------------------------------------------');

end;

writeln(rus('Итого к оплате '),y:5:2,rus(' руб.'));

writeln('---------------------------------------------------------------------------');

writeln;

begin

writeln(rus('Задача 1'));

writeln;

for p:=1 to 4 do

y1:=time[1];

for p:=2 to 4 do

if y1<time[p] then y1:=time[p];

for p:=1 to 4 do

If time[p]=y1 then

writeln(rus('код города, разговор с которым был самым длительным -> '),cod[p]);

writeln;

end;

begin

writeln(rus('Задача 2'));

writeln;

x:=0;

for p:=1 to 4 do

if stoim[p]<35 then x:=x+1;

writeln(rus('количество разговоров стоимость котоорых не превышеат 35 руб. - '),x:1:1);

writeln;

end;

begin

writeln(rus('Задача 3'));

writeln;

writeln(rus('Список стоимостей по заданным направлениям в порядке,обратном относительно бланка оплаты'));

for p:=4 downto 1 do write(' ',p:1,' - ',stoim[p]:4:2);

readln;

end;

end.

4.5 Результаты работы

Вычисление стоимости междугородних разговоров

Введите необходимую информацию

Направление1:16

Код города -> 851

Город -> Астрахань

Тариф -> 8.8

Время разговора( целое колличество минут) -> 4

Направление2:16

Код города -> 383

Город -> Новосибирск

Тариф -> 11.5

Время разговора( целое колличество минут) -> 5

Направление3:16

Код города -> 347

Город -> Уфа

Тариф -> 6.25

Время разговора( целое колличество минут) -> 6

Направление4:16

Код города -> 374

Город -> Таллин

Тариф -> 16.8

Время разговора( целое колличество минут) -> 2

Задача 1

код города, разговор с которым был самым длительным -> 347

Задача 2

количество разговоров стоимость которых не превышает 35 руб. - 1.0

Задача 3

Список стоимостей по заданным направлениям в порядке, обратном относительно бланк

а оплаты

4 - 33.60 3 - 37.50 2 - 57.50 1 - 35.20

Выводы

Работая над рефератом, я получила практические навыки программирования основных структур в среде Lazarus. Мною использовались разветвляющиеся алгоритмические структуры, циклические алгоритмические структуры, одномерные и двумерные массивы. Также были использованы структурированные операторы: условный оператор(if..then..else); составной оператор(begin..end); условный оператор(case..of); циклические операторы(for..to..do…downto..do).

Литература

1. Культин Н. "Основы программирования в среде Delphi7"..СПб.:"БХВ-

СПб.",2005.

2. Акчурин Э.А., Стефанова И.А. Методические указания к лабораторным

работам по дисциплине "Информатика и программирование.", ПГАТИ, 2006.

3. Конспект лекций по дисциплине "Информатика и программирование".

Размещено на Allbest.ru


Подобные документы

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

    курсовая работа [1,3 M], добавлен 01.02.2011

  • Выделение информационных объектов и их инфологическая модель. Логическая структура реляционной базы данных. Разработка таблиц в системе управления базами данных Access. Создание запросов, форм и отчетов в СУБД Access. Разработка приложения пользователя.

    курсовая работа [2,8 M], добавлен 05.02.2018

  • Компьютерное кодирование чисел, текста, графики: параметры качества кодирования; аналогово-цифровое преобразование звука. Область применения электронных таблиц; расчет стоимости междугородних телефонных разговоров абонента с применением Microsoft Excel.

    курсовая работа [641,2 K], добавлен 27.04.2013

  • Free Pascal как свободная реализация языка Паскаль, совместимая с Borland Pascal и Object Pascal - Delphi, но при этом обладающая и некоторыми дополнительными возможностями. Основы алгоритмизации и программирования, создание визуальных приложений.

    учебное пособие [4,2 M], добавлен 13.12.2011

  • Создание программного модуля, выполненного на языке программирования VBA (Visual Basic for Applications) и позволяющего во введенном массиве символов удалить все повторные вхождения этих символов. Разработка пользовательского интерфейса. Код программы.

    курсовая работа [317,4 K], добавлен 11.10.2012

  • Бесплатная среда разработки программного обеспечения с открытым исходным кодом для компилятора Free Pascal. Почему Lazarus такой популярный. Корректность введенных данных. Использование основных методов визуализации в среде программирования Lazarus.

    курсовая работа [695,5 K], добавлен 19.04.2013

  • Разработка база данных в виде таблицы, включающей поля: ФИО, адрес, номер телефона, наименование услуги, сумма оплаты, срок выполнения. Процедуры программы и соответствующие им пункты в меню. Описание исходных данных, интерфейса и работы каждой процедуры.

    курсовая работа [997,3 K], добавлен 08.06.2014

  • Программный комплекс для разработки программы транслирующей программу с языка Pascal на язык С++. Построение логической и арифметической модели решения. Разработка компилятора для программы. Методы отладки программы и создание для нее документации.

    курсовая работа [742,6 K], добавлен 03.07.2011

  • Разработка алгоритма и написание программы на языке Turbo Pascal. Построение электронных таблиц, отражающих расчеты за услуги фирмы. Вычисление значения функций и построение их графиков в Excel в одной системе координат. Порядок создания Web-страниц.

    курсовая работа [1,9 M], добавлен 18.12.2012

  • Реализация основных алгоритмических структур. Усеченный условный оператор и оператор exit. Цикл с параметром (счетный цикл). Распечатка таблиц функций. Средства разработки программ на языке Free Pascal. Разработка игрового приложения "Быки и коровы".

    курсовая работа [1,9 M], добавлен 23.12.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.