Курсовая работа: Информационная система начальника жилищно-эксплуатационной службы
– procedureReadVec – процедура чтения вектора данных из текстового файла.
– procedureWriteVec – процедура записи вектора данных из текстового файла.
2. Данные программы
В программе для хранения данных был спроектирован класс TVector в котором для хранения данных использовался вектор векторов FArr. Для хранения имен колонок использовался вектор FNames, описанный как array [1..100] of string. В программе были созданы 5 объектов класса TVector:
Kvart : TVector;
Scheme : TVector;
Gk : TVector;
People : TVector;
FlatAtr : TVector;
Имя массива | Тип | Размер в байтах |
Kvart | TVector | 100*100*16+10100+8=170108 |
Scheme | TVector | 170108 |
Gk | TVector | 170108 |
People | TVector | 170108 |
FlatAtr | TVector | 170108 |
Кроме того, в программе для временных нужд объявляются переменные:
KPod , M , i , j , k, x , типа integer (каждая по 4 байта);
FileNameT типа string (200 байт);
Ft типа TextFile (460 байт);
FSGVector – векторссылоктипа TStringGrid (40 байт).
3. Логические структуры данных
Базовой структурой данного проекта является класс TVector в котором для хранения данных использовался вектор векторов FArr и организованы свойства и методы для доступа и обработки данных класса.
Объявление вектора FArr выглядит следующим образом:
FArr : array [1..100] of TVarMas, где TVarMas = array [1..MaxN] of Variant;
Вектор (array) – это линейная структура данных (список) с элементами одинакового размера в которой адрес элемента однозначно определяется его номером.
Для логического определения вектора ему необходимо присвоить имя, указать пару ограниченных значений индекса, а также указать тип элементов. Элементами векторов также могут являются векторы.
Логическая схема структуры вектора векторов FArr:
0 | 1 | 2 | … | 100 |
1 | ||||
2 | ||||
3 | ||||
… | ||||
100 |
Каждый элемент одного вектора занимает 16 байт памяти. Соответственно FArr будет занимать (100*100)*16=160000 байт.
Логическая схема структуры вектора имен FNames:
0 | 1 | 2 | … | 101 |
1 | ||||
2 | ||||
3 | ||||
… | ||||
1 00 |
Каждый элемент вектора занимает 101 байт памяти. Соответственно вектор FNames будет занимать 100*101 =10100 байт.
4. Алгоритмы обработки основных структур
Основной операцией обработки структуры в данном программном обеспечении является сортировка QuickSort(по заданию на курсовое проектирование).
Быстрая сортировка (quicksort ), часто называемая qsort по имени реализации в стандартной библиотеке языка Си – широко известный алгоритм сортировки, разработанный английским Информатиком Чарльзом Хоаром. Один из быстрых известных универсальных алгоритмов сортировки массивов (в среднем О (n log n ) обменов при упорядочении n элементов), хотя и имеющий ряд недостатков.
Алгоритм
Быстрая сортировка использует стратегию «разделяй и властвуй». Шаги алгоритма таковы:
1. Выбираем в массиве некоторый элемент, который будем называть опорным элементом . С точки зрения корректности алгоритма выбор опорного элемента безразличен. С точки зрения повышения эффективности алгоритма выбираться должна медиана, но без дополнительных сведений о сортируемых данных её обычно невозможно получить. Известные стратегии: выбирать постоянно один и тот же элемент, например, средний или последний по положению; выбирать элемент со случайно выбранным индексом.
2. Операция разделения массива: реорганизуем массив таким образом, чтобы все элементы, меньшие или равные опорному элементу, оказались слева от него, а все элементы, большие опорного – справа от него. Обычный алгоритм операции: