Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
cs-142:accounts [2014/11/04 16:06]
kseppi
cs-142:accounts [2014/11/04 16:16] (current)
kseppi
Line 178: Line 178:
    
 </​file>​ </​file>​
 +
 +ALSO here is an advanced version with a friend for streams, USE WITH CAUTION
 +
 +<code c++>
 +
 +//This program will read in a text file, 
 +//create an Account class to store the information read from the text file, 
 +//store them in a vector<​Account>, ​
 +//and prints out all of the objects in the vector
 +
 +//Test cases found in Test.txt
 +
 +#include <​iostream>​
 +#include <​iomanip>​
 +#include <​fstream>​
 +#include <​sstream>​
 +#include <​vector>​
 +
 +
 +using namespace std;
 +
 +// Declare Class w/ methods and members
 +class Account
 +{
 +public:
 + // Default Constructor
 + Account();
 +
 + //​Constructor with initial balance
 + Account(string name, int number, double init_bal);
 +
 +
 + //deposits money into account, returns new balance (mutator function)
 + double deposit(double money);
 +
 + //​withdraws money, returns new balance; (mutator function)
 + double withdraw(double money);
 +
 + //returns the balance (accesor function) --  mark all accessor functions as const
 + double get_balance()const;​
 +
 + //returns string
 + string toStr() const;
 +
 + //ADVANCE TOPIC USE WITH CAUTION!!
 + friend ostream&​ operator<<​(ostream&​ os, const Account&​ dt);
 +
 +private: // these data members will store information but can't be changed from the outside without using the accessor functions
 + double balance;
 + string account_name;​
 + int ss_number;
 +};
 +
 +
 +// Giving the functions directions on what to do.
 +Account::​Account() // Default Constructor just initializes the Account
 +{
 + account_name = "";​
 + balance = 0.00;
 + ss_number = 0;
 +}
 +
 +Account::​Account(string name, int number, double init_bal) ​ // Constructor that assigns values to the private data members
 +{
 + account_name = name;
 + ss_number = number;
 + balance = init_bal;
 +
 +}
 +
 +double Account::​deposit(double money) // mutator function that will return the new balance after adding "​money"​ to the data member
 +{
 + balance += money;
 + return balance;
 +}
 +double Account::​withdraw(double money) // mutator function that returns the new balance after subtracting "​money"​ from data member
 +{
 + balance -= money;
 + return balance;
 +}
 +double Account::​get_balance() const  // returns the balance
 +{
 + return balance;
 +}
 +string Account::​toStr() const  // Accessor function: returns the string that will be seen when printed out.
 +{
 + ostringstream out;
 + //Pushes all the data that we need into a stringstream.
 + out << "Name: " << account_name << "​\tBalance:​ $" << fixed << setprecision(2) << balance;
 + return out.str(); // returns the stringstream data.
 +}
 +
 +ostream&​ operator<<​(ostream&​ os, const Account&​ anaccount)
 +{
 + os << anaccount.toStr();​
 + return os;
 +}
 +
 +// The following section ​ will demonstrate the use of functions in creating a new account.
 +
 +/* int main ()
 +{
 +string name = "John Doe"; // Initializing variables to be stored in the object
 +double money = 2000.00;
 +int num = 234556789;
 +double to_deposited = 150.00;
 +double to_withdraw = 200.00;
 +
 +Account john(name, num, money); //creating the object with these values
 +
 +cout << john.get_balance();​ //prints out the current balance
 +
 +cout << john.deposit(to_deposited); ​ //prints out the new balance after making a deposit
 +
 +cout << john.withdraw(to_withdraw);​ // prints out the new balance after making a withdrawl
 +
 +cout << john.toStr() << endl; // prints out the name and the balance as defined in our toStr function "Name: John Doe    Balance: 1950.00"​*/​
 +
 +
 +
 +//The following code will read in a file that has space-delimited values in this order:
 +// First Name, Last Name, SS Number, Initial balance
 +//
 +// Stores all of these values as an Account pointer in a vector.
 +// prints out all of the Names and balances of all the accounts in the "​Bank" ​
 +int main()
 +{
 +
 + vector<​Account>​ bank; // Creates the vector of Account pointers
 +
 + string location;
 + ifstream in_file; //Creating a stream to read in the file
 +
 + cout << "Where should I read the data from?";​
 + getline(cin,​ location);
 +
 + in_file.open(location);​
 +
 + if (in_file.is_open()){
 +
 + while (!in_file.eof()) { // if there'​s more stuff, read it in.
 +
 + string line;
 + string fname;
 + string lname;
 + int ss_num;
 + double in_bal;
 +
 + // grab a whole line
 + getline(in_file,​ line);
 +
 + // make it into a stream
 + istringstream inputstream(line);​
 +
 + // If we succeed in reading the input make an account
 + if (inputstream >> fname >> lname >> ss_num >> in_bal) {
 + string name = fname + " " + lname; // Making the name be first + last names
 + Account tempAccount = Account(name,​ ss_num, in_bal); // allocating memory and creating the acount
 + bank.push_back(tempAccount);​ // Adding to the vector;
 + // or just bank.push_back(Account(name,​ ss_num, in_bal));
 + }
 + else {
 + cout << "​Ignoring bad input in input file: " << line << endl;
 + }
 + }
 + }
 +
 +
 + // Now we print out the vector when the whole file is read in.
 + for (auto x : bank) {
 + //cout << x.toStr() << endl;
 + // Advance version, use with caution:
 + cout << x << endl;
 + }
 +
 + system("​pause"​);​
 + return 0;
 +}
 +</​code>​
  
  
  
  
cs-142/accounts.txt ยท Last modified: 2014/11/04 16:16 by kseppi
Back to top
CC Attribution-Share Alike 4.0 International
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0