[Java] 객체지향 콘솔 성적관리 프로그램
- Language/Java
- 2018. 10. 24.
자바를 초창기때 배웠을때 만들어봤었던 콘솔 성적관리 프로그램입니다. 지금 보면 정말 별거아니지만 그 당시 밤을 새워가며 열심히 코딩했었던 기억이 나네요. 그때가 정말 그립습니다. ㅎㅎㅎ
프로그램 구조는 HashMap<Integer, Student> 이런식으로 되어있습니다. Student클래스에 학생성적의 정보를 담아두고 Map을 put하거나 remove하는 방식입니다.
Main.java
package CollectionScore;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Score score = new Score();
int i=0;
while(true){
Student student = new Student();
System.out.println("1.입력 2.수정(이름) 3.삭제(이름) 4.출력");
int select = sc.nextInt();
switch (select) {
case 1:
score.Input(student);
i++;
break;
case 2:
score.Modify();
break;
case 3:
score.Delete();
break;
case 4:
score.Output();
break;
default:
break;
}
}
}
}
Student.java
package CollectionScore;
public class Student {
String name;
int kor;
int eng;
int mat;
int sum;
double avg;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMat() {
return mat;
}
public void setMat(int mat) {
this.mat = mat;
}
public int getSum() {
return sum;
}
public void setSum(int kor,int eng,int mat) {
sum = kor+eng+mat;
avg = sum/3.f;
}
public double getAvg() {
return avg;
}
public void setAvg(double avg) {
this.avg = avg;
}
public void Modify(int kor,int eng,int mat){
this.kor = kor;
this.eng = eng;
this.mat = mat;
result();
}
public void result(){
avg=sum/3.f;
}
}
Score.java
package CollectionScore;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
public class Score{
int people;
Scanner sc;
HashMap<Integer, Student> stu;
int number=0;
Score() {
sc = new Scanner(System.in);
stu = new HashMap<Integer, Student>();
}
public void Input(Student st) {
sc = new Scanner(System.in);
System.out.println("이름을 입력해주세요");
String name = sc.next();
st.setName(name);
System.out.println(name + "의 국어 성적을 입력해주세요");
int kor = sc.nextInt();
st.setKor(kor);
System.out.println(name + "의 영어 성적을 입력해주세요");
int eng = sc.nextInt();
st.setEng(eng);
System.out.println(name + "의 수학 성적을 입력해주세요");
int mat = sc.nextInt();
st.setMat(mat);
st.setSum(kor, eng, mat);
st.result();
stu.put(number,st);
number = number+1;
}
public void Output() {
Set<Integer> keySet = stu.keySet();
Iterator<Integer> iterator = keySet.iterator();
while (iterator.hasNext()) {
int key = iterator.next();
System.out.print(" 이름 :" + stu.get(key).getName());
System.out.print(" 국어 :" + stu.get(key).getKor());
System.out.print(" 영어 :" + stu.get(key).getEng());
System.out.print(" 수학 :" + stu.get(key).getMat());
System.out.print(" 총점 :" + stu.get(key).getSum());
System.out.print(" 평균 :" + stu.get(key).getAvg());
System.out.println(" ");
}
}
public void Modify() {
System.out.println("누구를 수정하시겠습니까?");
String name = sc.next();
Set<Integer> keySet = stu.keySet();
Iterator<Integer> iterator = keySet.iterator();
while (iterator.hasNext()) {
int key = iterator.next();
if (name.equals(stu.get(key).getName())) {
System.out.println(stu.get(key).getName() + "님의 바뀐 국어성적을 입력해주세요");
int kor = sc.nextInt();
stu.get(key).setKor(kor);
System.out.println(stu.get(key).getName() + "님의 바뀐 영어성적을 입력해주세요");
int eng = sc.nextInt();
stu.get(key).setEng(eng);
System.out.println(stu.get(key).getName() + "님의 바뀐 수학성적을 입력해주세요");
int mat = sc.nextInt();
stu.get(key).setMat(mat);
stu.get(key).setSum(kor, eng, mat);
stu.get(key).result();
}
}
}
public void Delete() {
System.out.println("누구를 삭제하시겠습니까?");
String name = sc.next();
for (int i = 0; i < stu.size(); i++) {
if (name.equals(stu.get(i).getName())) {
stu.remove(i);
}
}
}
}
'Language > Java' 카테고리의 다른 글
[Java] 현재날짜, 현재시간을 원하는 형태로 출력하는(Format) 다양한 방법 (1) | 2018.10.26 |
---|---|
[Java] ArrayList로 구현한 Memory구조(Stack,Pop) (0) | 2018.10.25 |
[Java] Int 배열의 최댓값 최소값 구하기 (9) | 2018.10.02 |
[Java] 배열의 여러가지 선언 및 초기화 방법 (4) | 2018.10.01 |