КУРСОВОЙ ПРОЕКТ
по курсу «Структуры и организация данных в ЭВМ»
на тему
«Информационная система начальника жилищно-эксплуатационной службы»
Тема данного курсового проекта – «Информационная система начальника жилищно-эксплуатационной службы». При этом по заданию к курсовому проекту необходимо использовать структуру данных типа вектор и сортировку QuickSort.
Для разработки приложения была выбрана среда программирования Delphi.
Среда визуального объектно-ориентированного проектирования Delphi позволяет:
1. Создавать законченные приложения для Windows самой различной направленности.
2. Быстро создавать профессионально выглядящий оконный интерфейс для любых приложений; интерфейс удовлетворяет всем требованиям Windows и автоматически настраивается на ту систему, которая установлена, поскольку использует функции, процедуры и библиотеки Windows.
3. Создавать свои динамически присоединяемые библиотеки компонентов, форм, функций, которые потом можно использовать из других языков программирования.
4. Создавать мощные системы работы с базами данных любых типов.
5. Формировать и печатать сложные отчеты, включающие таблицы, графики и т.п.
6. Создавать справочные системы, как для своих приложений, так и для любых других.
7. Создавать профессиональные программы установки для приложений Windows, учитывающие всю специфику и все требования операционной системы.
Delphi – быстро развивающаяся система. Первая версия Delphi была выпущена в феврале 1995 года, в 1996 году вышла вторая версия, 1997 – третья, 1998 – четвертая, 1999 – пятая, 2001 – шестая. Все версии, начиная с Delphi 2.0, рассчитаны на разработку 32-разрядных приложений, т.е. приложений для операционных систем Windows 95/98, NT и т.д. В 2002 году вышла седьмая версия, основным нововведением в которой были Интернет-технологии.
Проект данной курсовой работы представляет собой инструмент для управления информационной системой начальника жилищно-эксплуатационной службы.
1.1 Состав проекта
Данный проект состоит из двух форм: InputForm и ReportForm:
На форме InputForm расположены следующие компоненты (см. рис1):
– компонент AddBtn – верхняя кнопка кнопка в правой части формы для добавления записей данных.
– компонент CopyBtn – кнопка для копирования записей данных.
– компонент DelBtn – кнопка для удаления записей данных.
– компонент SortBtn – кнопка для сортировки выделенного столбца в таблице данных.
– компонент FindBtn – кнопка для поиска определенного пользователем значения в столбце данных.
– компонент SaveBtn – кнопка для сохранения всех табличных данных на форме в текстовых файл.
– компонент LoadBtn – кнопка для загрузки всех табличных данных на форме из текстового файла.
– компонент SaveBtn – кнопка для сохранения всех табличных данных на форме в текстовых файл.
– компонент FBtn – кнопка для отображения формы ReportForm и формирования отчета Ф5.
– компонент BitBtn1 – кнопка для закрытия приложения.
– компонент MSpinEdit – поле ввода для задания количества этажей M.
– компонент KSpinEdit – поле ввода для задания количества подъездов К.
На форме также находятся компоненты Label1, Label2 для отображения подсказок для ввода информации и невизуальные компоненты OpenDialog1, SaveDialog1 для вызова стандартных окон открытия и сохранения файлов.
– компонент PageControl1 – содержит вкладки TabSheet 1–5 на которых отражены данные (соответственно «Квартиры», «СХЕМА», «ГК (Р)», «Жители члены семей ГК (А)», и «Атрибуты квартир (С)»).
Компоненты TabSheet 1–5 содержат в себе элементы таблиц StringGrid 1–5, которые связаны с векторами данных, соответственно «Kvart», «Scheme», «GK», «People», «FlatAtr»).
Рис. 1 – Главная форма программы
На форме ReportForm расположены следующие компоненты (см. рис 2):
– компоненты Panel1, Panel2 – панели на форме для разделения формы на отчет и панель кнопок.
– компонент OkBtn – кнопка для закрытия формы.
– компонент ListBox1 – список для отображения отчета.
Рис. 2 – форма для формирования отчета Ф5.
1.2 Основные модули и процедуры, входящие в состав программного комплекса
Список модулей:
Программа содержит следующие модули:
Unit1 – модуль главной формы проекта.
Unit2 – модуль отчетной формы проекта.
MyTypes – модуль с описаниями классов данных.
Список основных процедур, входящих в состав программного комплекса:
– procedure LoadButtonClick – процедура загрузки данных из файла в векторы.
– procedure SaveButtonClick – процедура сохранения данных в файл.
– procedure FillStringGrid – процедура инициализации таблиц и заполнения их в соответствии с массивами.
– procedure PageControl1Change – процедура выбора необходимой страницы с данными и вызова перезаполнения соответствующей таблицы.
– procedure SGDblClick – процедура ввода / редактирования данных в текущей ячейки таблицы данных.
– procedure AddBtnClick – процедура добавления строки в текущую таблицу данных и вектор данных.
– procedure DelBtnClick – процедура для удаления записей данных.
– procedure SortBtnClick – процедура для сортировки выделенного столбца в таблице данных.
– procedure KSpinEditChange – процедура для изменения значения количества подъездов К в соответствии с полем ввода.
– procedure MSpinEditChange – процедура для изменения значения количества этажей M в соответствии с полем ввода.
– procedure CopyBtnClick – процедура ввода новой строки данных копированием текущей строки.
– procedure FindBtnClick – процедура для поиска определенного пользователем значения в столбце данных.
– procedure SortBtn – кнопка для сортировки выделенного столбца в таблице данных.
– procedure FButtonClick – процедура для отображения формы ReportForm и формирования отчета Ф5.
– procedure ReadVec – процедура чтения вектора данных из текстового файла.
– procedure WriteVec – процедура записи вектора данных из текстового файла.
В программе для хранения данных был спроектирован класс 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 байт).
Базовой структурой данного проекта является класс 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 |
|
|
|
|
|
… |
|
|
|
|
|
100 |
|
|
|
|
|
Каждый элемент вектора занимает 101 байт памяти. Соответственно вектор FNames будет занимать 100*101 =10100 байт.
Основной операцией обработки структуры в данном программном обеспечении является сортировка QuickSort (по заданию на курсовое проектирование).
Быстрая сортировка (quicksort), часто называемая qsort по имени реализации в стандартной библиотеке языка Си – широко известный алгоритм сортировки, разработанный английским Информатиком Чарльзом Хоаром. Один из быстрых известных универсальных алгоритмов сортировки массивов (в среднем О (n log n) обменов при упорядочении n элементов), хотя и имеющий ряд недостатков.
Алгоритм
Быстрая сортировка использует стратегию «разделяй и властвуй». Шаги алгоритма таковы:
1. Выбираем в массиве некоторый элемент, который будем называть опорным элементом. С точки зрения корректности алгоритма выбор опорного элемента безразличен. С точки зрения повышения эффективности алгоритма выбираться должна медиана, но без дополнительных сведений о сортируемых данных её обычно невозможно получить. Известные стратегии: выбирать постоянно один и тот же элемент, например, средний или последний по положению; выбирать элемент со случайно выбранным индексом.
2. Операция разделения массива: реорганизуем массив таким образом, чтобы все элементы, меньшие или равные опорному элементу, оказались слева от него, а все элементы, большие опорного – справа от него. Обычный алгоритм операции:
1. Два индекса – l и r, приравниваются к минимальному и максимальному индексу разделяемого массива соответственно.
2. Вычисляется индекс опорного элемента m.
3. Индекс l последовательно увеличивается до m до тех пор, пока l-й элемент не превысит опорный.
4. Индекс r последовательно уменьшается до m до тех пор, пока r-й элемент не окажется меньше опорного.
5. Если r = l – найдена середина массива – операция разделения закончена, оба индекса указывают на опорный элемент.
6. Если l < r – найденную пару элементов нужно обменять местами и продолжить операцию разделения с тех значений l и r, которые были достигнуты. Следует учесть, что если какая-либо граница (l или r) дошла до опорного элемента, то при обмене значение m изменяется на r-й или l-й элемент соответственно.
... . И важнейшей из стоящих сегодня проблем является выбор модели вторичного ипотечного рынка. 1.2. Система ипотечного кредитования как инструмент преодоления кризисных явлений в строительстве в условиях транзитивной экономики Ипотечное кредитование выступает существенным фактором экономического и социального развития страны. Его роль становится особенно заметной для страны в период выхода из ...
... на здание и перемещаются вертикально по мере роста возводимого сооружения). Мачтовый подъемник - предназначен для подъема и подачи внутрь проемов зданий различных строительных грузов при жилищном строительстве, отделочных работах и ремонте. Бульдозер - самоходная землеройная машина, представляющая собой гусеничный или колесный трактор, тягач с навесным рабочим органом - криволинейным в сечении ...
... , остается один источник – полная оплата потребляемых ЖКУ высокодоходными категориями граждан. Таким образом, основными направлениями в реформировании жилищно-коммунального хозяйства в муниципальном образовании должны быть: – реформирование управления жилищным фондом; – управление и государственное регулирование ЖКХ; – совершенствование финансирования и ценообразования в сфере ЖКХ. ...
... уголовной ответственности, установленной законодательством Российской Федерации. Глава 2. Права и обязанности граждан Российской Федерации в условиях паспортного режима 2.1 Нормативно – правовое регулирование деятельности Федеральной миграционной службы в реализации прав и обязанностей граждан в условиях паспортно-визовой системы в Российской Федерации Отделы (отделения или пункты) УФМС ...
0 комментариев