Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Описание программы для программиста

Обзор методов и алгоритмов решения поставленной задачи

 

Файлом называют способ хранения информации на физическом устройстве. Файл - это понятие, которое применимо ко всему - от файла на диске до терминала.

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

Текстовый поток - это последовательность символов. При передаче символов из потока на экран, часть из них не выводится (например, символ возврата каретки, перевода строки).

Двоичный поток - это последовательность байтов, которые однозначно соответствуют тому, что находится на внешнем устройстве.

 

1.1 Организация работы с файлами средствами C

 

Объявление файла*идентификатор;

Открытие файла:(имя физического файла, режим доступа)

Режим доступа - строка, указывающая режим открытия файла файла и тип файла. Типы файла: бинарный (b); текстовый (t):Файл открывается только для чтенияФайл открывается только для записи. Если соответствующий физический файл существует, он будет перезаписанФайл открывается для записи в конец (для дозаписи) или создается, если не существует+Файл открывается для чтения и записи.+Файл открывается для записи и чтения. Если соответствующий физический файл существует, он будет перезаписан+Файл открывается для записи в конец (для дозаписи) или создается, если не существует

Неформатированные файловый ввод-вывод

Запись в файл(адрес записываемой величины, размер одного экземпляра, количество записываемых величин, имя логического файла);

Чтение из файла(адрес величины, размер одного экземпляра, количество считываемых величин, имя логического файла);

Закрытие файла(имя логического файла);

Форматированный файловый ввод-вывод

)   Функции fgetc() и fputc() позволяют соответственно осуществить ввод-вывод символа.

)   Функции fgets() и fputs() позволяют соответственно осуществить ввод-вывод строки.

)   Функции fscanf() и fprintf() позволяют соответственно осуществить форматированный ввод-вывод и аналогичный соответствующим функциям форматированного ввода-вывода, только делают это применительно к файлу.

 

1.2 Организация работы с файлами средствами C++

 

Файловый ввод-вывод с использованием потоков

Библиотека потокового ввода-вывода #include <fstream>

Связь файла с потоком выводаимя логического файла;

Связь файла с потоком вводаимя логического файла;

Открытие файла

имя логического файла.open(имя физического файла);

Закрытие файла

имя логического файла.close();

 


Обоснование выбранных методов и алгоритмов

 

При создании приложения использовалась работа с файлами средствами C с неформатированным вводом-выводом, т.е. чтение и запись данных в файл происходит в виде бинарной информации. Для хранения данных в памяти был использован динамический двунаправленный список, при добавлении нового элемента, он размещается в конец списка. Одновременно во время выполнения программы существуют указатели на начало и на конец списка.

 

Рисунок 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 Чисто виртуальный метод привязки к файлу

 

Класс 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 Виртуальный метод привязки к файлу

 

Класс 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^ Метод вывода адреса

 

Класс-контейнер 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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...