Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИНФА РАСЧЁТКА.DOC
Скачиваний:
0
Добавлен:
18.09.2019
Размер:
173.06 Кб
Скачать
    1. Анализ технического задания

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

  • Номер – Number;

  • Марка – Mark;

  • Неисправность – Error;

Необходимо осуществить возможность работы со списком в целом (сортировка, вывод на экран, выбор по признаку, обновление и удаление списка) и с каждой строкой по отдельности (добавление, удаление, изменение), а также разработать пользовательский интерфейс.

    1. Входные данные, форма представления результатов

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

Поля записей имеют следующие типы:

  • Number: String[10];

  • Mark: String[20];

  • Error: String[45]

Все результаты выводятся в таблицу, выдаваемую по запросу пользователя.

    1. Спецификация на разрабатываемую программу в целом

  • имя модуля: _main

  • входные параметры:

  1. List – массив записей;

  2. N – число записей;

  • выходные параметры – нет

  • выполняемые функции: вызов главного меню программы и передача управления главному меню.

  1. Разработочная часть

    1. Обоснование структуры программы

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

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

Основным алгоритмом программы (представляющим интерес) является алгоритм сортировки. Сортировка основана на шейкерном алгоритме. Данный метод представляет собой наиболее простое решение проблемы сортировки. Принцип работы основан на следующем: для массива, содержащего n элементов, осуществляется n-1 итераций. В ходе каждой итерации осуществляется проход всех значений массива, причем если для двух соседних элементов выполняется условие A[n]>A[n+1], то эти элементы меняются местами посредством буферной переменной.

Эта операция была оформлена в виде подпрограммы (модуль Actions):

Procedure DoSort(FieldForSort:Byte);

Var

Num,I,J:Word;

Buf:TCar;

Function CompareItems(Item1,Item2:TCar):Boolean;

Begin

Case FieldForSort Of

1: (*по виду неисправности*)

CompareItems:=Item1.Error>Item2.Error;

2: (*по номеру*)

CompareItems:=Item1.Number>Item2.Number

End

End;

Begin

Num:=1;

While Num>0 Do Begin

Write('.');

Num:=0;

For I:=1 To N-1 Do

If CompareItems(List[I],List[I+1]) Then Begin

Move(List[I],Buf,SizeOf(TCar));

Move(List[I+1],List[I],Sizeof(TCar));

Move(Buf,List[I+1],SizeOf(TCar));

Num:=I

End;

For I:=N-1 DownTo 1 Do

If CompareItems(List[I],List[I+1]) Then Begin

Move(List[I],Buf,SizeOf(TCar));

Move(List[I+1],List[I],Sizeof(TCar));

Move(Buf,List[I+1],SizeOf(TCar));

Num:=I

end

End

End;