c++ project help

so basically i was told to make a bank account project. i had the istream all written for me. i was told to add a new account into it using the same exact program and made it one of the choices.

enum starting with the choices from 1-5.
the add account option is # 4 and i wrote the code there.

i got the program to work and all but for some reason everytime i attempt to add a new account, the previous account information i entered was deleted.

any help would be appreciated


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
 // Fig. 17.8: Fig17_08.cpp
// Credit inquiry program.
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <cstdlib> // exit function prototype
using namespace std;

enum RequestType { ZERO_BALANCE = 1, CREDIT_BALANCE, DEBIT_BALANCE, ADD_ACCOUNT, END };
int getRequest();
bool shouldDisplay( int, double );
void outputLine( int, const string, double );

int main()
{
	//ofstream outClientFile( "clients.txt",ios::out );
   // ifstream constructor opens the file
   ifstream inClientFile( "clients.txt", ios::in );

   // exit program if ifstream could not open file
   if ( !inClientFile ) 
   {
      cerr << "File could not be opened" << endl;
      exit( 1 );
   } // end if

   int request;
   int account;
   string name;
   double balance;

   // get user's request (e.g., zero, credit or debit balance)
   request = getRequest();

   // process user's request
   while ( request != END ) 
   {
      switch ( request ) 
      {
         case ZERO_BALANCE:
            cout << "\nAccounts with zero balances:\n";
            break;
         case CREDIT_BALANCE:
            cout << "\nAccounts with credit balances:\n";
            break;
         case DEBIT_BALANCE:
            cout << "\nAccounts with debit balances:\n";
            break;
		 case ADD_ACCOUNT:
cout << "\nAdd Account\n";
			//inClientFile.close();
ofstream outClientFile( "clients.txt", ios::out | ios::ate );
			int newaccount ;
			string newname;
			double newbalance ;
			cout << "Enter the account, name, and balance." << endl;
			
            cin >> newaccount >> newname >> newbalance;
			cout << endl;
			


			outClientFile cout << left << setw( 10 ) << newaccount << setw( 13 ) << newname
      << setw( 7 ) << setprecision( 2 ) << right << newbalance << endl;
			cout << endl;
			outClientFile.clear();
			outClientFile.close();

			
			break;
      } // end switch

      // read account, name and balance from file
      inClientFile >> account >> name >> balance;

      // display file contents (until eof)
      while ( !inClientFile.eof() ) 
      {
         // display record
         if ( shouldDisplay( request, balance ) )
            outputLine( account, name, balance );

         // read account, name and balance from file
         inClientFile >> account >> name >> balance;
      } // end inner while
      
      inClientFile.clear();    // reset eof for next input
      inClientFile.seekg( 0 );
      request = getRequest();  // get additional request from user
   } // end outer while
   
   cout << "End of run." << endl;
} // end main

// obtain request from user
int getRequest()
{ 
   int request; // request from user

   // display request options
   cout << "\nEnter request" << endl
      << " 1 - List accounts with zero balances" << endl
      << " 2 - List accounts with credit balances" << endl
      << " 3 - List accounts with debit balances" << endl
      << " 4 - Add Account" << endl
      << " 5 - End of run" << fixed << showpoint;

   do // input user request
   {
      cout << "\n? ";
      cin >> request;
   } while ( request < ZERO_BALANCE && request > END );

   return request;
} // end function getRequest

// determine whether to display given record
bool shouldDisplay( int type, double balance )
{
   // determine whether to display zero balances
   if ( type == ZERO_BALANCE && balance == 0 )
      return true;
   
   // determine whether to display credit balances
   if ( type == CREDIT_BALANCE && balance < 0 )
      return true;

   // determine whether to display debit balances
   if ( type == DEBIT_BALANCE && balance > 0 )
      return true;

   
   return false;
} // end function shouldDisplay

// display single record from file
void outputLine( int account, const string name, double balance )
{
   cout << left << setw( 10 ) << account << setw( 13 ) << name
      << setw( 7 ) << setprecision( 2 ) << right << balance << endl;
} // end function outputLine  
when you open clients.txt for output you delete its contents.
is there a way for me to save those contents?
ios::app

read this for details.
http://www.cplusplus.com/doc/tutorial/files/
where should i add it?
i alrdy did

ofstream outClientFile( "clients.txt",ios::out | ios::app);

but it doesnt seem to work qq
if you look at line 53 of your code you will see that you did ios::ate not ios::app

Also line 64 is incorrect
outClientFile cout << left << setw( 10 ) << newaccount << setw( 13 ) << newname
you wan't
outClientFile << left << setw( 10 ) << newaccount << setw( 13 ) << newname
Last edited on
tried it and it still didnt work :(
any more suggestions
Topic archived. No new replies allowed.