본문 바로가기
(JAVA)자바/(JAVA)자바 실습

(JAVA)자바 학생정보입력 프로그램 - 실습

by 공부가싫다가도좋아 2021. 1. 31.
반응형

학생정보입력 프로그램


학생정보 입력프로그램을 만들어 봤습니다.

input,output,search,driver 총 4개의 클래스로 분리했습니다.

 

조건


1. 학생 정보 입력 가능하게 만들기

2. 출력 가능하게 만들기

3. 20~100살 까지만 입력 가능

4. 학생정보를 찾을 수 있는 검색기능 만들기

 

코드


Driver class

package TEST03;

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

public class Driver {  //전체 코드 운영 클래스
	
	String name;  //이름
	int age;      //나이

	Driver(){

	}

	Driver(String name,int age){
		this.name=name;
		this.age=age;
	}

	void run() {
		Scanner scan=new Scanner(System.in);
		ArrayList <Driver> lst=new ArrayList<>();  
        //학생 정보를 담을ArrayList 선언
        
		Driver d=new Driver("코드짜는 문과녀",25); //초기 데이터 집어 넣기
		lst.add(d);
        
		for(;;) {	

			menu();
			
			int menu_select=scan.nextInt();	

			if(menu_select==1) {
				Input in=new Input();
				in.input(lst);
				for(;;) {
				System.out.println("계속 입력하시겠습니까?(Y/N)");
				
				char answer=scan.next().charAt(0);
				
				if(answer=='Y' || answer=='y') {
					in.input(lst);
				}
				else if(answer=='N' || answer=='n') {
					break;
				}
				else {
					System.out.println("Y와 N 중에만 선택해주세요.");
					continue;
				}
				
				}
			}//if(menu_select==1)
			
			if(menu_select==2) {
				Output out=new Output();
				out.output(lst);
			}//if(menu_select==2)
			
			if(menu_select==3) {
				Search sc=new Search();
				sc.search(lst);
				
			}
			if(menu_select==4) {
				System.out.println("프로그램을 종료합니다.");
				break;
			}
		}
	}
	void menu() {

		

		System.out.println("<<메뉴>>");
		System.out.println("1. 학생 정보 입력");
		System.out.println("2. 학생 정보 전체 출력");
		System.out.println("3. 검색");
		System.out.println("4. 종료");
		System.out.print("메뉴 선택>>>>");
		System.out.println();


	}




	public static void main(String[] args) {
		Driver driver=new Driver();
		driver.run();

	}

}

 

Input class

package TEST03;

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

public class Input {  //학생정보 입력하는 클래스
	int tmp;

	Input(){

	}
	void input(ArrayList <Driver> lst) {
		Driver d=new Driver();
		Scanner scan=new Scanner(System.in);

		System.out.println("<<학생 정보 입력>>");

		Back_main:	for(;;) {

			System.out.print("이름:");
			d.name=scan.next();
			System.out.println();
			

			for(;;) {
				System.out.print("나이:");
				d.age=scan.nextInt();
				

				if(!(d.age>=20&&d.age<=100)){  //20~100살까지만 입력
					System.out.println("나이는 20~100살 까지만 입력 가능합니다.");
					continue;

				}
				
				
				break;
	
			}
			lst.add(d);
			break;
			
				

		}
	}

	}

 

Output class

package TEST03;

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

public class Output {    //학생정보 출력 클래스

	Output() {

	}

	void output(ArrayList<Driver> lst) {
		Scanner scan = new Scanner(System.in);

		Driver d = new Driver();
		for (;;) {
			menu();
			int select = scan.nextInt();
			if (select == 1) {
				System.out.println("<<학생 정보 전체 출력>>");
				System.out.println("-------------------------");
				for (int i = 0; i < lst.size(); i++) {
					System.out.println(i + 1 + ". 이름:" + lst.get(i).name + 
							           ", 나이:" + lst.get(i).age);
                                       
					System.out.println("-------------------------");
				}
				System.out.println();
			} // if(select==1)

			if (select == 2) {
				System.out.println("<<나이대별 전체 출력>>");
				System.out.println("-------------------------");
				System.out.println("20대");
				for (int i = 0; i < lst.size(); i++) {

					if (lst.get(i).age >= 20 && lst.get(i).age < 30) {

						System.out.println("이름:" + lst.get(i).name + 
								    ", 나이:" + lst.get(i).age);

					}
				}
				System.out.println("-------------------------");
				System.out.println("30대");
				for (int i = 0; i < lst.size(); i++) {
					if (lst.get(i).age >= 30 && lst.get(i).age < 40) {

						System.out.println("이름:" + lst.get(i).name + 
								     ", 나이:" + lst.get(i).age);

					}
				}
				System.out.println("-------------------------");
				System.out.println("40대");
				for (int i = 0; i < lst.size(); i++) {
					if (lst.get(i).age >= 40 && lst.get(i).age < 50) {

						System.out.println("이름:" + lst.get(i).name + 
								     ", 나이:" + lst.get(i).age);

					}
				}
				System.out.println("-------------------------");
				System.out.println("50대");
				for (int i = 0; i < lst.size(); i++) {
					if (lst.get(i).age >= 50 && lst.get(i).age < 60) {

						System.out.println("이름:" + lst.get(i).name + 
								     ", 나이:" + lst.get(i).age);

					}
				}
				System.out.println("-------------------------");
				System.out.println("60대");
				for (int i = 0; i < lst.size(); i++) {
					if (lst.get(i).age >= 60 && lst.get(i).age < 70) {

						System.out.println("이름:" + lst.get(i).name + 
								     ", 나이:" + lst.get(i).age);

					}
				}
				System.out.println("-------------------------");
				System.out.println("70대");
				for (int i = 0; i < lst.size(); i++) {
					if (lst.get(i).age >= 70 && lst.get(i).age < 80) {

						System.out.println("이름:" + lst.get(i).name + 
								    ", 나이:" + lst.get(i).age);

					}
				}
				System.out.println("-------------------------");
				System.out.println("80대");
				for (int i = 0; i < lst.size(); i++) {

					if (lst.get(i).age >= 80 && lst.get(i).age < 90) {

						System.out.println("이름:" + lst.get(i).name + 
								    ", 나이:" + lst.get(i).age);

					}
				}
				System.out.println("-------------------------");
				System.out.println("90대,100");
				for (int i = 0; i < lst.size(); i++) {
					if (lst.get(i).age >= 90 && lst.get(i).age <= 100) {

						System.out.println("이름:" + lst.get(i).name + 
								    ", 나이:" + lst.get(i).age);

					}
				}
				System.out.println("-------------------------");

			} // if(select==2)
			System.out.println();
			if (select == 3) {
				break;
			}
		}

	}

	void menu() {
		System.out.println("-------------------------");
		System.out.println("1.전체출력");
		System.out.println("2.나이대별 출력");
		System.out.println("3.돌아가기");
		System.out.print("선택>>>>");
		System.out.println();
		System.out.println("-------------------------");
	}
}

 

Search class

package TEST03;

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

public class Search {
	Search(){

	}
	void search(ArrayList<Driver> lst) {
		Scanner scan=new Scanner(System.in);
		Driver d = new Driver();
		int tmp=0;

		System.out.println("<<학생 정보 검색>>");
		for(;;) {
			menu();
			int select=scan.nextInt();
			if(select==1) {
				tmp=0;
				System.out.println("-이름으로 검색-");
				System.out.println("이름:");
				String name=scan.next();
				for(int i=0;i<lst.size();i++) {
					if(lst.get(i).name.equals(name)) {
						if(tmp==0) System.out.println(lst.get(i).name+"의 정보");
						System.out.println("이름:"+lst.get(i).name+", 나이:"+lst.get(i).age);
						System.out.println("-----------------------------");

						tmp++;
					}
					else {
						System.out.println("해당 정보를 찾을 수 없습니다.");
						System.out.println("메뉴로 돌아갑니다.");
						System.out.println();
						continue;
					}
				}

			}//if(select==1) 

			if(select==2) {
				tmp=0;
				System.out.println("-나이로 검색-");
				System.out.println("나이:");
				while (!scan.hasNextInt()) {
					scan.next();
					System.err.println("숫자만 입력가능");
					System.out.println("나이:");
				}
				int age=scan.nextInt();
				for(int i=0;i<lst.size();i++) {
					if(lst.get(i).age==age) {
						if(tmp==0)  System.out.println(lst.get(i).age+"살인 학생들의 정보");
						
						
						System.out.println("이름:"+lst.get(i).name+", 나이:"+lst.get(i).age);
						System.out.println("-----------------------------");

						tmp++;
					}
					else {
						System.out.println("검색하신 나이의 학생은 찾을 수 없습니다.");
					}
				}

			}
			if(select==3) {
				break;
			}
		}//for(;;)

	}//void search(ArrayList<Driver> lst)
	void menu() {
		System.out.println("-------------------------");
		System.out.println("메뉴");
		System.out.println("1.이름으로 검색");
		System.out.println("2.나이로 검색");
		System.out.println("3.돌아가기");
		System.out.print("메뉴선택>>>");
		System.out.println("-------------------------");
	}

}
반응형

댓글