ОПИСАНИЕ ПРОГРАММЫ ДЛЯ ПРОГРАММИСТА
ОБЗОР МЕТОДОВ И АЛГОРИТМОВ РЕШЕНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ
Файлом называют способ хранения информации на физическом устройстве. Файл — это понятие, которое применимо ко всему — от файла на диске до терминала.
В C++ отсутствуют операторы для работы с файлами. Все необходимые действия выполняются с помощью функций, включенных в стандартную библиотеку. Они позволяют работать с различными устройствами, такими, как диски, принтер, коммуникационные каналы и т.д. Эти устройства сильно отличаются друг от друга. Однако файловая система преобразует их в единое абстрактное логическое устройство, называемое потоком.
Текстовый поток — это последовательность символов. При передаче символов из потока на экран, часть из них не выводится (например, символ возврата каретки, перевода строки).
Двоичный поток — это последовательность байтов, которые однозначно соответствуют тому, что находится на внешнем устройстве.
Организация работы с файлами средствами C
Объявление файла
FILE *идентификатор;
Открытие файла:
fopen(имя физического файла, режим доступа)
Режим доступа — строка, указывающая режим открытия файла файла и тип файла. Типы файла: бинарный (b); текстовый (t):
r Файл открывается только для чтения
w Файл открывается только для записи. Если соответствующий физический файл существует, он будет перезаписан
a Файл открывается для записи в конец (для дозаписи) или создается, если не существует
r+ Файл открывается для чтения и записи.
w+ Файл открывается для записи и чтения. Если соответствующий физический файл существует, он будет перезаписан
a+ Файл открывается для записи в конец (для дозаписи) или создается, если не существует
1.1.1 Неформатированные файловый ввод-вывод
Запись в файл
fwrite(адрес записываемой величины, размер одного экземпляра, количество записываемых величин, имя логического файла);
Чтение из файла
fread(адрес величины, размер одного экземпляра, количество считываемых величин, имя логического файла);
Закрытие файла
fclose(имя логического файла);
1.1.2 Форматированный файловый ввод-вывод
1) Функции fgetc() и fputc() позволяют соответственно осуществить ввод-вывод символа.
2) Функции fgets() и fputs() позволяют соответственно осуществить ввод-вывод строки.
3) Функции fscanf() и fprintf() позволяют соответственно осуществить форматированный ввод-вывод и аналогичный соответствующим функциям форматированного ввода-вывода, только делают это применительно к файлу.
1.2 Организация работы с файлами средствами C++
1.2.1 Файловый ввод-вывод с использованием потоков
Библиотека потокового ввода-вывода #include <fstream>
Связь файла с потоком вывода
ofstream имя логического файла;
Связь файла с потоком ввода
ifstream имя логического файла;
Открытие файла
имя логического файла.open(имя физического файла);
Закрытие файла
имя логического файла.close();
ОБОСНОВАНИЕ ВЫБРАННЫХ МЕТОДОВ И АЛГОРИТМОВ
При создании приложения использовалась работа с файлами средствами C с неформатированным вводом-выводом, т.е. чтение и запись данных в файл происходит в виде бинарной информации. Для хранения данных в памяти был использован динамический двунаправленный список, при добавлении нового элемента, он размещается в конец списка. Одновременно во время выполнения программы существуют указатели на начало и на конец списка.
H H … H
Рисунок 2.1 Структура используемого списка.
При запуске приложения загружаются следующие файлы:
· Database\Commercial.cm
· Database\Flats.f
· Database\Houses.hs
· Database\Humans.hm
Данные о квартирах, частных домах и коммерческих зданий при запуске программы загружаются в компонент DataGridView. Данные о клиентах загружаются в список. Список имеет структуру показанную на рисунке 2.1. Данные хранятся в DataGridView и в списке на всём протяжении работы программы. Сохранение данных из DataGridView и списка происходит после нажатия соответствующего пункта меню.
ОПИСАНИЕ ПРОГРАММЫ ДЛЯ ПРОГРАММИСТА
Рисунок 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
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|