Смекни!
smekni.com

Разработка программы обработки экономической информации (стр. 2 из 5)

Блок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 Кбайт, что является приемлемым как для компьютеров десятилетней давности, так тем более, современных.