diff --git a/ASCII Art b/ASCII Art new file mode 100644 index 0000000..04dd4fa --- /dev/null +++ b/ASCII Art @@ -0,0 +1,312 @@ +Roberto + +****************************(%%%%%&&&&&&&%(//******************************,*** +***********************/(%&&&@&@&&&&@@&&&&@&&&&@(****************************** +*//**************,*(%&&&&&@&&&&@&&&&&@@@@@@@@@@@&&%@&/***********************,* +(/*/***********/%&&&&@&&&&&&&&@@@@@@@@@@@@@@@@@@@@@&@@@@%********************** +*/(//********#&&&@@&@@&&&&&&%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%******************* +****(/*****/&&&@&&@&@&&&@@@@@&&%%%%%&&%%%%%%%&&&&&@&@@@@@@@@@(***************** +******(///(&&&&&@@&&&&&%%#((/////////*******////((###%&@@@@@@@#**************** +*******/((&&@@&&&&&%%(//*************************////((%&@@@@@@#*************** +*********%&&@@@#(/***,,,,,,,,,,,,,,,****************//(#&@@@@@&/************* +********#%&@&&(/***,,,,,,,,,,,,,,,,,,,,,,,*,,************/(%@@@@@@&************ +*//****(&&&&%(*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*********//#&@@@@@@%*********** +///***/&&@&%(/*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,**********/(%@@@@@@@/******,*** +//////%&@&%#/*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*********/(#&&@@@@@&********** +/////(@&&(*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*********//#%&&@@@@@/********* +/////#&&%#(/,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,**********/(%%&%@@@@%********* +/////&&(/*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*********//(#%&&&@@@/******** +**///%%%((/*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*********////(##&&@@@#******** +****(%%#((*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*************//////(#%&&&@%*/****** +****(%###/*,,,,,*///(%%#####(*,,....,..,,,/(###%%%%%#//(////////#%%&&@&******** +****(%###*,,,*//(((#(((/////***,,,.,,,,,,**//////(((#((((##(////(%%&&@%******** +/*//(%##(*,,//**//**********,,,,,,,,,,,,*****/*******//(((#%(///(%%&&&%******** +****(%##(,,*/**,,,,,,**********,,,,,,,***///////////**//////((///%&&@&%/////*** +****(%##/,,*,,,,,,*******//(//**,,,,,,*////(((/((%#(//((/////////#&&&%////(///* +****/#%#/,,,,,**/**#&@@%@%((///**,,,,**////(#(*&&(@&(#&(//*////(&@#////**/*** +***,,/%%*,,,,,**(#(((###(/((((***,,,,**/////////////**/////***///(%&//********* +(***,,(%**,,,,,**,,,,,,,********,,,,***/////**////*************//(#&(//******** +/**,,*/#**,,,,,,,*****/****,,,,,,,,,,**/*//********************/(/#&/*,,,,*/*** +*/,,,,#(**,,,,,,,,,***,,,,,,,,,,,,,,,*///********,****,,,*****//((#&(*,,,**/*** +/*,,,,((**,,,,,,,,,,,,,,,,,,,,,,,,,,,,*///*****,*,,,,,,,,*****///((&/***/*/**** +**,*,,/#*,,,,,,,,,,,,,,,,,,,,**,,,,,,,,**/////*,,,,,,,,,,,***////((*//*/***** +//,**,/#*,,,,,,,,,,,,,,,,***,,,,,,,..,,******//**,,,,,,,,,***////(#@%//***/**** +*/****(%*,,,,,,,,,,,,,,*****,,,,,,,,***//(/////*******,,****/////(#@&/****(**** +***,,,/%/***,,,,*,,,****,,,**//*****/((///(((//************////((#&@&////(/**** +/*/,,,(%(*****,****/*****///(#%%%#/////##&&%%###(#((((((///////((%&@(##(***** +/*/(,,(&%*********(#####%&%&&&%%%%&%%%&%&&&&@@&&&&&&&&%%#/////((#&@@&&%#/****** +***(#(#&&(*******(#%%%%%%%%%&%%%%%%&&&%&%&&@&%&&&&&&&&((/((#%&@@&((((/////* +****/(#%%%(*****(%%&&&&&&&&&&%%&%((#(#%#%%##%##%&&&@@@@&((((#%&&@@&((((////// +****//(%&%%(**//#%%&&&&&(####(//***,,*...,,/((##((#&&&&&%%##(#%&&@&@%/((((///// +*****/(&&&%#(//#%%%&&&(////*****/****/////(((//((%&&@&&&&%&&@@@@%///((((/(( +*****//%&&&%%###%%%&&&%%#(///*****/******//(////((#%@&&&&&&&%%&@@@@@#/*///((((/ +*//**//#&@&&%%&%%%&&@@&%%((/((/((((#(((######(###%%%&@&@@@@&@&&@@@@@#/***/*/((( +****/*/%&@@@&&&&@@&&@@&&%%%%&%%&%%&&&@@@@@%%%%&&%%&&@@@@@@@@@@@@@@@&(/*****/*(( +****///#%@@@@&@&@@@@@@@&&&&&&&&&&@@@@&@@&&%%%@@@&@@@@@@@@@@@@@@@@@&%/********// +***/**/(#&&@@@@@@@@@@@@@@@&&&&&&&&@@@&@&&%&&&&&@@@&@@@@@@@@@@@@@@@%(*********** +/*/***//(%%@@@@@@@@@@@@@&@@@&&&&%##%%&&%&%(&&&@&@@@@@@@@@@@@@@@@@%(/*//******** +****/***/#%&&@@@@@@@@@@@@@@&&&&&&%%#%%&&&%@&&&@&@@@@@@@@@@@@@(//*****////** +*/*//***//#&@@@@@@&&@@@@@@@@@&&@%&%%#%#&%%&&&&@@@@&@@@@@@@@@@@@%((//****///***/ +/*****//**#&&&&&&&@@@@@@@&@@&&&&&&@&@&&&@&&@@@&@@@@@@@@@@@@@@@&(((**/////***//* +////******(#%%&@@@@&@@@@@@@@&&@@@@@@@@@@@@&@@@@@@@@@@@@@@@@@@%(//(%@@@#/***//** +*******///*(#*#@@@@@@@@@@@&@@&@@@@@@@@@&@@@@@@@@@@@@@@@@@@@@%(///((((//&@#///*/ +**/***/&@@@&*,,*/&&@@@@@@@&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&(//*///(////(&@@@@@% +//#&@@@@@@@/*,,,,/(%@@@@@@@@@@@@&@@@@@@@@@@@@@@@@@@@@@@@&%(/***///(//*/(@@@@@@@ +@@@@@@@@@@@/*,,,,,,,/#&&&@@@&@@@@@@@@@@@@@@@@@@@@@@@@&%(********///(/**#@@@@@@@ +@@@@@@@@@@@/*,,,,.,,,,/(((#&&@@@@@@@@@@@@@@@@@@@@@@%(/**********/////*/@@@@@@@@ +@@@@@@@@@@@%*,,,,,,..,,,,,**(#%%%%&&@@@@@@@&%&&%(*************//////&@@@@@@@@ +@@@@@@@@@@@@/,,,,,...,..,,,,,******(%&&@&%%#/(///*****,***********/**@@@@@@@@@@ +@@@@@@@@@@@@@/,...........,,,,,,,***(((((//*********,,*************/@@@@@@@@@@@ +@@@@@@@@@@@@@@#,,.......,,,,.,,,,,,****************,,,,***********%@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@*,.......,,,,,,,,,,,,,,,,**,*******,,,,,,,*****,(@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@&*,,.,,,,,,,,,,,,,,,,,,,********,*,,,,,,,,,,,*&@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@&*,,,,,,,,,,,,,,,,,,*********,,,,,,,,,,,,*%@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@#*,,,,,,,,,,,,,,,,,,,****,,,,,,,,,,,/&@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@#/*,,,,,,,,,,,,**,,,,,,,,,,,,,*%@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%(****************,,,,/#@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&%####%%%&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + + +Kris + ... ,,.......** .*,,**///*,.. ..,,,,,.,,,***//***, ....... .... .,,..,,. ,,**,,,*. + ....,,...***,,,,**,,,,...,. ,,....... . ..,,,........**, .,..,... + ..... .,**..,,*******,,,. .. . ..,.. ...... .. ., + ,,. .,**.,*,,,..,, .. ... ...,,..,***,..,,..,........... + .,,,*******,,,**, ....... ........ ... .,**,*.....***,.,**. ,*,,.... + .,.,...,,...,. ..............,,,,,,,,.... .,/*..,,*/(/,,**,*/**..,****..,. . + ........ ............................... .,//,. */(/,,*,,,,,,,.,,***,.... + .,,,*, . .. ...... ......,,.............,,,,,,.. .,,,,,.***/* ,*,..,,..,,*,,,,,.... + ...,,,**,, .... ............,,,,,,,,,,,*******,,,,,,,. ,*,,///(/*,. ...,,,,.,*/***,,...,,...,, + ,,***,.... ...............,,,,,,,,,,,,***********,,,,,,,,. ,*((//(/*,, .. *///////*,,,,,*,.,,. + ..**,******. .......,,,,,,,,******,,,,******////****,,,,,..,... .*((**//*//****,,,,***(((/**,*******,..,... + .,**,.,**** ....,,,,****************//////////*********,,,,.,.. .//////(((/*,,**,,*((//(////(/**,/*,***,.. + .,,*,,**,. ..,***********/////////((((//////***********,,,.,,.. ,,,,,*////*** .*/(/**///*/((/*///**//*,,, + ,,,,,,*. ..,**********///////////////////////////*******,,,,,.. .,*...**(/.,.. .,*/////,,/((/////***,,.. + ...,,,,,. ...,*///********///////////////((////////*********,,,.. ...,///,,..,...,/(/////(/**//(/*,. . + ...,**.. ..,**//******//////////////////////////***********,,,,. ,,.,..*((//**..,,.,*((((**(/,,,,*,... +,. . ...,,,, .,,**/*****/////////////////////////************,,,,,,,.. ,,,,,.,*/#(**,*,.. ,*/*,,,,. ..,,.. +**,.,, .... .,,********////////////////////////*************,,,,,,.,.. .,*//..**,,,,.,,....... . ....,,*/,. +/*,,..... .,,,,, ..,********///////////////***//////////*********,,,,,,,... ..,,,,.,*...,*,. .....,,. ,,,,,*//.. +*//***...,,,,,***,. ..,,,*****////////////*******///////(/////(///////**,..... ,* .. .,*,**.,*..,,,**,*..****,.,* +,*//..*,. .,***,... ..,,,*****///////////*////////((((((((##########(((//*,... .*, .. .,*. ....*,..*//,,*****,,, +,,,,..**,,,,,,,..** ..,,,*****//*//////////((((((((#######%%%%%#######((##/*...**,**, .. ,..,,**//*//***,. .,*/ +.. .,,**,..,***, ....,********/**///((((############%%%%%&&&&&&&%%%%%#(/*,..,*,,//***,...... .,.......... ,*// + . .. . ...,***,,,. ....,,,*******////((################%&&&&&&%%%%##(((/******.,**,..*//*,**,. .,,*, ..,.,*. ,/ +*/(/,,.,*,,. ,**,,**,. ...,,******//(((#####%%%%&&%#((//(#%%%%%%%######(********,.,,*//****//*,,,..,** ......,,,,.., +,*//.. .,//**,,*,,,,......,,******///((##&&&&&&&&&%%((////((########(//**********,.,,//**/*//,,,,.,*..,,,,,..,***,*//. +,***,,.... ..,*..,,,***,,,,,***////(%%%%%%%%%%%%%##((/////((((((((////////******,...,*****,.,,,..,..,*/(/**,,.,*,.,,,* + .//*/,. .,. .. ..,*((,,****/(###(((((###%%###(((//****//((###(((///((((//****,.,,. *(/*,.. .*/**((*,,,.,,,, ... +*,... .,,, ./(,,,,**/////((######(((((/////**,***////#%%%#######((/**/*,. ...***,,. ,//*/(/*,. ..,...,, +,,*,..... .... ....,/**,,****////////////(((((((//**********/(&&%%%%%####((///*,. ...,,*//**,,*/(///*,,*,***//* +*,..,, .. .. ,, ....,*/(,,**//////////////(((#(/////////////((#%%%%%%%%%###(////*.. .. ,///**/(///,,,*//,**, +..,, . .,.. .....*//**..//*,***///////////(((#%%(/////((####%%%%%%%%%%%%%%####(((//,.. .,. ... .*/*,//(((////##(*.. +(/.. ,,.,//* ..,*/*******,,****///////(((##%%%%#(((#######%%%%%###%%%%&%%######((/,.,..,*//,..,/,,*//*,*/(((##(((/*, +((*/*,*/*,*/*,,.,*/*,,*/((***********//((((##%%%%%###%%%%%%%%%%%###%%&&&&&%%#######((*,....***,. ..,**////**/,,**/(/**/ +%%####**/(/((/***///((#####/******/***/((###%%%%%#########%%%%%%%%%%%@@&&########((,.***,,,... ,,**(((#(//*,.******, +(#%#((((((((((//(%########%&(****///**/((##%%%%%##((########%#######%&%%%%##(((####(/*, .,..... .,*/***,.*/,.... +###(//(///((//*/(#((((######(//**///////(##%%%&&&&&&%#(#(((((((###%%##########(####(/((. +%%#(((//**(#(((((/*/((//(((((#(/**/////(((##%%&&&&&&&%#(#####%###(((((##(((###(###(//#%, +%%((((//*.*//...,/*,,(####/,/(#(***////((((###%%%%##(((((((((####(((((((((((######(//%&*. ... +###(((///,.***,,..,....,/##(/(%%(/**//(((((((#%%##((((((((#######((((((((///((##((/(#&&*..... +#(////,. .. ....., .,((##%%%%***//((((((####(((((((((((((((((((((((////((#((((#%&&*. .. .... +,,,***.. .,, .***,...,/##%%%%(/**///(((((##((((((((((((((//////////////((((((#%&&%*. .. .... +,,(((/,...,,,*, ..,***///((((##%%#*,**//(((((((((((((///(((////////////////(#((((%&&,. ........ +..*, ...,*/*,,,..,***. */**(###, ,*////(((((((/////(((((//(((//////((((((#(((#&&&,. ................ + ...,,.,,, .*//,***..,*/(/.. .,. ..*////((((((//////(((((((((((#######(######%&&((#(*...,.................. +*,..*///,,***,,***,.,,,,**//. ..,//////(((((//////((((((#################%%&&/(#(*.,,,...,,,............. +,. .,*//((/,,..******,,,.. ......,/#(//////((((//(((((##################%%%&%#(/*/,,,,,,,....................... +,,......*/..*##(/,*/*,,, ..,..,,(%#(//////(((((((((################%%&(((/,,,,,,,,,.....................,, +****,,..//,*(#(####/, ..............,*#%%#((((((((((((#################%%(((/**,****,,...................,,,** +(**(#(../(##%%#%%, ..... ....,,...,,*#%&%#(((((((((((((((#########%%&(((/*******,,.................,,****** +%%%#%%##//#%%#(. ...................,,,.,,,**#%&&%%##(((((###########%%&&&&(////******,,................,,****//// +#%%%#######/* .............,,,,,.....,,*,.,,*((#%&&&&&%%%%%%##%%%%%%&&&&&%#//***////*,,...............,,,********* +%%%##%%%#(. . ........,,,,,,,,,,,,***(%&%#(//#%&&&&&&&&&&&&&&&&&&&&(//**////**,,............,,,,,,,,,,,,,,,, +##%#%&%(. ................,,,,,,*****/(%&&%(/**/((#%&&&&&&&&&&&&&%(/**/////*,,,........,,,,,,,,,,,.......... +(/(%&%*. ..............,,,,,,****/((%%%%((/////(#####%%%&&&&(/*/((///*,,,,,,,,,,,,,,,,*******,,........ +((((*. ......... .........,,,,,,***////(###############(((#%#/*/(((//*****************************,,.... +##/, ......,,,,,..................,,,,,***////(((((((((#########//////((/////////////////////////////////**** +/* ...........,,,,,,,,,,.............,,,,***////////////////(((/**////((///////////////////////////////////// +. ................,,,,,,,,,,,,,,,,,,,,,,,,,,,********//////////////*//////////////***********************////// + +Chris +(((((////////////////////////////////////***********************////////*. .................................... +((((//////////////////////////////////***********************************. .............................. +####((((((/////////////////////////**************************************. .................. +(((((((((((((((((((////////////////**************************************. .,,,... .......... +///////////////////////////////////////////****************************** .,**//(((((((//**,,... +///////////////////////////////////////////////////////*********////*****. .......,,,,,,***//((((((//*,,,.. +/////////////////////////////****************/////////////((/////////////*.. ....................,,,,***//((((((// +////////////////////////***************************/(((((////******************. ..............................,,,,,,, +/////////////////////***************************/((#((((///////****,,,,,,.,,,***/*,............................,,,,,,,, +/////////////////////*************************(##((((///////////***,,,........,,,***,......................,...,,,,,,,, +//////////////////////**********************(##((((((////////////**,,............,,***..........................,,,,,,, +((((((((((//////////////******************/###(((((((////////////**,,,,.............,,**,,,,,,,,..........,,,,,,,,,,,,, +///////////////////////////////////////*/(#########((((//////////***,,,,,.....,,.....,,**,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +///////////////////*********////////////%%%##########((((((/////***,,,,,,,,,,,,,,,,,,,,,*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +/////////////////**********************#%%%%##%%%####(((((((/////**,,,,,,,,,,,,,,,,,,,,,***,,,,,,,,,,,,,,,,,,,,,,,,,,,* +//////////////************************(%%%%%%%%%%#%##((((////////**,,,,,,,,,,,,,,,,,,,,****,.,,,,,,,,,,,,,,,,,,,,,,,*** +//////////////***********************(%%%%%%%########(((#%&&&%%#((//**,,,,,,,,,,,,,,,,,,****......,,,,,,,,,,,,,,,,,,,,, +/////////////************************#&&&&&%%########%%&&&&%%%%&&&%#(/***,,,*,,,.,,..,,,,***..............,,,,,,,,,,,,, +///////////////*********************/%&&&&&%%%#####%%&((//////(%%%%%#((/*****,,,,,,.,,,***,.......................... +///////////////////*****************(&&@@@@&&%%####%%######((((/((###(((((/*******,**,,,,****.. +(((((((///////////////////////****//(%&&&&&%%%###%%&&&&&&(((//((((###((//******/((#######(/,...... +/////////////////////////////////(&&&((&&&%%##((((((#%%&&%%%%%#####(((((((////////(((#%%##%%%(........... .. +/////////////////***************/####%%&&%%#(((///////((#(####(#((##((///**/***/((####((//*/(#,........................ +////////////***/***************/(((((#%&%%##((//////***//***////////**,,,*//,,,/#%(##((((/////......................... +////////////*******************/(((/#%%&%%##((/////*******,,,,,,,,,,...,*((*..,*#((#%%#((((*,,**,,,,,,,,,,,,,,,,,,,,,,. +//////////////******************/(////(%%###((////*********//*,,....,,,,*/*,,..,/,.**//////*..,,,/*,,,,,*************** +//////////////*//***************//(//(#&%%%#(((/////****,,,....,,*//(((*,*,,..........,,***,,,,**((*,,,**************** +////////////////*****************(/((#%&%%%##((/////****,,,,......,*//*,,,*,......,.......,,,,*,****,,,*********,,,**** +/////////////////***************/&%#(%&&&%%%##(((/////*****,,,,,,,,/((///((//****,,***,....,//******,,,**************,, +((((////////////////////////////#&&&&@@&&&&%%##((((///////*****,,,,*(#%%%&@##(%%(*,,...,,,***,,**,,,,,*************** +////////////////////**********/#%%%%&@@&&&&&%%###(((/////////****,,,**/(####%%%%%%(,,,......,******,,,,,*************** +//////////////////***********/%@@%%%%@@&&&&&%%####(((((///////((((((((###%%#(#%#(*,,,,,,,,,,,,*****,,,,,,**********,,,, +/////////////////**********/%&@@@@%%%@@&&&&&&&%%%###((((///###&&&%%#(////****///##(*,,*****,,,,,,,,,,,,,,,,,,,,,,,,,,,, +/////////////////********/(&@@@@@@&%%@@@&&&&&&&%%####((///(#%%&&&&%%%%%##((/////*/###(/*/*****,,,,,,,,,,,,,,,,,,,,,,,,, +/////////////////*******/%&@@@@@@@@@&@@@@&&&&&&&&%%%##((///###(((////**,,,*/(((#((#&%#(////***,,,,,,,,,,,************** +//////////////////////*/#&&@@@@@@@@@@@@@@@@@@&&&&%%%%%%#####(/**///(((/***,,,..,/#&&&%((////*******,,,,,,************** +///////////////////////(%&&@@@@@@@@@@@@@@@@@@@@&&&&&&&&%%%%%#///**///((##%##(/****/#%#////((*************/***////////// +////////////////////%&&@@&&@@@@@@@@@@@@@@@@@@@@@@@&&&&&%%%&%%#/////*/////((((((/***(#(((###(((((####((########%%%%##### +(((((((/////////(#%&&@@@@&&&&@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&%%#(///*************//#####%%%%%%%%%&&&%%%%%&&&&&&@&&%%%%% +//////////////%&&&&&&&@@@&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@&&&&%%%#(((////*/******//##%%%%((((((((#%&&%%%%%&&&&&&&&%#(/// +///////////(#&&&&@@@&&&@@&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@&&&%%%%%####(((((////(##%%%%(/////////(%&&%%%%%&&&&&&&&(((( +////////(%&&&&@&&&&&@@@@@@&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&%%%%%%%%###(#%%%%%#(///////////(%&&%%%%%&&&&&&&&&%(((# +/////(#&&&&@@@@&&&&&&&&@@@&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&%(,**///////////(%&&&%%%%&&&&&&&&&%#### +//((&&&&&&@@@@@@&&&&&&&&&@@&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&/ */((((#######%%&&%%#######%%&&%#(((( +%&@@@@&&&&&&&&&&&&&&&&&&&@@&&&&&&&&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&%&%/////****/((#%%%%%#((((((((##%%%#((## +@@@@@@&&&&&&&&&&&&&&&&@@@@@&&&&&&&&&&&&&@@@@@@@@&@@@@@@@@@@@@@@@@@@@@@@@@@&&&@@&%%&&%(/////(####%%%&%######%#%%&&&%%%%% +@@@@@@&&&&&&&&&&&&&&&&@@@@@&&&&&&&&&&&&&&@@@@@@@@&&&@@@@@@@@@@@@@@@@@@@&&&&&&&@@@@&%%@&%%%%%%%%%%%&&%%###%%%%%%&&&%%%&& +@@@@@@@@&&&&&&&&&&&&&&&&&@@@&&&&&&&&&&&&&&@@@@@@@@&&&&&&&&@@@@@@@@&&&&@&&@&&&&&@@@@@@&@&%########%%%#########%%%&&%%%%& +@@@@@@@@&&&&&&&&&&&&&&&&&&&@@@&&&&&&&&&&&&&@@@@@@@@@&&&&&&&&&%%%%%%%@@@%&@&&&&&@@&@@@@@&&%#((((((##%#(((((#####%&&%#%%% +@@@&@@@&&&&@@@&&&@@&&&&&&&&&@@&&&&&&&&&&&&&&&@@@@@@&&&&&%%%%%%%%%%%&@@##%@@@&&&&@@&&&&@@@&&&%%%%%%%%%%###%%%%%%%&&%%%%% +@@@@@@&&&&&&&@@&@@@&&&&&&&&&@@&&&&&&&&&&&&&&&&@@@@@@&&%&&%%%%%%%%%%######&@@&&&&&@&&&&&&&&&&%%%%%%%&%%####%%%%%&&&&&&&& +@@@@@&@@@&&&&&&&&@@@&&&&&&@@@@@&&&&&&&&&&&&&&&@@@@@@@&&%&&&%%%%#######(%#%@@@&&&&&@&&&&%%&&&%%%%%%%&%####%%%%%&&@@@@@@@ +@@@@@&&&&&&&&@&&&&&@@@&&&&&@@@@&&&&&&&&&&&&&&&&&&&@@@@&&%%%%%%%%%%###((###&@@@&&&&&&%%&&&&%%&&%&%%%&%%%%%%%%%%%%&&%%%%% +@@@@@@@@&&&@@&&&&&&&@@@&&&&@@@@&&&&&&&&&@@@@@@@@@@&&@@@&&%######((((((((###&@@@&&&&@&%%&&&&&%%%&%%%%##((((###(((((((((( +@@@@@&@@@&@&&&&&&&&&&&@@&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&%#%#%%%####(((((###@@@&&&&&&%%%&&&&&&%%%%#(((///(((((((((((((( +@@@@@@@@@@&&&&&&&&&&&&&&@&&&@@@@@@@@&&&@@@@@&@@@@@@@&&&&@&%#%%######(((((####@@@&&&&&&%%&&&&&&&&%%%((////(((((((((((((( +@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&&&&@@@@&&&@@@@&&@@@@@@&&&&&@#%%#####((((((###&@@@&&&&&&%%&&&&&&&&&((///(((((((((((((( +@@@@@@@@@&@@@@@@&&&&&&&&&&&&&&&&&&&@@&&&&&@@@@&@@@@@@&&&&&@&%#%%#####(((((####&@@@&&&&&%%&&&&&&%&&&%((((((((((((((((((( +@@@@@@@@@@@@@@@@@@@@&&&&&&&&&&&&&&&&&@@&&&&@@@@&@@&&@&&&&&&&&%%%%%###(((((#####&@@@&&&&&%%&&&&&&&&&(((((((((((((((### + +Dolio +////////****////////////(////////////////////////////(/#%&@&&&&&&&&&&&&&&@&&&&%&%(//////////////////(((((////////////// +////////****////////////(//////////////////////////(##&&&&&&&&&&&&&&&@@@&&&@&@@@&&%/////////////////(((((////////////// +////////****//////////////////////////////////////#%&&&&&&&&&&&&&&@&&&&@@@@@@@@@&&&(//////////////(((((////////////// +////////****//////////////////////////////////(#&&&&&&@&&&&&&&&&&&&&&&&&@@&&@&&&@@&@&&%#//////((((/((((((////////////// +////////****////////////////////////////////(#&&&&&&&&&&&%%%%%%%%%%%&&&&&%&&%%&&&@@@@&@&%%%(///////((((((////////////// +////////****////////////(//////////////////#&&&&&&&&%%%############%%%%%%%%%%%%%%%%&&&@@&&#(/////(((((/////////////// +////////****///////////((/////////////////#&&%#%&&%###(((#((######%%%%%%%%%%%%%%%%%%%%&&@@@&%#/(//((((((/////////////// +////////****//////////(//////////////////(%#########(((((((((#####%%%%%%%%%%%%%%%%%%%%%%&&@@%%(///((((((/////////////// +////////****//////////(((////////////////#%#######((((((#((((#####%%%%%%%%%%%%%%%%%%%%##%%&@&%#((/((((((/////////////// +////////****//////////(/////////////////(%##%####((((((((((#######%%%%%%%%%%%%%%%%%%%%####%%&&%((/((((((//////////////* +////////****////////////(///////////////####(((((((((((((((#####%%%%%%%%%%%%%%%%%%%%%%%#####%&/((((((///////////////* +////////**,*/(///////*//////////////////##((((/((((((((((((#####%%%%%%%%%%%%%%%%%%%%%####%###&&%(((((((///////////////* +////////**,*/(/**//,////(//////////////((//(/(/////((((((#######%%%%%%%%%%%%%%%%%%%%%%########(((((////////////////** +////////*,,*//**//*///(////////////////(///////////((((#########%#%%%%%%%%%%%%%%%%%#%#########%#(((((////////////////** +////////*,,*/(*///////////////////////(/*//*////////(((########%#%%%%%%%%%%%%%%%%%%###########%#((((((((/////////////** +////////*,,*/(/////////(((/////////////**/**/***/////(((#########%%%%%%%%%%%%%%%%%%#############/(((((((////////////*** +//////***,,,*/*****/////*/*//****//////***///**///////########%%%%%%%%%%%%%%%%%%%%#############%((((((//////////////*** +////////*,,*/(////////((///////////////***///**/**//((##%%%%%%%%%%%%%%%%%%%%%%%%%############%#%(((((///////////////*** +////////*,,*/(///////(((/////////////(***////********/(#%%&&&@&&&%%%%%%%%%%%%%%#%###########%#%#/((((///////////////*** +////////*,,*/(///////((((////////*(###*//*//**********(##%%%&&&&&&&&&%%%%%%%%%%%%%############%(////(/((////////////*** +////////*,,*/(///////(((((///////%#*/////**********((##%%%%%&&&&&&&&&&&%%%%%%%%%%%###(########%(/((////////////////**** +////////*,,*/(////////((((//////#%*/(**/**/////(((#%%#(%@@@&%&@&&&&%&&&%%%%%%%%%%&&&&%%%%%%%%%(((((((//////////////**** +////////*,,*/////////(((((//////#*/((/****///((((((//#&&@@&%%&@&&&&%%%%%%%%%%%&&&&&&&@&&%%##%(//(((((/(////////////**** +////////*,,*/(///////(((((//////((%%%%*****//(((((((/(#%%%&&%&@@@@&%##%%%%#%%%&&&&&&&&%%###%%(//(((((//////////////**** +////////*,,*/(////////((((//////#(%%%*******///((#%%%%%%&&&@@@@@&&%#((#%%##%%&@@@@@&&&%&%####//(((((///////////////**** +////////*,,*/(///////(((((/////*#/#%/********//((#%%&&&&&&&&&&%%%%#(((#%%##%%&&@@@@@@&%&%&%%(//((((((/////////////***** +////////*,,*/(//////(((((///////(%*(%/*******///((%%%%&&%&%%&%%###(((##%%###%&&@@&&&&%%&&&%#(///((((((/////////////**** +////////*,,*/(////////((((//////*/************///(###%%%%%&&%%#(((((##%%%####%%&@&&&%###%%%#///((((((////////////****** +////////*,,*/(////////((((//////**(//**********//(#(##%%%%&%%%((((((##%%%####%%%%%&%%%%%%%%(///((/(((////////////****** +////////*,,*/(////////((((//////(/**/***********/(((##%%%&&&%(/**//(#%%%######%%%%%%%%%##%#//////////////////////****** +////////*,,*/(///////(((((/////#&%&%/***********//((##%&&&%%(/(%@@&((#%%#(((##############///////////////////////****** +////////*,,*/(////////((((////%@%%&&*******//*////((#%%%%%%%%###%&%%%(%%##%&%#%%##########///////////////////////****** +////////**,*/(///////(((((///%@&%&@#*******/**///((#########%%%##%&#%%%%%%%#%%%#((((###///////////////////////******* +////////****/(//////((((((//#@#%###/******////*////(########%%%%%%&%%&%%%%%####%%#######(/////(((((/////////////******* +////////****/(//////((((((/%##%&&&&*******////////(####((((##%%%%%%%%&&%##%#####%######(//////(((((/////////////******/ +////////****/(//////(((((/(&&&&&&&&***////////*///#%%////(##%%%&%%&&&%%#%######%###%(((///(((((//////////////*******/ +////////****/(//////(((/*%&&&&&&@@#****//////////(%&@%%####%%%%&&&&%%%%%#######%#%%///////((((((((///////////*******/ +////////****/(/////(((*/%%%%&&@@@@/***/////////((#%%%%(/(#((%&&&%&&&&&&%%%%%#%%%#%%%///////(((((((((//////////*******// +////////****/(//////***%%%%&@@@@@%****///((////(((####((//(((#%&&%&&&%%%%%&%&&%%#%%(/((//(///((((((////////////******// +////////****/(////***(%%%%%@@@@&@/***////(((((/((((#(((((((((##%%%%%#(##%%%%%%%%%%@&&%##((//(((((/((///////////******// +////////****((//***/#%%%%%%@@&@@#/***////((((((///((((((###%%&&%%&%%%#%%###%%%%%&@@&&&&%%%%####((((///////////******/// +////////****(/**,*/#%%%%%%&@@@@@#///////(((#####((((((((###%%&&&&&&@&%%##%%%%%&@@@@@&&&&&%%#%%#####(//////////******//( +////////********,/%%%%%%%%&@@@@(//////(((###############%%%&&&&%%#####%%%%&@@@@@@@&&&&&&&%%%%%%##(////////******//( +//////*///*******%%%%%%%%&@@@@@&%#(////(((#######%###%#%%%%&&&&&&&%%%%%%%&&@@@@@@@@@&&&@&&&&&%#%%%%%%&&%(/////******//( +//*/((/********/%#%%%%%%%&@@@@@&%%#((//((((##%%####%%%#%%&&&&&&&&&&&&%%&&&@@@@@@@@@&&&&@@&&&&&%%#%%%&%%%%%%##(*****///( +(((///******,,(%%%%%%%%%%%@@@@@@&&%##(((((####%###(###%&&%&&&&@@@@&&&&&&%&@@@@&&@@@&&&&&&&&&&&%%%##%%%%%%%%%%##(/**//(( +/**///*******#%%%##%%%%#%%&@@@@&@&&%%##(((####%%########%%%%%%%&&&&&%%%%&@@@@@@&@@&&&&&&&&%%%%%####%%%%%%%%####/*/((( +//********,*##%##%%%%%###%@@@@@&@@@&%%########%%#######%#%%%%%%%%%%%%%%%@&@@@@@&&@&&&&&&%%%%%%%#%%%%###%%%%%%%%###(/((( +(*****//***##%%##%%%##%##%&@@@@@@@@&&%%%%%%%%%%%%##%%%%%%%&%%%%%%%%%%&@@@@@@@@@&&@&&%%&%&%%####&&%%%#%%##%#%&%%%%###((( +*******/**#%%##%%%%%####%%%@@@@&%@@@@&&%%%%%%%%%%%%%%%%%%%%%%%%%%&@@@@@@&@@@@@@&&@&%%%%%&%%%##%%&&%%%#%%%###%&&%######( +*********#%%#%%%%%%%%##%%%#@@@%@&@@@@@@@@&&%%%%%%%%%%%%%%%%%&@@@@@@@@@@@&@&@@@@&&@%%%###%%%%##%#%&&%%##%%%%###%&%###### +*******/##%#%%#%%%%###%%%##&@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&@&@@@@@&&@%%##(#####%%####%&&%%##%%%###%&%##### +((###(((#%#%#%######%%%%%##%@@&&@&%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&@@&@@@&@%###(((%###%%####%&%&%##%&%%##%#### +/(#&&@&(%%%%%%%%%#%&%%#%%###@&@@@&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&@@@@@@&@##((#%%%##%#####%%%&%##%&%%##%%#### +((%&@&%###%%##%#%&&%###%%%##&@@@@@%&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&@@@@@@@&&##(##%%#%##%#####%%%%%##%&&%#%%#### +(%&&&%%/%#%####%&&%%###%%%%#%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%&@@@@@@&&@###((%#%%####%#####%%%%%##%%&%###### +%&&&&%#%(%###%%&&&%#%##%&&%%#@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&@@@@@@@&@##(##%##%%####%#####%%%%%#%%&&%##### +&&&&%#%&&&(#%&%%%(#%%#&&&%#@@&&@@@%&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&%@&@@@%@@@@&@%#((#%##%%#####%######%%%%%&%%#### +&&&#%&&&&(#%&&%/####&&&%#@&@@@@@&%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&&@@@@@@@&(##%#%##%%#####%########&%##%&%#### + +Dan +,//////////////((((((((((((//////////////////////////////***************************************,,,,,,,,,,,,........... +,////////////////((((((((((/////////////////////////////////////***///////////////////////((((((((///////////////////// +,//////////////////(((((((((((((///////////////////////////////***********//////////////////((((((((/////////////////// +,//////////////////((((((((((#((((////////////////////////******************//////////////////((((((/////////////////// +,///////////////////(((###########(((//////////***,,,,,,,,,,,,.....,,,*********//////////////////((((////////////////// +,///////////////////((((############(((/////**,,,,,,,,,,,,...,......,,,,,*********///////////////////////////////////// +,////////////////////(((####%#########((/*,,,,,,,,,,...................,,,,,*******/////////////////////(////////////// +,////////////////////(((#############(/,,,,,,,..........................,,,,,,,*****/////////////////////(///////////// +,/**//////////////////(((###########/,,,,,,,...............................,.,,,******///////////////////////////////// +*//*//////////////////(((((#######(/,,,,,,,,.................................,,,,*******/////////////////////////////// +*//////////////////////((((((#####**,,,,,,,....................................,,,*******////////////////////////////// +*//////**//////////////////((((#(*,,,,,,,,,....................................,,,,********////////*****/////////////// +*////////**/////////////////((((/*,,,,,,,,,....................................,,,,**********//////*******///////////// +*/(((((///****//////////////////*,,,,,,,,,.....................................,,,,,*************////*********///////// +*/////////******///////////////**,,,,,,,,,,,...................................,,,,,***************////***********///// +**/////////*******/////////////*,,,,,,,,,..............,........ ...............,,,,,*//************/////**********//// +*******////*********///////////,,,,,,,,..........,,,//(((((((//**,,................,,*//***************/////**********/ +**********************/////////,,,,,,,,........,,,///(/////(####(//*,,...,,,,,,,,,,***///****************////********** +************************//////*,,,,,,,,,...,,*/((((#(((////(((###((/,,.,,,,*///(###((#(//*****************/////******** +***************************///*,,,***((#%%%%%%&&&%#/*****//(((((////%%######%%%%%%%%%%%#/*******************///******** +*//////**********************/*/(#%%%%&&&&%#((/**((**/(###%#((##(//*/#%%%&&%#(((((((((##(#%#//*****************///***** +/////////****//////*********,,,/(/*********///***((*,,,,,,,***///,,,(#*../&%####%%##%###*/(%&%*****************/////*** +/(/////((/((((((///////*****(#(*,.,,,,,,,,,,,,...,(*.......,,,,,.../#*...,#%****//((####&&%##/*******************/////* +((((((((((##((((((///////**/(/*//*,,,,,,,,,,,,....,*/,............*(,...../#*,,********/(/*(**********************///// +(((((((((####((((////////*****,,***,,,,,,,,,,.......,**/((#######/*.......,/(,,.,,...,**/**/***********************//// +((((((((((((((/////////****,,,,*//*,,,....,,.......... ....,,,,,...... .,*/(#####(((((/****************************/ +/////////////////////*******,,.,,.,,,,....................,,***,,...... .,,/*,,,.,,*//(****************************** +****************//////******,,....,,,..................,,,///,..*,,,,,,,..,,*//(**,,,,,*/****************************** +*****************//////*******......,...............,,,*/((*,....**/(((////(#(/*((*****//****************************** +,,,,*************//////********....,,,,,..........,,,*/(/*,......,,,,*/##%%#((////#//////****************************** +*,,,,,,,,,,******////////***********,,,,,,........,,,/(//*,,........,,*/((((((////#((/(((****************************** +*,,,,,,,,,,,,*****/////////******///,,,,,,,......,,,,*//(#((/***,,,...,,,**///((##(///((/****************************** +*,,,,,,,,,,,,,,*****////////////***,,,,,,,,,.....,...,,...*//*. ,..,.,**/((#&&%(**.,,/((/****************************** +**,,,,,,,,,,,,,,,*****//////////**,,,,,,,,,,,.....,,.,*,....,.. ./##//,,,.,*///********//********************* +**,,,,,,,,,,,,,,,,,*****///////**,,,,,,,,,,,,,,,,,,,,,**,....,,... ...,,,////**/*,////*********/******************//** +***,,,,,,,,,,,,,,,,,,,*****////**,,,,,,,,,,**,,,,,,,,*//*,..........,,,,,**//*/////(((*******************************/* +/**********,,,,,,,,,,,,,*****//*,,,,,,,,,,,**,,,,,,,,/((//*,,,.....,,*******///(#((((********************************** +//**********,,,,,,,,,,,,,,******,,,,.,,,,,,,**,,,.,,,//(//*********///////(((//##((/*********************************** +************,,,,,,,,,,,,,,,,,**,,......,,,,,*****,,.,/(#(/*,,/**,*//((///((((((#((************************************* +***********,,,,,,,,,,,,,,,,,,,,,........,,,*******,,*(#(((/*/****,*****//*//(##%/************************************** +***********,,,,,,,,,,,,,,,,,,,,...........,,,***//****/%%%#/////////*/***/((#%%#**************************************, +***************,,,,,,,,,,,,,*,..............,,,**/////**(####(/((((////(((##%%(***************************************, +*****************,,,,,,,,,,///,..............,,,**///(/////##%((((((/(###%%%#/******************************/*********, +*********************,,,,,,,,,*///,....... ...,,,**/(((((((((##%##%%%%##%##(****************************///((((///***, +********************,,,. ..,,,,,,,**#(*. ......,,,**/((((((((############(/****************************//(##%##(///*, +*/////*************...,,,,,,,,,,*,**,*(%(*. ......,,,**/((###############((*****************************///(#%%##(//*, +////////////****,...,..... .....,*******/#%#/,. .....,,***//(((#########(/********************************///((((////, +(/(///////////,............,.......,,,,****#%%#/*......,,,,**//((((###((((************************************////////, +((//////////*... ........,,,....,,.,,,****/(%%%%(*......,,,**//((((((((/*****************************************///, +((((/////*,............,,,...,,.........,*****,*/#%%%%%(*,...,,,**///////(#(//***************************************/, +((((///*,......................,,*//**/*,..,**,*****(%%%%%%#(*,,,,*******(&((/**************************************, +((((/*,......... .........,,,,,.....,,,,,,,,*********/##%%%%%%%#(///***/#&#(/*************************************, +///*...... ..,,,. ............. .,.......,,,,.....,*,,*****/(##%%%%%%%%%&&&&%%%%(**,,*/******************************, +*,......,*,....................... .,,,. .,,*,,.. .,,************/((##%%%%%%%%%%%#***,///,,,,****,********************, +,....,,*,......,,,,......... ..,,,***,,**,..,****,,,,.....,*********//*//**/////*****.*//*,,..*****,,,****************. +,..,,....,**,..,... ..,,,,,,,,,,....,,******, .. ......,*....,*/***********,,*******,//*..,*,,**.,,*,,,,*************. +.,..,.,**..,,....,*****... ........,,...*/*..,,,...***,.,,,,**/***/////////////**,,,..,..,.,/,,,**,.,,************. +..,.,*,.....,*,,,............ ........,......,/*..,*,,,..,,. ...,,,,,,,*******,,******,...***..**,.,,,.....,*********. +,,*,....,**,. ..... ..,,,**,**,,,,,*,**,,...,,,..*,,,,,....,****,,,,,,,,*,,,,,.....,,,,....*..,,.,*,.,,...,.,*********. \ No newline at end of file diff --git a/README.md b/README.md index 92d73b7..a66bce8 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Tests should demonstrate proper behavior, and proper handling of misuse (eg. att - Checking - Savings - Investment -- Account Actions +- AccountsAndTransactions.Account Actions - Withdraw from acct - Deposit to acct - Transfer across accounts (self) diff --git a/pom.xml b/pom.xml index 9901415..578d489 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,32 @@ io.zipcoder project-2-atm 1.0-SNAPSHOT + + + junit + junit + 4.12 + compile + + + org.junit.jupiter + junit-jupiter + RELEASE + compile + + + junit + junit + 4.12 + compile + + + junit + junit + 4.12 + compile + + \ No newline at end of file diff --git a/src/main/java/AccountsAndTransactions/Account.java b/src/main/java/AccountsAndTransactions/Account.java new file mode 100644 index 0000000..08c865f --- /dev/null +++ b/src/main/java/AccountsAndTransactions/Account.java @@ -0,0 +1,123 @@ +package AccountsAndTransactions; + +import java.util.ArrayList; + +public class Account { + private static double chkAcctBal; + + + /* + Things we need here: + 1. checking accounts + 2. savings accounts + 3. investment accounts + ***bins would probably be a good way to store this information - have a bin for each user with a slot for each account + + Things we may also need here? + 1. account balance - there's already a balance value in the User.java tab, but it might work better here because we need separate balances in each type of account + 2. account number + 3. BONUS - Persistence + - create a way to store user information, account balances, etc + - probably the best way if we get to this would be to save a current state of all account balances to a spreadsheet when we close the ATM app + - alternately, access the spreadsheet every time any transaction is completed, so that if the program crashes before closing all information is still saved + */ + + //establish all the data stored in the AccountsAndTransactions.Account object: + //instances of Accounts should have name [firstLast] + private String firstName; + private String lastName; + private int pin; + private int chkAcctNum; + private int savAcctNum; + private int invAcctNum; + + private double savAcctBal; + private double invAcctBal; + public ArrayList transactionHistory = new ArrayList(); + + //actions that can be called to create a new account bin: + public Account(String firstName, String lastName, int pin){ + this.firstName = firstName; + this.lastName = lastName; + this.pin = pin; + } + + + //create getters for all the data stored in the AccountsAndTransactions.Account object: + public String getFirstName() { + return firstName; + } + + public String getLastName() { + return lastName; + } + + public int getPin() { + return pin; + } + + public int getChkAcctNum() { + return chkAcctNum; + } + + public int getSavAcctNum() { + return savAcctNum; + } + + public int getInvAcctNum() { + return invAcctNum; + } + + public static double getChkAcctBal() { + return chkAcctBal; + } + + public double getSavAcctBal() { + return savAcctBal; + } + + public double getInvAcctBal() { + return invAcctBal; + } + + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public void setPin(int pin) { + this.pin = pin; + } + + public void setChkAcctNum(int chkAcctNum) { + this.chkAcctNum = chkAcctNum; + } + + public void setSavAcctNum(int savAcctNum) { + this.savAcctNum = savAcctNum; + } + + public void setInvAcctNum(int invAcctNum) { + this.invAcctNum = invAcctNum; + } + + public void setChkAcctBal(double chkAcctBal) { + this.chkAcctBal = chkAcctBal; + } + + public void setSavAcctBal(double savAcctBal) { + this.savAcctBal = savAcctBal; + } + + public void setInvAcctBal(double invAcctBal) { + this.invAcctBal = invAcctBal; + } + + public void setTransactionHistory(ArrayList transactionHistory) { + this.transactionHistory = transactionHistory; + } +} diff --git a/src/main/java/AccountsAndTransactions/AccountTest.java b/src/main/java/AccountsAndTransactions/AccountTest.java new file mode 100644 index 0000000..44fe6d8 --- /dev/null +++ b/src/main/java/AccountsAndTransactions/AccountTest.java @@ -0,0 +1,18 @@ +package AccountsAndTransactions; + +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.jupiter.api.Assertions.*; + +public class AccountTest { + + @Test + public void AccountTest(){ + Account jeff = new Account("Jeff", "Smith",1234); + Assert.assertEquals("Jeff", jeff.getFirstName()); + Assert.assertEquals("Smith", jeff.getLastName()); + Assert.assertEquals(1234, jeff.getPin()); + } + +} \ No newline at end of file diff --git a/src/main/java/AccountsAndTransactions/Transactions.java b/src/main/java/AccountsAndTransactions/Transactions.java new file mode 100644 index 0000000..91b5a29 --- /dev/null +++ b/src/main/java/AccountsAndTransactions/Transactions.java @@ -0,0 +1,115 @@ +package AccountsAndTransactions; + +public class Transactions { + /* + needed: + 1. Deposit to acct + 2. Withdraw from acct + 3. Transfer across accounts (self) + 4. Open new account + 5. Close account (must be empty) + 6. Print transaction history + 7. Check balance + *. Challenge: Transfer to another user's account (but not from) + */ + + //establish variables: + private double increment; //the amount to be changed + private Account acctName; //the primary account (used for most transactions + private Account acctName2; //used when a second account type is required, such as a transfer) + private String acctType; //the type of account being changed + private String acctType2; //used when a second account type is required, such as a transfer + + + public Transactions(Account acctName) { + this.acctName = acctName; + } + + public void deposit(double increment, String acctType){ + this.increment = increment; //pull the amount being changed + this.acctType = acctType; //determine which account + //determine appropriate account, then perform balance += increment; + if(acctType == "checking"){ + acctName.setChkAcctBal(acctName.getChkAcctBal() + increment); + } + else if (acctType == "savings"){ + acctName.setSavAcctBal(acctName.getSavAcctBal() + increment); + } + else if (acctType == "investment"){ + acctName.setInvAcctBal(acctName.getInvAcctBal() + increment); + } + else { + System.out.println("not a valid account type"); + //then return them to the transaction screen + } + acctName.transactionHistory.add(String.format("Deposited $%.2f to " + acctType + ".", increment)); //append this transaction to the user's transaction history ArrayList + } + + public void withdraw(double increment, String acctType){ + this.increment = increment; //pull the amount being changed + this.acctType = acctType; //determine which account + if(acctType == "checking" && acctName.getChkAcctBal() >= increment) { //if checking && sufficient funds in acct + acctName.setChkAcctBal(acctName.getChkAcctBal() - increment); //decrement checking account + } + else if (acctType == "savings" && acctName.getSavAcctBal() >= increment){ //if savings && sufficient funds in acct + acctName.setSavAcctBal(acctName.getSavAcctBal() - increment); //decrement savings account + } + else if (acctType == "investment" && acctName.getInvAcctBal() >= increment){ //if investment && sufficient funds in acct + acctName.setInvAcctBal(acctName.getInvAcctBal() - increment); //decrement investment acct + } + else { //error or insufficient funds + System.out.println("not a valid account type or insufficient funds in " + acctType + " acct"); + } + acctName.transactionHistory.add(String.format("Withdrew $%.2f from " + acctType + ".", increment)); //append this transaction to the user's transaction history ArrayList + } + + public void transfer(double increment, String acctType, Account acctName2, String acctType2){ + this.increment = increment; //pull the amount being changed + this.acctType = acctType; //determine the origin account + this.acctName2 = acctName2; //Account being deposited into + this.acctType2 = acctType2; //determine the destination account + withdraw(increment, acctType); //withdraw from first user + acctName = acctName2; //switch the account to the second user + deposit(increment, acctType2); //deposit to the second user + } + + //close account will close an empty account, but will not run if the member has money remaining in any account + public void closeAccount(){ + if (acctName.getChkAcctBal() == 0 && acctName.getSavAcctBal() == 0 && acctName.getInvAcctBal() == 0){ + acctName.setFirstName(null); //java cannot delete objects, so instead we will set all bins to null + acctName.setLastName(null); + acctName.setPin(1000); + acctName.transactionHistory.add("Closed all accounts"); + } + } + + //force close account will close all accounts regardless of balance, and dispenses the sum balance in cash before logging out + //think of it like force choking your bank + public void forceCloseAccount(){ + withdraw(acctName.getChkAcctBal(), "checking"); + withdraw(acctName.getSavAcctBal(), "savings"); + withdraw(acctName.getInvAcctBal(), "investment"); + acctName.setFirstName(null); //java cannot delete objects, so instead we will set all bins to null + acctName.setLastName(null); + acctName.setPin(1000); + acctName.transactionHistory.add("Closed all accounts"); + } + + public String[] transactionHistory(){ + String[] history = new String[acctName.transactionHistory.size()]; + for (int i = 0; i < acctName.transactionHistory.size(); i++){ + history[i] = acctName.transactionHistory.get(i); + } + return history; + //get a copy of the transaction history + //convert the copy to a string array + //print it + } + + /* --------------------CHALLENGE------------------------ + public void transferOtherUser(double increment, String acctType, String acctType2, user2){ + UPDATE - I forgot this was the challenge and I programmed the transfer this way originally because I thought we had to....... + } + -----------------------CHALLENGE---------------------*/ + +} diff --git a/src/main/java/AccountsAndTransactions/TransactionsTest.java b/src/main/java/AccountsAndTransactions/TransactionsTest.java new file mode 100644 index 0000000..ab6e782 --- /dev/null +++ b/src/main/java/AccountsAndTransactions/TransactionsTest.java @@ -0,0 +1,110 @@ +package AccountsAndTransactions; + +import org.junit.Assert; +import org.junit.Test; + + +public class TransactionsTest { +2 + + @Test + public void depositTest(){ + Account jeff = new Account ("Jeff", "Smith", 1234); + jeff.setChkAcctBal(100.00); + Transactions deposit = new Transactions(jeff); + deposit.deposit(100.00,"checking"); + Assert.assertEquals(200.00,jeff.getChkAcctBal(), 0.0); + Assert.assertEquals("Deposited $100.00 to checking.", jeff.transactionHistory.get(0)); //make sure it's also printing to transaction history +// System.out.println(jeff.transactionHistory.get(0)); //ignore this - it's just a double check on the format + } + // make sure transaction history is getting recorded for deposits + + + @Test //sufficient funds - withdraw completed + public void withdrawTest(){ + Account jeff = new Account ("Jeff", "Smith", 1234); + jeff.setSavAcctBal(100.00); + Transactions withdraw = new Transactions (jeff); + withdraw.withdraw(50.00, "savings"); + Assert.assertEquals(50.00, jeff.getSavAcctBal(), 0.00); + Assert.assertEquals("Withdrew $50.00 from savings.", jeff.transactionHistory.get(0)); //make sure it's also printing to transaction history + //System.out.println(jeff.transactionHistory.get(0)); //ignore this - it's just a double check on the format + + } + + @Test //insufficient funds - withdraw aborted + public void withdrawTest2(){ + Account jeff = new Account ("Jeff", "Smith", 1234); + jeff.setSavAcctBal(100.00); + Transactions withdraw = new Transactions(jeff); + withdraw.withdraw(200.00, "savings"); + Assert.assertEquals(100.00, jeff.getSavAcctBal(),0.00); + } + + //write a test to make sure transaction history is getting recorded for withdrawals + + @Test //from checking to savings + public void transferTest(){ + Account jeff = new Account ("Jeff", "Smith", 1234); + jeff.setChkAcctBal(100.00); + jeff.setSavAcctBal(500.00); + Transactions transfer = new Transactions(jeff); + transfer.transfer(50.00, "checking", jeff, "savings"); + Assert.assertEquals(50.00, jeff.getChkAcctBal(), 0.00); + Assert.assertEquals(550.00, jeff.getSavAcctBal(), 0.00); + } + + @Test //from checking to someone else's checking + public void transferTest2(){ + Account jeff = new Account ("Jeff", "Smith", 1234); + Account stan = new Account ("Stan", "Smith", 3434); + jeff.setChkAcctBal(100.00); + stan.setChkAcctBal(500.00); + Transactions transfer = new Transactions(jeff); + transfer.transfer(50.00, "checking", stan, "checking"); + Assert.assertEquals(50.00, jeff.getChkAcctBal(), 0.00); + Assert.assertEquals(550.00, stan.getChkAcctBal(), 0.00); + } + + @Test + public void closeAccount(){ + Account jeff = new Account ("Jeff", "Smith", 1234); + jeff.setChkAcctBal(0.00); + jeff.setSavAcctBal(0.00); + jeff.setInvAcctBal(0.00); + Transactions closeAccount = new Transactions(jeff); + closeAccount.closeAccount(); + Assert.assertEquals(null, jeff.getFirstName()); + Assert.assertEquals(null, jeff.getLastName()); + Assert.assertEquals(1000, jeff.getPin()); + } + + @Test + public void forceCloseAccount(){ + Account jeff = new Account ("Jeff", "Smith", 1234); + jeff.setChkAcctBal(50.00); + jeff.setSavAcctBal(150.00); + jeff.setInvAcctBal(100.00); + Transactions forceCloseAccount = new Transactions(jeff); + forceCloseAccount.forceCloseAccount(); + Assert.assertEquals(0.00, jeff.getChkAcctBal(), 0.00); + Assert.assertEquals(0.00, jeff.getSavAcctBal(),0.00); + Assert.assertEquals(0.00, jeff.getInvAcctBal(),0.00); + Assert.assertEquals(null, jeff.getFirstName()); + Assert.assertEquals(null, jeff.getLastName()); + Assert.assertEquals(1000, jeff.getPin()); + } + + //make one last test that tests the transaction history + @Test + public void transactionHistoryTest(){ + Account jeff = new Account ("Jeff", "Smith", 1234); + Transactions history = new Transactions(jeff); + history.deposit(100.00, "checking"); + history.withdraw(50.00, "checking"); + String[] expected = {"Deposited $100.00 to checking.","Withdrew $50.00 from checking."}; + Assert.assertEquals(expected, history.transactionHistory()); + + } + +} \ No newline at end of file diff --git a/src/main/java/Console.java b/src/main/java/Console.java new file mode 100644 index 0000000..229a44c --- /dev/null +++ b/src/main/java/Console.java @@ -0,0 +1,32 @@ +import java.util.Scanner; + +public class Console { + public static void print(String output, Object... args) { + System.out.printf(output, args); + } + + public static void println(String output, Object... args) { + print(output + "\n", args); + } + + public static String getStringInput(String prompt) { + Scanner scanner = new Scanner(System.in); + println(prompt); + String userInput = scanner.nextLine(); + return userInput; + } + + public static Integer getIntegerInput(String prompt) { + Scanner scanner = new Scanner(System.in); + println(prompt); + Integer userInput = scanner.nextInt(); + return userInput; + } + + public static Double getDoubleInput(String prompt) { + Scanner scanner = new Scanner(System.in); + println(prompt); + Double userInput = scanner.nextDouble(); + return userInput; + } +} diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 05e41a9..e855118 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,9 +1,67 @@ + /** * Created by iyasuwatts on 10/17/17. */ + public class Main { - public static void main(String[] args){ - + public static void main(String[] args) { + + boolean turnOn = true; + { + + + Console.println("Welcome to the ATM ! \n \n" + + "*** *** *** \n" + + "*** *** *** \n" + + "*** *** *** \n" + + "*** *** ***** *** *** *** \n" + + "*** *** ******* *** ******** \n" + + "*********** **** *** *** **** **** \n" + + "*********** *** *** *** *** *** \n" + + "*** *** ********* *** *** *** \n" + + "*** *** ********* *** *** *** \n" + + "*** *** *** *** *** *** \n" + + "*** *** **** *** **** *** \n" + + "*** *** ******** *** ******** \n" + + "*** *** ******* *** *** *** \n" + + " *** \n" + + " *** \n" + + " *** \n==========++=========" + + " \nWould you like to make a new account or do you have an existing account?"); + Integer inputValue = Console.getIntegerInput("Choose an option: \n 1. I have an existing account \n 2. I want to make a new Account\n 3. Exit ATM " + ); + + switch (inputValue) { + case 1: + String usernameValue = Console.getStringInput("Welcome back! \n Please input your username: "); + Integer pinNum = Console.getIntegerInput(" Please input your four digit pin number: "); + Menu.pinMenu(pinNum); + + + break; + + + case 2: + Console.println("Thank you for choosing our bank! Please input your first name:"); + String firstName = Console.getStringInput("First name:"); + String lastName = Console.getStringInput("Last name:"); + System.out.println("Welcome " + firstName + " \n Your new username is :" + firstName + lastName); + Integer newPinNum = Console.getIntegerInput(" Please create your four digit pin number: "); + Menu.pinMenu(newPinNum); + TransactionMenu.accountsMenu(); + + break; + case 3: + turnOn = false; + break; + + default: + Console.println("Error: invalid option"); + break; + } + } System.out.print("Thank you for using our services! Have a nice Day!"); + } } + diff --git a/src/main/java/Menu.java b/src/main/java/Menu.java new file mode 100644 index 0000000..30813c7 --- /dev/null +++ b/src/main/java/Menu.java @@ -0,0 +1,28 @@ +import java.util.InputMismatchException; + +public class Menu { + + public static void pinMenu(Integer pinNum) { + + +// if (pinNumValue== usernamePinNum ){ +// call the transaction methods here +// } + for (int i = 1; i <= 1000; i++) { + try { + + if (pinNum <= 9999 && pinNum >= 1000) { + //takes you to Transactions from here + break; + } else { + System.out.println("Pin must be four digit"); + + } + + } catch (InputMismatchException e) { + + System.out.println("Error use numbers not alphabets or characters"); + } + } + } +} diff --git a/src/main/java/TransactionMenu.java b/src/main/java/TransactionMenu.java new file mode 100644 index 0000000..5cf759f --- /dev/null +++ b/src/main/java/TransactionMenu.java @@ -0,0 +1,66 @@ +import AccountsAndTransactions.Account; + +public class TransactionMenu { + + + public static void accountsMenu() { + + + Integer inputValue = Console.getIntegerInput("Please choose which account you want to access" + + " \n 1. Checkings \n 2. Savings \n 3. Investement \n 4. Quit "); + + + switch (inputValue) { + case 1: + + System.out.println(String.format(" Your Checkings balance is $%.2f",Account.getChkAcctBal())); + System.out.println ("What would you like to do?"); + // transactions(); + + break; + + case 2: + //System.out.println(" Your Savings balance is $" + Account.getSavAcctBal()); + //System.out.println ("What would you like to do?") + // transactions(); + + + break; + + case 3: + //System.out.println(" Your Investment balance is $" + Account.getInvAcctBal()); + //System.out.println ("What would you like to do?") + // transactions(); + + + break; + + + } + } + + + public static void transactions(Integer userInput) { + Integer inputValue = Console.getIntegerInput("Choose an option: \n 1. Deposit \n 2. Withdrawl \n 3. Transfer \n 4. Check Balance" + ); + + switch (inputValue) { + case 1: + // input deposit method here + break; + + case 2: + //input Withdrawl method here + break; + + case 3: + // input Transfer method here + break; + + case 4: + + break; + } + + } +} \ No newline at end of file diff --git a/src/main/java/User.java b/src/main/java/User.java new file mode 100644 index 0000000..5b8b57e --- /dev/null +++ b/src/main/java/User.java @@ -0,0 +1,70 @@ +import AccountsAndTransactions.Account; + +import java.util.ArrayList; + +public class User { + + private String firstName; + private String lastName; + private Integer pin; + private Double balance; + private ArrayList accsStored = new ArrayList(); + + public User() { + } + public User(String firstName, String lastName, Integer pin, Double balance) { + setFirstName(firstName); + setLastName(lastName); + setPin(pin); + setBalance(balance); + } + public String getFirstName() { + return firstName; + } + public void setFirstName(String firstName){ + if (firstName != null){ + this.firstName = firstName; + } + } + + + public String getLastName() { + return lastName; + } + public void setLastName(String lastName) { + if (lastName != null){ + this.lastName = lastName; + } + } + + + public Integer getPin() { + return pin; + } + public void setPin(Integer pin) { + if (pin != null) { + this.pin = pin; + } + } + + + public Double getBalance() { + return balance; + } + public void setBalance(Double balance) { + if (balance >= 0) { + this.balance = balance; + } + } + public void addToBalance(Double amount){ + if (amount > 0){ + balance += amount; + } + } + public void subtractFromBalance(Double amount){ + if (amount > 0){ + balance -= amount; + } + + } +}