JAVA/문제풀이
MVC 이용한 학생부 프로그램 1단계
nsh95
2023. 12. 11. 22:39
Controller
package studentCtroller;
import java.util.ArrayList;
import studentModel.Student;
import studentModel.StudentModel;
import studentView.StudentView;
public class StudentController {
private StudentModel model;
private StudentView view;
public StudentController() {
this.model = new StudentModel();
this.view = new StudentView();
}
public void startApp() {
int PK = 1002;
while(true) {
view.printList();
int action = view.inputAction();
if(action==0) {
break;
}
else if(action==1) { // 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) { // 2 전체 검색
ArrayList<Student> datas= model.selectAll();
view.printStudentDatas(datas);
}else if(action==3) {
int num = view.inputStudentNum();
Student data = model.selectOne(num);
if(data!=null) {
view.printStudentData(data);
}
else {
view.printFalse();
}
}else if(action==4) { // 학생 점수변경
int num = view.inputStudentNum();
int score=view.inputScore();
boolean flag = model.update(num, score);
if(flag) {
view.printTrue();
}else {
view.printFalse();
}
}else if(action==5) {
int num = view.inputStudentNum();
boolean flag = model.delete(num);
if(flag) {
view.printTrue();
}else {
view.printFalse();
}
}
}
}
}
View
package studentView;
import java.util.ArrayList;
import java.util.Scanner;
import studentModel.Student;
public class StudentView {
private Scanner sc;
public StudentView() { // 새 객체 생
sc = new Scanner(System.in);
}
// 메서드 만들어 필요한거
// 사용자한테 보여줄 화면 목록띄워
// 추가에서 이름이랑 점수 입력받아야 돼
// 목록에서 숫자 입력받아서 전체목록 추ㅠㄹ력해줘야돼
// 또 학생 검색 학생 pk를 받아서 출력 받아야돼
// pk 입력 받고 학생 점수 수정 해야돼
// pk 입력 받고 학생 삭
public void printList() {
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("0. 종료");
}
public int inputAction() {
System.out.println("숫자 입력 >> ");
int action = sc.nextInt();
return action;
}
public String inputName() {
System.out.println("학생 이름 >> ");
String name = sc.next();
return name;
}
public int inputScore() {
System.out.println("점수 입력 >> ");
int score = sc.nextInt();
return score;
}
public int inputStudentNum() {
// 학생 번호 유효성 검사
int stuNum;
while (true) {
System.out.println("학생 번호 입력 >> ");
stuNum = sc.nextInt();
if (100 < stuNum && stuNum < 2000) {
break;
}
System.out.println("변경이 올바르지 않습니다.");
}
return stuNum;
}
public void printTrue() {
// 성공했을 때 출력해주는 메서드
System.out.println("완료되었습니다.");
}
public void printFalse() {
System.out.println("해당 번호의 학생이 없습니다");
}
public void printStudentDatas(ArrayList<Student> datas) {
// student 클래스부터 만들
System.out.println("학생 목록");
for(Student data : datas) {
System.out.println(data);
}
}
public void printStudentData(Student data) {
System.out.println("==학생출력==");
System.out.println(data);
System.out.println("=========");
}
}
Model
package studentModel;
import java.util.ArrayList;
public class StudentModel {
private ArrayList<Student> datas;
public StudentModel() {
datas= new ArrayList<Student>();
datas.add(new Student(1001,"노승현",50)); // 왜 빨간줄? Student 클래스에 인자를 안받
}
public ArrayList<Student> selectAll(){ // 검색해 나오는객체가 다수면 all 사
return datas;
}
public Student selectOne(int num) { // 학생 하나 검색추출
for(Student data:datas) {
if(data.getNum()==num) {
return data;
}
}
return null; // 검색할 학생이 없을 땐 null return
}
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 유효성은 데이터를 봐야만 알 수 있다.
// 이용자가 정상적으로 사용했지만, 특수한 상황에선 model에서 유효성 검사
// 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;
}
}
if(!flag) {
System.out.println("delete 메서드 실패");
}
datas.remove(i);
System.out.println("delete 성공");
return true;
}
}
Main
package studentMain;
import studentCtroller.StudentController;
public class Main {
public static void main(String[] args) {
StudentController app = new StudentController();
app.startApp();
}
}