package object_array_guide.account;
public class Account {
String ano; // 계좌번호
String owner; // 계좌주
int balance; // 잔고
String password; // 비밀번호
// 기본생성자
public Account() {}
// 전체값을 넘겨받는 생성자
public Account(String ano, String owner, int balance, String password) {
this.ano = ano;
this.owner = owner;
this.balance = balance;
this.password = password;
}
public String toString() {
return "Account[ ano : "+this.ano+" owner : " + this.owner + " balance : " + this.balance +" ]";
}
}
package object_array_guide.account;
import java.util.Scanner;
public class BankApplication {
Account[] account = new Account[100];
int count = 0;
Scanner sc = new Scanner(System.in);
BankApplication(){
run();
}
void run() {
// 1. 계좌생성
// 2. 계좌조회
// 3. 예금
// 4. 출금
// 5. 종료
boolean isRun = true;
while(isRun) {
System.out.println("========================================");
System.out.println("1.계좌생성 2.계좌조회 3.예금 4.출금 5.종료");
System.out.println("========================================");
System.out.println("이용하실 메뉴 번호를 입력해주세요 > ");
int selectNo = sc.nextInt();
if(selectNo == 1) {
// 계좌생성
createAccount();
}else if(selectNo ==2) {
// 계좌조회
selectAccount();
}else if(selectNo ==3) {
// 예금
deposit();
}else if(selectNo ==4) {
// 출금
withdraw();
}else if(selectNo ==5) {
// 종료
isRun = false;
sc.close();
}
}
System.out.println("프로그램 종료");
}
//계좌생성
void createAccount() {
//내코드
// System.out.print("계좌주: ");
// String owner = sc.next();
// System.out.print("계좌번호: ");
// String ano = sc.next();
// System.out.print("초기입금액: ");
// int balance = sc.nextInt();
// System.out.print("비밀번호: ");
// String password = sc.next();
// account[count] = new Account(owner,ano,balance,password);
// System.out.println("계좌생성이 완료되었습니다.");
// count++;
System.out.println("----------------");
System.out.println("1. 계좌생성");
System.out.println("----------------");
Account newAccount = new Account();
System.out.println("계좌주 : ");
newAccount.owner = sc.next();
System.out.println("계좌번호 : ");
newAccount.ano = sc.next();
System.out.println("초기입금액 : ");
newAccount.balance = sc.nextInt();
System.out.println("비밀번호 : ");
newAccount.password = sc.next();
//null값이 아닌 배열의 첫번째에 새로운 계좌 정보 저장.
for(int i = 0; i<account.length;i++) {
if(account[i]== null) {
account[i] = newAccount;
System.out.println("계좌생성이 완료되었습니다.");
break;
}
}
}
// 계좌조회
void selectAccount() {
//내코드
// System.out.println("----------------");
// System.out.println("계좌목록");
// System.out.println("----------------");
// System.out.print("계좌번호 : ");
// String ano = sc.next();
// System.out.print("비밀번호 : ");
// String password = sc.next();
// Account ac=findAccount(ano,password);
// System.out.println(ac);
System.out.println("----------------");
System.out.println("2. 계좌조회");
System.out.println("----------------");
System.out.println("계좌번호 > ");
String ano = sc.next();
System.out.println("비밀번호 > ");
String password = sc.next();
Account registAccount = findAccount(ano,password);
if(registAccount == null) {
System.out.println("일치하는 계좌 정보가 없습니다. ");
}else {
System.out.println(registAccount.toString());
}
}
// 예금
void deposit() {
//내 코딩
// System.out.println("----------------");
// System.out.println("예금");
// System.out.println("----------------");
// System.out.print("계좌번호 : ");
// String ano = sc.next();
// System.out.print("비밀번호 : ");
// String password = sc.next();
// System.out.print("예금액 : ");
// int input =sc.nextInt();
// Account ac = findAccount(ano,password);
// ac.balance +=input;
// System.out.println(ac.owner+"님의 계좌입금이 완료되었습니다.");
System.out.println("----------------");
System.out.println("3. 예금");
System.out.println("----------------");
System.out.println("계좌번호 > ");
String ano = sc.next();
System.out.println("비밀번호 > ");
String password = sc.next();
Account registAccount = findAccount(ano, password);
if(registAccount == null) {
System.out.println("계좌정보가 존재하지 않습니다.");
return;
}
//계좌 정보가 존재
System.out.println("예금액 : ");
int money = sc.nextInt();
registAccount.balance += money;
System.out.printf(
"%s님의 계좌에 %,d원이 입금되었습니다.%n",
registAccount.owner,
money
);
}
//출금
void withdraw() {
// 내 코드
// System.out.println("----------------");
// System.out.println("출금");
// System.out.println("----------------");
// System.out.print("계좌번호 : ");
// String ano = sc.next();
// System.out.print("비밀번호 : ");
// String password = sc.next();
// System.out.print("출금 : ");
// int output =sc.nextInt();
// Account ac = findAccount(ano,password);
// ac.balance -=output;
// System.out.println(ac.owner+"님의 계좌출금이 완료되었습니다.");
System.out.println("----------------");
System.out.println("4. 출금");
System.out.println("----------------");
System.out.println("계좌번호 : ");
String ano = sc.next();
System.out.println("비밀번호 : ");
String password = sc.next();
Account regist = findAccount(ano, password);
if(regist !=null ) {
System.out.println("출금액 : ");
int money = sc.nextInt();
int result = regist.balance - money;
if(result <0) {
System.out.println("잔고가 부족합니다.");
return;
}
//잔액 존재 - 출금할 수 있는 금액
regist.balance = result;
System.out.printf(
"%s님의 계좌에 %,d원이 출금되었습니다.%n",
regist.owner,
money
);
//출금 완료
return;
}
System.out.println("일치하는 계좌 정보가 없습니다.");
}
// 계좌번호와 비밀번호가 일치하는 Account 객체를 찾아서 반환
Account findAccount(String ano, String password) {
//내코드
// Account ac=null;
// for(int i=0; i <account.length;i++) {
// if(account[i]!=null) {
// if(account[i].ano.equals(ano) && account[i].password.equals(password)) {
// ac = account[i];
// }
// }
// }
// return ac;
for(int i = 0; i<account.length;i++) {
if(account[i] != null
&&
account[i].ano.equals(ano)
&&
account[i].ano.equals(password)) {
return account[i];
}
}
return null; //맞는 계정 못찾으면 null값 반환
}
public static void main(String[] args) {
new BankApplication();
}
}
package object_array_guide.book;
public class Book {
// 도서관리 번호
int num;
// 도서 제목
String title;
// 도서 저자
String author;
public Book() {}
public Book(int num, String title, String author) {
this.num = num;
this.title = title;
this.author = author;
}
public String toString() {
return "Book{ [num : "+this.num+"] [title : " +this.title +"] [author : " + this.author + "]}";
}
}
package object_array_guide.book;
import java.util.Scanner;
public class BookManagement {
// 문자열 입력 (nextline사용시 스캐너를 따로 생성해줘야한다)
Scanner scanLine = new Scanner(System.in);
// 선택번호 입력
Scanner scanSelectNum = new Scanner(System.in);
// 도서목록
Book[] books = new Book[100];
// 프로그램 실행 flag
boolean isRun = true;
// 메인 메뉴 선택 번호
int selectNo = 0;
// 도서관리 번호
int count=1;
public BookManagement(){
run();
}
public void run() {
while(isRun) {
System.out.println("================================================");
System.out.println("1.도서등록 | 2. 도서목록 | 3.도서수정 | 4.도서삭제 | 5. 종료");
System.out.println("================================================");
selectNo = getSelectNum("번호를 선택하세요 > ");
switch(selectNo) {
case 1 :
registerBook();
break;
case 2 :
selectBook();
break;
case 3 :
updateBook();
break;
case 4 :
deleteBook();
break;
case 5 :
terminate();
break;
default :
System.out.println("등록된 메뉴가 아닙니다.");
}
}
}
// 프로그램 종료
public void terminate() {
System.out.println("프로그램 종료");
isRun = false;
}
// 도서 등록
public void registerBook() {
//내 코딩
// System.out.println("1. 도서등록");
// System.out.println("등록할 책의 제목을 입력하세요 >");
// String title = scanLine.next();
// System.out.println("등록할 책의 저자를 입력하세요 >");
// String author = scanLine.next();
// books[count] = new Book(count,title,author);
// System.out.println("등록완료");
// count++;
System.out.println("1. 도서등록");
// 제목, 저자
String title = getData("등록할 도서의 책제목을 입력해주세요 > ");
String author = getData("등록할 도서의 저자를 입력해주세요 > ");
for(int i=0; i<books.length; i++) {
if(books[i] == null) {
Book book = new Book(count++,title,author);
books[i] = book;
System.out.println("등록 완료!");
break;
}
}
}
// 도서 목록 출력
public void selectBook() {
System.out.println("2. 도서목록");
//내코딩
// for(int i=0;i<books.length;i++) {
// if(books[i]!=null) {
// System.out.println(books[i]);
// }
// }
for(Book book : books) {
if(book != null) System.out.println(book.toString());
}
}
// 도서 정보 수정
public void updateBook() {
System.out.println("3. 도서수정");
//내코딩
// System.out.println("수정할 책의 도서관리번호를 입력하세요 > ");
// int num = scanSelectNum.nextInt();
// Book target =findBook(num);
// System.out.println(target);
// boolean isRun2 = true;
// smallMenu :while(isRun2) {
// System.out.println("==================================");
// System.out.println("1. 제목수정 | 2. 저자 수정 | 3. 수정완료");
// System.out.println("==================================");
// System.out.println("번호입력 > ");
// int selectNum = scanSelectNum.nextInt();
// switch(selectNum) {
// case 1:
// System.out.println("제목입력 >");
// String name = scanLine.next();
// target.title=name;
// System.out.println("제목 수정 완료 >");
// break;
// case 2:
// System.out.println("저자입력 >");
// String person = scanLine.next();
// target.author=person;
// System.out.println("저자 수정 완료 >");
// break;
// case 3:
// break smallMenu;
// }
// }
int bookNum = getSelectNum("수정할 책의 관리번호를 입력해주세요.");
//book배열에서 도서관리번호가 일치하는 책 정보를 검색
Book book = findBook(bookNum);
if(book == null) {
System.out.println("입력하신 관리번호의 책이 존재하지 않습니다.");
return;
}
//도서관리 번호가 일치하는 책 정보 존재
//도서 정보 수정
System.out.println(book.toString());
boolean isUpdate = true;
while(isUpdate) {
System.out.println("==================================");
System.out.println("1. 제목수정 | 2. 저자수정 | 3. 수정완료");
System.out.println("==================================");
selectNo = getSelectNum("번호 입력 >");
switch(selectNo) {
case 1 :
System.out.println("제목 수정");
String title = getData("제목입력 >");
book.title = title;
System.out.println("제목 수정 완료");
break;
case 2 :
System.out.println("저자 수정");
String author = getData("저자입력 >");
book.author = author;
System.out.println("저자 수정 완료");
break;
case 3 :
System.out.println("수정 완료");
isUpdate = false;
break;
default : System.out.println("등록된 메뉴가 아닙니다.");
}//end switch
}// end update while
} // end updateBook
// 도서 목록에서 책 정보 삭제
public void deleteBook() {
System.out.println("4. 도서삭제");
//내코딩
// System.out.println("삭제할 책의 도서관리번호를 입력하세요 > ");
// int num = scanSelectNum.nextInt();
// Book target =findBook(num);
// int index = 0;
// for(int i=0; i<books.length;i++) {
// if(target == books[i]) {
// target=null;
// books[i]=null;
// System.out.println("선택하신 도서가 삭제되었습니다.");
// return;
// }
// }
int bookNum = getSelectNum("삭제할 도서의 관리번호를 입력해주세요");
//동일한 도서관리번호의 책을 검색
Book book = findBook(bookNum);
if(book == null ) {
System.out.println("입력하신 관리번호의 책이 존재하지 않습니다");
return;
}
//일치하는 도서관리 번호의 책 존재
//책장에서 책 삭제
for(int i = 0; i < books.length; i++) {
if(books[i]==book) { // 배열에서 주소값을 비교하는거니까 nullpointerexception 발생 안함.
books[i]=null;
System.out.println("삭제 완료");
break;
}
}
}
// 책 정보 출력
public void printBookInfo(Book b) {
System.out.println(b.toString());
}
// 도서관리번호로 책 정보 찾기
public Book findBook(int num) {
//내코딩
// Book bookInfo = null;
// for(int i=0;i<books.length;i++) {
// if(books[i]!=null) {
// if(books[i].num==num) {
// bookInfo = books[i];
// }
// }
// }
// return bookInfo;
for(Book book : books) {
if(book != null && book.num == num) {
return book;
}
}
return null;
}
// 사용자에게 메시지를 전달 받아 출력하고 문자열 값 받아 반환
String getData(String message) {
System.out.println(message);
return scanLine.nextLine();
}
// 번호 선택 받기
int getSelectNum(String message) {
System.out.println(message);
if(!scanSelectNum.hasNextInt()) {
System.out.println("숫자를 입력해주세요.");
scanSelectNum.next();
return 0;
}
return scanSelectNum.nextInt();
}
public static void main(String[] args) {
new BookManagement();
}
}
package object_array_guide.member;
public class JavaApplication {
public static void main(String[] args) {
new MemberManagement();
}
}
package object_array_guide.member;
public class Member {
// 회원관리번호
int mNum;
// 회원 이름
String mName;
// 회원 아이디
String mId;
// 회원 비밀번호
String mPw;
Member() {}
// 회원 로그인 및 정보 검색용 생성자
Member(String mId, String mPw) {
this.mId = mId;
this.mPw = mPw;
}
// 회원가입 용
Member(int mNum, String mName, String mId, String mPw) {
this(mId,mPw);
this.mNum = mNum;
this.mName = mName;
}
boolean equals(Member member) {
if(member == null) return false;
if(this.mId.equals(member.mId) && this.mPw.equals(member.mPw)) {
return true;
}
return false;
}
public String toString() {
return "Member{ [mNum : "+this.mNum+"] [mName : " +this.mName +"] [ mId : " + this.mId+"]}";
}
}
package object_array_guide.member;
import java.util.Scanner;
public class MemberManagement{
// int count=0;
// 사용자 입력
Scanner sc = new Scanner(System.in);
// 회원정보 저장
Member[] members = new Member[100];
// 관리자 계정
Member master = new Member(100,"master","root","root");
// 로그인한 회원
Member loginMember = null;
// 프로그램 flag (true : 진행 , false : 종료)
boolean isRun = true;
// 메뉴 번호 선택
int selectNo;
// 프로그램 실행용 생성자
MemberManagement() {
// 회원목록 배열 마지막 인덱스에 관리자 계정 저장
members[members.length-1] = master;
// 회원관리 메소드 호출
isRun();
}
/*
* 기능 관리
*/
// 프로그램 실행
void isRun() {
while(isRun) {
System.out.println("===========================================================");
System.out.println("1.회원가입|2.로그인|3.회원목록|4.회원정보수정|5.회원탈퇴|6.프로그램 종료");
System.out.println("===========================================================");
System.out.println("메뉴 선택 > ");
if(!sc.hasNextInt()) {
System.out.println("번호를 입력해주세요>");
sc.next();
continue;
}
selectNo = sc.nextInt();
switch(selectNo) {
case 1 :
System.out.println("== 회원가입 == ");
join();
break;
case 2 :
System.out.println("== 로그인 == ");
login();
break;
case 3 :
System.out.println("== 회원목록 == ");
select();
break;
case 4 :
System.out.println("== 회원정보수정 == ");
update();
break;
case 5 :
System.out.println("== 회원탈퇴 == ");
delete();
break;
case 6 :
System.out.println("== 종료 == ");
terminate();
break;
default :
System.out.println("선택할 수 없는 번호입니다.");
} // switch 종료
} // while 종료
} // run 종료
// 프로그램 종료
void terminate() {
isRun = false;
}
// 회원 가입
void join() {
// System.out.println("회원가입 > ");
// System.out.println("사용정보를 입력해주세요--------------");
// System.out.println("아이디를 입력해주세요 >");
// String id = sc.next();
// System.out.println("비밀번호를 입력해주세요 >");
// String pw1 = sc.next();
// System.out.println("비밀번호를 확인해주세요 >");
// String pw2 = sc.next();
// if(!pw1.equals(pw2)|| !memberIdCheck(id)) {
// System.out.println("이미 사용중이거나 비밀번호가 일치하지 않습니다.");
// return;
// }
// System.out.println("이름을 입력해주세요 >");
// String name = sc.next();
// Member member = new Member(count,name,id,pw1);
// members[count] = member;
// System.out.println("회원가입 완료");
// count++;
System.out.println("아이디를 입력해주세요 > ");
String id = sc.next();
System.out.println("비밀번호를 입력해주세요 > ");
String pw = sc.next();
System.out.println("비밀번호를 한번 더 입력해주세요 >");
String rePw = sc.next();
// 아이디 중복 체크, 비밀번호 일치 체크
if(!memberIdCheck(id)||!pw.equals(rePw)) {
// 사용할 수 없는 중복 아이디
System.out.println("이미 사용중인 아이디 이거나 비밀번호가 일치하지 않습니다.");
return;
}
System.out.println("이름을 입력해주세요 >");
String name = sc.next();
//회원정보등록 members
for(int i = 0; i < members.length;i++) {
if(members[i] == null) {
members[i] = new Member((i+1),name,id,pw); // 회원이 등록된 index +1 : 회원관리번호(이렇게 하면 중복안됨)
System.out.println("회원가입 완료");
break;
}
}
}
// 로그인
void login() {
// System.out.println("아이디를 입력해주세요 >");
// String id = sc.next();
// System.out.println("비밀번호를 입력해주세요 >");
// String pw1 = sc.next();
// if(findMember(new Member(id,pw1))==master) {
// System.out.println("관리자 계정입니다.");
// }else if(findMember(new Member(id,pw1))==null) {
// System.out.println("일치하는 멤버가 없습니다.");
// return;
// }
// loginMember = findMember(new Member(id,pw1));
// System.out.println("정상적으로 로그인되었습니다.");
// System.out.println(loginMember);
//
System.out.println("아이디를 입력해주세요 >");
String id = sc.next();
System.out.println("비밀번호를 입력해주세요 >");
String pw = sc.next();
/*// 굳이 이렇게 변수m 선언 할 필요 x
Member m = new Member(id,pw);
Member member = findMember(m);
*/
Member member = findMember(new Member(id,pw));
if(member==null) {
System.out.println("일치하는 사용자 정보가 존재하지 않습니다.");
return;
}
//id와 pw가 일치하는 인증된 사용자 존재
System.out.println("정상적으로 로그인되었습니다.");
//프로그램 종료 시 까지 유지되는 필드에 로그인 된 사용자 정보 저장
loginMember = member;
System.out.println(loginMember);
if(loginMember == master ) {
System.out.println("관리자 계정");
}
}
// 회원목록 - 로그인한 회원이 관리자 일때만 노출
void select() {
// System.out.println("회원목록 >");
// if(loginMember==null) {
// System.out.println("로그인하시기 바랍니다.");
// return;
// }
// if(loginMember.equals(master)){
// for(int i=0;i<members.length;i++) {
// if(members[i]!=null) {
// System.out.println(members[i]);
// }
// }
// }else {
// System.out.println("관리자만 확인가능한 메뉴입니다.");
// }
if(loginMember != master) { //주소값 비교하는거니까 이렇게 사용 가능.
System.out.println("관리자만 확인 가능한 메뉴입니다.");
return;
}
for(Member m : members) {
if(m != null)System.out.println(m.toString());
}
}
// 회원정보 수정 - 로그인한 회원 정보랑 일치 하거나 관리자 일때만 수정(이름정보만 수정)
void update() {
// System.out.println("내정보 수정 -----");
// System.out.println("비밀번호를 한번 더 입력해주세요>");
// String pw = sc.next();
// if(loginMember==null) {
// System.out.println("로그인하시기 바랍니다.");
// return;
// }
// if(loginMember.equals(master)){
// for(int i=0;i<members.length;i++) {
// if(members[i]!=null) {
// System.out.println(members[i]);
// }
// }
// System.out.println("수정할 회원 번호를 입력해주세요.");
// int num = sc.nextInt();
// System.out.println("수정할 회원의 이름을 입력해주세요 >");
// String name = sc.next();
// for(int i=0;i<members.length;i++) {
// if(members[i]!=null) {
// if(members[i].mNum==num) {
// members[i].mName=name;
// }
// }
// }
// System.err.println("수정완료");
// }else if(loginMember.mPw.equals(pw)){
// System.out.println("수정할 이름을 입력해주세요 >");
// String name = sc.next();
// loginMember.mName = name;
// System.out.println("내정보 수정완료");
// }else {
// System.out.println("계정 정보가 일치하지 않습니다.");
// }
//개인회원 - 자신의 이름정보 수정
//관리자 - 전체 회원의 이름 정보 수정
// 비로그인시 기능 수행 불가
if(loginMember == null) {
System.out.println("로그인 이후 사용가능한 메뉴입니다.");
return;
}
if(loginMember != master) {
//일반회원
System.out.println("== 내 정보 수정 ==");
System.out.println("비밀번호를 입력해 주세요.");
String pw = sc.next();
if(!loginMember.mPw.equals(pw)) {
System.out.println("비밀번호가 일치하지 않습니다.");
return;
}
System.out.println("수정할 이름을 입력해주세요 > ");
loginMember.mName = sc.next();
System.out.println("수정이 완료되었습니다.");
System.out.println(loginMember);
}else {
//관리자
System.out.println("== 관리자 회원 정보 수정 ==");
// 관리자 일 경우 등록된 회원 정보 출력
select();
System.out.println("수정할 회원 번호를 입력해주세요 > ");
int num = sc.nextInt();
for(int i = 0; i< members.length; i++) {
if(members[i]!=null && members[i].mNum == num) {
System.out.println("수정할 회원의 이름을 입력해주세요.");
String name = sc.next();
members[i].mName = name;
System.err.println("수정 완료");
return;
}
}//end for
System.out.println("일치하는 사용자를 찾을 수 없습니다.");
}//end if
}// end update
// 회원탈퇴 - 삭제 할려는 정보가 본인 정보일때만 삭제
void delete() {
System.out.println("회원탈퇴 >");
// if(loginMember==null) {
// System.out.println("로그인하시기 바랍니다.");
// return;
// }
// if(loginMember.equals(master)) {
// System.out.println("master 계정은 삭제할 수 없습니다.");
// }else {
// System.out.println("정말로 탈퇴 하시겠습니까? y/n");
// char delete = sc.next().charAt(0);
// if(delete=='y'|delete=='Y') {
// deleteMember();
// System.out.println("회원탈퇴 완료");
// }else {
// System.out.println("취소되었습니다.");
// }
// }
//관리자 계정은 삭제 불가
if(loginMember == master) {
System.out.println("관리자 계정은 삭제할 수 없습니다.");
return;
}
System.out.println("정말로 탈퇴 하시겠습니까? y/n");
//sc.next().charAt(0); : 스캐너 next에서 제일 앞에 문자만 잘라올때 사용
// 0 1 2
//[y][e][s]
char c = sc.next().charAt(0);
switch(c) {
case 'Y': case 'y' : case 'ㅛ':
// 회원정보 삭제
deleteMember();
break;
default : System.out.println("취소되었습니다.");
}
}
// 사용자 아이디 중복 체크 - 동일한 아이디 값으로 등록된 회원 정보 검색
// 이미 존재하는 아이디 일경우 : false, 사용가능한 아이디 일 경우 : true
boolean memberIdCheck(String mId) {
for(Member m : members) {
if(m != null && m.mId.equals(mId)) {
return false;
}
}
return true;
}
// 회원 아이디와 비밀번호로 회원 찾기
Member findMember(Member m) {
for(Member member : members) {
if(member != null && member.equals(m)) {
return member;
}
}
return null;
}
// 회원 정보 삭제
void deleteMember() {
for(int i=0; i<members.length; i++) {
if(members[i].equals(loginMember)) {
members[i] = null;
loginMember = null;
System.out.println("회원탈퇴 완료");
return;
}
}
}
}
'Java' 카테고리의 다른 글
04.28 캡슐화 , 싱글톤, 상속 , 오버라이드 , 다형성 (0) | 2023.04.28 |
---|---|
0427 접근제한자 (0) | 2023.04.27 |
04.26 평가 틀린거 (0) | 2023.04.27 |
04.25 클래스, 객체배열 (0) | 2023.04.25 |
자바 실습, 반복문, 배열, 별찍기,좌석예약 (0) | 2023.04.24 |