MVC Pattern

Model

:The central component of the pattern. It is the application's dynamic data structure, independent of the user interface. It directly manages the data, logic and rules of the application.

 

View
:Any representation of information such as a chart, diagram or table. Multiple views of the same information are possible, such as a bar chart for management and a tabular view for accountants.

 

Controller
:Accepts input and converts it to commands for the model or view.


 

Model: ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ, ์ฒ˜๋ฆฌ
View: ํ™”๋ฉด(์‚ฌ์šฉ์ž์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค)
Controller: Model - View์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐ, ์—…๋ฌด ์ฒ˜๋ฆฌ

 

 

package practice;

import java.util.*;

/*<์ฃผ์†Œ๋ก ํ”„๋กœ์ ํŠธ>
๊ธฐ๋Šฅ ์ •์˜
0) ๋ฉ”๋‰ด ๋ฐ˜๋ณต ๋ฃจํ”„
void mainLoop();
1) ๋ฉ”๋‰ด ์ถœ๋ ฅ
void printMenu();
2) ๋ฉ”๋‰ด ์„ ํƒ
int getSelectMenu();
3) ์ฃผ์†Œ ์ •๋ณด ์ž…๋ ฅ(์ด๋ฆ„, ์ „ํ™”๋ฒˆํ˜ธ, ์ฃผ์†Œ)
void inputAddress();
4) ์ฃผ์†Œ ์ •๋ณด ๊ฒ€์ƒ‰(์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰)
void searchAddss();
5) ์ฃผ์†Œ ์ •๋ณด ๋ณ€๊ฒฝ(์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰ ํ›„ ๋ณ€๊ฒฝ)
void updateAddress();
6) ์ฃผ์†Œ ์ •๋ณด ์‚ญ์ œ(์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰ ํ›„ ์‚ญ์ œ)
void deleteAddress();
7) ์ฃผ์†Œ ์ •๋ณด ์ „์ฒด์ถœ๋ ฅ
void printAllAddress();
8) ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ 
void programExit();
*/

class Address {
	public String name;
	public String number;
	public String address;
}

public class _40 {

	static Scanner sc = new Scanner(System.in); // ์Šค์บ๋„ˆ ์„ ์–ธ

	static ArrayList<Address> addrList = new ArrayList<Address>(); // ArrayList ๊ฐ์ฒด์ธ addrList ์„ ์–ธ

	public static void main(String[] args) {
		mainLoop();
	}

	// ๋ฉ”๋‰ด ๋ฐ˜๋ณต ๋ฃจํ”„
	static void mainLoop() {
		while (true) {
			printMenu();
			int sel = selectMenu(); // ์ž…๋ ฅํ•œ ๋ฉ”๋‰ด์˜ ๋ฒˆํ˜ธ๋ฅผ selectMenu๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ ๋ฐ›๋Š”๋‹ค
			switch (sel) {
			case 1:
				inputAddress();
				break;
			case 2:
				searchMenu();
				break;
			case 3:
				updateAddress();
				break;
			case 4:
				deleteAddress();
				break;
			case 5:
				allClearAddress();
				break;
			case 6:
				printAllAddress();
				break;
			case 7:
				programExit();
				break;
			default:
				System.out.println("์ž˜๋ชป์ž…๋ ฅํ•˜์˜€์Šต๋‹ˆ๋‹ค");
				break;
			}
		}
	}

	// ๋ฉ”๋‰ด ์ถœ๋ ฅ
	static void printMenu() {
		System.out.println("==============");
		System.out.println("1. ์ฃผ์†Œ ์ž…๋ ฅ");
		System.out.println("2. ์ฃผ์†Œ ๊ฒ€์ƒ‰");
		System.out.println("3. ์ฃผ์†Œ ์ˆ˜์ •");
		System.out.println("4. ์ฃผ์†Œ ์‚ญ์ œ");
		System.out.println("5. ์ฃผ์†Œ ์ „์ฒด ์‚ญ์ œ");
		System.out.println("6. ์ฃผ์†Œ ์ „์ฒด ์ถœ๋ ฅ");
		System.out.println("7. ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ");
		System.out.println("==============");

	}

	// ๋ฉ”๋‰ด ์„ ํƒ
	static int selectMenu() {
		int sel;
		System.out.println("๋ฒˆํ˜ธ ์ž…๋ ฅ >> ");
		sel = sc.nextInt(); // ์ž…๋ ฅํ•œ ๋ฒˆํ˜ธ๋ฅผ sel์— ์ €์žฅ
		return sel;
	}

	// ์ฃผ์†Œ ์ •๋ณด ์ž…๋ ฅ
	static void inputAddress() {
		System.out.println("์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค");
		// ์ด๋ฆ„ ๋ฒˆํ˜ธ ์ฃผ์†Œ
		System.out.print("์ด   ๋ฆ„  :  ");
		String name = sc.next();
		System.out.print("์ „ํ™”๋ฒˆํ˜ธ  :  ");
		String number = sc.next();
		System.out.print("์ฃผ   ์†Œ  :  ");
		String address = sc.next();

		// Address ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด
		// name, number, address๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
		Address addr = new Address();
		addr.name = name;
		addr.number = number;
		addr.address = address; // ์ž…๋ ฅ๋ฐ›์€ ์ •๋ณด๋ฅผ Address ํด๋ž˜์Šค์˜ ์ •๋ณด๋กœ ๋„˜๊ฒจ์ค€๋‹ค

		addrList.add(addr); // ์ž…๋ ฅ๋ฐ›์€ ์ •๋ณด๋ฅผ addr๋ฆฌ์ŠคํŠธ์— ๋„ฃ์–ด์ค€๋‹ค (์ €์žฅ์™„๋ฃŒ)
	}

	// ๋ฉ”๋‰ด ๊ฒ€์ƒ‰
	static void searchMenu() {
		System.out.println("๊ฒ€์ƒ‰ํ•  ์ด๋ฆ„ ์ž…๋ ฅ");
		String name = sc.next();
		for (int i = 0; i < addrList.size(); i++) { // addrList.size()๋Š” addrList์— ์ €์žฅ๋œ ๊ฐ’์˜ ๊ฐœ์ˆ˜
			Address addr = addrList.get(i); // addrList.get(i)๋Š” addrList์— ์ €์žฅ๋œ i๊ฐ’์„ ๊ฐ€์ ธ์˜จ
			if (name.equals(addr.name)) { // ๋งŒ์•ฝ ๊ฒ€์ƒ‰ํ•œ ์ด๋ฆ„๊ณผ ๋ฐฐ์—ด์— ์ €์žฅ๋œ ์ด๋ฆ„ ์ค‘ ๊ฐ™์€ ์ด๋ฆ„์ด ์žˆ์„ ๊ฒฝ์šฐ ์•„๋ž˜์˜ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค

				System.out.println("======================");
				System.out.println("์ด   ๋ฆ„  :  " + addr.name);
				System.out.println("์ „ํ™”๋ฒˆํ˜ธ  :  " + addr.number);
				System.out.println("์ฃผ   ์†Œ  :  " + addr.address);
				System.out.println("======================");
				break;
			}
		}
	}

	// ์ฃผ์†Œ ์ •๋ณด ์ˆ˜์ •
	static void updateAddress() {
		System.out.println("์ˆ˜์ •ํ•  ์ด๋ฆ„ ๊ฒ€์ƒ‰");
		String name = sc.next();
		for (int i = 0; i < addrList.size(); i++) {
			Address addr = addrList.get(i);
			if (name.equals(addr.name)) {

				// ์ˆ˜์ •ํ•  ์ด๋ฆ„์€ new๋ฅผ ๋ถ™์—ฌ์ค˜ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์คŒ
				System.out.println("์ˆ˜์ •ํ•  ์ด๋ฆ„ ์ž…๋ ฅ");
				String newName = sc.next();
				System.out.println("์ˆ˜์ •ํ•  ๋ฒˆํ˜ธ ์ž…๋ ฅ");
				String newNumber = sc.next();
				System.out.println("์ˆ˜์ •ํ•  ์ฃผ์†Œ ์ž…๋ ฅ");
				String newAddress = sc.next();

				// new๊ฐ€ ๋ถ™์€ ์ •๋ณด๋Š” Addressํด๋ž˜์Šค์˜ ์ •๋ณด๋กœ ๋‹ค์‹œ ์ €์žฅํ•œ๋‹ค (๊ฐ’์ด ๋ณ€๊ฒฝ(์ˆ˜์ •)๋˜์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ)
				addr.name = newName;
				addr.number = newNumber;
				addr.address = newAddress;
				break;
			}
		}
	}

	// ์ฃผ์†Œ ์ •๋ณด ์‚ญ์ œ
	static void deleteAddress() {
		System.out.println("์‚ญ์ œํ•  ์ด๋ฆ„ ์ž…๋ ฅ");
		String name = sc.next();

		System.out.println("์ •๋ง ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?");
		System.out.println(" Y / N ");
		String st = sc.next();
		if (st.equalsIgnoreCase("Y")) { // ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์ด y๋ฅผ ์ž…๋ ฅ ์‹œ
			//.isEmpty()
			if(addrList.isEmpty()) { //addrList.size(null)์„ ๋งŒ๋“ค์–ด์•ผํ•จ 
//			if(addrList.size()<1) {
				System.out.println("์ €์žฅ๋˜์ง€ ์•Š์€ ๊ฐ’์ž…๋‹ˆ๋‹ค");
			}

			for (int i = 0; i < addrList.size(); i++) {
				Address addr = addrList.get(i);

				
				if (name.equals(addr.name)) {
					addrList.remove(i); // addrList์—์„œ ์ž…๋ ฅํ•œ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ์ด๋ฆ„์„ ์ฐพ์„ ๊ฒฝ์šฐ ์‚ญ์ œ๋ฅผ ํ•ด์ค€๋‹ค
					System.out.println("์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค");
					break;
				}
			}
		} 
		
		else if (st.equalsIgnoreCase("N")) { // ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์ด n์„ ์ž…๋ ฅ ์‹œ
			System.out.println("์‚ญ์ œ๋ฅผ ์ทจ์†Œํ•˜์˜€์Šต๋‹ˆ๋‹ค"); // ์•„๋ฌด ์ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š์œผ๋ฉฐ "์‚ญ์ œ๋ฅผ ์ทจ์†Œํ•˜์˜€์Šต๋‹ˆ๋‹ค" ๋ฌธ๊ตฌ ์ถœ๋ ฅ
		} else {
			System.out.println("์ž˜๋ชป์ž…๋ ฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค"); // else๋Š” y,n์„ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ์ž…๋ ฅ์„ ๋ฐ›์•˜์„๋•Œ "์ž˜๋ชป์ž…๋ ฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค" ๋ฌธ๊ตฌ ์ถœ๋ ฅ
		}

	}

	// ์ฃผ์†Œ ์ „์ฒด ์‚ญ์ œ
	static void allClearAddress() {
		System.out.println("์ •๋ง ์ „์ฒด ์‚ญ์ œ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? \n Y / N");
		String st = sc.next();
		if (st.equalsIgnoreCase("y")) {
			addrList.clear(); // addrList.clear(); ๋Š” addrList์˜ ๋ชจ๋“  ๊ฐ’์„ ์‚ญ์ œ ํ•ด์ค€๋‹ค
			System.out.println("์ „์ฒด ์‚ญ์ œ๋ฅผ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค");
		} else if (st.equalsIgnoreCase("n")) {
			System.out.println("์ „์ฒด ์‚ญ์ œ๋ฅผ ์ทจ์†Œํ•˜์˜€์Šต๋‹ˆ๋‹ค");
		} else {
			System.out.println("์ž˜๋ชป์ž…๋ ฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค");
		}

	}

	// ์ฃผ์†Œ ์ „์ฒด ์ถœ๋ ฅ
	static void printAllAddress() {
		System.out.println("์ „์ฒด ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค");
		for (int i = 0; i < addrList.size(); i++) {
			Address addr = addrList.get(i); // addrList์— ์ €์žฅ๋œ ๋ชจ๋“  ๊ฐ’์„ ๊ฐ€์ ธ์™€ ์•„๋ž˜ ์–‘์‹์œผ๋กœ ์ถœ๋ ฅํ•ด์ค€๋‹ค
			System.out.println("======================");
			System.out.println("์ด   ๋ฆ„  :  " + addr.name);
			System.out.println("์ „ํ™”๋ฒˆํ˜ธ  :  " + addr.number);
			System.out.println("์ฃผ   ์†Œ  :  " + addr.address);
			System.out.println("======================");
		}
	}

	// ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ
	static void programExit() {
		System.out.println("ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค");
		System.exit(0); // 0์€ ์ •์ƒ์ข…๋ฃŒ / 0์ด ์•„๋‹ˆ๋ฉด ๋น„์ •์ƒ์ข…๋ฃŒ
	}

'java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Java/Do-while loop  (0) 2020.01.25
Java/While Loop  (0) 2020.01.25
์ž๋ฐ”์˜ ์—ฐ์‚ฐ์ž  (0) 2020.01.25
์ž๋ฐ”์˜ ๊ฐ•์ œํ˜•๋ณ€ํ™˜  (0) 2020.01.25
์ž๋ฐ”์˜ ์ž๋™ํ˜•๋ณ€ํ™˜  (0) 2020.01.25