220419_JAVA_문제풀어보기(정보 입력프로그램)
학생/ 선생님 정보 입력 프로그램을 만들어보았다.. 별다른 구현은 하지 못하고
그냥 입력받아서 저장만 하는..? 그런 프로그램이다.
패키지구성은 하기와 같이 했다..ㅎ
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();
}
}
결과
일단 이렇게 만들어주었다..ㅎㅎ 이번에도 역시나 중복되는 코드도 너무 많은게 함정..ㅠㅠ
계속 수정해보겠다ㅠㅠ끝...