I have this C++ working C++ project.I'm really new to programming, learning c++. I would love to add a sorting feature in this project . For example, sorts out based on student id/book id. How I should approach the problem .OR any other features for this sort of projects. Sort by date: Sorts your tasks by due date. Sort by student id. Sort alphabetically: Sorts your tasks alphabetically by task name.
#include <iostream>
#include <fstream>
#include <iomanip>
#include <stdlib.h>
using namespace std;
class Book {
int BookID;
int BookISBN;
char BookName[20];
char BookAuthor[50];
int BookRackNo;
int BookSlotNo;
float BookCost;
char date[10];
public:
void getData ();
void showData ();
int getBookId () {
return BookID;
}}
b;
void Book::getData ()
{
cout << "\n\nEnter Book Details......\n";
cout << "Enter Book ID : ";
cin >> BookID;
cout << "Enter Book ISBN : ";
cin >> BookISBN;
cout << "Enter Book Name : ";
cin.ignore ();
cin.getline (BookName, 20);
cout << "Enter Book Author : ";
cin.ignore ();
cin.getline (BookAuthor, 50);
cout << "Enter Book Location Rack #: ";
cin >> BookRackNo;
cout << "Enter Book Location Slot #: ";
cin >> BookSlotNo;
cout << "Enter Book Cost: $ ";
cin >> BookCost;
cout << "Enter Book Purchase Date MM/DD/YYYY: ";
cin >> date;
cout << endl;
}
void Book::showData ()
{
cout << "\n\n.......Book Details......\n";
cout << "Book ID : " << BookID << endl;
cout << "Book ISBN : " << BookISBN << endl;
cout << "Book Name : " << BookName << endl;
cout << "Book Author : " << BookAuthor << endl;
cout << "Book Location Rack #: " << BookRackNo << endl;
cout << "Book Location Slot #: " << BookSlotNo << endl;
cout << "Book Cost: $ " << BookCost << endl;
cout << "Book Purchase Date: " << date << endl;
cout << endl;
}
void addBook ()
{
ofstream fout;
fout.open ("Book.dat", ios::binary | ios::out | ios::app);
b.getData ();
fout.write ((char *) &b, sizeof (b));
fout.close ();
cout << "\n\nData Successfully Saved....\n";
}
void displayBook ()
{
ifstream fin;
fin.open ("Book.dat", ios::in | ios::binary);
while (fin.read ((char *) &b, sizeof (b))) {
b.showData ();
}
fin.close ();
//cout << "\n\nData Reading from File Successfully Done....\n";
}
void searchBook ()
{
int n, flag = 0;
ifstream fin;
fin.open ("Book.dat", ios::in | ios::binary);
cout << "Enter Book ID you want to search : ";
cin >> n;
while (fin.read ((char *) &b, sizeof (b))) {
if (n == b.getBookId ()) {
cout << "The details of Book ID " << n << " are:\n";
b.showData ();
flag++;
}
}
fin.close ();
if (flag == 0)
cout << "The Book Id " << n << " not found....\n\n";
// cout << "\n\nData Reading from File Successfully Done....\n";
}
void deleteBook ()
{
int n, flag = 0, result;
ifstream fin;
ofstream fout, tout;
fin.open ("Book.dat", ios::in | ios::binary);
fout.open ("TempBook.dat", ios::out | ios::app | ios::binary);
tout.open ("TrashBook.dat", ios::out | ios::app | ios::binary);
cout << "Enter Book ID you want to move to Trash : ";
cin >> n;
while (fin.read ((char *) &b, sizeof (b))) {
if (n == b.getBookId ()) {
cout << "The Following Book ID " << n <<
" has been moved to Trash:\n";
b.showData ();
tout.write ((char *) &b, sizeof (b));
flag++;
} else {
fout.write ((char *) &b, sizeof (b));
}
}
fout.close ();
tout.close ();
fin.close ();
if (flag == 0)
cout << "The Book ID " << n << " not found....\n\n";
remove ("Book.dat");
result = rename ("tempBook.dat", "Book.dat");
cout << result;
}
void getTrashBook ()
{
ifstream fin;
fin.open ("TrashBook.dat", ios::in | ios::binary);
while (fin.read ((char *) &b, sizeof (b))) {
b.showData ();
}
fin.close ();
//cout << "\n\nData Reading from Trash File Successfully Done....\n";
}
void modifyBookData ()
{
int n, flag = 0, pos;
fstream fio;
fio.open ("Book.dat", ios::in | ios::out | ios::binary);
cout << "Enter Book ID you want to Modify : ";
cin >> n;
while (fio.read ((char *) &b, sizeof (b))) {
pos = fio.tellg ();
if (n == b.getBookId ()) {
cout << "The Following Book ID " << n <<
" will be modified with new data:\n";
b.showData ();
cout << "\n\n Enter the New Details....\n";
b.getData ();
const __int64 Z = pos - static_cast < __int64 > (sizeof (b));
fio.seekg (Z);
//fio.seekg(pos-sizeof(b));
fio.write ((char *) &b, sizeof (b));
flag++;
}
}
fio.close ();
if (flag == 0)
cout << "The Book ID " << n << " not found....\n\n";
}
void project ()
{
int ch;
do {
system ("cls");
cout << "======================================"
"====================================\n";
cout << "...............UNIVERSITY LIBRARY "
"DATABASE MANAGEMENT SYSTEM..............\n";
cout << "======================================"
"====================================\n";
cout << "0. Exit from Program\n";
cout << "1. Add New Book\n";
cout << "2. List all Books\n";
cout << "3. Search a Book \n";
cout << "4. Delete a Book \n";
cout << "5. List of Deleted Books\n";
cout << "6. Modify Details of a Book\n";
cout << "Enter your choice : ";
cin >> ch;
system ("cls");
switch (ch) {
case 1:
addBook ();
break;
case 2:
displayBook ();
break;
case 3:
searchBook ();
break;
case 4:
deleteBook ();
break;
case 5:
getTrashBook ();
break;
case 6:
modifyBookData ();
break;
}
system ("pause");
} while (ch);
}
int main ()
{
project ();
}