Сделай Сам Свою Работу на 5

ОПИСАНИЕ ПРОГРАММЫ ДЛЯ ПРОГРАММИСТА





ОБЗОР МЕТОДОВ И АЛГОРИТМОВ РЕШЕНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ

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

В 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 Все материалы защищены законодательством РФ.