9 пр
.docxМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
СТАРООСКОЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ ИНСТИТУТ
ИМ. А.А. УГАРОВА
(филиал) федерального государственного автономного образовательного
учреждения высшего образования
«Национальный исследовательский технологический университет «МИСиС»
Лабораторная работа № 9
на тему
«Хранение данных на внешних носителях»
Выполнил: Студент группы № АТ 22-2з
Старый Оскол, 2024
Цель работы:
1. Получение практических навыков записи структурированной информа-ции в файлы в стиле С;
2. Получение практических навыков записи структурированной информа-ции в файлы в стиле С++;
Вариант 8
1. Используя ввод-вывод в стиле С ++ создать файл и записать в него структурированные данные.
2. Вывести созданный файл на экран.
3. Удалить из файла данные в соответствии с вариантом.
4. Добавить в файл данные в соответствии с вариантом.
5. Вывести измененный файл на экран.
#include <iostream>
#include <fstream>
#include <string>
// Структура для хранения данных о покупателе
struct Customer {
std::string lastName;
std::string firstName;
std::string middleName;
std::string address;
std::string phoneNumber;
std::string creditCardNumber;
};
int main() {
setlocale(LC_ALL, "RU");
// Создаем и открываем файл для записи
std::ofstream outputFile("customers.txt", std::ios::app);
if (!outputFile.is_open()) {
std::cerr << "Ошибка открытия файла!" << std::endl;
return 1;
}
// Записываем данные о покупателе в файл
Customer customer;
customer.lastName = "Иванов";
customer.firstName = "Иван";
customer.middleName = "Иванович";
customer.address = "ул. Пушкина, д. 10";
customer.phoneNumber = "+7 (123) 456-7890";
customer.creditCardNumber = "1234-5678-9012-3456";
outputFile << customer.lastName << ' ' << customer.firstName << ' ' << customer.middleName << ' '
<< customer.address << ' ' << customer.phoneNumber << ' ' << customer.creditCardNumber << '\n';
// Закрываем файл
outputFile.close();
// Открываем файл для чтения
std::ifstream inputFile("customers.txt");
if (!inputFile.is_open()) {
std::cerr << "Ошибка открытия файла!" << std::endl;
return 1;
}
// Выводим содержимое файла в консоль
std::cout << "Содержимое файла:\n";
std::string line;
while (std::getline(inputFile, line)) {
std::cout << line << '\n';
}
// Закрываем файл
inputFile.close();
// Открываем файл для обновления данных
std::fstream updateFile("customers.txt", std::ios::in | std::ios::out);
if (!updateFile.is_open()) {
std::cerr << "Ошибка открытия файла!" << std::endl;
return 1;
}
// Количество элементов для удаления
int K = 1;
// Удаляем K элементов из начала файла
for (int i = 0; i < K; ++i) {
std::getline(updateFile, line); // Пропускаем K строк
}
// Количество элементов для добавления
int N = 2;
// Номер элемента, с которого начинаем добавление
int startElement = K + 1;
// Добавляем N элементов в файл
for (int i = 0; i < N; ++i) {
// Перемещаемся к позиции для добавления
updateFile.seekp(updateFile.tellg());
updateFile << "Новый_покупатель Новый Адрес +7 (987) 654-3210 9876-5432-1098-7654\n";
}
// Закрываем файл
updateFile.close();
// Открываем файл для чтения обновленных данных
std::ifstream updatedFile("customers.txt");
if (!updatedFile.is_open()) {
std::cerr << "Ошибка открытия файла!" << std::endl;
return 1;
}
// Выводим обновленное содержимое файла в консоль
std::cout << "Обновленное содержимое файла:\n";
while (std::getline(updatedFile, line)) {
std::cout << line << '\n';
}
// Закрываем файл
updatedFile.close();
return 0;
}