forked from kvi1/Java
-
Notifications
You must be signed in to change notification settings - Fork 0
/
BankAccount.java
174 lines (146 loc) · 5.38 KB
/
BankAccount.java
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
// Team Up2U (Ziying Jian, Emily Ortiz, Kartik Vanjani, Scruffy, Applesauce, Krrish)
// APCS
// HW19 - Mo Money Mo Problems ...MORE AWESOME
// 2021-10-18
/*
DISCOVERIES:
- A boolean expression always has to have a true or false return value.
- Unlike Python where you could do num1 < x < num2, Java does not comprehend
that and can only denote more than one inequality through conditional.
- /n is a line break
- void as a return type means nothing is returned.
QCC:
- Why is the inequality between 1000 and 9998 and why isnt it between 1000
and 9999?
- How can authenticate() be used as an actual authenticator?
- What steps do we need to take in order to create an actual sign- in page?
*/
public class BankAccount<pinInput> {
// instance vars
private String name;
private String password;
private int pin;
private long accNumber;
private double balance;
// methods
public String setFullName(String nameInput){
return name = nameInput;
}
public String setPassword(String passwordInput){
return password = passwordInput;
}
public int setPin(int pinInput){
checkPinNumber(pinInput); // digit quals
return pin = pinInput;
}
public void checkPinNumber(int pinInput){
if (1000 <= pinInput && pinInput <= 9998) {
} else {
pin = 9999;
String errorMsg = "Invalid PIN number. Please retry.";
System.out.println(errorMsg);
}
}
// sets and checks acc #
public long setAccNumber(long accInput){
checkAccNumber(accInput);
return accNumber = accInput;
}
// helper function to check whether account # are correct digits
public void checkAccNumber(long accInput){
if (100000000 <= accInput && accInput <= 99999998) {
} else {
accNumber = 99999999;
String errorMsg = "Not a valid account number. Please retry.";
System.out.println(errorMsg);
}
}
// returns acc info
public String accountInfo(){
String retStr = "\nAccount info: \n=============";
retStr += "\n Name: " + name;
retStr = retStr + "\nPassword: " + password;
retStr = retStr + "\nPIN: " + pin;
retStr = retStr + "\nAccount Number: " + accNumber;
retStr = retStr + "\nBalance: " + balance;
retStr = retStr + "\n=======================";
return retStr;
}
// withdraws amt if PIN & pswrd are both correct
public boolean withdraw(double amount, int pinInput, String passwordInput){
if (pinInput == pin && passwordInput == password) {
if (amount > balance) { // checks for exceeding amounts
System.out.println("Your amount is invalid. Please retry.");
return false;
} else {
balance -= amount;
System.out.println("Your new balance is " + balance);
return true;
}
}
else {
System.out.println("Invalid PIN or password. Please retry.");
return false;
}
}
// deposits amt if PIN is correct
public boolean deposit(double amount, int pinInput){
if (pinInput == pin){ // requires only PIN to be correct
if (amount < 0) { // checks for negative amounts
System.out.println("Your amount is invalid. Please retry.");
return false;
} else {
balance += amount;
System.out.println("Your new balance is " + balance);
return true;
}
}
else {
System.out.println("Invalid PIN. Please retry.");
return false;
}
}
// deposits amt if pswrd is correct
public boolean deposit(double amount, String passwordInput){
if (passwordInput == password){ // requires only psswrd to be correct
if (amount < 0) {
System.out.println("Your amount is invalid. Please retry.");
return false;
} else {
balance += amount;
System.out.println("Your new balance is " + balance);
return true;
}
}
else {
System.out.println("Invalid password. Please retry.");
return false;
}
}
// authenticates acc # and password with params
public boolean authenticate(long accInput, String psswd){
if (psswd == password && accInput == accNumber){
return true;
} return false;
}
public static void main(String[] args) {
BankAccount account = new BankAccount();
account.setFullName("Rich Rick");
account.setPassword("1234");
account.setPin(1234);
account.setAccNumber(123456789);// invoking a method through an object
// inspired by Team Nacho Patcho
System.out.println(account.authenticate(123456789, "1234"));
System.out.println(account.accountInfo());
System.out.println();
System.out.println("Depositing: ");
account.deposit(100.0, 1234);
System.out.println("Depositing with negative amount: ");
account.deposit(-100, "1234");
System.out.println();
System.out.println("Withdraw: ");
account.withdraw(100, 1234, "1234");
System.out.println("Withdrawing with negative amount: ");
account.withdraw(600, 1234, "1234");
}
}