Реферат: Разработка программы обработки экономической информации
--PAGE_BREAK--3. Технико-экономические показателиВ результате компиляции программы компилятором BorlandPascal7.0. был получен исполняемый файл формата DOSEXE размером 20 Кбайт, что является приемлемым как для компьютеров десятилетней давности, так тем более, современных.
Для работы программа требует приблизительно 200 Кбайт оперативной памяти (зависит от размера входного файла). Данный объем позволяет программе выполнятся на самом широком круге компьютеров, фактически всех поддерживающих операционную систему DOS.
Для выполнения требуется процессор класса 80x86, цветной монитор, поддерживающий текстовый режим 80х50.
Размер входного файла зависит от количества символов в нем и для 44 элементов (студентов) составляет 2Кбайта. Размер выходного файла зависит от преобразований.
В программе отсутствует ресурсоемкие процедуры, поэтому производительность центрального процессора не критична.
Программа может работать под управлением операционной системы класса DOS, при этои сохраняет работоспособность и в режиме эмуляции MS-DOS операционной системой Windows9X,Me и RedHatLinux. Работоспособность в режиме эмуляции под другими операционными системами не проверялось, хотя эта возможность не исключается.
Таким образом программа может выполняться практически на любом доступном PC компьютере.
4. Тестовый пример
Проведем эксперимент, чтобы убедиться в работоспособности программы.
Возьмем исходную таблицу(рис.4.1):
<img width=«369» height=«564» src=«ref-1_1350917632-57234.coolpic» v:shapes="_x0000_i1039">
Рис.4.1-исходная таблица
Результат после обработки
<img width=«549» height=«517» src=«ref-1_1350974866-75686.coolpic» v:shapes="_x0000_i1040">
Эти данные также будут сохранены в файл с указанным именем и путём к нему.
Заключение
Данная программа, составлена в соответствии с постановкой задачи на курсовое проектирование по теме «Разработка программы обработки информации» по дисциплине «Основы программирования и алгоритмические языки» (ОПиАЯ). При написании программы использованы методические указания по курсовому проектированию по дисциплине «ОПиАЯ». Для проверки работоспособности программы и правильности обработки входных данных разработан тестовый пример. Тестирование программы подтвердило, что программа правильно выполняет обработку данных и выдаёт верные результаты. Всё это свидетельствует о работоспособности программы и позволяет сделать вывод о пригодности программы к решению практических задач по обработке экономической информации.
Библиографический список
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//условиевыхода
продолжение
--PAGE_BREAK--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//перевод указателя
else
break; //прервать цикл
new(newE); //для нового элемента
newE^.inf.fio:=z.fio;
newE^.inf.propusk:=z.propusk;
newE^.inf.opravdan:=z.opravdan;
newE^.inf.nomergrupp:=z.nomergrupp;
newE^.inf.neopravdan:= newE^.inf.propusk- newE^.inf.opravdan;
{----------------v konec------------------------------}
if pop=nil then
begin
right^.nr:=newE;
newE^.nl:=right;
newE^.nr:=nil;
right:=newE;
kolvo:=kolvo+1;
end
else
{----------------v na4alo------------------------------
if pop=verh then
begin
pop^.nl:=newE;
newE^.nr:=pop;
newE^.nl:=nil;
kolvo:=kolvo+1;
verh:=newE;
left:=newE;
end
else
{----------------v seredinu------------------------------}
begin
pop^.nl^.nr:=newE;
newE^.nl:=pop^.nl;
pop^.nl:=newE;
newE^.nr:=pop;
kolvo:=kolvo+1;
end;
end;
{---------------------------------------------------------------------------------}
{---------------------------------------UDALENIE----------------------------------}
{---------------------------------------------------------------------------------}
procedure udal;
var
i:integer;
begin
gotoxy(20,25);
textcolor(black);
writeln('Input the name of a student which could be delete ');
textcolor(white);
gotoxy(25,27);
readln(z.fio); //вводичтениеимени
for i:=1 to (15-length(z.fio)) do//достаиваемфамилиюдо15 знаков
z.fio:=z.fio+' ';
newE:=verh;
whilenewE<>right^.nrdo//пока не конец списка
begin
{------------------------Uslovie esli posledniy---------------------}
if newE^.inf.fio=z.fio then
begin
if newE=right then
begin
temp:=newE;
newE:=newE^.nl;
newE^.nr:=nil;
right:=newE;
dispose(temp);
kolvo:=kolvo-1;
clrscr;
textcolor(green);
gotoxy(24,25);
writeln('The student has been deleted'); //удалили
readln;
exit;
end
else
{-----------------Uslovie esli 1-iy el-t udalyayut--------------}
if newE =left then
begin
temp:=newE;
newE:=newE^.nr;
newE^.nl:=nil;
verh:=newE;
dispose(temp);
kolvo:=kolvo-1;
clrscr;
textcolor(green);
gotoxy(24,25);
writeln('The student has been deleted'); //удалили
readln;
exit;
end
{-------------------Esli lyuboy no ne 1-iy i ne posledniy-------------}
else
begin
temp:=newE;
newE^.nl^.nr:=temp^.nr;
newE^.nr^.nl:=newE^.nl;
dispose(temp);
kolvo:=kolvo-1;
clrscr;
textcolor(green);
gotoxy(24,25);
writeln('The student has been deleted'); //удалили
readln;
exit;
end;
end;
newE:=newE^.nr; //переводуказателя
end;
gotoxy(15,25);
clrscr;
textcolor(red);
gotoxy(15,25);
writeln('This student has not been finded !!!'); //неудалили
gotoxy(15,27);
writeln('Input his name without mistakes again'); //введитеимяснова
textcolor(white);
readln;
exit;
end;
{------------------------------------------------------------------------------}
{-------------------------------P O I S K --------------------------------}
{------------------------------------------------------------------------------}
{------------------------------------------------------------------------------}
//смотретьprosmotr_2 –всёаналогично
procedure poisk(x:ukaz;imya:string);
var
n,i:integer;
c:char;
begin
clrscr;
n:=0;
i:=0;
newE:=verh;
while (newE<>right^.nr) do begin//поканеконецсписка
if newE^.inf.fio=imya then
inc(i); // подсчёт людей с таким именем
newE:=newE^.nr;
end;
if i=0 then begin clrscr;gotoxy(27,25); textcolor(red);writeln('This student does not EXIST'); exit; end; //такогонет
newE:=x;
textcolor(white);
textbackground(blue);
writeln('|------|---------------|----------|---------|-----------|--------|-------|');
writeln('|#grupp| Name | amount of| validly | unvalidly | summa |percent|');
writeln('| | | | absence | | | |');
writeln('|------|---------------|----------|---------|-----------|--------|-------|');
while (newE<>right^.nr) and (n<=6) do
begin
inc(n);
if newE^.inf.fio=z.fio then
textbackground(red) //выделение элемента красным если это тот
else
textbackground(blue);
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('| | | | | | | |');
textbackground(blue);
writeln;
newE:=newE^.nr;
end;
ifotpech=0 then//изменение установок для печати
otpech:=otpech+n;
textcolor(white);
writeln('|------|---------------|----------|---------|-----------|--------|-------|');
writeln('Push the -enter- to the ExiT'); //длявыходаентер
end;
{-------------------------------------------------------------------------}
procedure obrabotka;
var
pop:ukaz;
x:integer; //промежуточная величина
begin
pop:=verh; //указатель на начало
x:=0;
whilepop<>nildo//пока не конец списка
begin
pop^.inf.neopravdan:= pop^.inf.propusk — pop^.inf.opravdan; //подсчёт неоправданных пропусков
ifpop^.inf.propusk=0 thenpop^.inf.procent:=0//если пропуски=0 то и процент =0
else
pop^.inf.procent:=( pop^.inf.neopravdan/ pop^.inf.propusk)*100; //подсчётпроцента
x:=x+pop^.inf.neopravdan; //нахождение промежуточной величины
pop^.inf.summa:=x;
pop:=pop^.nr;
end;
gotoxy(25,25);
writeln('Processing data is over push the -enter-'); //завершиласьобработка
readln;
end;
{------------------------------------------------------------------------}
{------------------prosmotr----------------------------------------------}
{------------------------------------------------------------------------}
//смотретьprosmotr_2 – всёаналогично,толькодобавляютсянолвыеполя.
procedure prosmotr(x:ukaz);
var
n:integer;
c:char;
begin
clrscr;
n:=0;
newE:=x;
writeln('|------|---------------|----------|---------|');
writeln('|#grupp| Name | amount of| validly |');
writeln('| | | absence | |');
writeln('|------|---------------|----------|---------|');
while (newE<>right^.nr) and (n<=6) do
begin
inc(n);
write('|', newE^.inf.nomergrupp:5,' ');
write('|',newE^.inf.fio:15);
write('|',newE^.inf.propusk:5,' ');
writeln('|', newE^.inf.opravdan:5,' |');
write('| | | | |');
writeln;
newE:=newE^.nr;
end;
if otpech=0 then
otpech:=otpech+n;
writeln('|------|---------------|----------|---------|');
writeln('Push the -enter- to the Exit');
end;
procedure klavishi(nom:integer);
var
c:char;
left:ukaz;
begin
otpech:=0; //обнуляем
left:=verh; //указатель на начало
case nom of//выбор
1:prosmotr(left);
2:prosmotr_2(left);
3:begin clrscr;gotoxy(20,25);textcolor(white);Writeln('Input the name of a student which cold been finded');
textcolor(white);gotoxy(25,27);readln(z.fio);for i:=1 to (15-length(z.fio)) do
z.fio:=z.fio+' ';left:=verh;poisk(left,z.fio); end; //установкипередпроцедуройпоиска
end;
while true do//бесконечныйцикл
begin
c:=readkey; //чтениеклавиши
if ord(c)=13 then//еслиентер-выход
case nom of
продолжение
--PAGE_BREAK--
еще рефераты
Еще работы по информатике
Реферат по информатике
Анализ разработки этапов создания автоматизированного рабочего места
3 Сентября 2013
Реферат по информатике
Проектирование реляционных баз данных
3 Сентября 2013
Реферат по информатике
Реляционные Базы Данных. SQL - стандартный язык реляционных баз данных
3 Сентября 2013
Реферат по информатике
КОНСОЛИДАЦИЯ ДАННЫХ И ФИЛЬТРЫ В MicroSoft Excel
3 Сентября 2013