Смекни!
smekni.com

Разработка программы обработки экономической информации (стр. 3 из 5)

Для работы программа требует приблизительно 200 Кбайт оперативной памяти (зависит от размера входного файла). Данный объем позволяет программе выполнятся на самом широком круге компьютеров, фактически всех поддерживающих операционную систему DOS.

Для выполнения требуется процессор класса 80x86, цветной монитор, поддерживающий текстовый режим 80х50.

Размер входного файла зависит от количества символов в нем и для 44 элементов (студентов) составляет 2Кбайта. Размер выходного файла зависит от преобразований.

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

Программа может работать под управлением операционной системы класса DOS, при этои сохраняет работоспособность и в режиме эмуляции MS-DOS операционной системой Windows9X,Meи RedHatLinux. Работоспособность в режиме эмуляции под другими операционными системами не проверялось, хотя эта возможность не исключается.

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


4. Тестовый пример

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

Возьмем исходную таблицу(рис.4.1):

Рис.4.1- исходная таблица


Результат после обработки

Эти данные также будут сохранены в файл с указанным именем и путём к нему.


Заключение

Данная программа, составлена в соответствии с постановкой задачи на курсовое проектирование по теме "Разработка программы обработки информации" по дисциплине "Основы программирования и алгоритмические языки" (ОПиАЯ). При написании программы использованы методические указания по курсовому проектированию по дисциплине "ОПиАЯ". Для проверки работоспособности программы и правильности обработки входных данных разработан тестовый пример. Тестирование программы подтвердило, что программа правильно выполняет обработку данных и выдаёт верные результаты. Всё это свидетельствует о работоспособности программы и позволяет сделать вывод о пригодности программы к решению практических задач по обработке экономической информации.


Библиографический список

1. Немнюгин С.А. –TurboPascal учебник.”Питер”,2001.-496л

2. Фараонов В.В TurboPascal 7.0.”Нолидж”2001.

3. Конспект по лекциям ОП и АЯ.


Приложение

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

program Kursovik;

Uses crt;

type

zap=record

fio:string[15];

nomergrupp:string[4]; //шифр группы

propusk:integer; //число пропусков

opravdan:integer; // оправданных

neopravdan:integer; //неоправданных

summa:integer; //общая сумма неоправданных

procent:real; //процент неоправданных

end;

ukaz=^querty;//создаём структуру

querty=record

inf:zap;

nr,nl:ukaz;

end;

var

sozdan:boolean; //проверяет есть ли файл

fp,ft,ff:text;

verh,newE,right,left,temp:ukaz;

z:zap;

c:char;

x,kolvo,otpech,i,number:integer;//номер строки (для меню),кол-во эл-тов

procedure okno(t:integer);FORWARD;//печать меню

procedure zapis_v_fail;FORWARD;//запись в файл

{-----------------ORGANIZACIYAIZFAILA------------------------------------}

procedureorg;//организация из файла двунаправленного списка по алфавиту

var

pop:ukaz;

d,stroka,t1,t2,t3,t4:string;

p3,p4:array[1..3]of char;

schet,pole3,pole4,errcode:integer;

begin

kolvo:=0;

gotoxy(25,25);

textcolor(black);

writeln('Input the name of file');

textcolor(white);

gotoxy(27,27);

readln(d);

if d='' then

begin

clrscr;

gotoxy(25,25);

writeln('This file does not exists!!!!!!!');

gotoxy(25,26);

writeln('Push the -enter- and input name of file again. ');

readln;

sozdan:=false;

exit;

end;

assign(ft,d);

{$I-}

reset(ft);

ifIOResult <>0//проверка есть ли файл

then

begin

clrscr;

gotoxy(25,25);

writeln('This file does not exists!!!!!!!');//сообщение , что файла нет

gotoxy(25,26);

writeln('Push the -enter- and input name of file again. ');//ещё раз надо ввести имя файла

readln;

sozdan:=false;//переменной создания файла присвоить ложь

exit;

end;

sozdan:=true; //переменной создания файла присвоить правда

schet:=0;

while not EOF(ft) do//цикл пока не конец файла

begin

while schet<>4 do//пропуск 4 строк

begin

readln(ft,stroka);

schet:=schet+1;

end;

readln(ft,stroka);//считывание строки

t1:=copy(stroka,3,7);

t2:=copy(stroka,10,15);

{perevod stroki v integer}

if stroka[30]= ' '

then

t3:=copy(stroka,29,1)

else

t3:=copy(stroka,29,2);

val(t3,pole3,errcode);

{perevod stroki v integer}

if stroka[42]= ' 'then

t4:=copy(stroka,41,1)

else

t4:=copy(stroka,41,2);

val(t4,pole4,errcode);

new(newE);..//создание нового эл-та

newE^.inf.fio:=t2;//идёт присвоение по полям

newE^.inf.nomergrupp:=t1;

newE^.inf.propusk:=pole3;

newE^.inf.opravdan:=pole4;

newE^.nr:=nil;

newE^.nl:=nil;

left:=newE;Right:=newE;

verh:=newE;

kolvo:=kolvo+1;

{--sozdali 1-iy element}

while Not eof(ft) do//покане конец файла

begin

readln(ft,stroka);//чтение строки

ifstroka[3]='-'then //сколько знаков не конец ли таблицы

exit;

t1:=copy(stroka,3,7); //копирывание

t2:=copy(stroka,10,15);

{perevod stroki v integer}

if stroka[30]= ' 'then //сколько знаков не конец ли таблицы

t3:=copy(stroka,29,1)

else

t3:=copy(stroka,29,2); //копирывание

val(t3,pole3,errcode); //чтение строки в инт

{perevod stroki v integer}

if stroka[42]= ' 'then

t4:=copy(stroka,41,1)

else

t4:=copy(stroka,41,2);

val(t4,pole4,errcode);

{-----sozdanie o4eredi-------------------------------------}

pop:=verh; // указатель на на чало

whilepop<>nildo// цикл пока неконец списка

ift2>= pop^.inf.fio//сравнение по фамилиям

then

pop:=pop^.nr//перевод указателя

else

break; //прервать цикл

new(newE); //создание нового элемента

newE^.inf.fio:=t2;

newE^.inf.nomergrupp:=t1;

newE^.inf.propusk:=pole3;

newE^.inf.opravdan:=pole4;

ifpop=nilthen//добавление в конец нового элемента

begin

right^.nr:=newE;

newE^.nl:=right;

newE^.nr:=nil;

right:=newE;

kolvo:=kolvo+1;

end

else

ifpop=verhthen//добавление в начало

begin

pop^.nl:=newE;

newE^.nr:=pop;

newE^.nl:=nil;

kolvo:=kolvo+1;

verh:=newE;

left:=newE;

end

else

begin//добавление в сердину

pop^.nl^.nr:=newE;

newE^.nl:=pop^.nl;

pop^.nl:=newE;

newE^.nr:=pop;

kolvo:=kolvo+1;

end;

end;

end;

right^.nr:=nil; // правый указатель на конкц

close(ft);exit// закрытие файла

end;

{------------------------------------------------------------------------}

{------------------prosmotr_2-----------------------------------------}

{------------------------------------------------------------------------}

procedure prosmotr_2(x:ukaz);

var

n:integer;

c:char;

begin

clrscr;

n:=0; //число выводимых строк

newE:=x; //указатель

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

writeln('|#grupp| Name | amount of| validly | unvalidly | summa |percent|');

writeln('| | | | absence | | | |');

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

while (newE<>right^.nr) and (n<=6) do//цикл пока не конец списка и число строк =6

begin

inc(n);

write('|', newE^.inf.nomergrupp:5,' '); //печать данных об элементах по полям

write('|',newE^.inf.fio:15);

write('|',newE^.inf.propusk:5,' ');

write('|', newE^.inf.opravdan:5,' |');

write(newE^.inf.neopravdan:7,' |');

write(newE^.inf.summa:6,' |');

writeln(newE^.inf.procent:5:2,' |');

write('| | | | | | | |');

writeln;

newE:=newE^.nr; //перевод указателя

end;

if otpech=0 then

otpech:=otpech+n;

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

writeln('Push the -enter- to the ExiT'); //для выхода ентер

end;

{------------------------------------------------------------------------------}

{---------------DOBAVLENIE ELEMENTA--------------------------------------------}

{------------------------------------------------------------------------------}

procedure dob;

var

pop:ukaz;

p,i:integer;

begin

gotoxy(25,25);

textcolor(red);

writeln('Push the -*- to the ExiT'); //для выхода

textcolor(white);

gotoxy(25,27);

writeln('Input the name of a new student'); //ввод имени студента

gotoxy(25,28);

readln(z.fio); //чтение имени

{Uslovie vihoda}

if z.fio='*'then//условие выхода

exit;

for i:=1 to 15-length(z.fio) do//достраиваем имя до 15 знаков

z.fio:=z.fio+' ';

gotoxy(25,29); //чтение всех данных о студенте с клавиатуры

writeln('Input tne nomber of grupp');

gotoxy(25,30);

readln(z.nomergrupp);

gotoxy(25,31);

writeln('Input the omount of absence');

gotoxy(25,32);

readln(z.propusk);

gotoxy(25,33);

writeln('Input the omount of validly absence');

gotoxy(25,34);

readln(p);

whilep>z.propuskdo//если число пропусков меньше числа пропусков по уваж причине

begin

textcolor(red);

writeln('Thi is impossible:');

textcolor(black);

writeln('The omount of validly absence more then just omount of absence');

write('Push the -enter- and input theomount of validly absence again');

readln; textcolor(white);

gotoxy(25,33);

writeln('Input the omount of validly absence');

gotoxy(25,34); //очищение экрана

writeln(' ');

writeln(' ');

writeln(' ');

write(' ');

gotoxy(25,34);

readln(p); //по новой вводим и читаем

end;

z.opravdan:=p;

{-------------------dobavlenie-------------------------}

//происходит так же как при организации

pop:=verh; //указатель на начало

whilepop<>nildo//пока не конец списка

ifz.fio>= pop^.inf.fio//сравнение по фамилиям

then

pop:=pop^.nr//перевод указателя