Jay
Starter
Ex-GM
Bang...Bang...
Posts: 3,220
|
Post by Jay on Jan 21, 2009 1:39:41 GMT -5
Jah is the guy who shows up to class only on tests and lab days. He always does solid in the end, but never shows up to any lectures.
|
|
Ducky
All-Star
Ex-GM
Posts: 7,215
|
Post by Ducky on Jan 21, 2009 1:40:18 GMT -5
Quackers, I thought we were friends? I guess. We are mutual when it comes to disliking people like YB, but we can never be friends because of what teams we root for. Oregon > Pissburgh. Sorry.
|
|
|
Post by dj on Jan 21, 2009 1:40:18 GMT -5
i hate how eddie murphy sucks now.
|
|
Jay
Starter
Ex-GM
Bang...Bang...
Posts: 3,220
|
Post by Jay on Jan 21, 2009 1:40:43 GMT -5
I'm like that guy who is completely cool one minute, something goes wrong that everyone else ignores, but I keep mentioning passively for the next 3 days out of nowhere.
|
|
|
Post by dj on Jan 21, 2009 1:40:53 GMT -5
how many posts is that?
|
|
Derwin
Starter
Ex-GM
Posts: 2,832
|
Post by Derwin on Jan 21, 2009 1:41:01 GMT -5
I have a feeling it was Cesar Holmes.
|
|
Ducky
All-Star
Ex-GM
Posts: 7,215
|
Post by Ducky on Jan 21, 2009 1:41:05 GMT -5
yeee finished my banking assignment!
|
|
Ducky
All-Star
Ex-GM
Posts: 7,215
|
Post by Ducky on Jan 21, 2009 1:41:15 GMT -5
// // Purpose: // -------- // This program maintains customer banking accounts and // provide basic customer banking tansactions. It also // provides advanced operations for bank tellers and mangers. // // // Limitatons and Known Issues: // ---------------------------- // No passwords yet // No verification of managers or tellers. // No distinguishing various managers or various tellers. // Assume input file contains valid information (no checking). // Max of 50 accounts // Need to add real account numbers. Currently just uses array index. // Plenty of boundary conditions not fully checked. // We dont 'delete' accounts, we 'close' them. Thats more like what banks do. // Transactions are only logged and viewable per session. Not very realistic. // Transactions are deposits and withdrawals. We allow viewing either or both. // The output format could be neater. // Negative balances are allowed with no penalties, which is not realistic. // No checks on user names capitalization. You get exactly what you enter. // Session is not always consistent on when BDB>> prompt appears. // When customer inputs name, we assume that the name is on file. // Files are not yet handling sequences of sessions. //
class trans_type { public: void help_customer(); void help_teller(); void help_manager(); /* int f_balance(session_type session, account_record_type account[], int account_len); void f_deposit(session_type session, account_record_type account[], int account_len, trans_type trans[], int& trans_len); void f_withdraw(session_type session, account_record_type account[], int account_len, trans_type trans[], int& trans_len); void f_transfer(session_type session, account_record_type account[], int account_len); void f_accounts(session_type session, account_record_type account[], int account_len); trans_type();*/ private: int account_num; bool deposit; float amount; float post_balance; };
#include <iostream> #include <iomanip> #include <fstream> #include <string>
using namespace std;
// // List commands the customer can use. // void trans_type::help_customer() { cout << "balance = view current account balance\n" << "deposit = deposit money to account\n" << "withdraw = withdraw money from account\n" << "transfer = transfer money to another account\n" << "accounts = view user accounts\n"; }
// // List commands tellers can use. // void trans_type::help_teller() { help_customer(); cout << "add = add a new customer to the bank\n" << "delete = delete a customer from the bank\n" << "search = search for a record based on the name of the customer\n"; }
// // List commands managers can use. // void trans_type::help_manager() { help_teller(); cout << "customers = lists total number of customers in bank\n" << "list-money = lists total amount of money in the bank\n" << "list-deposits = lists total deposits in a day\n" << "list-withdrawals = lists total withdrawls in a day\n" << "transactions = detailed log of all transactions\n"; }
// // Shows current balance of a customers account. // // Returns: nothing // /*void trans_type::f_balance(session_type session, account_record_type account[], int account_len) { int account_num, i = 0;
if((session.first_name == "") || (session.last_name == "")) { enter_customer(session.first_name, session.last_name); } cout << "Show balance for which account? "; cin >> account_num;
if((session.first_name == account[account_num].first_name) && (session.last_name == account[account_num].last_name)) { cout << "Account: " << account_num << "\nType: "; account_type_convert(account, account_num); cout << "\nBalance: " << account[account_num].amount << endl; } else cout << "Error: This account does not belong to " << session.first_name << " " << session.last_name << endl; }
// // Deposits money into a customers account. // // Returns: nothing // void trans_type::f_deposit(session_type session, account_record_type account[], int account_len, trans_type trans[], int& trans_len) { int account_num, i = 0; float temp_float;
if((session.first_name == "") || (session.last_name == "")) { enter_customer(session.first_name, session.last_name); }
cout << "Which account number would you like to deposit to? " << endl; cout << "\nBDB>> "; cin >> account_num;
if((session.first_name == account[account_num].first_name) && (session.last_name == account[account_num].last_name)) { cout << "How much would you like to deposit? (Enter 0 to skip) " << endl; cout << "\nBDB>> "; cin >> temp_float;
account[account_num].amount += temp_float; cout << "\nYour current balance is: " << account[account_num].amount << endl; trans[trans_len].account_num = account_num; trans[trans_len].deposit = 1; trans[trans_len].amount = temp_float; trans[trans_len].post_balance = account[account_num].amount; trans_len++; } else cout << "Error: This account does not belong to " << session.first_name << " " << session.last_name << endl; }
// // Withdraws money from a customers account. // // Returns: nothing // void trans_type::f_withdraw(session_type session, account_record_type account[], int account_len, trans_type trans[], int& trans_len) { int account_num; float temp_float;
if((session.first_name == "") || (session.last_name == "")) { enter_customer(session.first_name, session.last_name); } cout << "Which account number would you like to withdraw from? " << endl; cout << "\nBDB>> "; cin >> account_num;
if((session.first_name == account[account_num].first_name) && (session.last_name == account[account_num].last_name)) { cout << "How much would you like to withdraw from? (Enter 0 to skip) " << endl; cout << "\nBDB>> "; cin >> temp_float;
account[account_num].amount -= temp_float; cout << "\nCurrent balance is: " << account[account_num].amount << endl;
trans[trans_len].account_num = account_num; trans[trans_len].deposit = 0; trans[trans_len].amount = temp_float; trans[trans_len].post_balance = account[account_num].amount; trans_len++; } else cout << "Error: This account does not belong to " << session.first_name << " " << session.last_name << endl; }
// // Transfers money between accounts. // Limited to a single customers accounts. // // Returns: nothing // void trans_type::f_transfer(session_type session, account_record_type account[], int account_len) { int transfer_from, transfer_to; float temp_float;
if((session.first_name == "") || (session.last_name == "")) { enter_customer(session.first_name, session.last_name); } cout << "Which account would you like to transfer the money from? " << endl; cout << "\nBDB>> "; cin >> transfer_from; cout << "Which account would you like to transfer the money to? " << endl; cout << "\nBDB>> "; cin >> transfer_to;
if(((session.first_name == account[transfer_from].first_name) && (session.last_name == account[transfer_from].last_name)) && ((session.first_name == account[transfer_to].first_name) && (session.last_name == account[transfer_to].last_name))) { cout << "How much money would you like to transfer? " << endl; cout << "\nBDB>> "; cin >> temp_float; account[transfer_from].amount -= temp_float; account[transfer_to].amount += temp_float;
cout << "\nThe current balance in account " << transfer_from << " is " << account[transfer_from].amount << endl; cout << "\nThe current balance in account " << transfer_to << " is " << account[transfer_to].amount << endl; } else cout << "Error: This account does not belong to " << session.first_name << " " << session.last_name << endl; }
// // Shows all accounts for specified customer. // // Returns: nothing // void trans_type::f_accounts(session_type session, account_record_type account[], int account_len) { int i = 0; bool found = false;
if((session.first_name == "") || (session.last_name == "")) { enter_customer(session.first_name, session.last_name); } for(i = 0; i < account_len; i++) { if((session.first_name == account.first_name) && (session.last_name == account.last_name)) { found = true; break; } } if(found) { cout << session.first_name << " " << session.last_name << " accounts are: " << endl; for(i = 0; i <= account_len; i++) { if((session.first_name == account.first_name) && (session.last_name == account.last_name)) { cout << "account number: " << i << " account type: "; account_type_convert(account, i); cout << "\t account balance: " << account.amount << endl; } } } else cout << session.first_name << " " << session.last_name << " is not in our records." << endl; }*/
trans_type::trans_type() {
}
enum account_type { unknown = -1, Checking, Savings, CreditCard, InstantAccess, Closed };
class account_record_type { public: string first_name; string last_name; account_type type; float amount; };
struct session_type { string first_name; string last_name; string user_type; };
const int MAX_ACCOUNTS = 50;
bool cmd_parse(string cmd, session_type session, account_record_type account[], int &account_len, trans_type transaction[], int &trans_len); /*void f_add(session_type session, account]_record_type account[], int& account_len); void f_delete(session_type session, account_record_type account[], int account_len); void f_search(session_type session, account_record_type account[], int account_len); void f_customers(session_type session, account_record_type account[], int account_len); void f_money(session_type session, account_record_type account[], int account_len); void f_deposit_list(session_type session, account_record_type account[], int account_len, trans_type trans[], int trans_len); void f_withdrawal_list(session_type session, account_record_type account[], int account_len, trans_type trans[], int trans_len); void f_transactions(session_type session, account_record_type account[], int account_len, trans_type transaction[], int trans_len); void enter_customer(string& first, string& last); void account_type_convert(account_record_type account[], int type_len); void account_type_convert_outfile(account_record_type account[], int type_len, ofstream& outfile);*/
int main() { int i = 0, account_len = 0, trans_len = 0, type_len= 0 ; char user_type; bool no_quit = 1; string cmd; string cur_customer = ""; string cur_user = ""; string temp_str;
account_record_type account[MAX_ACCOUNTS]; session_type session; trans_type transaction[1000]; ifstream infile; ofstream outfile;
infile.open("C:/bank_db.txt"); outfile.open("C:/bank_db_output.txt"); outfile << fixed << showpoint; outfile << setprecision(2);
cout << fixed << showpoint; cout << setprecision(2);
// Reads in file while (!infile.eof()) { infile >> account.first_name >> account.last_name >> temp_str >> account.amount;
if(temp_str == "Checking") { account.type = Checking; } else if(temp_str == "Savings") { account.type = Savings; } else if(temp_str == "CreditCard") { account.type = CreditCard; } else if(temp_str == "InstantAccess") { account.type = InstantAccess; } else if(temp_str == "Closed") { account.type = Closed; } else account.type = unknown;
i++; } account_len = i;
// Simple way to determine user. Not a realistic solution cout << "\nPlease identify yourself\n" << " Type C if you are a customer\n" << " Type T if you are a teller\n" << " Type M if you are a manager\n" << "\nBDB>> "; cin >> user_type;
switch(user_type) { case 'c': user_type = 'C'; case 'C': cout << "Please enter your name: "; cin >> session.first_name >> session.last_name; cur_customer = session.first_name + ' ' + session.last_name; cout << "\nWelcome " << cur_customer << endl; session.user_type = "customer"; break;
case 'm': user_type = 'M'; case 'M': cout << "Hello Manager" << endl; session.user_type = "manager"; break;
case 't': user_type = 'T'; case 'T': cout << "Hello Teller" << endl; session.user_type = "teller"; break;
default: cout << "Error, invalid identity." << endl; no_quit = 0; }
cout << "\nTo see commands type 'help'" << endl;
// The main command line session loop. // Continues until a quit command is entered. while(no_quit) { cout << "\nBDB>> "; cin >> cmd; no_quit = cmd_parse(cmd, session, account, account_len, transaction, trans_len); }
// Write all accounts to an output file. // This will be existing accounts plus all // changes and transactions from this session. /* for(i = 0; i < account_len; i++) { outfile << account.first_name << " " << account.last_name << "\t"; account_type_convert_outfile(account, i, outfile); outfile << "\t" << account.amount << "\n"; }*/ infile.close(); outfile.close(); return 0; }
// // Command line interpreter. // // Reads user command line input and calls the // appropriate commmand functions. // // Returns: 0 User wants to quit the session // 1 Remain in command line interpreter. // bool cmd_parse(string cmd, session_type session, account_record_type account[], int &account_len, trans_type transaction[], int &trans_len) { if(cmd == "help") { if(session.user_type == "customer") transaction[0].help_customer(); else if(session.user_type == "teller") transaction[0].help_teller(); else if(session.user_type == "manager") transaction[0].help_manager(); else { cout << session.user_type << " is an invalid user type." << endl; exit(0); } } /* else if(cmd == "balance") f_balance(session, account, account_len); else if(cmd == "deposit") f_deposit(session, account, account_len, transaction, trans_len); else if(cmd == "withdraw") f_withdraw(session, account, account_len, transaction, trans_len); else if(cmd == "transfer") f_transfer(session, account, account_len); else if(cmd == "accounts") f_accounts(session, account, account_len); else if(cmd == "add") { f_add(session, account, account_len); } else if(cmd == "delete") f_delete(session, account, account_len); else if(cmd == "search") f_search(session, account, account_len); else if(cmd == "customers") f_customers(session, account, account_len); else if(cmd == "list-money") f_money(session, account, account_len); else if(cmd == "list-deposits") f_deposit_list(session, account, account_len, transaction, trans_len); else if(cmd == "list-withdrawals") f_withdrawal_list(session, account, account_len, transaction, trans_len); else if(cmd == "transactions") f_transactions(session, account, account_len, transaction, trans_len); */ else if(cmd == "quit") { cout << "Quitting the program..." << endl; return(0); } else cout << "Error: Invald command" << endl; return(1); }
// // Add an account & identify the type of account. // // Returns: nothing // /*void f_add(session_type session, account_record_type account[], int& account_len) { string temp_string;
cout << "This Account will be account number " << account_len << endl; cout << "Enter new customer first name: "; cin >> account[account_len].first_name; cout << "\nEnter new customer last name: "; cin >> account[account_len].last_name; cout << "\nEnter new customer account type: "; cin >> temp_string;
if(temp_string == "Checking") { account[account_len].type = Checking; } else if(temp_string == "Savings") { account[account_len].type = Savings; } else if(temp_string == "CreditCard") { account[account_len].type = CreditCard; } else if(temp_string == "InstantAccess") { account[account_len].type = InstantAccess; } else account[account_len].type = unknown;
account[account_len].amount = 0; account_len++; }
// // Deletes an account (actually we 'close' accounts). // They remain in the database with account_type = Closed. // // Returns: nothing // void f_delete(session_type session, account_record_type account[], int account_len) { int tmp_account;
if ((session.user_type == "teller") || (session.user_type == "manager")) { cout << "Which account number do you want to delete? "; cin >> tmp_account; if (account[tmp_account].amount != 0) { cout << "Balance must = 0 before you can close this account" << endl; } else { account[tmp_account].type = Closed; cout << "Account " << tmp_account << " has been closed\n" << endl; } } else { cout << "You do not have permission to change this account" << endl; } }
// // Determine if the customer exists. // // Returns: nothing // void f_search(session_type session, account_record_type account[], int account_len) { int i = 0; bool found = false;
enter_customer(session.first_name, session.last_name); for(i = 0; i < account_len; i++) { if((session.first_name == account.first_name) && (session.last_name == account.last_name)) { found = true; break; } }
if(found) { cout << session.first_name << " " << session.last_name << " was found. The following is a list of the customer records: " << endl << " Name: \taccount type: account balance: " << endl; for(i = 0; i < account_len; i++) { if((session.first_name == account.first_name) && (session.last_name == account.last_name)) { cout << account.first_name << " " << account.last_name << "\t\t"; account_type_convert(account, i); cout << "\t\t" << account.amount << endl; } } } else cout << session.first_name << " " << session.last_name << " is not in our records." << endl; }
// // List all customers in the bank. // Creates a unique list...no duplicate // displays if customer has >1 account. // // Returns: nothing // void f_customers(session_type session, account_record_type account[], int account_len) { int cust_name_len = 0, i, k; // Use of required multidimensional array string cust_name[MAX_ACCOUNTS][2] = {""};
for(i = 0; i < account_len; i++) { for(k = 0; k < MAX_ACCOUNTS; k++) { if ((cust_name[k][0] == account.first_name) && (cust_name[k][1] == account.last_name)) { break; } else if ((cust_name[k][0] == "") && (cust_name[k][1] == "")) { cust_name[k][0] = account.first_name; cust_name[k][1] = account.last_name; cust_name_len++; break; } } } cout << "Total number of customers: " << cust_name_len << endl; }
// // Sum all funds in all accounts in the bank. // // Returns: nothing // void f_money(session_type session, account_record_type account[], int account_len) { int i = 0; float money_in_bank = 0;
for(i = 0; i < account_len; i++) { money_in_bank += account.amount; } cout << "Total amount of money in the bank: " << money_in_bank << endl; }
// // List all the deposits so far in current session. // // Returns: nothing // void f_deposit_list(session_type session, account_record_type account[], int account_len, trans_type trans[], int trans_len) { int total_deposits = 0, i = 0;
cout << "AccountNum: Amount: Balance(after):"; for(i = 0; i < trans_len; i++) { if (trans.deposit == 1) { cout << "\n " << trans.account_num << "\t\t" << trans.amount << "\t\t" << trans.post_balance << endl; total_deposits++; } else continue; }
cout << "\nThe total amount of deposits is: " << total_deposits << endl; }
// // List all withdrawals so far in current session. // // Returns: nothing // void f_withdrawal_list(session_type session, account_record_type account[], int account_len, trans_type trans[], int trans_len) { int total_withdrawals = 0, i = 0;
cout << "AccountNum: Amount: Balance(after):"; for(i = 0; i < trans_len; i++) { if (trans.deposit == 0) { cout << "\n " << trans.account_num << "\t\t" << trans.amount << "\t\t" << trans.post_balance << endl; total_withdrawals++; } else continue; }
cout << "\nThe total amount of withdrawaks is: " << total_withdrawals << endl; }
// // Lists all transactions in the current session // // Returns: nothing // void f_transactions(session_type session, account_record_type account[], int account_len, trans_type trans[], int trans_len) { int i; string trans_str;
cout << "AccountNum: Type: Amount: Balance(after):";
for(i = 0; i < trans_len; i++) { if (trans.deposit == 1) { trans_str = " deposit"; } else { trans_str = "withdraw"; } cout << "\n " << trans.account_num << "\t\t" << trans_str << "\t" << trans.amount << "\t\t" << trans.post_balance << endl; } }
// // User interface, get customers name. // // Returns: nothing // void enter_customer(string& first, string& last) { cout << "Enter customer name: "; cin >> first >> last; }
// // Converts from enum index to a string and outputs. // // Returns: nothing // void account_type_convert(account_record_type account[], int type_len) { if(account[type_len].type == Checking) { cout << "Checking"; } else if(account[type_len].type == 1) { cout << "Savings "; } else if(account[type_len].type == 2) { cout << "CreditCard"; } else if(account[type_len].type == 3) { cout << "InstantAccess"; } else if(account[type_len].type == 4) { cout << "Closed"; } else cout << "unknown"; }
// // Converts from enum index to a string and stores it in the outfile. // // Returns: nothing // void account_type_convert_outfile(account_record_type account[], int type_len, ofstream& outfile) { if(account[type_len].type == Checking) { outfile << "Checking"; } else if(account[type_len].type == 1) { outfile << "Savings "; } else if(account[type_len].type == 2) { outfile << "CreditCard"; } else if(account[type_len].type == 3) { outfile << "InstantAccess"; } else if(account[type_len].type == 4) { outfile << "Closed"; } else outfile << "unknown"; } */
|
|
Play
All-Star
Los Angeles Clippers
Posts: 5,702
|
Post by Play on Jan 21, 2009 1:41:16 GMT -5
Play is a 6'4" future mechanic who collects sneakers and has a woman obsession. He's real secretive too. Im a womanizer. I can't help it.
|
|
|
Post by dj on Jan 21, 2009 1:41:19 GMT -5
pussy
|
|
Jay
Starter
Ex-GM
Bang...Bang...
Posts: 3,220
|
Post by Jay on Jan 21, 2009 1:41:35 GMT -5
DJ is like the dad that lives across the street from his kid. He does just enough to still be the father, but doesn't take advantage of his proximity.
|
|
Play
All-Star
Los Angeles Clippers
Posts: 5,702
|
Post by Play on Jan 21, 2009 1:42:41 GMT -5
I hate Lamar Woodley
|
|
Ducky
All-Star
Ex-GM
Posts: 7,215
|
Post by Ducky on Jan 21, 2009 1:43:02 GMT -5
Jay, object oriented programming is fucking ridiculous. I hate it.
|
|
Jay
Starter
Ex-GM
Bang...Bang...
Posts: 3,220
|
Post by Jay on Jan 21, 2009 1:43:07 GMT -5
Ducky is like that weird kid that plays basketball but has an obsession with classical music and religion. He's cool, you just can't invite him to certain shit.
|
|
Play
All-Star
Los Angeles Clippers
Posts: 5,702
|
Post by Play on Jan 21, 2009 1:43:17 GMT -5
DJ is like the dad that lives across the street from his kid. He does just enough to still be the father, but doesn't take advantage of his proximity. lmao
|
|
Ducky
All-Star
Ex-GM
Posts: 7,215
|
Post by Ducky on Jan 21, 2009 1:43:33 GMT -5
Ducky is like that weird kid that plays basketball but has an obsession with classical music and religion. He's cool, you just can't invite him to certain shit. Well said. +1 I don't really like classical music though. But close enough.
|
|
|
Post by dj on Jan 21, 2009 1:43:36 GMT -5
wtf... im not that old.
|
|
Derwin
Starter
Ex-GM
Posts: 2,832
|
Post by Derwin on Jan 21, 2009 1:43:37 GMT -5
Jay is like the guy who goes to the draft when Warren Sapp is still on the board, then takes Kyle Brady.
|
|
Jay
Starter
Ex-GM
Bang...Bang...
Posts: 3,220
|
Post by Jay on Jan 21, 2009 1:43:39 GMT -5
Jay, object oriented programming is fucking ridiculous. I hate it. LOL. And I suck at it.
|
|
Outlawz
All-League
New York Knicks
Going back to basics
Posts: 7,853
|
Post by Outlawz on Jan 21, 2009 1:44:01 GMT -5
I withdraw!! Seriously league looks solid tho thnx and ur seriously first on the waiting list. Nice
|
|
Ducky
All-Star
Ex-GM
Posts: 7,215
|
Post by Ducky on Jan 21, 2009 1:44:19 GMT -5
Jay, object oriented programming is fucking ridiculous. I hate it. LOL. And I suck at it. I'm at the 200 level and it already sucks... When I get to 300 and 400 level, are we mostly going to do object oriented programming? I sure hope not cuz it sucks.
|
|
Ducky
All-Star
Ex-GM
Posts: 7,215
|
Post by Ducky on Jan 21, 2009 1:44:49 GMT -5
btw all that code I wrote in a month!!! yeeeee
|
|
Derwin
Starter
Ex-GM
Posts: 2,832
|
Post by Derwin on Jan 21, 2009 1:45:06 GMT -5
SIM IN UOSL ALMOST UP YEEEEEE
|
|
|
Post by Speed Racer on Jan 21, 2009 1:45:06 GMT -5
Pitt > Oregon.
|
|
|
Post by dj on Jan 21, 2009 1:45:12 GMT -5
I took comp sci once... that was enough.
|
|