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

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

type

zap=record

fio:string[15];

nomergrupp:string[4];

propusk:integer;

opravdan:integer;

neopravdan:integer;

summa:integer;

procent:real;

end;

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

fio: массив для хранения фамилии студента;

nomergrupp: шифр группы;

propusk:число пропусков занятий студентом;

opravdan:число пропусков занатий по уважительной причине;

neopravdan: число пропусков занатий без уважительной причины;

summa:общая сумма пропусков по всем студентам;

procent:процент пропусков без уважительной причины;

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

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

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

Входные данные передаются в программу следующим способом:

Чтение входных данных из предварительно подготовленного файла, определенного формата.

Предполагается, что входные данные содержатся в текстовом файле правильного формата, имя которого dano.txt, а местонахождение - текущий каталог.

Пример входных данных текстовый файл приведен на рисунке 2.1


Рисунок 2.3.1 – Пример файл входных данных

 

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

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

В результате обработки данных составляется ведомость, которая при выборе меню watch and write output file отображается на экране и записывается в новый файл с выполненными по заданию расчетами в виде таблицы:


Рисунок 2.4.1 – Пример файла выходных данных

2.5 Внутреннее представление данных

Программа написана на языке высокого уровня Turbo Pascal и скомпилирована компилятором Borland Pascal 7.0 .

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

 

2.6 Описание алгоритма программ

Структура алгоритма задачи для процедуры org;- считывание из файла и создание двунаправленного списка с упорядоченной структурой по полю fio (фамилия студента) по алфавиту. (рис. 2.6.1.) .

Блок1-обнуляет число элементов.

Блок2-чтение имени файла.

Блок3-проверка введено ли имя.

Блок4-Вывод окна сообщений о том , что имя не введено.

Блок5- присвоение булевой переменной определяющей есть ли данный файл значения false.

Блок6-выход из процедуры.

Блок7-открытие файла.

Блок8-проверка на наличие файла.

Блок9-вывод на экран сообщения о том . что файла такого нет.

Блок10-булевой переменной определяющей есть ли данный файл значения true.Обнуление числа строк

Блок11- присвоение булевой переменной определяющей есть ли данный файл значения false.

Блок12-цикл пока не конец файла

Блок13-цикл пока не почитал 4 строки

Блок15-подсчёт строк

Блок16-чтение строки

Блок17-считывание частей строк в промежуточные переменные.

Блок18-проверка двузначное ли число пропусков

Блок19-(да)копируем из строки 1 эл-т

Блок20-(нет)-2 эл-та

Блок21-перевод строки в целое число

Блок22-проверка двузначное ли число пргопусков по ув. причине

Блок23-(да)копируем из строки 1 эл-т

Блок24-(нет)-2 эл-та

Блок25-перевод строки в целое число

Блок26-выделние памяти и присвоение всех указателей для первого элемента.

Блок27-цикл пока не конец файла

Блок28-чтение строки

Блок29-считывание частей строк в промежуточные переменные.

Блок30-проверка двузначное ли число пропусков

Блок31-(да)копируем из строки 1 эл-т

Блок32-(нет)-2 эл-та

Блок33-перевод строки в целое число

Блок34-проверка двузначное ли число пргопусков по ув. причине

Блок35-(да)копируем из строки 1 эл-т

Блок36-(нет)-2 эл-та

Блок37-перевод строки в целое число

Блок38-присвоение указателю значение первого

Блок39-цикл пока не конец списка

Блок40-сравнение считанной переменной с фамилиями списка

Блок41-(больше)-перевод указателя на следующий эл-т

Блок42-выход из цикла

Блок43-выделение памяти новому эл-ту

Блок44-прверка, если указатель на последний эл-т

Блок45-(да)добавление эл-та в конец

Блок46-(нет)проверка указатель на первый или нет

Блок47-(да)добавление эл-та в начало

Блок48-добавление в любле другое место

Блок49-указателю конца приваем значение nil

Блок50-закрытие файла

Блок51-конец.

Рисунок 2.6.1-процедура чтения информации из файла и организация списка.


Рисунок 2.6.1 – продолжение


Рисунок 2.6.1- продолжение


Рисунок 2.6.1 –продолжение.


Рисунок 2.6.1 – продолжение.

 

Структура алгоритма задачи для процедуры zapis_v_fail; - сохранение результата в файл (рис. 2.6.2)

Блок1-чтение имени файла

Блок2-установка связи с файлом

Блок3-открытие его в режиме записи

Блок4-присвение первого значения указателю

Блок5-запись шапки таблицы в файл

Блок6-цикл пока не конец списка -

Блок7-(конец) запись в файл нижней границы таблицы

Блок8-очистка экрана

Блок9-вывод на экран информации о том, что файл был записан

Блок10-закрытие файла

Блок11-конец

Блок12запись данных в файл

Блок13-первод указателя на следующий элемент


 

Рисунок 2.6.2-процедура записи данных в файл.


Рисунок 2.6.2-продолжение

Структура алгоритма задачи процедуры okno(t:integer) .Печать меню и выделение строки под номером t. (Рис.2.6.3);

Блок1-присваение значения номера строки переменной p

Блок2-печать верхней рамки меню

Блок3-проверка значения p=1

Блок4-(да)цвет фона строки изменяется на чёрный

Блок5-(нет)печать 1-ого пункта меню

Блок6-возврат к прежнему фону

Блок7-проверка значения p=2

Блок8-(да)цвет фона строки изменяется на чёрный

Блок9-(нет)печать 2-ого пункта меню

Блок10-возврат к прежнему фону

Блок11-проверка значения p=3

Блок12-(да)цвет фона строки изменяется на чёрный

Блок13-(нет)печать 3-ого пункта меню

Блок14-возврат к прежнему фону

Блок15-проверка значения p=4

Блок16-(да)цвет фона строки изменяется на чёрный

Блок17-(нет)печать 4-ого пункта меню

Блок18-возврат к прежнему фону

Блок19-проверка значения p=5

Блок20-(да)цвет фона строки изменяется на чёрный

Блок21-(нет)печать 5-ого пункта меню

Блок22-возврат к прежнему фону

Блок23-проверка значения p=6

Блок24-(да)цвет фона строки изменяется на чёрный

Блок25-(нет)печать 6-ого пункта меню

Блок26-возврат к прежнему фону

Блок27-проверка значения p=7

Блок28-(да)цвет фона строки изменяется на чёрный

Блок29-(нет)печать 7-ого пункта меню

Блок30-возврат к прежнему фону

Блок31-проверка значения p=8

Блок32-(да)цвет фона строки изменяется на чёрный

Блок33-(нет)печать 8-ого пункта меню

Блок34-возврат к прежнему фону

Блок35-печать нижней рамки меню

Блок36- возврат к прежнему фону

Блок37-конец.


Рис 2.6.3.процедура okno-печать меню.


Рис 2.6.3.-продолжение


Рисунок 2.6.3-продолжение

Структура алгоритма задачи процедуры poisk(x:ukaz;imya:string) ищет необходимого студента в таблице.(Рис.2.6.4) .

Блок1-обнуление переменных числа выводимых на экран строк(n), числа элементов с требуемым именем(i) и ррисвоение указателю значения первого.

Блок2-цикл пока не конец списка

Блок3-подсчёт числа э-тов всписке с данным именем

Блок4-первод указателя на следующий эл-т

Блок5-проверка равно ли число студентов с аким именм 0

Блок6-(да)вывод на экран сообщения о том , что такого э-та нет

Блок7-(нет)изменение указателя на переданный

Блок8-выход из процедуры

Блок9-печать шапки таблицы

Блок10-цикл пока число n<>0 (число выводимых строк)

Блок11-подсчёт числа таких эл-тов

Блок12-проверка тот ли это эл-т по фамилии

Блок13-(не тот)не выделять

Блок14-(тот)выделить

Блок15-печать эл-та

Блок16-возвращение к прежнему цвету

Блок17изменение указателя на следующий

Блок18-печать нижней границы таблицы

Блок19-конец.


Рис.2.6.4-процедура поиска нужного студента.


Рис.2.6.4-продолжение.

Структура алгоритма задачи для структурных схем , выполненных на чертеже формата А1.

Для основной программы:

Блок1-присваивает значению номера строки еденицу

Блок2-организовывает печать меню с выделенной первой строкой

Блок3-организует бесконечный цикл

Блок4-организует считывание клавиш

Блок5-сравнивает код клавиш с кодом enter

Блок6-сравнивает код клавиши с 0

Блок7-роганизовывает вызов процедур по номеру строки

Блок8-чтение клавиши

Блок9-сравнивает код клавиши с кодом стрелки вниз

Блок10-привыполнении условия в блоке 9 увеличивает номер текущей строки на 1

Блок11-сравнивает номер строки с его максимальным значением

Блок12-сравнивает код клавиши с кодом стрелки вверх

Блок13-при выполнении условия в блоке 12 уменьшает значение текущей строки на 1

Блок14- сравнивает номер строки с его минимальным значением

Блок15-в случае выполнения условия блока 14 присваивают номеру строки максимальное значение

Блоки16,17,18-организуют вызов процедуры печати меню

Блоки19-25- организуют вызов процедур, соответствующих номеру строки

Блок26-выход из программы.

Блок27- при выполнении условия в блоке 11 присваивает значению номера текущей строки минимальное

Блок28-вызывает процедуру печати меню.

Для процедуры obrabotka:

Блок1-присвамивает указателю начальное значение и обнуляет промежуточную величину x.

Блок2-создает цикл обхода списка.

Блок3 –находит значения поля неоправданных пропусков для каждого эл-та.

Блок4-прверяет не равно ли число пропусков 0.Тогда:

Блок5-если не равен находит процент пропусков без уважительной причины.

Блок6- присваивает значение 0 полю процента пропусков без уважительной причины.

Блок7-нахождение промежуточной величины x для дальнейшего нахождения значения поля суммы общих прогулов без уважительной причины.

Блок8-нахождение значения суммы общих пропусков без уважительной причины. и перевод указателя на следующий эл-т.

Блок9-выводит на экран информацию о том , что обработка данных завершилась.

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

procedure org;-организует ввод данных из файла, создание двунаправленного сриска упорядоченного по фамилиям студентов по алфавиту.

procedure okno(t:integer);-выводит на экран меню программы.

procedure dob;-добавляет нового студента в таблицу ,не нарушая упорядоченности.

procedure udal;-удаление элемента.

procedure poisk;-поиск студента по фамилии.

procedure obrabotka;-обработка данных по заданию.

procedure zapis_v_fail;-сохранение текущей таблицы данных в файл, который укажет пользователь.

procedure klavishi(nom:integer);-считывает коды клавишь и позволяет просматривать всю таблицу в процедурах поиска и просмотра.

procedure prosmotr_2(x:ukaz);-выводит на экран текущую таблицу со всеми изменениями.

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

Язык Turbo Pascal и компилятор выбраны из-за его гибкости, широкого распространения (субъективный фактор), малого объема исполняемого файла и достаточно высокой скорости выполнения. Компилятор Borland Pascal 7.0 . к тому же включает в себя опциональную возможность оптимизации кода программы как по скорости, так и по размеру. Основным фактором выбора языка Pascal была его более простая

работа со строками. А в данном курсовом пректе это очень важно так как чтение исходных данных производится из текстового файла , данные в котором хранятся в виде таблицы. Этот язык программирования относительно прост, он гибкий и развитый в отношнии типов языка .Язык Си более сложный при написании , поэтому в данном проекте задача была реализована на я зыке Turbo Pascal , хотя не отрицается возможнсть успешной реализации задачи на языке Си.



Информация о работе «Разработка программы обработки экономической информации»
Раздел: Информатика, программирование
Количество знаков с пробелами: 38070
Количество таблиц: 0
Количество изображений: 16

Похожие работы

Скачать
39580
0
8

... необходимостью экономить трудовые, материальные и финансовые ресурсы. Отсюда вытекают и специальные требования, предъявляемые автоматизированным системам обработки информации. Прежде всего, система должна отвечать основным функциональным требованиям, в качестве которых выступают операции экономического отдела городской налоговой инспекции. Кроме того, к АСОЭИ предъявляются и основные системные ...

Скачать
21338
0
1

... , и, в частности, рынка информации и его особенностей, представляет сегодня значительный теоретический и практический интерес. В данной контрольной работе произведена разработка проекта автоматизированной системы обработки экономической информации для малого рекламного предприятия. 1. Назначение автоматизированных систем экономической обработки информации (АСОЭИ) Непростая экономическая ...

Скачать
19103
0
0

... быстро создавать необходимые компоненты приложений, критичные по скорости работы, которые трудно, а иногда невозможно разработать средствами "классических" СУБД. Современный подход к управлению базами данных подразумевает также широкое использование технологии "клиент-сервер". Таким образом, на сегодняшний день разработчик не связан рамками какого-либо конкретного пакета, а в зависимости от ...

Скачать
52612
4
0

а языке Pascal, пояснительную записку. 3 Построение математической модели Даны исходные данные: № Переходящий остаток продукции на начало года (А1) Приход продукции, шт (А2) Расход, шт (А3) Цена за 1 шт (А4) Остаток на конец года (А) 1 45 32 21 6.90 (A) 2 234 3454 32 5.67 (A) … … … … … … Итого: As=A+A&# ...

0 комментариев


Наверх