Блок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-выводит на экран информацию о том , что обработка данных завершилась.
Описание процедур.
procedureorg;-организует ввод данных из файла, создание двунаправленного сриска упорядоченного по фамилиям студентов по алфавиту.
procedureokno(t:integer);-выводит на экран меню программы.
proceduredob;-добавляет нового студента в таблицу ,не нарушая упорядоченности.
procedureudal;-удаление элемента.
procedurepoisk;-поиск студента по фамилии.
procedure obrabotka;-обработка данных по заданию.
procedurezapis_v_fail;-сохранение текущей таблицы данных в файл, который укажет пользователь.
procedure klavishi(nom:integer);-считывает коды клавишь и позволяет просматривать всю таблицу в процедурах поиска и просмотра.
procedure prosmotr_2(x:ukaz);-выводит на экран текущую таблицу со всеми изменениями.
Выбор языка программирования.
Язык TurboPascalи компилятор выбраны из-за его гибкости, широкого распространения (субъективный фактор), малого объема исполняемого файла и достаточно высокой скорости выполнения. Компилятор BorlandPascal7.0 . к тому же включает в себя опциональную возможность оптимизации кода программы как по скорости, так и по размеру. Основным фактором выбора языка Pascal была его более простая
работа со строками. А в данном курсовом пректе это очень важно так как чтение исходных данных производится из текстового файла , данные в котором хранятся в виде таблицы. Этот язык программирования относительно прост, он гибкий и развитый в отношнии типов языка .Язык Си более сложный при написании , поэтому в данном проекте задача была реализована на я зыке TurboPascal , хотя не отрицается возможнсть успешной реализации задачи на языке Си.
3. Технико-экономические показатели
В результате компиляции программы компилятором BorlandPascal7.0 . был получен исполняемый файл формата DOSEXE размером 20 Кбайт, что является приемлемым как для компьютеров десятилетней давности, так тем более, современных.