Thread: help needed
View Single Post
  #3 (permalink)  
Old January 6th, 2005, 09:49 PM
abelconde abelconde is offline
Authorized User
 
Join Date: Dec 2004
Posts: 11
Thanks: 0
Thanked 0 Times in 0 Posts
Send a message via MSN to abelconde
Default

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;
    }
}

Reply With Quote