-
[Java] Set 성적관리 프로그램Java 2022. 9. 19. 01:39
Student.java
package Set; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Set; import java.util.Scanner; class Student { private int id; private String name; private LinkedHashSet<String> subject; private int[] grade; private int total; private float avg; private String flag; private Scanner scan; private Iterator<String> sb; public Student(int id) { scan = new Scanner(System.in); subject = new LinkedHashSet<String>(); this.id = id; System.out.println("이름을 입력해주세요"); name = scan.next(); do { System.out.println("과목 이름을 입력해주세요"); subject.add(scan.next()); System.out.println("계속 입력하시겠습니까? Y/N"); flag = scan.next(); sb = subject.iterator(); }while(flag.equals("Y") || flag.equals("y")); int j = 0; if(subject.isEmpty() == false) { grade = new int[subject.size()]; while(sb.hasNext()) { System.out.println(sb.next() + "점수를 입력해주세요"); int score = scan.nextInt(); grade[j++] = score; total += score; } } avg = (float) total / subject.size(); } public void disp() { sb = subject.iterator(); System.out.println("학번: " + getId()); System.out.println("이름: " + getName()); int j = 0; if(subject.isEmpty() == false) { while(sb.hasNext()) { System.out.print(sb.next() + ": "); System.out.println(grade[j++] + "점"); } } System.out.println("총점: " + getTotal()); System.out.println("평균: " + getAvg()); System.out.println(); } public int[] getGrade() { return grade; } public void setGrade(int[] grade) { this.grade = grade; } public String[] getSubject() { String sbsb; String[] sub = new String[subject.size()]; sb = subject.iterator(); int j = 0; while(sb.hasNext()) { sbsb = sb.next(); sub[j++] = sbsb; } return sub; } public void setSubject(LinkedHashSet<String> subject) { this.subject = subject; } public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } }
Main.java
package Set; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Set; import java.util.Scanner; public class Main { private LinkedHashSet<Student> stu; private Iterator<Student> subject; private Object[] obj; public Main() { stu = new LinkedHashSet<Student>(); } public static void main(String[] args) { Main m = new Main(); Scanner scan = new Scanner(System.in); String name; int[] grade; Loop1: while(true) { System.out.println("번호를 입력하세요(1. 입력, 2. 출력, 3. 검색, 4. 삭제, 5. 종료)"); int num = scan.nextInt(); m.subject = m.stu.iterator(); int id = 0; switch(num) { case 1: int point = 0; if(!m.subject.hasNext()) { System.out.println("학번을 입력해주세요"); id = scan.nextInt(); } while(m.subject.hasNext()) { if(point == 0) { // m.subject.hasNext() 여러번 반복하니까 1번만 출력하기 위해서 System.out.println("학번을 입력해주세요"); id = scan.nextInt(); point ++; } Student s = m.subject.next(); if(s.getId() == id) { System.out.println("이미 존재하는 학번입니다."); continue Loop1; } } m.stu.add(new Student(id)); break; case 2: // 전체 출력(반, 이름, 과목, 점수, 총점, 평균) while(m.subject.hasNext()){ m.subject.next().disp(); } break; case 3: System.out.println("1. 학번 검색, 2. 이름 검색, 3. 점수 검색"); int inputNum = scan.nextInt(); // 학번 검색 if(inputNum == 1) { System.out.println("검색하실 학번을 입력해주세요"); id = scan.nextInt(); while(m.subject.hasNext()) { Student s = m.subject.next(); if(s.getId() == id) { s.disp(); } } break; } // 이름 검색 else if(inputNum == 2) { System.out.println("검색하실 이름을 입력해주세요"); name = scan.next(); while(m.subject.hasNext()) { Student s = m.subject.next(); if(s.getName().equals(name)) { s.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(); while(m.subject.hasNext()) { Student s = m.subject.next(); if(s.getAvg() >= avg) { s.disp(); } } break; } // 과목 당 else if(inputNum2 == 2) { System.out.println("검색하실 과목을 입력해주세요"); String sb = scan.next(); int k = 0; // 포인터 int score = 0; // 값 입력받을 예정 while(m.subject.hasNext()) { Student s = m.subject.next(); // 첫 번째 원소 값부터 저장 String[] subArray = s.getSubject(); // 현재 값의 과목 이름 배열과 ubArray 배열 위치값 공유 for(int j=0 ; j < subArray.length; j++) { // 과목 수만큼 반복 if(subArray[j].equals(sb)) { // subArray[i]가 입력한 과목 이름이랑 같으면 if(k == 0) { System.out.println("검색하실 점수를 입력해주세요"); score = scan.nextInt(); k++; // 한 번만 출력하기 위해서 k값을 1 증가시킴 } grade = s.getGrade(); // 현재 값의 점수배열과 grade 배열 위치값 공유 if(grade[j] >= score) { // 입력한 과목 점수보다 grade[j]값이 크면 출력 s.disp();} } } } } break; } case 4: // 삭제 System.out.println("삭제하실 학생의 학번을 입력해주세요"); id = scan.nextInt(); while(m.subject.hasNext()) { Student s = m.subject.next(); if(s.getId() == id) { m.stu.remove(s); break; } } break; case 5: System.exit(-1); default: System.out.println("다시 입력해주세요"); } } } }
728x90'Java' 카테고리의 다른 글
[Java] BigInteger 다루기 (0) 2022.10.02 [Java] Map 성적관리 프로그램 (0) 2022.09.19 [Java] ArrayList 성적관리 프로그램 (0) 2022.09.19 [Java] 참조 자료형 (0) 2022.07.09 [Java] 제어문 (0) 2022.07.08