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 , хотя не отрицается возможнсть успешной реализации задачи на языке Си.
... необходимостью экономить трудовые, материальные и финансовые ресурсы. Отсюда вытекают и специальные требования, предъявляемые автоматизированным системам обработки информации. Прежде всего, система должна отвечать основным функциональным требованиям, в качестве которых выступают операции экономического отдела городской налоговой инспекции. Кроме того, к АСОЭИ предъявляются и основные системные ...
... , и, в частности, рынка информации и его особенностей, представляет сегодня значительный теоретический и практический интерес. В данной контрольной работе произведена разработка проекта автоматизированной системы обработки экономической информации для малого рекламного предприятия. 1. Назначение автоматизированных систем экономической обработки информации (АСОЭИ) Непростая экономическая ...
... быстро создавать необходимые компоненты приложений, критичные по скорости работы, которые трудно, а иногда невозможно разработать средствами "классических" СУБД. Современный подход к управлению базами данных подразумевает также широкое использование технологии "клиент-сервер". Таким образом, на сегодняшний день разработчик не связан рамками какого-либо конкретного пакета, а в зависимости от ...
а языке 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 комментариев