View Single Post
  #7 (permalink)  
Old December 16th, 2005, 10:51 AM
Neeko Neeko is offline
Authorized User
 
Join Date: Dec 2005
Posts: 13
Thanks: 0
Thanked 0 Times in 0 Posts
Default

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


Reply With Quote