Обработка экономической информации средствами языка Pascal
Стандартная процедура REWRITE () инициирует запись информации в
файл или в лог. устройство, связанное ранее с файловой переменной .
Но этой процедурой нельзя инициировать запись информации в ранее
существовавший дисковый файл: при выполнении этой процедуры старый файл
уничтожиться.
Процедура READ.
Обеспечивает чтение очередных компонентов типизированного файла. Формат
обращения: READ (, )
- список ввода, содержащий одну или более переменных такого же
типа, что и компоненты файла.
Процедура SEEK.
Смещает указатель файла к требуемому компоненту. Формат обращения:
SEEK (, )
- выражение типа Longint.
Процедуру нельзя применять к текстовым файлам.
Функция FileSize.
Возвращает значение, которое содержит количество компонентов файла.
FileSize()
Функция EOF ():Boolean.
Логическая функция, тестирующая конец файла.
Модули.
Модуль – это автономно компилируемая программная единица, включающая в
себя различные компоненты раздела описаний (типы, константы, переменные,
процедуры, функции) и, возможно, некоторые исполняемые операторы
инициирующей части.
Связь устанавливается спец. объявлением:
USES - список связываемых модулей.
При написание данного курсового проекта, использовались два
дополнительных модулей: GRAPH и CRT.
Модуль GRAPH
GRAPH - представляет собой библиотеку подпрограмм, обеспечивающую
полное управление графическими режимами для различных адаптеров дисплеев:
CGA, EGA, VGA... Содержит 78 процедур и функций (как базовых - рисование
точек, линий, окружностей, прямоугольников), так и расширяющих возможности
базовых (многоугольники, сектора, дуги, закрашивание фигур, вывода
текста и т.д.).
Для запуска программы с использованием модуля GRAPH необходимо,
чтобы в рабочем каталоге находились графические драйверы с расширением
*.BGI, также должен быть доступен компилятору модуль GRAPH.TPU.
В начале программы модуль GRAPH должен быть подключен
USES GRAPH;
InitGraph(driver,mode,’путь к BGI’);
driver – определяет тип графического драйвера,
mode – переменная, задающая режим работы графического адаптера;
Процедуры и функции модуля GRAPH
ClearDevice - Очищает экран и помещает курсор в точку (0,0);
SetViewPort(x1,y1,x2,y2:integer; Clip: boolean) - Устанавливает текущее
окно для графического вывода. X1,y1 – координата верхнего левого угла;
x2,y2 - координата нижнего правого угла. Если Clip=true, то все изображения
отсекаются на границах вывода;
Closegraph – закрывает графический режим
ClearViewPort - Очищает текущее окно;
GetMaxX: integer - возвращает максимальную горизонтальную координату
графического экрана;
GetMaxY :integer - возвращает максимальную вертикальную координату
графического экрана;
GetX: integer - возвращает координату Х текущего указателя в окне;
GetY: integer - возвращает координату Y курсора в окне;
SetLineStyle(Line, Pattern, Thickness: word) - Устанавливает стиль (0..4),
шаблон штриховки (0..12) и толщину (1-ноpм, 3-утpоенная);
SetFillStyle(Pattern, Color: word) - Устанавливает образец штриховки и цвет
(0..15 и 128-меpцание);
SetGraphMode(Mode: integer) - Устанавливает новый графический режим и
очищает экран;
SetColor(Color: word) - Устанавливает основной цвет, которым выполняется
рисование (0..15);
SetBkColor(Color: word) - Установка цвета фона.
PutPixel(X,Y: integer; Color: word) - Выводит точку цветом Color с
координатой X,Y;
LineTO(X, Y: integer) - Рисует линию от текущего указателя к точке с
координатой Х,У;
LineRel(DX, DY: integer) - Рисует линию от текущего указателя к точке,
заданной приращением координат;
Line(X1,Y1,X2,Y2:integer) - Рисует линию от точки (X1,Y1) к точке с
координатой Х2,У2;
MoveTO(X, Y: integer) - Смещает текущий указатель к точке с координатой
Х,У;
MoveRel(DX, DY: integer) - Смещает текущий указатель к точке, заданной
приращением координат;
Rectangle(X1,Y1,X2,Y2:integer) - Рисует прямоугольник, используя текущий
цвет и тип линии по верхней левой и нижней правой точкам;
Bar(X1,Y1,X2,Y2:integer) - Рисует закрашенный прямоугольник, используя
установку SetFillStyle;
Bar3D(X1,Y1,X2,Y2:integer;Depth:word;Top:Bolean) - Рисует закрашенный
паpаллелипипед. Depth - глубина в Pixel (1/4 ширины). Если Тор=True, то
рисуется верхняя грань пеpеллелипипеда;
Circle(X,Y:integer;R:word) - Рисует окружность радиуса R, используя X,Y как
координаты центра;
Fillellipse(X,Y: integer; XR,YR: word) - Рисует защтpихованный эллипс,
используя X,Y как центр и XR,YR как горизонтальный и вертикальный радиусы.
RestorCRTMode - Восстанавливает текстовый режим работы экрана;
OutText(Text: string) - Выводит текстовую строку на экран.
OutTextXY(X,Y: integer; Text: string) - Выводит текст в заданное место
экрана.
Модуль CRT
Включает процедуры и функции, которые управляют текстовым режимом
работы дисплея. С помощью подпрограмм модуля можно перемещать курсор по
экрану дисплея, менять цвет выводимых символов и фона, создавать окна на
экране, управлять звуком, работать с клавиатурой.
Функции управления клавиатурой:
KeyPressed: Boolean; - возвращает True, если в текущий момент на
клавиатуре была нажата клавиша, иначе False. Не приостанавливает
выполнение программы. Используется при организации работы циклов.
ReadKey: Char; - читает и возвращает в программу символ с клавиатуры (без
отображения на экране). Приостанавливает исполнение программы до нажатия
на любую клавишу символа. Используется в операторах IF для проверки
символов.
WhereX: Byte; - возвращает горизонтальную координату текущей позиции
курсора относительно окна.
WhereY: Byte; - возвращает вертикальную координату текущей позиции
курсора относительно окна.
Процедуры управления дисплеем
ClrEol; - удаляет все символы справа от курсора до конца строки без
перемещения курсора.
ClrScr; - очищает экран (окно на экране) и помещает курсор в верхний
левый угол.
Delay(D: word); - приостанавливает работу программы на D миллисекунд.
GotoXY(X,Y: byte); - перемещает курсор в нужное место экрана (окна). Левый
верхний угол экрана (окна) имеет координаты (1,1). Отсчет координат идет
слева направо и сверху вниз. Количество символов в строке и самих
строк зависит от типа дисплея (обычно 25 строк и 80 символов).
InsLine; - вставляет пустую строку в позицию курсора.
HighVideo; - устанавливает высокую яркость символов.
LowVideo; - устанавливает низкую яркость символов.
NormVideo; - устанавливает нормальную яркость символов.
Window(X1,Y1,X2,Y2:byte); - определяет размеры окна на экране для вывода
текста. X1,Y1 - координаты левого верхнего угла, X2,Y2 - правого нижнего
угла.
TextBackGround(Color: byte); - устанавливает цвет фона экрана (окна) от 0
(черный) до 15 (белый).
TextColor(Color: byte); - устанавливает цвет символа.
TextMode(Mode: word); - устанавливает нужный текстовый режим:0,1,2...
Управление звуковым генератором
Sound(F: word); - включает звук генератора, F - частота звука в
герцах.
Delay(T: word); - устанавливает продолжительность звучания в
миллисекундах.
NoSound; - выключает звук генератора.
5.3 Входные и выходные данные
Входными данными являются записи: номер продукции (n), переходящий
остаток продукции на начало года (e1), приход продукции (e2), расход (e3),
цена за 1 шт (e4). При завершении ввода данных и выборе
соответствующего пункта меню программы, программа выдаст пользователю
итоговые данные в виде таблицы.
Выходными данными, т.е. результатом программы является таблица которая
содержит исходные записи и следующие переменные:
. Остаток на конец года (st);
. Итого (itog) ;
Файл с текстом программы (kurs.pas) имеет размер, равный 12,5 Kb;
Исполняемый файл (kurs.exe) имеет размер 33,3 Kb;
5.4 Описание переменных
В программе используются следующие переменные:
Bas – запись.
type
bas=record
n:integer;
e1,e2,e3:integer;
e4:real;
end;
Где:
n - номер продукции;
e1 - переходящий остаток продукции на начало года ;
e2 - приход продукции;
e3 – расход;
e4 - цена за 1 шт .
menu2 – метка, используется для работы с главным меню программы;
C:char, используется для работы оператора readkay (читает символ с
клавиатуры без эхоповтора на экране);
O:real используется для редактирования записей.
ww, l, nn, q, i, gd, gm:integer;
ww-используется для вывода шапки таблицы (координата по Y).
l-используется для работы с меню и для удаления записи
nn, q- используется в программе для создание новых записей
i-счетчик
gd, gm - для графики:
gd – определяет тип графического драйвера,
gm – переменная, задающая режим работы графического адаптера;
pp,qq,n,mm:integer; - переменные для добавления новой записи;
f,f2:file of bas; - файлы
a,b:bas;
a,b - переменные, содержащие записи типа Bas.
Переменная b используется для удаления записей.
st:real;
st – для вычисления суммы в таблице
Процедуры:
procedure view(w:integer);
- процедура вывода таблицы, где w–координата по Х;
var
itog:real; -для вычисления итогового значения сумма в таблице;
Procedure menu;
- процедура вывода меню;
Procedure zast;
- процедура вывода графической заставки
var
xm,ym:integer;
xm,ym-координаты для вывода граф. объектов
size:integer; saucer:pointer;
k,kk:integer;
size,saucer,k,kk-для движения
Procedure error;
- процедура вывода сообщения об ошибке
Procedure exitt;
- процедура выхода из программы
5.5 Описание программы
При запуски программы идет подключение дополнительных модулей Crt и Graph:
uses crt, graph;
Описание переменных (см. пункт 5.4)
Описание процедур:
Процедура вывода таблицы на экран - view:
Установка текстового окна на экране для вывода шапки с координатами левого
верхнего угла -1,1 и правого нижнего – 80,6
window(1,1,80,6);
Установка цвета фона и символов
textbackground(5);textcolor(15);
Печать названия таблицы
gotoxy(w,1);write('Реализация продукции за год');
textcolor(9);gotoxy(w-16,2);textbackground(0);
write('--------------------------------------------------------------
');
Установка цвета символов и печать шапки таблицы
textcolor(15);
gotoxy(w-15,4);write('N');
gotoxy(w-13,3);write('Переходящий остаток');
gotoxy(w-10,4);write('продукции на ');
gotoxy(w-10,5);write('начало года');
gotoxy(w+9,3);write('Приход');
gotoxy(w+8,4);write('продукции');
gotoxy(w+11,5);write('шт');
gotoxy(w+18,4);write('Расход');
gotoxy(W+20,5);write('шт');
gotoxy(w+26,4);write('Цена за');
gotoxy(w+27,5);write('1 шт');
gotoxy(w+35,4);write('Остаток на');
gotoxy(w+35,5);writeln('конец года');
textcolor(9); gotoxy(w-16,6);
write('--------------------------------------------------------------
');
Установка цвета символов и текстового экрана для вывода данных таблицы
textcolor(15);
window(1,7,80,25);
Подготовка файла к чтению
reset(f);
Установка координаты y, необходимой для вывода данных таблицы и обнуление
итогового значения таблицы.
ww:=1; itog:=0;
Вывод основных данных таблицы
repeat
writeln; read(f,a);
st:=((a.e1+a.e2)-a.e3)*a.e4;
itog:=itog+st;
textcolor(13);
gotoxy(w-15,ww);write(a.n);
textcolor(15);
gotoxy(w-5,ww);write(a.e1);
gotoxy(w+11,ww);write(a.e2);
gotoxy(w+20,ww);write(a.e3);
gotoxy(w+29,ww);write(a.e4:4:2);
gotoxy(w+37,ww);write(st:4:2);
ww:=ww+1;
Проверка для вывода очередной строки на экран. Необходимо в том случае,
когда число записей превышает число строк на мониторе.
if ww>=19 then
begin
if (ww=19) then
begin
writeln;
write('Для просмотра используйте клавишу
');
write(' Для продолжения -');
c:=readkey;
delline;
if c=#32 then ww:=ww-1 else break;
end;
end;
Вывод данных в таблицу пока не конец файла
until eof(f);
Установка цвета символа и вывод линии на экран
textcolor(9); gotoxy(w-16,ww);
write('--------------------------------------------------------------
');
Вывод итогового значения
textcolor(9);gotoxy(w+7,ww);
write('¦'); textbackground(5);
textcolor(10);write('Итого:',itog:4:2);
textbackground(0); textcolor(9);
write('+'); writeln;
Завершение процедуры вывода таблицы
end;
Процедура вывода основного меню – menu:
Очистка экрана и установка стандартного текстового режима
clrscr; textmode(Co80);
Установка текстового окна на экране с координатами левого верхнего угла
-13,3 и правого нижнего – 70,15
window(13,3,70,15);
Установка цвета фона и символов
textbackground(14);textcolor(15);
Перемещение указателя и печать сообщения
gotoxy(1,3); write('Для дальнейшей работы с программой выберите
номерок:');
Установка цвета фона
textbackground(0);
Печать пунктов меню, устанавливая цвет для цифр меню и свой цвет для
названия пункта меню
gotoxy(16,5); textcolor(10); write('1'); textcolor(7); write(' -
Просмотр');
gotoxy(16,6); textcolor(10); write('2'); textcolor(7); write(' -
Cоздать');
gotoxy(16,7); textcolor(10); write('3'); textcolor(7); write(' -
Добавить');
gotoxy(16,8); textcolor(10); write('4'); textcolor(7); write(' -
Удалить');
gotoxy(16,9); textcolor(10); write('5'); textcolor(7); write('
-Редактировать');
gotoxy(16,10);textcolor(10); write('6'); textcolor(7); write(' -
Заставка');
gotoxy(16,11);textcolor(10); write('7'); textcolor(7); write(' -
Выход');
gotoxy(16,13); write('Введите номер:');
Установка цвета символа и его мерцание
textcolor(10+128);
Ввод переменной l, необходимой для дальнейшей работы программы и установка
стандартного текстового режима
readln(l); textmode(Co80);
Конец процедура вывода главного меню
end;
Процедура вывода заставки – zast:
Очистка экрана
clrscr;
Установка белого цвета символов
textcolor(white);
Вывод сообщения: «Показать заставку?»
Write(‘Показать заставку? (y/n)’);
Считывание нажатия клавиши.
c:=readkey
При нажатие клавиши - выполняется дальнейший ход процедуры:
Инициализация графики
initgraph(gd,gm,'bgi')
Установка координат xm, ym для вывода графических объектов
xm:=getmaxx div 4; ym:=getmaxy div 4;
Установка текущего шрифта, стиля и размера текста
settextstyle(2,0,5)
Вывод текста на экран, используя координаты x=xm+100,y=10
outtextxy(xm+100,10,'## Sergei Kovbasyuk ##');
Вычесление числа байт, необходимого для сохранения прямоугольной области
экрана
size:=imagesize (xm+100,10,xm+275,10+20);
Создание динамической переменной
getmem(saucer,size);
Сохранение в переменной битовый образ указанной части экрана.
getimage(xm+100,10,xm+275,10+20,saucer^);
Вывод битового образа на экран
putimage(xm+100,10,saucer^,xorput);
Обнуление переменных, требуемых для вывода на экран битового изображения,
используя при этом оператор цикла REPEAT…UNTIL и цикл FOR.
k:=0; kk:=0; i:=0; n:=0;
Цикла REPEAT…UNTIL
repeat
Установка текущего шрифта, стиля и размера текста
settextstyle(10,0,5);
Установка текущего цвета шрифта
setcolor(i+1);
Вывод текста на экран
outtextxy((getmaxx div 5),(getmaxy div 4),'"Sorge pro"');
Установка текущего шрифта, стиля, размера текста.
settextstyle(5,0,5); setcolor(15);
Вывод текста на экран
outtextxy((getmaxx-200),(getmaxy-250),'present');
Установка текущего шрифта, стиля, размера текста.
settextstyle(3,0,1);
Вывод текста на экран
outtextxy(40,(getmaxy-50),'http://sorgepro.agava.ru');
outtextxy(290,(getmaxy-50),'e-mail: office@sorgepro.agava.ru');
Установка текущего шрифта, стиля, размера текста.
settextstyle(2,0,5);
Вывод текста на экран
outtextxy(getmaxx-150,getmaxy-20,'Press ');
outtextxy(20,getmaxy-20,'(c)2000. All rights don''t reserved.');
Наращивание переменных для вывода на экран битового изображения и для
смены текущего цвета
k:=k+5;i:=i+1;
Вывод битового образа на экран
putimage(k,10,saucer^,xorput);
Задержка программы
delay(50);
Наращивание переменной для вывода на экран битового изображения
kk:=kk+5;
Вывод битового образа на экран
putimage(kk,10,saucer^,xorput);
Если битовое изображение достигло заданных границ экрана, то идет обнуление
координат вывода этого изображения на экран
if k>getmaxx-100 then begin k:=0; kk:=0 end;
Выполнение этого цикла, пока не нажата какая-нибудь клавиша
until keypressed;
Вывод на экран трех окружностей, меняющих свой размер с помощью наращивания
Страницы: 1, 2, 3
|