ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] Map 성적관리 프로그램
    Java 2022. 9. 19. 01:40

    Student.java

    package Map;
    import java.util.TreeMap;
    import java.util.Iterator;
    import java.util.LinkedHashMap;
    import java.util.Scanner;
    
    class Student {
    	private int id;
    	private String name;
    	private LinkedHashMap<String, Integer> subject;
    	private int total;
    	private float avg;
    	private String flag;
    	private Scanner scan;
    
    	
    	public Student(int id) {
    		scan = new Scanner(System.in);
    		subject = new LinkedHashMap<String, Integer>();
    		
    		System.out.println("이름을 입력해주세요");
    		name = scan.next();
    		
    		do {
    			this.id = id;
    			System.out.println("과목 이름을 입력해주세요");
    			String sb = scan.next();
    			System.out.println("점수를 입력해주세요");
    			int score = scan.nextInt();
    			subject.put(sb, score);
    			System.out.println("계속 입력하시겠습니까? Y/N");
    			flag = scan.next();
    			total += score;
    		}while(flag.equals("Y") || flag.equals("y"));
    		
    		avg = (float) total / subject.size();
    	}	
    	
    	public void disp() {
    		System.out.println("학번: " + getId());
    		System.out.println("이름: " + getName());
    		for(String key : subject.keySet()) {
    			System.out.println(key + ": "+ subject.get(key) + "점");
    		}
    		System.out.println("총점: " + getTotal());
    		System.out.println("평균: " + getAvg());
    		System.out.println();
    	}
    	
    	public LinkedHashMap<String, Integer> getSubject(){
    		return subject;
    	}
    	
    	public String[] getSubjectArray() {
    		Iterator<String> keys = subject.keySet().iterator();
    		String[] sbName = new String[subject.size()];
    		int i = 0;
    		while(keys.hasNext()) {
    			String key = keys.next();
    			sbName[i++] = key;
        	}
    		
    		return sbName;
    	}
    
    	public void setSubject(LinkedHashMap<String, Integer> subject) {
    		this.subject = subject;
    	}
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public float getAvg() {
    		return avg;
    	}
    
    	public void setAvg(float avg) {
    		this.avg = avg;
    	}
    
    	public int getTotal() {
    		return total;
    	}
    
    	public void setTotal(int total) {
    		this.total = total;
    	}
    
    	public int getId() {
    		return id;
    	}
    
    	public void setId(int id) {
    		this.id = id;
    	}
    	
    }

     

    Main.java

    package Map;
    
    import java.util.Iterator;
    import java.util.LinkedHashMap;
    import java.util.Scanner;
    
    public class Main {
    	private LinkedHashMap<Integer ,Student> stu;
    	
    	public Main() {
    		stu = new LinkedHashMap<Integer ,Student>();
    	}
    	
    	public static void main(String[] args) {
    		Main m = new Main();
    		int index;
    		
    		Scanner scan = new Scanner(System.in);
    		Iterator<Integer> keys;
    		int key;
    		int score;
    		
    		Loop1:
    		while(true) {
    			System.out.println("번호를 입력하세요(1. 입력, 2. 출력, 3. 검색, 4. 삭제, 5. 종료)");
                int num = scan.nextInt();
                keys = m.stu.keySet().iterator();
                
                switch(num) {
                case 1:
                	System.out.println("학번을 입력해주세요");
                	index = scan.nextInt();
                	while(m.stu.containsKey(index)) {
                		System.out.println("이미 존재하는 학번입니다.");
                		continue Loop1;
                	}
                	m.stu.put(index, new Student(index));
                	break;
                case 2:
                	// 전체 출력(학번, 이름, 과목, 점수, 총점, 평균)
                	while(keys.hasNext()) {
                		key = keys.next();
                		m.stu.get(key).disp();
                	}
                	break;
                case 3:
                	System.out.println("1. 학번 검색, 2. 이름 검색, 3. 점수 검색");
                	int inputNum = scan.nextInt();
                	// 학번 검색
                	if(inputNum == 1) {
                		System.out.println("검색하실 학번을 입력해주세요");
                		int id = scan.nextInt();
                		key = keys.next();
                		
                		while(keys.hasNext()) {
                			if(m.stu.containsKey(id)) {
                				m.stu.get(id).disp();
                				break;
                    		}
                    	}break;
                	}
                	// 이름 검색
                	else if(inputNum == 2) {
                		System.out.println("검색하실 이름을 입력해주세요");
                		String inputName = scan.next();
                		
                		while(keys.hasNext()) {
                			key = keys.next();
                			String searchName = m.stu.get(key).getName();
                			if(searchName.equals(inputName)) {
                				m.stu.get(key).disp();
                    		}else if(!searchName.equals(inputName)) {
                    			continue;
                    		}
                    	}
                		break;
                	}
                	// 점수 검색
                	else if(inputNum == 3) {
                		System.out.println("1. 평균, 2. 과목당 검색");
                		int inputN = scan.nextInt();
                		if(inputN == 1) {
                			System.out.println("검색하실 평균을 입력해주세요");
                    		int avg = scan.nextInt();
                    		// 평균
                    		while(keys.hasNext()) {
                    			key = keys.next();
                    			float searchAvg = m.stu.get(key).getAvg();
                    			if(searchAvg >= avg) {
                    				m.stu.get(key).disp();
                        		}else if(searchAvg != avg) {
                        			continue;
                        		}
                        	}
                		}else if(inputN == 2) {
                			System.out.println("검색하실 과목을 입력해주세요");
                			String sb = scan.next();
                			int pointer = 0;
                			int searchScore = 0;
                			while(keys.hasNext()) {
                				key = keys.next();
                				String[] subject = m.stu.get(key).getSubjectArray();	// 과목이름 배열 위치값 공유
                				for(int i = 0; i < subject.length; i++) {
                					if(subject[i].equals(sb)) {
                						if(pointer == 0) {
                							System.out.println("점수를 입력해주세요");
                    						searchScore = scan.nextInt();
                    						pointer++;
                						}
                						score = m.stu.get(key).getSubject().get(sb);
                						if(score >= searchScore) {
                							m.stu.get(key).disp();
                						}
                    				}
                				}
                			}
                		}
                		break;
                	}
                case 4:	// 삭제
                	System.out.println("삭제하실 학생의 학번을 입력해주세요");
    				int numm = scan.nextInt();
                	while(keys.hasNext()) {
            			key = keys.next();
            			int searchId = m.stu.get(key).getId();
            			if(searchId == numm) {
            				m.stu.remove(key);
            				break;
                		}else if(searchId != numm) {
                			continue;
                		}
                	}
                	break;
                case 5: 
                	System.exit(-1);
                default:
                	System.out.println("다시 입력해주세요");
                }
    		}
    	}
    }
    728x90

    'Java' 카테고리의 다른 글

    [Java] Comparator  (1) 2023.12.03
    [Java] BigInteger 다루기  (0) 2022.10.02
    [Java] Set 성적관리 프로그램  (0) 2022.09.19
    [Java] ArrayList 성적관리 프로그램  (0) 2022.09.19
    [Java] 참조 자료형  (0) 2022.07.09
Designed by Tistory.