Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсачООП.docx
Скачиваний:
36
Добавлен:
21.06.2022
Размер:
1.4 Mб
Скачать

3 Структура используемых данных

В проекте также используется работа с текстовыми файлами. Заголовочный файл iostream определяет следующие базовые типы для работы с потоками:

– ostream – базовый тип, с помощью которого записываются данные в поток;

– istream – тип для чтения данных с потока.

Чтение данных из файла происходит до тех пор, пока не достигнут конец файла. При вызове с действительным дескриптором файла eof() возвращает 1, в противном случае данный метод возвращает 0.

В записи данных в файл используется следующие режимы работы с открываемым файлом:

– ios::app – открыть файл в режиме записи данных в конец файла;

– ios::trunc – очистить файл, это же происходит и в режиме ios::out.

Как и в чтении, так и в записи данных в файл необходимо проверить условие на открытие файла с помощью метода is_open(), и после всех действий с файлами закрыть его, используя метод close(). Метод close() и is_open() не имеют ни параметров, ни возвращаемого значения.

Вся необходимая информация присутствует в следующих файлах:

1 «admin.txt» – файл, в котором содержится информацию о логине и пароле администратора во время регистрации в системе.

Рисунок 3.1 – Текстовый файл «admin.txt»

2 «adminInfo.txt» – файл, в котором содержится следующая информация об админстратора:

– логин;

– имя администратора;

– фамилия администратора;

–должность администратора.

Рисунок 3.2 – Текстовый файл «adminInfo.txt»

3 «ElecticalEquipment.txt» – текстовый файл, содержащий информацию об электрооборудовании, а именно: название электрооборудования, тип электрооборудования, гарантийный срок, цена электрооборудования, год выпуска и мощность автомобиля.

Рисунок 3.3 – Текстовый файл «ElecticalEquipment.txt»

4 «AutoParts.txt» – текстовый файл, содержащий информацию о следующих полях:

– название автозапчасти;

– марка автомобиля;

– объем двигателя;

– цена детали;

– год выпуска;

– мощность двигателя.

Рисунок 3.4 – Текстовый файл «AutoParts.txt»

5 «Car.txt» – текстовый файл, содержащий информацию о названии автомобиля, мощности и объему двигателя.

Рисунок 3.5 – Текстовый файл «Car.txt»

В проекте также используются следующие конструкции ввода-вывода данных:

– оператор <<, который представляет ссылку на неконстантный объект ostream;

– оператор >>, который представляет ссылку на неконстантный объект istream.

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

4 Описание созданных программных конструкций

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

Внутри классов AutoParts и ElectricalEquipment, наследуемые от класса CarParts, используется контейнер стандартной библиотеки STL (Standart Template Library), а именно последовательный контейнер vector, являющийся также реализацией динамического массива. Для работы с данного контейнером необходимо подключить заголовочный файл vector. Данный вектор хранит указатели на объекты классов AutoParts и ElectricalEquipment.

Класс CarParts содержит следующие виртуальные функции, с помощью которых предоставляется возможность определения функции в базовом классе и иметь функции с тем же именем и типом в производном классе:

– virtual void view();

– virtual void add(string userName);

– virtual void sorting();

– virtual void viewAll();

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

Основными функциями классов ElectricalEquipment и AutoParts является просмотр и добавление данных о электрооборудовании и автозапчастей.

Для разделения ролей используются классы User и Admin. В классе User и Admin используется шаблонные функции добавления информации о пользователе, которые связаны количеством аргументов с другим классом.

Также в программе реализован шаблонный класс умного указателя, а именно SmartPointer. Данный класс автоматически освобождает память и позволяет снять ответственность за выделенную память с программиста за счет того, что отслеживает счетчик указателей на объект и не допускает утечек памяти. Присутствуют также перегрузки операторов = и ->.

В проекте также используется функция стандартной библиотеки isalnum, которая проверяет является ли аргумент функции буквой или числом. В случае, если пользователь попытается ввести иной символ, система не даст ему этого сделать.

Также в курсовом проекте используется пространство имен menu для организации кода в виде логических групп и с целью избежания конфликтов имен, которые могут возникнуть, особенно в таких случаях, когда база кода включает несколько библиотек.

Соседние файлы в предмете Объектно ориентированное программирование