Hi again,
This is what I have done so far, still have a long way to go, but its a start, irequire any help possible... thank you.
#include <iostream>
#include <fstream>
#include <assert.h>
#include <stdlib.h>
#include <time.h>
#include <string>
using namespace std;
const int ACC_MAX = 5000 ;
enum MemberType { Annual, Quarterly = 12} ;
//enum Month { Jan, Feb, Mar, Apr, May, Jun,
// Jul, Aug, Sep, Oct, Nov, Dec } ;
struct Book
{
string Author;
string Title;
};
struct Date
{
int day;
int month;
int year;
};
struct Name
{
string first_name;
string surname;
};
struct Address
{
string house_no;
string streetname;
string streettype;
string town;
};
struct Library_member
{
Name name;
Address address;
MemberType member;
Date date;
};
void process( Library_member a )
{
switch( a.member )
{
case Quarterly:
a.date.month += 1;
break ;
case Annual:
a.date.year += 1;
break ;
}
}
void read_clients()
{
ifstream clientfile( "clients.dat" ) ;
Library_member member[ACC_MAX] ;
int nRead = 0 ;
//string text;
int nMember;
int MembershipNo;
// read data from a file and store it in the array 'member'
do
{
clientfile >> member[nRead].name.first_name;
clientfile >> member[nRead].name.surname;
clientfile >> member[nRead].address.house_no;
clientfile >> member[nRead].address.streetname;
clientfile >> member[nRead].address.streettype;
clientfile >> member[nRead].address.town;
clientfile >> MembershipNo;
clientfile >> member[nRead].date.day;
clientfile >> member[nRead].date.month;
clientfile >> member[nRead].date.year;
if ( MembershipNo == 12 )
member[nRead].member = Quarterly;
else
member[nRead].member = Annual;
nMember = nRead + 1; //identifies the record number
if ( clientfile )
{
cout << nMember << " "
<< member[nRead].name.first_name << " "
<< member[nRead].name.surname << " "
<< member[nRead].address.house_no << " "
<< member[nRead].address.streetname << " "
<< member[nRead].address.streettype << " "
<< member[nRead].address.town << " "
<< member[nRead].member << ". "
<< member[nRead].date.day << " "
<< member[nRead].date.month << " "
<< member[nRead].date.year << " \n";
nRead++ ;
}
} while ( clientfile && nRead < ACC_MAX ) ;
cout << "\n";
cout << nRead << " accounts read\n" ;
clientfile.close() ;
};
void add_new_clients()
{
ofstream clientfile( "clients.dat", ios::app ) ;
Library_member member;
int nRead = 0 ;
//string text;
string delimiter = "\t";
//int nMember;
int MembershipNo;
cout << "Input new data client:\n\n";
cout << "First Name: ";
cin >> member.name.first_name;
cout << "Surname: ";
cin >> member.name.surname;
cout << "House Number: ";
cin >> member.address.house_no;
cout << "Street Name: ";
cin >> member.address.streetname;
cout << "Street Type: ";
cin >> member.address.streettype;
cout << "Town: ";
cin >> member.address.town;
cout << "Member(0:Annual/12:Quarterly): ";
cin >> MembershipNo; //i use MembershipNo instead of member.member
cout << "Day: ";
cin >> member.date.day;
cout << "Month: ";
cin >> member.date.month;
cout << "Year: ";
cin >> member.date.year;
// append new data in clients.dat
clientfile << member.name.first_name << delimiter
<< member.name.surname << delimiter
<< member.address.house_no << delimiter
<< member.address.streetname << delimiter
<< member.address.streettype << delimiter
<< member.address.town << delimiter
<< MembershipNo << delimiter
<< member.date.day << delimiter
<< member.date.month << delimiter
<< member.date.year;
clientfile.close() ;
};
void search_clients()
{
Library_member member[ACC_MAX] ;
int nRead = 0 ;
int nFound = 0 ;
int nMember;
int MembershipNo;
string name;
cout << "Input client's first name or client's surname: ";
cin >> name;
cout << "\n";
ifstream clientfile( "clients.dat" ) ;
// read data from file and store in the array 'member'
do
{
clientfile >> member[nRead].name.first_name;
clientfile >> member[nRead].name.surname;
clientfile >> member[nRead].address.house_no;
clientfile >> member[nRead].address.streetname;
clientfile >> member[nRead].address.streettype;
clientfile >> member[nRead].address.town;
clientfile >> MembershipNo;
clientfile >> member[nRead].date.day;
clientfile >> member[nRead].date.month;
clientfile >> member[nRead].date.year;
if ( MembershipNo == 12 )
member[nRead].member = Quarterly;
else
member[nRead].member = Annual;
nMember = nRead + 1; //identifies the record number
if ( clientfile )
{
if ( name == member[nRead].name.first_name || name == member[nRead].name.surname)
{
cout << nMember << " "
<< member[nRead].name.first_name << " "
<< member[nRead].name.surname << " "
<< member[nRead].address.house_no << " "
<< member[nRead].address.streetname << " "
<< member[nRead].address.streettype << " "
<< member[nRead].address.town << " "
<< member[nRead].member << ". "
<< member[nRead].date.day << " "
<< member[nRead].date.month << " "
<< member[nRead].date.year << " \n";
nFound++;
}
nRead++ ;
}
} while ( clientfile && nRead < ACC_MAX ) ;
cout << "\n";
cout << nFound << " records found\n" ;
clientfile.close() ;
};
void search_book()
{
struct books_t;
{
string title;
int year;
}
int main ()
{
string mystr;
books_t abook;
books_t * pbook;
pbook = &abook;
cout << "Enter title: ";
getline (cin, pbook->title);
cout << "Enter ISBN: ";
getline (cin, mystr);
(stringstream) mystr >> pbook->year;
cout << "\nYou have entered:\n";
cout << pbook->title;
cout << " (" << pbook->year << ")\n";
return 0;
}
}
int main()
{
int menu_selection;
cout << "\n"
<< "================================================= ===============\n"
<< " Welcome to The public library system\n"
<< " Bellow is the main menu for the library filing system\n"
<< "================================================= ===============\n"
<< " \n"
<< " \n"
<< "Select 1: To view current clients\n"
<< "Select 2: To enrol new clients\n"
<< "Select 3: To perform a search through the data for\n"
<< " clients details\n"
<< "Select 4: To search for a Book\n"
<< "Select 5: Exit this program\n\n";
cin >> menu_selection;
switch (menu_selection)
{
case 1:
cout << "\n";
read_clients();
cout << "\n";
main();
break;
case 2:
cout << "\n";
add_new_clients();
cout << "\n";
main();
break;
case 3:
cout << "\n";
search_clients();
cout << "\n";
main();
break;
case 4:
cout << "\n";
search_book();
cout << "\n";
main();
break;
case 5:
break;
}
}
any help would be appreciated, i still have to perform a search for a list of users i have been given and list a number of books they have rented out and other parts included in the assignment instructions above.
Any help would be much appreciated, thanks for your help...
Nicolas
|