Программа обработки экономической информации

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    135,19 Кб
  • Опубликовано:
    2012-12-14
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Программа обработки экономической информации

Аннотация

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

Введение

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

1. Назначение и область применения

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

2. Технические характеристики

 

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


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

Даны учетные записи группах университета или института, в которых указываются оценки по предметам, а так же количество пропущенных пар. Подсчитать среднюю оценку для каждой группы, а так же количество пропущенных лекций, практик и общее количество пропущенных пар (Таблица 2.1)

Структура записей входного массива имеет следующий вид: шифр группы (6 символов), шифр дисциплины (6 символов), количество отличных, хороших, удовлетворительных, неудовлетворительных оценок, пропущено лекций, пропущено практических занятий шифр.

Таблица 2.1 - Выходная таблица

Курс

Средний балл

Пропущено занятий



лекций

практических

всего












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

2.2 Описание основных типов данных


Для внутреннего хранения входных данных о рабочем в программе используется комбинированный тип данных:

Ptabl = ^Ttabl;= record:string[6];:string[6];:integer;: integer;: integer;: integer;: integer;: integer;;=record:tablinf;,prev:Ptabl;

end;

Информация, содержащаяся в полях:

grup: шифр группы

predm: предмет

otl: количество отличных оценок

hor: количество хороших оценок

ud: количество удовлетворительных оценок

neud: количество неудовлетворительных оценок

plec: количество пропущенных лекций

pprak: количество пропущенных практик

Для того чтобы возможно было обрабатывать множество записей, необходимо организовать их в массив или список. В данном случае используется список, так как заранее неизвестно количество элементов, поэтому нельзя задать размер массива. Для удобства работы организуется двунаправленный список записей. При использовании двунаправленного списка возможно организовать просмотр записей как от начала в конец (прямое направление) так и из конца в начало (обратное), что используется в процедурах редактирования и удаления записей при перемещении от одной записи к другой.

2.3 Входные данные

Входные данные представляют собой текстовый файл, в котором по строкам разбита информация о работниках группах - Таблица 2.2.

Таблица 2.2 - Пример входных данных

И-21д    матем  7  6    0 2        22      34

И-21д    физик  5  1    5 5        23      44

И-21д    прогр  8  5    0 3        23      65

И-21д    истор  1  9    8 5        12      12

И-21д    химия  2  3    1 1        53      26

И-21д    физра  1  5    9 5        22      50

И-21д    одм 9  8  8    2 23      10

И-21д    опиая  2  0    1 5        18      93

И-22д    матем  1  6    3 9        24      56

И-22д    физик  4  1    3 3        02      14

И-22д    прогр  1  5    6 2        52      30

И-22д    истор  6  9    5 0        16      57

И-22д    химия  8  6    2 5        12      34

И-22д    физра  4  3    9 8        20      54

И-22д    одм 9  2  4    6 23      65

И-22д    опиая  2  5    6 3        19      18

И-23д    матем  6  6    2 2        19      44

И-23д    физик  5  2    0 1        20      02

И-23д    прогр  8  1    5 5        19      81

И-23д    истор  3  7    8 6        19      77

И-23д    химия  1  6    6 9        25      44

И-23д    физра  9  5    6 8        11      18

И-23д    одм 0  3  3    7 11      25

И-23д    опиая  3  2    4 4        32      98

И-24д    матем  9  0    8 1        32      54

И-24д    физик  5  0    9 9        12      08

И-24д    прогр  2  2    6 1        30      54

И-24д    истор  1  5    5 2        16      59

И-24д    химия  4  1    2 5        26      79

И-24д    физра  9  3    1 8        14      76

И-24д    одм 6  6  8    3 26      59

И-24д    опиая  3  1    9 0        24      56

И-25д    матем  5  8    6 1        12      90

И-25д    физик  2  2    3 9        25      49

И-25д    прогр  8  9    1 5        35      97

И-25д    истор  9  4    1 7        25      28

И-25д    химия  5  3    2 3        32      21

И-25д    физра  6  1    5 6        25      88

И-25д    опиая  2  5    9 0        35      63

999999

2.4 Выходные данные

Выходные данные представляют собой информацию о зарплате - Таблица 2.3.

Таблица 2.3 - Пример выходных данных

.5 Описание алгоритма программы

2.5.1 Основная программа (рис. 2.4)

Блок 1. Присвоение начальных значений переменных.

Блок 2. Вызов процедуры Org - которая организует чтение списка из файла

Блок 3. Вызов процедуры Show - которая выводит список на экран.

Блок 4. Вызов процедуры Main - в которой выполняются все действия по работе со списком.

Блок 5. Вызов процедуры Close - которая сохраняет список в файл и завершает выполнение программы.

Рисунок 2.4 - Основная программа

.5.2 Процедура Del - удаление элементов из списка (рис. 2.5)

Блок 1. Проверка, выполняется ли условие cur=1, если да то дальше Блок 2, если нет Блок 5.

Блок 2. Так как выполнилось условие cur=1, то значит удаляется первый элемент. Переменной temp ставим указатель на первый элемент списка.

Блок 3. Вызывается процедура Dispose - освобождение памяти занимаемой переменной left.

Блок 4. Переменная left указывает на первый элемент списка. Количество элементов уменьшается на 1.

Блок 5. Проверка, удаляется ли последний элемент. Если да то Блок 6, в противном случае Блок 9.

Блок 6. Так как выполнилось условие cur=count, то значит удаляется последний элемент. Переменной temp ставим указатель на последний элемент списка.

Блок 7. Вызывается процедура Dispose - освобождение памяти занимаемой переменной right.

Блок 8. Переменная right указывает на последний элемент списка.

Блок 9. Переменная temp указывает на удаляемый элемент списка.

Блок 10. Вызывается процедура Dispose - освобождение памяти занимаемой переменной temp.

Блок 11. Количество элементов уменьшается на 1.

программа массив данные файл

Рисунок 2.5 - Процедура Del

2.5.3 Процедура Saveto - сохранение списка в файл (рис. 2.6)

Блок 1. Переменной f присваивается указатель на файл ‘out.txt’.

Блок 2. Файл ‘out.txt’ обнуляется.

Блок 3. Переменной temp присваивается указатель на начало списка.

Блок 4. Проверяется условие temp<>nil: если условие выполняется то Блок 5, если нет Блок 7.

Блок 5. Запись элемента списка в файл.

Блок 6. Указатель temp на следующий элемент списка.

Блок 7. Закрытие файла ‘out.txt’.

Рисунок 2.6 - Процедура Saveto

.6 Описание процедур

Функция getp(n:integer):ptabl - передается параметр n - номер элемента списка, возвращается указатель на элемент с этим номером;

Процедура sort(t:integer) - сортирует список по полю t;

Процедура org - создает список;

Процедура inf - вывод результирующей таблицы;

Процедура show - создает список;

Процедура saveto - сохраняет список в файл;

Процедура add - добавляет элемент в список;

Процедура edit - редактирует элемент списка;

Процедура del - удаляет элемент из списка;

Процедура close - выход из программы.

.7 Выбор языка программирования

Выбрав языком программирования Turbo Pascal 7.0 я руководствовался следующими критериями:

1. Для разработки программ такого типа удобнее использовать язык высокого уровня;

2.       Легкость в работе с указателями;

.        Достаточная скорость выполнения готовой программы;

Всем этим требованиям удовлетворяет язык программирования Turbo Pascal 7.0.

3. Основные технико-экономические показатели

В результате компиляции программы компилятором Turbo Pascal 7.0 был получен исполняемый файл формата DOS EXE, что является приемлемым размером для программ такого типа.

Для выполнения требуется процессор класса 286.

Программа может работать под управлением операционной системы класса DOS, при этом сохраняет работоспособность и в режиме эмуляции MS-DOS операционной системой Windows 9x.

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

Заключение

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

Приложение 1

Текст программы

uses dos,crt;

type= ^Ttabl;= record:string[6];:string[6];:integer;:integer;:integer;:integer;:integer;:integer;;=record:tablinf;,prev:Ptabl;;:array [1..50] of tablinf;:tablinf;,left,right,tabl:Ptabl;,c,starty,perc,i,cur,beg,lin,lnum,count:integer;:char;getp(n:integer):ptabl;:integer;:Ptabl;:= 1;:= left;c<>n do(c);:= el^.next;;:= el;;inttostr(i:longint):string;:string[11];(i,s);:= S;;strtoint(s:string):longint;,code:integer;s[1]=' ' do delete(s,1,1);s[length(s)]=' ' do delete(s,length(s),1);(s,i,code);:= i;;flip(var t1,t2:ptabl);:tablinf;:= t1^.inf;^.inf := t2^.inf;^.inf := d;;sort(t:integer);,temp2:ptabl;,i,j:integer;:= 1;i := 1 to count doj := 1 to count do begin:= getp(i);:= getp(j);s=2 thent of

:if temp1^.inf.grup>temp2^.inf.grup then flip(temp1,temp2);

:if temp1^.inf.predm>temp2^.inf.predm then flip(temp1,temp2);

:if temp1^.inf.hor>temp2^.inf.hor then flip(temp1,temp2);

:if temp1^.inf.ud>temp2^.inf.ud then flip(temp1,temp2);

:if temp1^.inf.neud>temp2^.inf.neud then flip(temp1,temp2);

:if temp1^.inf.plec>temp2^.inf.plec then flip(temp1,temp2);

:if temp1^.inf.pprak>temp2^.inf.pprak then flip(temp1,temp2);elses=1 thent of

:if temp1^.inf.grup<temp2^.inf.grup then flip(temp1,temp2);

:if temp1^.inf.predm<temp2^.inf.predm then flip(temp1,temp2);

:if temp1^.inf.otl<temp2^.inf.otl then flip(temp1,temp2);

:if temp1^.inf.hor<temp2^.inf.hor then flip(temp1,temp2);

:if temp1^.inf.ud<temp2^.inf.ud then flip(temp1,temp2);

:if temp1^.inf.neud<temp2^.inf.neud then flip(temp1,temp2);

:if temp1^.inf.plec<temp2^.inf.plec then flip(temp1,temp2);

:if temp1^.inf.pprak<temp2^.inf.pprak then flip(temp1,temp2);;;;org;:text;(f,'base.txt');(f);(f,newe.grup);newe.grup='999999' then exit;(f,newe.predm);read(f,newe.otl);(f,newe.hor);read(f,newe.ud);(f,newe.neud);read(f,newe.plec);(f,newe.pprak);(tabl);^.inf := newe;^.next := nil;^.prev := nil;:= tabl;:= tabl;(f);:= 1;true do begin(f,newe.grup);newe.grup='999999' then exit;(f,newe.predm);read(f,newe.otl);(f,newe.hor);read(f,newe.ud);(f,newe.neud);read(f,newe.plec);(f,newe.pprak);(tabl);^.inf := newe;^.next := nil;^.prev := right;^.next := tabl;:= tabl;(count);(f);;(f);;show;(0);lnum<20 then clrscr;(15);(3);(1,starty);('');('│ Группа │ Предм. │ 5 │ 4 │ 3 │ 2 │ ПЛ │ ПП │');('');(1,starty + 3);:= getp(beg);i := 1 to lnum doi=lin then(1);(6);temp^.inf do('│ ',grup,' │ ',predm,' │ ',otl:2,' │ ',hor:2,' │ ',ud:2,' │ ',neud:2,' │ ',plec:2,' │ ',pprak:2,' │');(15);(3);elsetemp^.inf do('│ ',grup,' │ ',predm,' │ ',otl:2,' │ ',hor:2,' │ ',ud:2,' │ ',neud:2,' │ ',plec:2,' │ ',pprak:2,' │');:= temp^.next;;('');(7);(0);(1,starty + lnum + 5);('Запись №',cur:2,' из ',count);

write('''S''-Сортировать ''A''-Добавить ''E''-Редактировать ''D''-Удалить ''I''-Таблица');

end;saveto;:text;(f,'out.txt');(f);:= getp(beg);temp<>nil dotemp^.inf do('│ ',grup,' │ ',predm,' │ ',otl,' │ ',hor,' │ ',ud,' │ ',neud,' │ ',plec,' │ ',pprak,' │');:= temp^.next;;(f);;add;,p,er:integer;:string;(0);;

writeln('Добавление:');('Группа:');

readln(st); if length(st)<6 then for p := 1 to 6-length(st) do st := st + ' ';.grup := st;('Предмет:');(st); if length(st)<6 then for p := 1 to 6-length(st) do st := st + ' ';.predm := st;('5:');(l);newe.otl := l;('4:');(l); newe.hor := l;('3:');(l); newe.ud := l;('2:');(l); newe.neud := l;('Пропущено лекций:');(l); newe.plec := l;('Пропущено практик:');(l); newe.pprak := l;(tabl);^.inf := newe;^.next := nil;^.prev := right;^.next := tabl;:= tabl;(count);count<=20 then lnum:=count;;;edit;,p,er:integer;:string;(0);;('Редактирование:');

write('Группа:');

readln(st); if length(st)<6 then for p := 1 to 6-length(st) do st := st + ' ';(cur)^.inf.grup := st;('Предмет:');(st); if length(st)<6 then for p := 1 to 6-length(st) do st := st + ' ';(cur)^.inf.predm := st;('5:');(l); getp(cur)^.inf.otl := l;('4:');(l); getp(cur)^.inf.hor := l;('3:');(l); getp(cur)^.inf.ud := l;('2:');(l); getp(cur)^.inf.neud := l;('Пропущено лекций:');(l); getp(cur)^.inf.plec := l;('Пропущено практик:');(l); getp(cur)^.inf.pprak := l;(0);;;del;count>1 then begincur=1 then:= left^.next;^.prev := nil;(left);:= temp;(count);elsecur=count then:= right^.prev;^.next := nil;(right);:= temp;(count);(beg);else:= getp(cur);^.prev^.next := temp^.next;^.next^.prev := temp^.prev;(temp);(count);;:= 1;:= 1;count<lnum then lnum:=count;;;sortby:integer;:char;,lp:integer;(0);;('Сортировать:');('1: Группа');('2: Предмет');('3: Отл');('4: Хор');('5: Уд');('6: Неуд');

writeln('7: Пропущено лекций');('8: Пропущено практик');

readln(lp);lp>8 then lp:=8;lp<1 then lp:=1;:= lp;;;inf;:integer;,new:integer;,p: real;(1);:= left;:= 1;[1] := temp^.inf;[1].otl := 0;[1].hor := 0;[1].ud := 0;[1].neud := 0;temp<>nil dogrupmas[n].grup=temp^.inf.grupbegin[n].otl := grupmas[n].otl + temp^.inf.otl;[n].hor := grupmas[n].hor + temp^.inf.hor;[n].ud := grupmas[n].ud + temp^.inf.ud;[n].neud := grupmas[n].neud + temp^.inf.neud;[n].neud := grupmas[n].neud + temp^.inf.neud;[n].plec := grupmas[n].plec + temp^.inf.plec;[n].pprak := grupmas[n].pprak + temp^.inf.pprak;else(n);[n] := temp^.inf;;:= temp^.next;;i:=1 to n do;(0);;(15);textbackground(3);('');

writeln('Средний Пропущено ');

writeln('Группа  ');

writeln(' балл лекц.  практ всего ');

writeln('');

for i := 1 to n do:=grupmas[i].otl*5+grupmas[i].hor*4+[i].ud*3+grupmas[i].neud*2;:=p/(grupmas[i].otl+grupmas[i].hor+[i].ud+grupmas[i].neud);(' ',grupmas[i].grup,'  ',s:8:3,'  ',grupmas[i].plec:5,'  ',[i].pprak:5,'  ',grupmas[i].plec+grupmas[i].pprak:5,' ');;('');;;close;;;(1);;main;keypressed then:= readkey;ch=#71 then {home}:= 1;beg := 1;;ch=#79 then {end}:= lnum;beg := count-lnum + 1;;(ch=#73) then {pageup}:= 1;:= beg-lnum;beg<1 then beg := 1;;(ch=#81) then {pagedown}:= lnum;:= beg + lnum;beg>(count-lnum) then beg := count-lnum + 1;;ch=#80 then {down}(lin);lin>lnum then:= lnum;(beg + lnum)<=count then inc(beg);;;ch=#72 then {up}(lin);lin<1 then:= 1;beg>1 then dec(beg);;;(ch='s') or (ch='ы') then sort(sortby);(ch='a') or (ch='ф') then add;(ch='e') or (ch='у') then edit;(ch='d') or (ch='в') then del;(ch='i') or (ch='ш') then inf;:= beg + lin-1;;;ch=#27;;(0);;:= 20;:= 1;:= 1;:= 1;:= 1;;;;;

end.

Приложение 2

Руководство оператора

Для выполнения программы необходимо запустить исполняемый файл KURS.EXE. После запуска программы на экране появляется окно - Рисунок 2.1

Рисунок 2.1 - основное окно программы


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

Up - на одну строку вверх;

Down - на одну строку вниз;

PgUp - на экран вверх;

PgDown - на экран вниз;

Home - в начало списка;

End - в конец списка;

Esc - выход;

S - сортировка по полю, которое можно выбрать, нажав соответствующую цифру;

A - добавление элемента в список;

D - удаление элемента из списка;

E - редактирование текущего элемента списка;

При нажатии на клавишу “I” на экран выводится результирующая таблица - Рисунок 2.2

Похожие работы на - Программа обработки экономической информации

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!