728x90
반응형
은행의 회원을 관리하는 프로그램입니다
회원 가입과 탈퇴 기능으로 인원관리가 가능하며 로그인 한 특정 인원의 입출금과 같은 은행업무도 추가하였습니다
계정관리 Class
가입된 은행 고객의 전체 계정수를 카운트하는 역할과 로그인, 입출금을 위한 디스플레이 화면이 구현되어 있는 클래스입니다
코드 옆 주석처리된 번호순으로 설명하겠습니다
- Account() 메서드의 totalCount++;는 전체 계정 개수를 저장하는 역할을 합니다
- 즉 계정이 추가될때마다 하나씩 증가시키라는 뜻으로 결과적으로 하나씩 증가되어 저장된 총값이 해당 은행에 가입되어 있는 회원수 값이 될 것입니다
- 로그인 실패, 성공여부를 가려주는 boolean형 retrunValue 변수를 선언하여 기본값을 false로 세팅했습니다.
- 사용자가 입력한 아이디와 패스워드가 데이터에 저장되어 있는 아이디, 패스워드와 같다면 retrunValue는 true를 리턴합니다
- 멈추지 않는 메뉴동작을 위해 반복 작동할 수 있도록 falg값을 추가하여 while문에 대입했습니다 5번 종료 버튼을 선택할 경우 falg=false;로 메뉴가 종료됩니다
class Account {
public static int totalCount = 0;
public int money = 0;
public String id = null;
public String pw = null;
public Account() {
totalCount++; //1번
}
public Account(String id, String pw) {
this();
this.id = id;
this.pw = pw;
}
public boolean isLogin(String id, String pw) {
boolean retrunValue = false; //2번
if (this.id.equals(id) && this.pw.equals(pw)) {
retrunValue = true;
}
return retrunValue;
}
public void display() {
System.out.println("--------------------");
System.out.println("총 계정수:" + Account.totalCount);
System.out.println("Id:" + id);
System.out.println("Money:" + money);
System.out.println("--------------------");
}
public void add(int money) {
this.money = this.money + money;
}
public void minus(int money) {
this.money = this.money - money;
}
public void menu() {
java.util.Scanner sc = new java.util.Scanner(System.in);
String inputString = null;
boolean falg = true; //3번
while (falg) {
System.out.println(" ");
System.out.println("'" + this.id + "' 고객님 환영합니다!");
System.out.println("1.입금 2.출금 3.종료");
inputString = sc.nextLine();
switch (inputString) {
case "1":
System.out.println(" ");
display();
System.out.println("입금액을 입력하세요");
int money = Integer.parseInt(sc.nextLine());
add(money);
System.out.println(" ");
display();
break;
case "2":
System.out.println(" ");
display();
System.out.println("출금액을 입력하세요");
money = Integer.parseInt(sc.nextLine());
minus(money);
System.out.println(" ");
display();
break;
case "3":
System.out.println("사용을 종료하셨습니다");
falg = false;
break;
default:
System.out.println("잘못된 입력입니다");
}
}
}
}
|
cs |
Bank Class
int totalCount는 Bank Class에 몇개의 은행이 저장되어 있는지,
String name은 은행 이름을 목적으로 선언한 변수입니다
또한 Account클래스에서 생성된 여러개의 고객 계정을 저장하기 위해서는 배열 처리가 필수인데, Account [] account = new Account [10];로 배열을 선언하여 가입된 계정이 10개라고 가정하고 배열을 생성했습니다
생성된 배열에는 int accountCount변수를 선언하여 고객의 정보를 저장할 공간을,
int accountCurrent 변수는 로그인 관련 인덱스를 위한 공간을 위해 생성했습니다
accountCurrent 변수는 로그인 되지 않으면 -1 값을 가지며, 로그인되면 해당 인덱스가 알맞게 로그인된 사용자를 지정해주는 역할을 합니다
class Bank {
public static int totalCount = 0;
public String name = null;
public Account[] account = new Account[10];
public int accountCount = 0;
public int accountCurrent = -1;
public Bank() {
totalCount++;
}
public Bank(String name) {
totalCount++;
this.name = name;
}
public void accountAdd() {
java.util.Scanner sc = new java.util.Scanner(System.in);
System.out.println("가입을 원하는 id를 입력하세요");
String id = sc.nextLine();
if (isId(id)) { // id 중복확인
System.out.println("중복된 아이디 입니다");
return;
}
System.out.println("가입을 원하는 pw를 입력하세요");
String pw = sc.nextLine();
account[accountCount++] = new Account(id, pw);
}
private boolean isId(String id) {
boolean returnValue = false;
for (int i = 0; i < accountCount; i++) {
if (account[i].id.equals(id)) {
returnValue = true;
}
;
}
return returnValue;
}
public void logout() { // 로그아웃
accountCurrent = -1;
System.out.println("로그아웃 되었습니다");
}
public boolean login(String id, String pw) { // 로그인
// 아이디와 패스워드가 같은사람이 존재하면 true를 리턴한다 boolean returnValue = false;
for (int i = 0; i < accountCount; i++) {
if (account[i].isLogin(id, pw)) {
returnValue = true;
accountCurrent = i;
break;
}
} // true면 로그인 성공, returnValue(false)면 로그인 실패
return returnValue;
}
public void displayAll() { // 모든 계정을 보여주는 메소드
System.out.println("총 은행수:" + Bank.totalCount);
System.out.println("현재 은행이름:" + name);
for (int i = 0; i < accountCount; i++) {
account[i].display();
}
}
public void useAccount() {
if (accountCurrent != -1) {
account[accountCurrent].menu();
} else {
System.out.println("잘못된 접근입니다");
}
}
public void menu() { // 은행 메뉴
java.util.Scanner sc = new java.util.Scanner(System.in);
boolean flag = true;
while (flag) {
System.out.println("1.계정등록 2.모든 계정 출력 3.로그인 4.로그아웃 5.계정삭제 6.종료");
String stringInput = sc.nextLine();
switch (stringInput) {
case "1":
accountAdd();
displayAll();
break;
case "2":
displayAll();
break;
case "3":
System.out.println(" ");
System.out.println("어서오세요!");
System.out.println("id를 입력하세요 ☞");
String id = sc.nextLine();
System.out.println("pw를 입력하세요 ☞");
String pw = sc.nextLine();
if (login(id, pw)) {
System.out.println("로그인 되었습니다");
useAccount();
} else {
System.out.println("아이디 또는 비밀번호를 정확히 입력하세요");
}
break;
case "4":
logout();
break;
case "5":
if (accountCurrent != -1) {
System.out.println(" ");
System.out.println("pw를 입력하세요");
pw = sc.nextLine();
delect(pw);
} else {
System.out.println("로그인 하세요");
}
break;
case "6":
System.out.println("이용해주셔서 감사합니다");
flag = false;
break;
default:
System.out.println("잘못된 입력입니다");
}
}
}
public void delect(String pw) { // 로그인 한 상태에서 비밀번호만 입력하여 계정삭제 하는 방식
delect(account[accountCurrent].id, pw);
}
public void delect(String id, String pw) { // 아이디, 패스워드 모두 입력하여 계정삭제하는 방식
boolean flag = false;
for (int i = 0; i < accountCount; i++) {
if (account[i].isLogin(id, pw)) {
accountCurrent = i;
flag = true;
break;
}
}
if (flag = true) { // 찾으면 삭제
for (int i = accountCurrent; i + 1 < accountCount; i++) {
account[i] = account[i + 1];
}
Account.totalCount--;
accountCount--;
accountCurrent = -1;
System.out.println("삭제되었습니다");
} else {
System.out.println("삭제에 실패했습니다");
}
}
}
|
cs |
|
메뉴 실행
Bank 클래스를 bk 변수로 선언한뒤 메뉴를 불러오면 은행관리 프로그램이 실행됩니다.
관리 은행명은 한국은행이라고 가정하였습니다
public class BankPr {
public static void main(String[] args) {
Bank bk = new Bank("한국은행");
bk.menu();
}
}
|
cs |
<전체 코드>
package com.human.ex;
class Account {
public static int totalCount = 0;
public int money = 0;
public String id = null;
public String pw = null;
public Account() {
totalCount++;
}
public Account(String id, String pw) {
this();
this.id = id;
this.pw = pw;
}
public boolean isLogin(String id, String pw) {
boolean retrunValue = false;
if (this.id.equals(id) && this.pw.equals(pw)) {
retrunValue = true;
}
return retrunValue;
}
public void display() {
System.out.println("--------------------");
System.out.println("총 계정수:" + Account.totalCount);
System.out.println("Id:" + id);
System.out.println("Money:" + money);
System.out.println("--------------------");
}
public void add(int money) {
this.money = this.money + money;
}
public void minus(int money) {
this.money = this.money - money;
}
public void menu() {
java.util.Scanner sc = new java.util.Scanner(System.in);
String inputString = null;
boolean falg = true;
while (falg) {
System.out.println(" ");
System.out.println("'" + this.id + "' 고객님 환영합니다!");
System.out.println("1.입금 2.출금 3.종료");
inputString = sc.nextLine();
switch (inputString) {
case "1":
System.out.println(" ");
display();
System.out.println("입금액을 입력하세요");
int money = Integer.parseInt(sc.nextLine());
add(money);
System.out.println(" ");
display();
break;
case "2":
System.out.println(" ");
display();
System.out.println("출금액을 입력하세요");
money = Integer.parseInt(sc.nextLine());
minus(money);
System.out.println(" ");
display();
break;
case "3":
System.out.println("사용을 종료하셨습니다");
falg = false;
break;
default:
System.out.println("잘못된 입력입니다");
}
}
}
}
class Bank {
public static int totalCount = 0;
public String name = null;
public Account[] account = new Account[10];
public int accountCount = 0;
public int accountCurrent = -1;
public Bank() {
totalCount++;
}
public Bank(String name) {
totalCount++;
this.name = name;
}
public void accountAdd() {
java.util.Scanner sc = new java.util.Scanner(System.in);
System.out.println("가입을 원하는 id를 입력하세요");
String id = sc.nextLine();
if (isId(id)) { // id 중복확인
System.out.println("중복된 아이디 입니다");
return;
}
System.out.println("가입을 원하는 pw를 입력하세요");
String pw = sc.nextLine();
account[accountCount++] = new Account(id, pw);
}
private boolean isId(String id) {
boolean returnValue = false;
for (int i = 0; i < accountCount; i++) {
if (account[i].id.equals(id)) {
returnValue = true;
}
;
}
return returnValue;
}
public void logout() {
accountCurrent = -1;
System.out.println("로그아웃 되었습니다");
}
public boolean login(String id, String pw) {
boolean returnValue = false;
for (int i = 0; i < accountCount; i++) {
if (account[i].isLogin(id, pw)) {
returnValue = true;
accountCurrent = i;
break;
}
}
return returnValue;
}
public void displayAll() {
System.out.println("총 은행수:" + Bank.totalCount);
System.out.println("현재 은행이름:" + name);
for (int i = 0; i < accountCount; i++) {
account[i].display();
}
}
public void useAccount() {
if (accountCurrent != -1) {
account[accountCurrent].menu();
} else {
System.out.println("잘못된 접근입니다");
}
}
public void menu() {
java.util.Scanner sc = new java.util.Scanner(System.in);
boolean flag = true;
while (flag) {
System.out.println("1.계정등록 2.모든 계정 출력 3.로그인 4.로그아웃 5.계정삭제 6.종료");
String stringInput = sc.nextLine();
switch (stringInput) {
case "1":
accountAdd();
displayAll();
break;
case "2":
displayAll();
break;
case "3":
System.out.println(" ");
System.out.println("어서오세요!");
System.out.println("id를 입력하세요 ☞");
String id = sc.nextLine();
System.out.println("pw를 입력하세요 ☞");
String pw = sc.nextLine();
if (login(id, pw)) {
System.out.println("로그인 되었습니다");
useAccount();
} else {
System.out.println("아이디 또는 비밀번호를 정확히 입력하세요");
}
break;
case "4":
logout();
break;
case "5":
if (accountCurrent != -1) {
System.out.println(" ");
System.out.println("pw를 입력하세요");
pw = sc.nextLine();
delect(pw);
} else {
System.out.println("로그인 하세요");
}
break;
case "6":
System.out.println("이용해주셔서 감사합니다");
flag = false;
break;
default:
System.out.println("잘못된 입력입니다");
}
}
}
public void delect(String pw) {
delect(account[accountCurrent].id, pw);
}
public void delect(String id, String pw) {
boolean flag = false;
for (int i = 0; i < accountCount; i++) {
if (account[i].isLogin(id, pw)) {
accountCurrent = i;
flag = true;
break;
}
}
if (flag = true) {
for (int i = accountCurrent; i + 1 < accountCount; i++) {
account[i] = account[i + 1];
}
Account.totalCount--;
accountCount--;
accountCurrent = -1;
System.out.println("삭제되었습니다");
} else {
System.out.println("삭제에 실패했습니다");
}
}
}
public class BankPr {
public static void main(String[] args) {
Bank bk = new Bank("한국은행");
bk.menu();
}
}
|
cs |
<실행화면>
실행화면 입니다
728x90
반응형
'개발자였던 것 > JAVA 프로그래밍' 카테고리의 다른 글
[java] 스택 소스 (0) | 2020.08.18 |
---|---|
[java] 다마고치 게임 (0) | 2020.05.08 |
사용자로부터 국어, 영어, 수학 점수를 입력 받아, 각 과목별 점수가 평균 이상인지 이하인지 구현하는 조건문 (0) | 2020.03.28 |
사각형의 넓이와 둘레를 구하는 메소드 구현 (0) | 2020.03.26 |
블랙잭 게임 메소드 구현 (0) | 2020.03.23 |