Java

[Java] ArrayList 성적관리 프로그램

다콩잉 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