ABOUT ME

-

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

    Student.java

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    class Student {
    	private int ban;
    	private String name;
    	private ArrayList<String> subject;
    	private ArrayList<Integer> grade;
    	private int total;
    	private float avg;
    	private String flag;
    	private Scanner scan = new Scanner(System.in);
    	
    	public Student() {
    
    		subject = new ArrayList<String>();
    		grade = new ArrayList<Integer>();
    		
    		System.out.println("반을 입력해주세요");
    		ban = scan.nextInt();
    		System.out.println("이름을 입력해주세요");
    		name = scan.next();
    		
    		do {
    			System.out.println("과목 이름을 입력해주세요");
    			subject.add(scan.next());
    			System.out.println("계속 입력하시겠습니까? Y/N");
    			flag = scan.next();
    		}while(flag.equals("Y") || flag.equals("y"));
    		
    		for(int i = 0; i < subject.size(); i++) {
    			System.out.println(getSubject().get(i) + "점수를 입력해주세요");
    			int score = scan.nextInt();
    			grade.add(score);
    			total += score;
    		}
    		avg = (float) total / subject.size();
    	}	
    	
    	public void disp() {
    		System.out.println(getBan() + "반");
    		System.out.println("이름: " + getName());
    		for(int j = 0; j < getSubject().size(); j++) {
    			System.out.print(getSubject().get(j) + ": ");
        		System.out.println(getGrade().get(j) + "점");
    		}
    		System.out.println("총점: " + getTotal());
    		System.out.println("평균: " + getAvg());
    		System.out.println();
    	}
    
    	public int getBan() {
    		return ban;
    	}
    
    	public void setBan(int ban) {
    		this.ban = ban;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public ArrayList<String> getSubject() {
    		return subject;
    	}
    
    	public void setSubject(String subject, String name, int score) {
    		int index = this.subject.indexOf(subject);
    		this.subject.set(index, name);
    		grade.set(index, score);
    	}
    
    	public ArrayList<Integer> getGrade() {
    		return grade;
    	}
    
    	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;
    	}
    	
    }

     

     

    Main.java

    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class Main {
    	private ArrayList<Student> stu;
    	private ArrayList<Student> newStu;
    	
    	public Main() {
    		stu = new ArrayList<Student>();
    		newStu = new ArrayList<>();
    	}
    	
    	public static void main(String[] args) {
    		Main m = new Main();
    		
    		Scanner scan = new Scanner(System.in);
    		String name;
    		
    		while(true) {	
    			System.out.println("번호를 입력하세요(1. 입력, 2. 출력, 3. 검색, 4. 삭제, 5. 수정, 6. 종료)");
                int num = scan.nextInt();
                switch(num) {
                case 1:
                	m.stu.add(new Student());
                	break;
                case 2:
                	// 전체 출력(반, 이름, 과목, 점수, 총점, 평균) 
                	for(int i = 0; i < m.stu.size() ; i++) {
                		m.stu.get(i).disp();
                	}
                	break;
                case 3:
                	System.out.println("1. 반 검색, 2. 이름 검색, 3. 점수 검색");
                	int inputNum = scan.nextInt();
                	// 반 검색
                	if(inputNum == 1) {
                		System.out.println("검색하실 반을 입력해주세요");
                		int ban = scan.nextInt();
                		for(int i = 0; i < m.stu.size(); i++) {
                    		if(m.stu.get(i).getBan() == ban) {
                    			m.stu.get(i).disp();
                    		}
                    	}
                		break;
                	}
                	// 이름 검색
                	else if(inputNum == 2) {
                		System.out.println("검색하실 이름을 입력해주세요");
                		name = scan.next();
                		for(int i = 0; i < m.stu.size(); i++) {
                    		if(m.stu.get(i).getName().equals(name)) {
                    			m.stu.get(i).disp();
                    		}
                    	}
                		break;
                	}
                	// 점수 검색
                	else if(inputNum == 3) {
                		System.out.println("1. 평균, 2. 과목점수");
                		int inputNum2 = scan.nextInt();
                		// 평균
                		if(inputNum2 == 1) {
                			System.out.println("검색하실 평균을 입력해주세요");
            				int avg = scan.nextInt();
                			for(int i = 0; i < m.stu.size(); i++) {
                        		if(m.stu.get(i).getAvg() >= avg) {
                        			m.stu.get(i).disp();
                        		}
                        	}	
                		}
                		// 과목 당
                		else if(inputNum2 == 2) {
                			System.out.println("검색하실 과목을 입력해주세요");
                			String sb = scan.next();
                			int pointer = 0 ;
                			int score = 0;
                			for(int i = 0; i < m.stu.size(); i++) {
                				for(int j = 0; j < m.stu.get(i).getSubject().size(); j++) {
                					if(m.stu.get(i).getSubject().get(j).equals(sb)) {
                						if(pointer == 0) {
                							System.out.println("검색하실 점수를 입력해주세요");
                    						score = scan.nextInt();
                    						pointer++;
                						}
                						if(m.stu.get(i).getGrade().get(j) >= score) {
                							m.stu.get(i).disp();
                						}	
                					}
                				}
                        	}
                		}
                		break;
                	}
                case 4:	// 삭제
                	System.out.println("삭제하실 학생의 이름을 입력해주세요");
    				name = scan.next();
        			for(int i = 0; i < m.stu.size(); i++) {
                		if(m.stu.get(i).getName().equals(name)) {
                			m.stu.remove(i);
                		}
                	}
                	break;
    case 5:	// 수정
                	System.out.println("수정하실 학생의 이름을 입력해주세요");
                	name = scan.next();
                	m.newStu = new ArrayList<>();
                	for(int i = 0; i < m.stu.size() ; i++) {
                		if(m.stu.get(i).getName().equals(name)) {
                			m.newStu.add(m.stu.get(i));
                		}
                	}
                	for(int i = 0; i < m.newStu.size(); i++) {
                		System.out.println((i) + "번");
                		m.newStu.get(i).disp();
                	}
                	
                	int size = m.newStu.size();
            		
            		System.out.println("동명이인 중 선택해주세요 (0 ~ " + (size-1) + ")");
        			int search = scan.nextInt();
        			if(search == 0 || search == size) {
        				System.out.println("1. 반, 2. 이름, 3. 과목 점수");
        				int inputNum1 = scan.nextInt();
        				if(inputNum1 == 1) {
        					System.out.println("변경하실 반을 입력해주세요");
        					m.newStu.get(search).setBan(scan.nextInt());
        				}else if(inputNum1 == 2) {
        					System.out.println("변경하실 이름을 입력해주세요");
        					m.newStu.get(search).setName(scan.next());
        				}
        				else if(inputNum1 == 3) {
        					for(int k = 0; k < m.newStu.get(search).getSubject().size(); k++) {
        						System.out.println("변경을 원하시는 과목을 입력해주세요");
            					String subject = scan.next();
            					System.out.println("변경하실 과목명을 입력해주세요");
            					name = scan.next();
            					System.out.println("점수를 입력해주세요");
            					int score = scan.nextInt();
            					m.newStu.get(search).setSubject(subject, name, score);
        					}
        					System.out.println("수정이 완료되었습니다");
        					m.newStu.get(search).disp();
        				}
        			}	    	
                	break;
                case 6: 
                	System.exit(-1);
                default:
                	System.out.println("다시 입력해주세요");
                }
    		}
    	}
    	
    }

     

    728x90

    'Java' 카테고리의 다른 글

    [Java] Map 성적관리 프로그램  (0) 2022.09.19
    [Java] Set 성적관리 프로그램  (0) 2022.09.19
    [Java] 참조 자료형  (0) 2022.07.09
    [Java] 제어문  (0) 2022.07.08
    [Java] 연산자  (0) 2022.07.08
Designed by Tistory.