public class Seller extends Member{
private String Store;
public Seller(String name, String id, int pw, String Store) {
super(name, id, pw); // 생성자
this.Store = Store;
}
public String getStore() { //getter setter
return Store;
}
public void setStore(String Store) {
this.Store = Store;
}
public String toString() {
return String.format("[판매자 정보]\nID : %s\n이름 : %s\nPW : ********\n가게주소 : %s", getId(),getName(),getStore());
}
}
public class Customer extends Member {
private String adress;
public Customer(String name, String id, int pw, String adress) {
super(name, id, pw);
this.adress = adress;
}
public String getAdress() {
return adress;
}
public void setAdress(String adress) {
this.adress = adress;
}
public String toString() {
return String.format("[구매자 정보]\nID : %s\n이름 : %s\nPW : ********\n배송주소 : %s", getId(),getName(),getAdress());
}
}
public class Member {
public Member(String id,String name, int pw) {
this.name = name;
this.id = id;
this.pw = pw;
}
private String name,id;
private int pw;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getPw() {
return pw;
}
public void setPw(int pw) {
this.pw = pw;
}
}
import java.util.ArrayList;
public class Handler {
ArrayList<Member> list = new ArrayList<Member>();
public int insert(Member me) {
int com = 1;
if (list.isEmpty()) {
list.add(me);
} else {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getId().equals(me.getId())) {
com = 0;
break;
}
}
if (com == 1) {
list.add(me);
}
return com;
}
public ArrayList<Member> select() {
ArrayList<Member> list = this.list;
return list;
}
public Member search(String id) {
Member m = null;
for (Member mm : list) {
if (id.equals(mm.getId())) {
m = mm;
}
}
return m;
}
public int delete(String id) {
boolean flag = list.removeIf(me -> me.getId().equals(id));
return flag ? 1 : 0;
}
}
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String id, adress, Store, name, yesor = null;
int com;
int pw;
int menu, type,row;
Member me = null;
Handler handler = new Handler();
ArrayList<Member> list = null;
System.out.println();
System.out.println(" 쇼핑몰 회원관리 프로그램 (응시자 : 김재호)\n");
do {
System.out.println();
System.out.println("1. 회원가입 ");
System.out.println("2. 전체목록 ");
System.out.println("3. 회원검색 ");
System.out.println("4. 회원탈퇴 ");
System.out.println("0. 종료 ");
System.out.print("메뉴 선택 >>>");
menu = Integer.parseInt(sc.nextLine());
switch (menu) {
case 1:
System.out.print("회원 유형을 선택하세요 (1. 구매자 | 2. 판매자) : ");
type = Integer.parseInt(sc.nextLine());
System.out.print("ID를 입력하세요 : ");
id = sc.nextLine();
System.out.print("이름을 입력하세요 : ");
name = sc.nextLine();
System.out.print("Password를 입력하세요 : ");
pw = Integer.parseInt(sc.nextLine());
if (type == 1) {
System.out.print("배송주소를 입력하세요 : ");
adress = sc.nextLine();
me = new Customer(id, name, pw, adress);
} else if (type == 2) {
System.out.print("가게이름을 입력하세요 : ");
Store = sc.nextLine();
me = new Seller(id, name, pw, Store);
}
com = handler.insert(me);
if(com == 1) {
System.out.println("회원가입이 정상적으로 처리되었습니다");
}else {
System.err.println("중복되는 ID가 있습니다");
}
break;
case 2:
list = handler.select();
for (Member s : list) {
System.out.println(s);
System.out.println();
}
break;
case 3:
System.out.println();
System.out.println("ID로 회원을 검색합니다");
System.out.println();
System.out.print("검색할 ID 입력 : ");
id = sc.nextLine();
me = handler.search(id);
if (me != null) {
System.out.println(me);
} else {
System.out.printf(" %s : 회원을 찾을 수 없습니다.", id);
}
break;
case 4:
System.out.print("삭제할 ID 입력 : ");
id = sc.nextLine();
if (id != null) {
System.out.println("정말 탈퇴하시겠습니까 (y/N)");
yesor = sc.nextLine();
}
if (yesor.equals("y")) {
handler.delete(id);
} else if (yesor.equals("n")) {
System.out.println("회원 탈퇴를 취소하였습니다");
}
break;
}
} while (menu != 0);
sc.close();
}
}






어제는 주단위 시험이 있었다.
시험의 주제는 회원관리 프로그램이다. 간단할 줄 알았는데 처음 만들어보는거라 꽤 시간이 걸려버렸다.
어찌어찌 시간내로 만들수는 있었지만 확실히 정해진 기술만으로 만드려니 쉽지만은 않았다.
그래도 전처럼 for문으로 하나씩 값을 넣는게 아니라 ArrayList를 이용해서 바로 값을 저장하는건 꽤 편해졌다.
간단히 기능설명을 하자면
Member
Seller클래스와 Customer클래스의 공통된 변수인 name,id,pw변수를 생성하여 다른 클래스에서 오버라이딩이 가능하게 하는 역활을 가졌다.
Seller
이 클래스의 고유변수인 가게이름을 만들고 생성자를 만들어 이 변수를 다른클래스에서 사용가능하게 하기 위함이다.
Membe클래스의 공통된 변수 name,id,pw의 생성자를 이용하여 상속받는다
그리고 아래에 toString으로 format을 지정하여
Main클래스에서 Seller클래스의 toString으로 값을 불러올 경우 이 format을 적용시킨다.
Customer
이 클래스의 고유변수인 배송주소 클래스를 생성하고 Membe클래스의 공통된 변수 name,id,pw의 생성자를 이용하여 상속받기 위함이다.
그리고 아래에 toString으로 format을 지정하여
Main클래스에서 Customer클래스의 toString으로 값을 불러올 경우 이 format을 적용시킨다.
Handler
이 클래스에서는 4개의 함수를 만든다.
첫번째는 insert Member클래스의 멤버변수 Member me를 생성한다.
변수 com의 기본값을 1로 설정하고, list배열이 비어있으면 슈퍼클래스의 변수를 추가한다.
이미 값이 차있으면 for문으로 i을 증감시키고 list배열에서 i번째 인덱스에 저장되어있는 id값과 main클래스에서 입력한 id값이 같은지 비교하고
같다면 com에는 0을 넣는다.
두번째는 select 이다. 이건 멤버필드의 ArrayList<Member> list배열을 불러와서 insert에서 만들어진 list의 값들을 넣어준다.
세번째는 검색이다.
가장 어려웠던 파트였다. 일단 매개변수 String id를 만들고 Member타입의 인스턴스를 초기화 시켜준다.
그리고 for문으로 Member클래스의 mm인스턴스에 list의 값을 반복해서 넣우준다.
그렇게 들어간 mm인스턴스를 main클래스에서 입력한 id의 값과 비교해서 변수 m에 저장한다.
네번째는 delete이다.
boolean으로 참/거짓을 반환하게 flag하고 이 변수에
list배열안에서 removeIf 으로 Member 클래스의 변수에
저장된 id와 main클래스에서 입력하는 id의 값이 같으면 삭제한다.
Main
이 클래스에서는 틀을 만든다.
가입,목록,검색,탈퇴, 종료 이렇게 5개의 메뉴를 표시한다.
가입을 눌렀을때 조건문으로 구매자와 판매자로 나뉜다. 구매자를 누르면 공통적인 변수인 ID,이름,pw의 정보를 입력하고
이어서 구매자의 고유변수인 배송주소를 추가로 입력한다.
판매자도 같은 맥락으로 이어진다.
Handler클래스에서 만들어둔 insert함수를 실행하면 값이 비어있으면 값을 추가하고 row = 1, 다르다면 row = 0이 들어간다.
이렇게 들어간 값들은 Main클래스의 case :1에서 com변수에 row의 반환값을 넣어주고 1일때 "가입성공" 아닐때 "중복"이라고 표시한다.
목록에서는
함수 select로 저장해놓은 값들을 list에 넣어주고
for문을 이용해 list의 값들을 Member타입의 변수s에 넣어주고 출력한다.
여기서 Member에 넣어줬기 때문에 toString으로 출력이 되는것이다.
삭제는
삭제할 ID를 입력하고
입력한 id가 null값이 아니라면(입력 받았다면) 탈퇴할지 물어보고 y를 누르면 탈퇴, n을 누르면 탈퇴를 취소한다.
Hadler클래스에서 만들어
마지막의 while문은 menu값이 0이 아닌동안만 반복하는 것이니까
0을 입력하면 종료된다.
진도가 너무 빨라서 시간가는줄도 모르고 하루하루가 흘러간다. 지금 실력이 늘고 있는지 의구심이 들때도 있지만
결국은 앞만보고 가지 않으면 답도 없다는것을 알고 있기에 나보다 잘하는 사람이 있다면 그 사람에게서 배울수 있는것은
가능한 한 배우고 내 것으로 만드는것으로 생각을 바꾼 상태이다.
오늘 시작한 HashMap부터 시작해 코드의 구조가 점점더 복잡해 지고 있는 가운대 더욱 정신차리고 수료할때는 회사에
이력서를 낼 때 창피하지 않을 정도의 능력까지 올려보려고 한다.
그럼 오늘은 파일을 첨부하고 여기서 마치겠다.
'JAVA 공부' 카테고리의 다른 글
자바의 기초 - 예외처리, 파일 입출력(전화번호 관리 프로그램) (0) | 2023.04.05 |
---|---|
자바의 기초 - 쓰레드, 예외처리 (0) | 2023.04.03 |
자바의 기초 - 상속,다형성 (0) | 2023.03.27 |
자바의 기초 - 학원 자유주제(tv의 기능구현) (0) | 2023.03.26 |
자비의 기초 - 객체지향파트(생성자,메서드, 함수 심화) (0) | 2023.03.26 |