- •Содержание
- •Введение
- •1.Обзор методов и алгоритмов решения поставленной задачи
- •1.1 Организация работы с файлами средствами c
- •2 Обоснование выбранных методов и алгоритмов
- •3 Описание программы для программиста
- •4 Описание алгоритмов решения задачи
- •Заключение
- •Литература
- •Приложение а – Листинг программы
- •Приложение б - Скриншоты с результатами работы
2 Обоснование выбранных методов и алгоритмов
П
ри
создании приложения использовалась
работа с файлами средствами C
с неформатированным вводом-выводом,
т.е. чтение и запись данных в файл
происходит в виде бинарной информации.
Для хранения данных в памяти был
использован динамический двунаправленный
список, при добавлении нового элемента,
он размещается в конец списка. Одновременно
во время выполнения программы существуют
указатели на начало и на конец списка.
H H … H
Рисунок 2.1 Структура используемого списка.
При запуске приложения загружаются следующие файлы:
Database\Commercial.cm
Database\Flats.f
Database\Houses.hs
Database\Humans.hm
Данные о квартирах, частных домах и коммерческих зданий при запуске программы загружаются в компонент DataGridView. Данные о клиентах загружаются в список. Список имеет структуру показанную на рисунке 2.1. Данные хранятся в DataGridView и в списке на всём протяжении работы программы. Сохранение данных из DataGridView и списка происходит после нажатия соответствующего пункта меню.
3 Описание программы для программиста
Рисунок 3.1 Диаграмма классов
3.1 Класс FlatBase– базовый абстрактный класс помещений
Таблица 3.1 Поля класса FlatBase
Поле |
Тип |
Описание |
Addr |
wchar_t |
Адрес |
Square |
wchar_t |
Площадь |
Price |
wchar_t |
Цена |
IsTel |
bool |
Флаг телефона |
F |
FILE * |
Указатель на файл |
Таблица 3.2 Методы класса FlatBase
Метод класса |
Тип |
Описание |
uninit() |
Void |
Снимает привязку к файлу |
virtual Size() = 0 |
Long |
Чисто виртуальный метод вывода количества записей в файле |
virtualinput(int i, DataGridView^ dgv) = 0 |
Void |
Чисто виртуальный метод ввода данных |
virtualSaveToF() = 0 |
Void |
Чисто виртуальный метод сохранения в файл |
virtual ReadFromF(int i) = 0 |
Bool |
Чисто виртуальный метод чтения из файла i-й записи |
virtual view(int i, DataGridView^ dgv) = 0 |
Void |
Чисто виртуальный метод просмотра данных |
virtualinit(char f = 'r') = 0 |
Void |
Чисто виртуальный метод привязки к файлу |
3.2 Класс Flat : public FlatBase–класс квартир
Таблица 3.3 Поля класса Flat
Поле |
Тип |
Описание |
NumOfRoom |
wchar_t |
Количество комнат |
Floor |
wchar_t |
Этаж |
nalichremonta |
bool |
Наличие ремонта |
IsEmpty |
bool |
Пустая или жилая квартира |
Таблица 3.4 Методы класса Flat
Метод класса |
Тип |
Описание |
virtual Size() |
Long |
Виртуальный метод вывода количества записей в файле |
virtualinput(int i, DataGridView^ dgv) |
Void |
Виртуальный метод ввода данных |
virtualSaveToF() |
Void |
Виртуальный метод сохранения в файл |
virtual ReadFromF(int i) |
Bool |
Виртуальный метод чтения из файла i-й записи |
virtual view(int i, DataGridView^ dgv) |
Void |
Виртуальный метод просмотра данных |
virtual init(char f = 'r') |
Void |
Виртуальный метод привязки к файлу |
3.3 Класс House : public FlatBase. Класс частных домов.
Таблица 3.5 Поля класса House
Поле |
Тип |
Описание |
NumOfFloors |
wchar_t |
Количество этажей |
TypeOfHeat |
wchar_t |
Тип отопления |
NumOfFlats |
wchar_t |
Количество квартир |
NumOfRooms |
wchar_t |
Количество комнат |
Sewers |
bool |
Наличие канализации |
Таблица 3.6 Методы класса House
Метод класса |
Тип |
Описание |
virtual Size() |
Long |
Виртуальный метод вывода количества записей в файле |
virtualinput(int i, DataGridView^ dgv) |
Void |
Виртуальный метод ввода данных |
virtualSaveToF() |
Void |
Виртуальный метод сохранения в файл |
virtual ReadFromF(int i) |
Bool |
Виртуальный метод чтения из файла i-й записи |
virtual view(int i, DataGridView^ dgv) |
Void |
Виртуальный метод просмотра данных |
virtual init(char f = 'r') |
Void |
Виртуальный метод привязки к файлу |
3.4 Класс Commercial : publicFlatBase. Класс комерческих зданий
Таблица 3.7 Поля класса Commercial
Поле |
Тип |
Описание |
NumOfFloors |
wchar_t |
Количество этажей |
Таблица 3.8 Методы класса Commercial
Метод класса |
Тип |
Описание |
virtual Size() |
Long |
Виртуальный метод вывода количества записей в файле |
virtualinput(int i, DataGridView^ dgv) |
Void |
Виртуальный метод ввода данных |
virtualSaveToF() |
Void |
Виртуальный метод сохранения в файл |
virtual ReadFromF(int i) |
Bool |
Виртуальный метод чтения из файла i-й записи |
virtual view(int i, DataGridView^ dgv) |
Void |
Виртуальный метод просмотра данных |
virtual init(char f = 'r') |
Void |
Виртуальный метод привязки к файлу |
3.5 КлассHuman. Класс клиентов
Таблица 3.9 Поля класса Human
Поле |
Тип |
Описание |
FIO |
wchar_t |
ФИО |
Tel |
wchar_t |
Телефон |
Addr |
wchar_t |
Адрес |
F |
FILE * |
Указатель на файл |
Таблица 3.10 Методы класса Human
Метод класса |
Тип |
Описание |
Size() |
Long |
Метод вывода количества записей в файле |
SaveToF() |
Void |
Метод сохранения в файл |
ReadFromF(int i) |
Bool |
Метод чтения из файла i-й записи |
init(char f = 'r') |
Void |
Метод привязки к файлу |
uninit() |
Void |
Метод снятия привязки с файла |
Input(String^ fio, String^ tel, String^ adr) |
Void |
Метод ввода данных в объект |
OutFIO() |
String^ |
Метод вывода фамилии |
OutTel() |
String^ |
Метод вывода телефона |
OutAddr() |
String^ |
Метод вывода адреса |
3.6 Класс-контейнер ContH. Класс список клиентов
Таблица 3.11 Поля класса-контейнера ContH
Поле |
Тип |
Описание |
Next |
ContH * |
Указатель на следующий элемент списка клиентов |
Prev |
ContH * |
Указатель на предыдущий элемент списка клиентов |
H |
Human * |
Указатель на объект клиента |
Таблица 3.12 Методы класса-контейнера ContH
Метод класса |
Тип |
Описание |
ContH() |
- |
Конструктор класса контейнера |
Add(Human * h) |
ContH * |
Добавление элемента в список и возврат указателя на последний элемент |
Del() |
ContH * |
Удаление последнего элемента списка и возврат указателя на предпоследний |
Next() |
ContH * |
Переход на следующий элемент списка |
Prev() |
ContH * |
Переход на предыдущий элемент списка |
Value() |
Human * |
Возвращает указатель на объект класса клиента |
Item(int i, ContH * B) |
ContH * |
Возвращает i-й указатель на объект списка относительноуказателя B |
