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