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