백지부터 시작하는 이세계 코딩 생활

성적 입출력 본문

JAVA/조건문

성적 입출력

조아덕 2020. 8. 8. 23:37

값을 입력받고 결과를 출력한다.

값을 출력 할 때는 등급, 평균, 랭크까지 함께 출력되게 한다.

import java.util.Scanner;

import static java.lang.System.out;

public class s0504_성적출력_sol {

         static final int MAX = 100;

         static int top = 0; // 현재 입력 위치 index

         static String[] name = new String[MAX];

         static int[] kor = new int[MAX];

         static int[] eng = new int[MAX];

         static int[] mat = new int[MAX];

         static int[] total = new int[MAX];

         static double[] avg = new double[MAX];

         static char[] grade = new char[MAX];

         static int[] rank = new int[MAX];

         static Scanner scan = new Scanner(System.in);

         static String[] menuItems = { "INPUT", "OUTPUT", "SEARCH", "MODIFY", "DELETE", "END" };

         static int input() {

                 System.out.println("---- 입력기능 --");

                 if (top >= MAX) {

                          out.println("더 이상 입력 할 수 없습니다!");

                         

                 }

                 out.print("성명입력: ");

                 name[top] = scan.next();

                 do {

                          out.print("국어점수: ");

                          kor[top] = scan.nextInt();

                 } while (kor[top] < 0 || kor[top] > 100);

                 do {

                          out.print("영어점수: ");

                          eng[top] =scan.nextInt();

                 } while (eng[top] < 0 || eng[top] > 100);

                 do {

                          out.print("수학점수: ");

                          mat[top] =scan.nextInt();

                 } while (mat[top] < 0 || mat[top] > 100);

                 total[top] = kor[top] + eng[top] + mat[top];

                 avg[top] = total[top] / 3.0;

                 switch ((int) avg[top] / 10) {

                 case 10:

                 case 9:

                          grade[top] = 'A';

                          break;

                 case 8:

                          grade[top] = 'B';

                          break;

                 case 7:

                          grade[top] = 'C';

                          break;

                 case 6:

                          grade[top] = 'D';

                          break;

                 default:

                          grade[top] = 'F';

                 }

                 for (int i = 0; i <= top; i++) {

                          rank[i] = 1;

                          for (int j = 0; j <= top; j++) {

                                   if (total[i] < total[j]) {

                                            rank[i]++;

                                   }

                          }

                 }

                 return top++;

         }

          static int output() {

                 out.println("---- 출력기능 --");

                 // 목록 출력

                 out.printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "번호", "성명", "국어", "영어", "수학", "총점", "평균", "학점", "등수");

                 for (int i = 0; i < top; i++) {

                          out.printf("%d\t%s\t%d\t%d\t%d\t%d\t%.1f\t%c\t%d\n", i, name[i],kor[i], eng[i], mat[i], total[i], avg[i],

                                            grade[i],rank[i]);

                 }

                 return top;

         }

          static int search() {

                 out.println("---- 검색기능 --");

                 if (top == 0) {

                          out.println("저장 된 데이터 내용이 없습니다.");

                         

                 }

                 out.print("성명입력: ");

                 String searchName = scan.next();

                 out.printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", "번호", "성명", "국어", "영어", "수학", "총점", "평균", "학점", "등수");

                 boolean flag = false;

                 for (int i = 0; i < top; i++) {

                          if (searchName.equals(name[i])) {

                                   out.printf("%d\t%s\t%d\t%d\t%d\t%d\t%.1f\t%c\t%d\n", i, name[i],kor[i], eng[i], mat[i], total[i],

                                                    avg[i],grade[i], rank[i]);

                                   flag= true;

                          }

                 }

                 if (!flag) {

                          out.println("검색 내용이 없습니다!");

                 }

                 return top;

         }

          public static void modify() {

                 out.println("---- 수정기능 --");

                 out.print("수정 할 학생의 번호 입력: ");

                 int no =scan.nextInt();

                 out.println("no=>" + no + ",top=>" + top);

                 while (no < 0 || no >= top) {

                          out.println("범위를 벗어났습니다!");

                          out.print("번호 다시 입력: ");

                          no = scan.nextInt();

                 }

                 out.print("성명입력: ");

                 name[no] = scan.next();

                 do {

                          out.print("국어점수: ");

                          kor[no] =scan.nextInt();

                 } while (kor[no] < 0 || kor[no] > 100);

                 do {

                          out.print("영어점수: ");

                          eng[no] =scan.nextInt();

                 } while (eng[no] < 0 || eng[no] > 100);

                 do {

                          out.print("수학점수: ");

                          mat[no] =scan.nextInt();

                 } while (mat[no] < 0 || mat[no] > 100);

                 total[no] = kor[no] + eng[no] + mat[no];

                 avg[no] = total[no] / 3.0;

                 switch ((int) avg[no] / 10) {

                 case 10:

                 case 9:

                          grade[no] = 'A';

                          break;

                 case 8:

                          grade[no] = 'B';

                          break;

                 case 7:

                          grade[no] = 'C';

                          break;

                 case 6:

                          grade[no] = 'D';

                          break;

                 default:

                          grade[no] = 'F';

                 }

                 for (int i = 0; i <= top; i++) {

                          rank[i] = 1;

                          for (int j = 0; j <= top; j++) {

                                   if (total[i] < total[j]) {

                                            rank[i]++;

                                   }

                          }

                 }

                

                

         }

          static int delete() {

                 out.println("---- 삭제기능 --");

                 if (top == 0) {

                          out.println("삭제 할 내용이 없습니다!");

                         

                 }

                 out.print("삭제 할 번호 입력: ");

                 int no = scan.nextInt();

                 while (no < 0 || no >= top) {

                          out.print("삭제 할 번호 다시 입력: ");

                          no =scan.nextInt();

                 }

                 // no 첨자를 기준으로 한칸씩 앞으로 땡겨주기

                 for (int i = no; i < top - 1; i++) {

                          name[i] = name[i + 1];

                          kor[i] = kor[i + 1];

                          eng[i] = eng[i + 1];

                          mat[i] = mat[i + 1];

                          total[i] = total[i + 1];

                          avg[i] = avg[i + 1];

                          grade[i] = grade[i + 1];

                          rank[i] = rank[i + 1];

                 }

                 top--;

                 return no;

         }

         public static void end() {

                 out.println("---- 종료기능 --");

         }

         public static void main(String[] args) {

                 int no = 0;

                 while (true) {

                          // 메뉴 출력

                          out.println("-------------성적 출력 프로그램 ------------");

                          for (int i = 0; i < menuItems.length; i++) {

                                   out.printf("%s(%d)", menuItems[i], i + 1);

                          }

                          System.out.print("\n선택: ");

                          no = scan.nextInt();

                          switch (no) {

                          case 1:

                                   input();

                                   break;

                          case 2:

                                   output();

                                   break;

                          case 3:

                                   search();

                                   break;

                          case 4:

                                   modify();

                                   break;

                          case 5:

                                   delete();

                                   break;

                          case 6:

                                   end();

                                   System.exit(0);

                                   break;

                          default:

                                   out.println("잘못 입력 하셨습니다!");

                          }

                          System.out.println();

                 }

         }

}

 

성적 값 입력하기.
입력 값 출력하기.

'JAVA > 조건문' 카테고리의 다른 글

날짜 계산기  (0) 2020.08.08
조건문, 스무고개 만들기  (0) 2020.08.08
Comments