Christmas Pikachu MVC패턴 활용한 학생부 프로그램
개발일지/복습

MVC패턴 활용한 학생부 프로그램

ZI_CO 2023. 12. 11.

1. 실행파일 클래스

package client;

import controller.StudentCtrl;

public class Client {
	public static void main(String[] args) {

		StudentCtrl app=new StudentCtrl();
		app.startApp();

	}
}

 

 

2. 학생 컨트롤러 클래스

package controller;

import java.util.ArrayList;

import model.Student;
import model.StudentModel;
import view.StudentView;

public class StudentCtrl {
	private StudentModel model;
	private StudentView view;
	public StudentCtrl() {
		this.model=new StudentModel();
		this.view=new StudentView();
	}

	public void startApp() {
		int PK=1002;
		while(true) {
			view.printMenu();
			int action=view.inputAction();
			if(action==0) {
				break;	
			}
			else if(action==1) {
				String name=view.inputName();
				int score=view.inputScore();
				boolean flag=model.insert(PK++, name, score);
				if(flag) {
					view.printTrue();
				}
				else {
					view.printFalse();
				}
			}
			else if(action==2) {
				ArrayList<Student> datas=model.selectAll();
				view.printStudentDatas(datas);
			}
			else if(action==3) {
				int num=view.inputNum();
				Student data=model.selectOne(num);
				if(data!=null) {
					view.printStudentData(data);
				}
				else {
					view.printFalse();
				}
			}
			else if(action==4) {
				int num=view.inputNum();
				int score=view.inputScore();
				boolean flag=model.update(num, score);
				if(flag) {
					view.printTrue();
				}
				else {
					view.printFalse();
				}
			}
			else if(action==5) {
				int num=view.inputNum();
				boolean flag=model.delete(num);
				if(flag) {
					view.printTrue();
				}
				else {
					view.printFalse();
				}
			}
		}
	}
}

 

 

 

 

 

3. Student(학생) 클래스

package model;

public class Student {
	private int num; // PK
	private String name;
	private int score;
	public Student(int num,String name,int score) {
		this.num=num;
		this.name=name;
		this.score=score;
	}
	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 getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	@Override
	public String toString() {
		return num + "번 " + name + "학생 " + score + "점";
	}
}

 

 

 

 

 

4. 학생 모델 클래스

package model;

import java.util.ArrayList;

public class StudentModel {

	// CRRUD
	// 만약 메서드가 5개보다 적거나 많으면 어라...?? 이상감지해야함

	private ArrayList<Student> datas;

	public StudentModel() {
		datas=new ArrayList<Student>();
		datas.add(new Student(1001,"홍길동",50));
	}
	
	public ArrayList<Student> selectAll() {
		return datas;
	}
	public Student selectOne(int num) {
		for(Student data:datas) {
			if(data.getNum()==num) {
				return data;
			}
		}
		return null; // 검색할 학생이 없다면, null이 반환됨
	}
	// Q1. 성이 김씨인 학생 출력 -> selectAll()
	// Q2. 1002번 학생 출력 -> selectOne()
	// Q3. 1등 출력 -> selectAll() : 2명이상일수도있는 액션은 전부 All()

	public boolean insert(int num,String name,int score) {
		datas.add(new Student(num,name,score));
		System.out.println("   [로그] insert 메서드 수행");
		return true;
	}
	public boolean update(int num,int score) {
		// num 유효성은 데이터를 봐야지만 알수있음
		// score는 VIEW에서 체크가능
		boolean flag=false;
		int i;
		for(i=0;i<datas.size();i++) {
			if(datas.get(i).getNum()==num) {
				flag=true;
				break;
			}
		}
		if(!flag) {
			System.out.println("   [로그] update 메서드 실패");
			return false;
		}
		
		datas.get(i).setScore(score);
		System.out.println("   [로그] update 메서드 성공");
		return true;
	}
	public boolean delete(int num) {
		boolean flag=false;
		int i;
		for(i=0;i<datas.size();i++) {
			if(datas.get(i).getNum()==num) {
				flag=true;
				break;
			}
		}
		if(!flag) {
			System.out.println("   [로그] delete 메서드 실패");
			return false;
		}
		
		datas.remove(i);
		System.out.println("   [로그] delete 메서드 성공");
		return true;
	}


}

'개발일지 > 복습' 카테고리의 다른 글

DAO, DTO 활용 예시 [학생부 프로그램]  (0) 2023.12.12
DAO란  (0) 2023.12.12
DTO란  (0) 2023.12.12
MVC패턴  (0) 2023.12.11
클래스(Class)  (0) 2023.12.09

댓글