Задание:
Сведения об ассортименте книг в библиотеке включают: название книги, автор, инвентарный номер, месторасположение книги.
Данный проект имеет два типа пользователя: администратор и пользователь.
Администратор может:
- Загрузка данных из файла
- Вывод записей
- Удаление одной или всех записей
- Поиск записи
- Редактирование записи
- Запись в файл
- Изменение пароля
- Выдать книгу на руки
Пользователь может:
- Просмотр записей
- Поиск записи
- Выдать книгу на руки
Содержимое проекта:

Для данной задачи лучше всего подходят текстовые файлы. Во время своей работы, программа оперирует структурами которые ввиду своей простоты без проблем записываются и считываются из текстового файла.
Для объединения данных внутри программы используется контейнер std::list из стандартной библиотеки
Пример кода:
//Чтение из файла
void readFileV()
{
//Поток для чтения
ifstream ifRead(f_name);
if ( !ifRead.is_open() )
{
//Создаем файл
ofstream ofWrite(f_name);
if( !ofWrite.is_open() )
{
cout << "Ошибка, нет доступа к файлу!!!" << endl;
return;
}
//Закрываем файл
ofWrite.close();
return;
}
string sBuffer, sBufferEmpty;
BooksStruct *tmpStr = new BooksStruct;
//Для проверки на пустоту самого файла
getline(ifRead, sBufferEmpty);
//Если буфер не пустой
if(sBufferEmpty != "")
{
//Записываем в структуру
tmpStr->iPosition = stoi(sBufferEmpty);
//Читаем пока файл не пустой
while ( !ifRead.eof() )
{
//Проверка временного буфера, дабы читать все верно, мы его очищаем ниже
if(sBufferEmpty == "")
{
getline(ifRead, sBuffer);
//Проверка на случай, если вдруг в конце файла будет пустая строка
if(sBuffer == "")
{
//Выходим из цикла, как только нашли пустую строку
//такое возможно, если вдруг после всех данных будет один
//или более пробелов
break;
}
else
{
tmpStr->iPosition = stoi(sBuffer);
}
}
//Очищаем временный буфер
sBufferEmpty = "";
//Название книги
getline(ifRead, sBuffer);
tmpStr->sName = sBuffer;
//Автор книги
getline(ifRead, sBuffer);
tmpStr->sAuthor = sBuffer;
//Инвентарный номер книги
getline(ifRead, sBuffer);
tmpStr->sInvNomer = sBuffer;
//Стоимость книги
getline(ifRead, sBuffer);
tmpStr->dCost = stod(sBuffer);
//Кому выдана книга
getline(ifRead, sBuffer);
tmpStr->sLocation = sBuffer;
// и добавляем в список
theBooks.push_back(*tmpStr);
}
}
//Очищаем и закрываем поток
ifRead.close();
//Удаляем указатель
delete tmpStr;
}
Содержание архива
- исходный код на С++ для Visual Studio
Телеграм
-