JAVA/Practice

[Program] MVCํŒจํ„ด์„ ์ด์šฉํ•œ ์žํŒ๊ธฐ

ITs Min 2023. 12. 13.

๐Ÿ”ฅ ๊ธฐ๋Šฅ

์žํŒ๊ธฐ ํ”„๋กœ๊ทธ๋žจ

์‚ฌ์šฉ์ž : ๋ฉ”๋‰ด๋ชฉ๋ก์ถœ๋ ฅ, ๋ฉ”๋‰ด์„ ํƒ

๊ด€๋ฆฌ์ž : ๋ฉ”๋‰ด์ถ”๊ฐ€, ๋ฉ”๋‰ด์žฌ๊ณ ๋ณ€๊ฒฝ, ๋ฉ”๋‰ด์‚ญ์ œ


๐Ÿ’ง ์ฝ”๋“œ

Model (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;
	}

}

 

Model(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 + "]";
	}
	
}

 

View

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 int inputPrice() {
		System.out.print("๊ฐ€๊ฒฉ ์ž…๋ ฅ >> ");
		int price = sc.nextInt();
		return price;
	}
	public String inputName() {
		System.out.print("์ด๋ฆ„ ์ž…๋ ฅ >>");
		String name = sc.next();
		return name;
	}
	public int inputCnt() {
		System.out.print("์ˆ˜๋Ÿ‰ ์ž…๋ ฅ >>");
		int cnt = sc.nextInt();
		return cnt;
	}
	public int inputNum() {
		System.out.println("PK๊ฐ’ ์ž…๋ ฅ");
		int num = sc.nextInt();
		return num;
	}
	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("๊ตฌ๋งค์™„๋ฃŒ!");
	}
}

 

Controller

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) {
						int num=1003;
						ProductDTO productDTO = new ProductDTO();
						productDTO.setName(view.inputName());
						productDTO.setCnt(view.inputCnt());
						productDTO.setPrice(view.inputPrice());
						productDTO.setNum(num++);
						productDAO.insert(productDTO);
					}
					else if(action==2) {
						ProductDTO productDTO = new ProductDTO(); // ์–˜๋Š” ๊ทธ๋ƒฅ ๋งค์น˜ ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋…€์„
																  // ์–˜ํ•œํ…Œ ์†์„ฑ๊ฐ’์„ ์ฃผ๊ณ  ์ฐพ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ
																  // ์‹ค์ œ ๊ฐ’ ๋ณ€๊ฒฝ์€ ๋งˆ์ง€๋ง‰ DAO์—์„œ ํ•จ
						ArrayList<ProductDTO> datas = productDAO.selectAll(productDTO);
						view.printDatas(datas);
						productDTO.setNum(view.inputNum());
						productDTO.setSearchConditon("์žฌ๊ณ ๋ณ€๊ฒฝ");
						productDTO.setCnt(view.inputCnt());
						productDAO.update(productDTO);
					}
					else if(action==3) {
						ProductDTO productDTO = new ProductDTO();
						ArrayList<ProductDTO> datas = productDAO.selectAll(productDTO);
						view.printDatas(datas);
						productDTO.setNum(view.inputNum());
						productDAO.delete(productDTO);
					}
				}
			}
			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);
				}
			}
		}		
	}

}

 

๋Œ“๊ธ€

TOP

๋Šฆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ๋• ๋„ˆ๋ฌด ๋Šฆ์€ ๊ฑฐ๋‹ค.