
os_6
.docxМинистерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
Уфимский Университет Науки и Технологий
Факультет информатики и робототехники
Кафедра вычислительной математики и кибернетики
Отчет к лабораторной работе №6
По дисциплине «Операционные системы»
По теме «Работа с файлами»
Выполнил: студент группы ПРО-232Б
Ихсанова Э. А.
Проверил: доцент каф. ВМиК
Веденяпин И. Э.
Уфа 2022
Задание
Вариант 6. В программе предусмотреть сохранение вводимых данных в файл и возможность чтения из ранее сохраненного файла. Результат выводить на экран и в текстовый файл. Для книг, хранящихся в библиотеке, задаются автор, название, год издания. Вывести список книг, изданных после заданного года.
Код
#include<iostream>
#include<windows.h>
#include<conio.h>
#include<string>
int main()
{
system("chcp 65001");
LPCTSTR fn = "LR_6_6.txt";
HANDLE myFile = CreateFile(fn, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD n;
std::string name = "";
std::string title = "";
std::string year = "";
int choise;
std::string outp[3];
while (true) {
int ind = 0;
std::cout << "1.Ввести данные в файл" << std::endl
<< "2.Показать данные из файла" << std::endl
<< "3.Книги изданные после 1889 года"<<std::endl
<< "4.Выход" << std::endl;
std::cin >> choise;
system("cls");
switch (choise) {
case 1:
std::cout<< "Введите данные: Например, ‘Толстой Детство 1852'" << std::endl;
SetEndOfFile(myFile);
for (int i = 0; i < 3; i++)
{
SetConsoleCP(1251);
std::cin >> name;
SetConsoleCP(866);
WriteFile(myFile, &name, sizeof(name), &n, NULL);
FlushFileBuffers(myFile);
}
break;
case 2:
std::cout << "Данные представлены в формате 'Автор' 'Название' 'Год издания'" << std::endl;
SetFilePointer(myFile, 0, 0, FILE_BEGIN);
while (ReadFile(myFile, &name, sizeof(name), &n, NULL) && n != 0) {
std::cout << name << " "; ind++;
if (ind % 3 == 0)
std::cout << "\n";
}
break;
case 3:
std::cout << "Книги изданные после 1889 года\n";
SetFilePointer(myFile, 0, 0, FILE_BEGIN);
while (ReadFile(myFile, &name, sizeof(name), &n, NULL) && n != 0) {
outp[ind % 3] = name;
if (ind % 3 == 2) {
if ( outp[2] >= "1889")
{
for (int i = 0; i < 3; ++i)
std::cout << outp[i] << " ";
std::cout << std::endl;
}
}
++ind;
}
break;
case 4:
CloseHandle(myFile);
exit(0);
break;
}
std::cout << "Нажмите любую клавишу для продолжения";
_getch();
system("cls");
}
CloseHandle(myFile);
}
Р
езультат
работы
1.
2.
3
.