클라이언트 클래스
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 View {
private Scanner sc;
private int userMAX;
private int adminMAX;
public View() {
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 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 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 ProductDAO {
private ArrayList<ProductDTO> datas; // DB
public ProductDAO() {
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++) {
// this.datas.get(i).getNum()
// 내꺼.DB.요소 == 상품
// 상품.pk()
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) {
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 false;
}
if(productDTO.getSearchConditon().equals("구매")) {
this.datas.get(i).setCnt(this.datas.get(i).getCnt()-1);
}
else if(productDTO.getSearchConditon().equals("재고변경")) {
this.datas.get(i).setCnt(productDTO.getCnt());
}
return true;
}
public boolean delete(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 false;
}
this.datas.remove(i);
return true;
}
}
컨트롤러 클래스
package ctrl;
import java.util.ArrayList;
import model.ProductDAO;
import model.ProductDTO;
import view.View;
public class Ctrl {
private ProductDAO productDAO; // MODEL
private View view;
public Ctrl() {
this.productDAO=new ProductDAO();
this.view=new View();
}
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) {
}
else if(action==2) {
}
else if(action==3) {
}
}
}
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);
}
}
}
}
}
'개발일지 > 복습' 카테고리의 다른 글
자바 기본 정리 (0) | 2023.12.17 |
---|---|
MVC 패턴 활용한 자판기 프로그램 ver.2 (0) | 2023.12.13 |
DAO, DTO 활용 예시 [학생부 프로그램] (0) | 2023.12.12 |
DAO란 (0) | 2023.12.12 |
DTO란 (0) | 2023.12.12 |
댓글