- •Содержание
- •Введение
- •1 Обзор автоматизированной системы учета продаж автомобилей
- •Обзор предметной области
- •Обзор существующих аналогов
- •3 Структура используемых данных
- •4 Описание созданных программных конструкций
- •5 Разработка и описание диаграммы классов
- •6 Результаты тестирования разработанной системы
- •Заключение
- •Список использованных источников
- •Приложение а (обязательное) Листинг кода
- •Продолжения приложения а
- •Продолжения приложения а
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 для организации кода в виде логических групп и с целью избежания конфликтов имен, которые могут возникнуть, особенно в таких случаях, когда база кода включает несколько библиотек.