1. JAVA/1.3 문제

220419_JAVA_문제풀어보기(정보 입력프로그램)

마느링 2022. 4. 19. 19:18

학생/ 선생님 정보 입력 프로그램을 만들어보았다.. 별다른 구현은 하지 못하고

그냥 입력받아서 저장만 하는..? 그런 프로그램이다.

 

패키지구성은 하기와 같이 했다..ㅎ

1. VO 클래스 : 학생, 선생님 개개인 정보를 입력해주는 클래스이다.  정보를 입력하는데는 공통된 메소드가 들어가니까 이를 구현할 StudVO, TeacVO 클래스를 만들어서 구현시키게 해주었다.

package VO;

public interface VO {

	public String getName();
	public void setName(String name);
	
	public String getId();
	
	public void setId(String id);
	
	public String getGen();
	
	public void setGen(int no);
	
	
	public int getGrade();
	
	public void setGrade(int grade);
	
	
	

}

2. StudVO 클래스 : 인터페이스인 VO 클래스 구현. 해당 VO가 가지고 있는 메소드를 오버라이드 하여 학생 개개인에 대한 정보 및 추가 입력 사항을 기재하였다

package VO;

public class StudVO implements VO{

	private String name,id,gen;
	private int ban,grade;
	
	
	public int getGrade() {
		return grade;
	}
	
	public void setGrade(int grade) {
		this.grade = grade;
	}
	
	public int getBan() {
		return ban;
	}
	
	public void setBan(int ban) {
		this.ban= ban;
	}
	
	
	@Override
	public String getName() {
		return name;
	}


	@Override
	public void setName(String name) {
		this.name= name; 
		
	}


	@Override
	public String getId() {
		return id;
	}


	@Override
	public void setId(String id) {
		this.id = id;
		
	}


	@Override
	public String getGen() {
		
		return gen;
	}


	@Override
	public void setGen(int no) {
		this.gen = no==1?"여자":"남자";
		
	}


	public String toString() {
		return "학생 >> 이름 : "+name+"("+gen+") ID : "+id +", "+grade+"학년"+ban+"반";
		
		
	}

	
}

 

3. TeacVO 클래스 : 인터페이스인 VO 클래스 구현. 해당 VO가 가지고 있는 메소드를 오버라이드 하여 선생님 개개인에 대한 정보 및 추가 입력 사항을 기재하였다.

package VO;

public class TeacVO implements VO{
	
	private String name,id,gen,type,subj;
	private int ban,grade;
	
	
	public String getsubj() {
		return subj;
	}
	public void setsubj(String subj) {
		this.subj = subj;
	}
	public String getType() {
		return type;
	}
	
	public void setType(int no) {
		this.type = no==1?grade+"학년"+ban+"반 담임선생님":"담당과목 : "+subj+"";
		
	}
	
	
	public int getGrade() {
		return grade;
	}
	
	public void setGrade(int grade) {
		this.grade = grade;
	}
	
	public int getBan() {
		return ban;
	}
	
	public void setBan(int ban) {
		this.ban= ban;
	}
	
	
	@Override
	public String getName() {
		return name;
	}


	@Override
	public void setName(String name) {
		this.name= name; 
		
	}


	@Override
	public String getId() {
		return id;
	}


	@Override
	public void setId(String id) {
		this.id = id;
		
	}


	@Override
	public String getGen() {
		
		return gen;
	}


	@Override
	public void setGen(int no) {
		this.gen = no==1?"여자":"남자";
		
	}


	public String toString() {
		return "선생님"+">> 이름 : "+name+"("+gen+", "+type+") ID : "+id;
		
		
	}


}

 

4. StudInfo 클래스 : 학생 대한 정보를 입력하는 클래스. 입력된 정보는 ArrayList<StudVO>를 만들어 저장하였다.

package Info.student;

import java.util.ArrayList;
import java.util.Scanner;

import VO.StudVO;
import VO.TeacVO;

public class StudInfo{
	
	public ArrayList<StudVO> stud;
	Scanner sc= new Scanner(System.in);
	
	
	
	public ArrayList<StudVO> setStud() {
		stud = null;
		stud = new ArrayList<StudVO>();
		Scanner sc = new Scanner(System.in);
		
		System.out.print("**** ["+this+"] 정보 입력프로그램 ****");
		while(true) {
			System.out.println();
			StudVO svo = new StudVO();
			System.out.print("입력 ] 이름 : ");
			String name =sc.next();
			svo.setName(name);
			System.out.print("입력 ] ID : ");
			String ID = idCheck(svo,sc);
			svo.setId(ID);
			System.out.print("선택 ] 성별 1. 여자 , 2. 남자 ");
			int gen =sc.nextInt();
			svo.setGen(gen);
			System.out.print("입력 ] 학년 : ");
			int grade = sc.nextInt();
			svo.setGrade(grade);
			System.out.print("입력 ] 반 : ");
			int ban = sc.nextInt();
			svo.setBan(ban);
			System.out.print(this+"정보 추가입력 하시겠습니까? 1. 네 , 2. 아니오 ");
			int num = sc.nextInt();
			stud.add(svo);
			if(num==2) {
				System.out.println("입력을 종료합니다.");
				break;
			}
			
		}
		return stud;
		
	}
	
	public String idCheck(StudVO svo,Scanner sc) {
		
		String ID =	null;
		while(true) {
			ID = sc.next();
		if(!ID.startsWith("s")) {
			System.out.println("다시 입력! (사유 : "+this +"ID 양식에 맞지 않습니다.)");
		}
		else {
			
			System.out.println("*** 입력 성공! ***");
			break;
		}
		}
		return ID;
	}
	

	public void toPrint(ArrayList<StudVO> obj) {
		for(StudVO list : obj) {
			if(obj.isEmpty()) {
				System.out.println("입력된 데이터 없음");
			}
				System.out.println(list);
				
			}
		
		}
	
	public String toString() {
		return "학생";
	}

	
	

}

 

5. TeachInfo 클래스 : 선생님 대한 정보를 입력하는 클래스. 입력된 정보는 ArrayList<TeachVO>를 만들어 저장하였다.

package Info.teacher;

import java.util.ArrayList;
import java.util.Scanner;

import VO.StudVO;
import VO.TeacVO;

public class TeachInfo{

	public ArrayList<TeacVO> teach = new ArrayList<TeacVO>();
	
	private String name,id,gen,type;
	private int ban,grade;
	
	
	
	
	public ArrayList<TeacVO> writeInfo() {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("**** ["+this +"] 정보 입력프로그램 ****");
	
		while(true) {
			System.out.println();
			TeacVO tvo = new TeacVO();
			System.out.print("입력 ] 이름 : ");
			String name =sc.next();
			tvo.setName(name);
			System.out.print("입력 ] ID : ");
			String ID =idCheck(tvo,sc);			
			tvo.setId(ID);
			System.out.print("선택 ] 성별 1. 여자 , 2. 남자 ");
			int gen =sc.nextInt();
			tvo.setGen(gen);
			System.out.print("질문 ] 담임"+this+" 입니까? 1. 네 2.아니오");
			int no = sc.nextInt();
			chooseType(sc,tvo,no);
			System.out.print("1. 계속 입력, 2. 그만 : ");
			int num = sc.nextInt();
			teach.add(tvo);
			if(num==2) {
				System.out.println("입력을 종료합니다.");
				break;
			}
			
			
		}
		return teach;
		
		
		
	}
	
	public String idCheck(TeacVO tvo,Scanner sc) {
		
		String ID =	null;
		while(true) {
			ID = sc.next();
		if(!ID.startsWith("t")) {
			System.out.println("다시 입력! (사유 : "+this+"ID 양식에 맞지 않습니다.)");
		}
		else {
			
			System.out.println("*** 입력 성공! ***");
			break;
		}
		}
		return ID;
	}
	
	
	public void chooseType(Scanner sc, TeacVO tvo,int no) {
		
		if(no==1) 
		{
			System.out.print("입력 ] 담당 학년:");
			int hak = sc.nextInt();
			tvo.setGrade(hak);
			System.out.print("입력 ] 담당 반:");
			int ban = sc.nextInt();	
			tvo.setBan(ban);
		}
		if(no==2) {
			System.out.print("입력 ] 담당 과목 : ");
			String subj = sc.next();
			tvo.setsubj(subj);
		}
		tvo.setType(no);
	}
	

	public void toPrint(ArrayList<TeacVO> obj) {
		for(TeacVO list : obj) {
				System.out.println(list);
				if(obj.isEmpty()) {
					System.out.println("입력된 데이터 없음");
				}
			}
		
		}
	
	public String toString() {
		return "선생님";
	}


}

6. Info 클래스 : 학생 정보를 입력할지, 선생님 정보를 입력할지 선택해야 하기 때문에 해당 클래스를 만들어서 내가 입력하고 싶은 정보를 선택하면 객체를 생성해주었다.

package Info;

import java.util.ArrayList;
import java.util.Scanner;

import Info.student.StudInfo;
import Info.teacher.TeachInfo;
import VO.TeacVO;

public class Info{
	StudInfo s;
	TeachInfo t;

	public ArrayList<TeacVO> tvo;
	public Info(){
		
	}
	
	public void choose() {
	Scanner sc = new Scanner(System.in);
	
	while(true) {
		System.out.println("****["+this+"] 입력 프로그램****");
		System.out.print("1. 학생 / 2. 교직원 선택 : ");
		int no = sc.nextInt();
		if(no>2) {
			System.out.println("["+no+"]번은 잘못된 번호입니다. 다시 입력하세요");
			System.out.println();
			continue;
		}
		
	System.out.println("정보를 입력하세요");
	if(no==1) {
		s = new StudInfo();
		s.stud = s.setStud();
		s.toPrint(s.stud);
		
		
	}
	if(no==2) {
		t = new TeachInfo();
		t.teach = t.writeInfo();
		t.toPrint(t.teach);
		
	}
	System.out.println();
	System.out.println(this+"입력 프로그램 >> 1. 추가입력, 2. 그만");
	int input = sc.nextInt();
	if(input==2) {
		System.out.println("프로그램 종료");
		break;
	}
	}
	}
	public String toString() {
		return "학생 / 선생님 정보";
	}
		
}

 

7. Test 클래스 : 학생/선생님 정보 프로그램을 구현할 메인클래스

package Test;

import Info.Info;

public class Test {


	public static void main(String[] args) {
		Info in =  new Info();
		in.choose();
	
		
	}

}

 

 

결과

 

일단 이렇게 만들어주었다..ㅎㅎ 이번에도 역시나 중복되는 코드도 너무 많은게 함정..ㅠㅠ

계속 수정해보겠다ㅠㅠ끝...