클라이언트 클래스
package client;
import ctrl.Ctrl2;
public class Client {
public static void main(String[] args) {
// 설치
Ctrl2 app=new Ctrl2();
// 실행
app.start();
}
}
뷰 클래스
package view;
import java.util.ArrayList;
import java.util.Scanner;
import model.ProductDTO;
public class View2 {
private Scanner sc;
private int userMAX;
private int adminMAX;
public View2() {
this.sc=new Scanner(System.in);
this.userMAX=2;
this.adminMAX=3;
}
public void printMenu() {
System.out.println("=== 자 판 기 ===");
System.out.println("1. 메뉴목록출력");
System.out.println("2. 메뉴선택");
System.out.println("0. 종료");
}
public int inputInteger() {
System.out.print("번호입력 >> ");
int integer=sc.nextInt();
return integer;
}
public void printAdminMenu() {
System.out.println("=== 관 리 자 ===");
System.out.println("1. 메뉴추가");
System.out.println("2. 메뉴재고변경");
System.out.println("3. 메뉴삭제");
System.out.println("0. 관리자모드 종료");
}
public int inputNum() {
System.out.print("메뉴번호입력 >> ");
int num=sc.nextInt();
return num;
}
public void printDeleteData01() {
System.out.println("메뉴가 삭제되었습니다!");
}
public void printDeleteData02() {
System.out.println("메뉴삭제에 실패했습니다...");
}
public String inputName() {
System.out.print("메뉴이름입력 >> ");
String name=sc.next();
return name;
}
public int inputPrice() {
System.out.print("메뉴가격입력 >> ");
int price=sc.nextInt();
return price;
}
public int inputCnt() {
System.out.print("메뉴재고입력 >> ");
int cnt=sc.nextInt();
return cnt;
}
public void printInsertData(ProductDTO data) {
System.out.println(data.getName()+"이(가) 추가되었습니다! :D");
}
public void printDatas(ArrayList<ProductDTO> datas) {
if(datas.size()<=0) {
System.out.println("출력할 메뉴가 없습니다...");
return;
}
for(ProductDTO data:datas) {
if(data.getCnt()<=0) {
System.out.println("재고없음!");
continue;
}
System.out.println(data);
}
}
public void printNoData() {
System.out.println("해당 데이터는 없습니다...");
}
public void printData(ProductDTO data) {
if(data==null) {
System.out.println("출력할 데이터가 없습니다...");
return;
}
if(data.getCnt()<=0) {
System.out.println(data.getName()+"는(은) 재고가 없습니다...");
return;
}
System.out.println(data);
System.out.println("구매완료!");
}
}
모델DTO 클래스
package model;
public class ProductDTO {
private int num; // PK
private String name;
private int price;
private int cnt;
private String searchConditon; // JAVA 로직에서만 사용하는 변수
// 웹 개발에서는,
// 기본 생성자를 사용하는 것을 원칙으로 한다!!!!!
// : new할때 생성자의 인자로 넣는 값중에서,
// 어떤 값이 정말 유효한 값인지 파악하는 시간을 줄이기위함!
public String getSearchConditon() {
return searchConditon;
}
public void setSearchConditon(String searchConditon) {
this.searchConditon = searchConditon;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getCnt() {
return cnt;
}
public void setCnt(int cnt) {
this.cnt = cnt;
}
@Override
public String toString() {
if(this.cnt<=0) {
return this.num+"번 상품 품절";
}
return "ProductDTO [num=" + num + ", name=" + name + ", price=" + price + ", cnt=" + cnt + "]";
}
}
모델DAO 클래스
package model;
import java.util.ArrayList;
public class ProductDAO2 {
private ArrayList<ProductDTO> datas; // DB
public ProductDAO2() {
datas = new ArrayList<ProductDTO>();
// 샘플 데이터 추가
ProductDTO sample01 = new ProductDTO();
sample01.setNum(1001);
sample01.setName("콜라");
sample01.setPrice(1200);
sample01.setCnt(3);
datas.add(sample01);
ProductDTO sample02 = new ProductDTO();
sample02.setNum(1002);
sample02.setName("사이다");
sample02.setPrice(1100);
sample02.setCnt(0);
datas.add(sample02);
}
public ArrayList<ProductDTO> selectAll(ProductDTO productDTO) {
return datas;
}
public ProductDTO selectOne(ProductDTO productDTO) {
boolean flag = false;
int i;
for (i = 0; i < this.datas.size(); i++) {
if (this.datas.get(i).getNum() == productDTO.getNum()) {
flag = true;
break;
}
}
if (!flag) {
return null;
}
return this.datas.get(i);
}
public boolean insert(ProductDTO productDTO) {
try {
ProductDTO data = new ProductDTO();
data.setNum(productDTO.getNum());
data.setName(productDTO.getName());
data.setPrice(productDTO.getPrice());
data.setCnt(productDTO.getCnt());
this.datas.add(data);
} catch (Exception e) {
System.out.println("[로그] 알수없는 이슈발생!");
return false;
}
return true;
}
public boolean update(ProductDTO productDTO) {
if (productDTO.getSearchConditon().equals("구매")) {
productDTO.setCnt(productDTO.getCnt() - 1);
} else if (productDTO.getSearchConditon().equals("재고변경")) {
productDTO.setCnt(productDTO.getCnt());
} else {
return false;
}
return true;
}
public boolean delete(ProductDTO productDTO) {
try {
int i;
for (i = 0; i < this.datas.size(); i++) {
if (this.datas.get(i).getNum() == productDTO.getNum()) {
break;
}
}
this.datas.remove(i);
} catch (Exception e) {
return false;
}
return true;
}
}
컨트롤러 클래스
package ctrl;
import java.util.ArrayList;
import model.ProductDAO2;
import model.ProductDTO;
import view.View2;
public class Ctrl2 {
private ProductDAO2 productDAO; // MODEL
private View2 view;
private int PK;
public Ctrl2() {
this.productDAO=new ProductDAO2();
this.view=new View2();
this.PK=1003;
}
public void start() {
while(true) {
view.printMenu();
int action=view.inputInteger();
if(action==0) {
break;
}
else if(action==1234) {
while(true) {
view.printAdminMenu();
action=view.inputInteger();
if(action==0) {
break;
}
else if(action==1) {
String name=view.inputName();
int price=view.inputPrice();
int cnt=view.inputCnt();
ProductDTO productDTO=new ProductDTO();
productDTO.setNum(PK++);
productDTO.setName(name);
productDTO.setPrice(price);
productDTO.setCnt(cnt);
productDAO.insert(productDTO);
}
else if(action==2) {
int num=view.inputNum();
ProductDTO productDTO=new ProductDTO();
productDTO.setNum(num);
productDTO=productDAO.selectOne(productDTO);
if(productDTO==null) {
view.printNoData();
continue;
}
int cnt=view.inputCnt();
productDTO.setCnt(cnt);
productDTO.setSearchConditon("재고변경");
boolean flag=productDAO.update(productDTO);
if(flag){
view.printDeleteData01(); // update 성공 !
}
else {
view.printDeleteData02(); // update 실패 ...
}
}
else if(action==3) {
int num=view.inputNum();
ProductDTO productDTO=new ProductDTO();
productDTO.setNum(num);
productDTO=productDAO.selectOne(productDTO);
if(productDTO == null) {
view.printNoData();
continue;
}
boolean flag=productDAO.delete(productDTO);
if(flag) {
view.printDeleteData01();
}
else {
view.printDeleteData02();
}
}
}
}
else if(action==1) {
ProductDTO productDTO=new ProductDTO();
ArrayList<ProductDTO> datas=productDAO.selectAll(productDTO);
view.printDatas(datas);
}
else if(action==2) {
int num=view.inputInteger();
ProductDTO productDTO=new ProductDTO();
productDTO.setNum(num);
ProductDTO data=productDAO.selectOne(productDTO);
view.printData(data);
if(data!=null && data.getCnt()>0) { // 구매성공이라면
data.setSearchConditon("구매");
productDAO.update(data);
}
}
}
}
}
'개발일지 > 복습' 카테고리의 다른 글
MVC 패턴 활용한 미니 쇼핑몰 프로그램 (0) | 2023.12.18 |
---|---|
자바 기본 정리 (0) | 2023.12.17 |
MVC 패턴 활용한 자판기 프로그램 ver.1 (0) | 2023.12.13 |
DAO, DTO 활용 예시 [학생부 프로그램] (0) | 2023.12.12 |
DAO란 (0) | 2023.12.12 |
댓글