Hi,
I sent you an e-mail but you didn't reply to me!
So, Hero go again!!!!
-----------------------------------------------
Hello!
Please, forgive me for the delay.
I was working a lot this week and the last one too.
I 've got to say to you that I tried to keep the same structure you used in your
code. So don't worry about it!
I want you know next time you 've got a doubt in your code, please,
tell which line is working bad or wrong, OK?. Because It sometimes takes me a lot of
time!. Do you understand?
But, no problem. I liked so much to do your little programme!
So, tell me if you could understand your exercise now.
Regards,
Abel Conde
#include <iostream>
#include <fstream>
#include <assert.h>
#include <stdlib.h>
#include <time.h>
#include <string>
using namespace std;
const int ACC_MAX = 1000 ;
enum MemberType { Annual, Quarterly = 12} ;
//enum Month { Jan, Feb, Mar, Apr, May, Jun,
// Jul, Aug, Sep, Oct, Nov, Dec } ;
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 GymMember
{
Name name;
Address address;
MemberType member;
Date date;
};
void process( GymMember 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" ) ;
GymMember member[ACC_MAX] ;
int nRead = 0 ;
//string text;
int nMember;
int MembershipNo;
// 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 )
{
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 ) ;
GymMember 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()
{
GymMember 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 main()
{
int menu_selection;
cout << "\n"
<< "================================================= ================\n"
<< " Welcome to Joe's Gym filing system\n"
<< " Bellow is the main menu for Joe's 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 whose membership is about to run out\n"
<< "Select 4: 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:
break;
}
}
|