728x90
반응형
🚩 프로젝트 설계 및 보고서
💾 소스코드
📃 학생들의 c언어, 자바 성적을 저장하고 평균과 석차를 출력하는 성적관리 프로그램
🚨 본 프로그램은 동명의 학생이 없다는 가정 하에 만듭니다.
💬 저장할 데이터
◾ 이름(String)
◾ C언어 성적(int)
◾ 자바 성적(int)
◾ 평균(float)
◾ 석차(int)
◾ 학급 인원 : 5명
💬 메뉴
◾ 1. 데이터 입력 : 학생별 이름과 C언어와 자바 성적을 입력
◾ 2. 데이터 출력 : 저장된 모든 학생의 이름과 성적을 출력
◾ 3. 이름입력하면 과목별 성적과 평균 및 석차 출력
◾ 4. 성적순으로 이름 출력
◾ 5. 현재 입력된 학생들의 총인원수를 출력
◾ 6. 이름으로 삭제 (이름을 입력받아 학생의 정보를 모두 삭제)
📃 ScoreManagment, SelectMenu 클래스
package Project;
import java.util.Scanner;
public class ScoreManagment {
public static void main(String[] args) {
SelectMenu s = new SelectMenu();
s.Information();
s.ClickButton();
}
}
class SelectMenu {
final int MAX_NUM = 5; // 등록할 수 있는 최대 학생 수
int index = 0; // 등록한 학생 수
String[] name = new String[MAX_NUM]; // 학생 이름
int[] c_score = new int[MAX_NUM]; // C언어 성적
int[] java_score = new int[MAX_NUM]; // JAVA 성적
int[] rank = new int[MAX_NUM]; // 석차
int[] sum = new int[MAX_NUM]; // 합
float[] average = new float[MAX_NUM]; // 평균
Scanner s = new Scanner(System.in);
SelectMenu() {
for (int i = 0; i < MAX_NUM; i++) {
name[i] = "null";
}
}
// 기능 설명 출력
void Information() {
System.out.println("*****************************************");
System.out.println("\t [ 성적 관리 프로그램 ]\n\t실행할 기능의 번호를 입력하세요.");
System.out.println("-----------------------------------------");
System.out.println("1. 데이터 입력\n2. 데이터 출력\n3. 과목별 성적, 평균, 석차 확인\n4. 성적 석차 확인\n5. 학생 인원수 확인\n6. 학생 삭제");
}
// 버튼 선택하기
int WhatIsButton() {
int button;
button = s.nextInt();
return button;
}
// *****1. 데이터 입력 : 학생별 이름과 C언어와 자바 성적을 입력
void InputData() {
System.out.println("등록할 수 있는 최대 학생 수는 " + MAX_NUM + "명 입니다.");
System.out.println("현재 등록하는 학생은 " + (index + 1) + "번째 학생입니다.");
// 인덱스를 벗어나면 오류
if (index > MAX_NUM) {
System.out.println("오류");
return;
}
System.out.println("-----------------------------------------");
// 이름 입력
System.out.print("이름 >> ");
name[index] = s.next();
// C언어 성적 입력
System.out.print("C언어 성적 >> ");
c_score[index] = s.nextInt();
// JAVA 성적 입력
System.out.print("JAVA 언어 성적 >> ");
java_score[index] = s.nextInt();
index++;
}
// *****2. 데이터 출력 : 저장된 모든 학생의 이름과 성적을 출력
void OutputData() {
System.out.println("-----------------------------------------");
System.out.println("이름\t C성적\tJAVA성적");
for (int i = 0; i < index; i++) {
System.out.println(name[i] + "\t" + c_score[i] + "\t" + java_score[i]);
}
}
// *****3. 이름 입력하면 과목별 성적과 평균 및 석차 출력
void FindScore() {
System.out.println("-----------------------------------------");
System.out.print("성적을 검색하려면 이름을 적으세요>> ");
String nameLookup = s.next();
for (int i = 0; i < MAX_NUM; i++) {
if (name[i].equals(nameLookup)) {
System.out.println("이름\tC성적\tJAVA성적\t평균\t석차");
System.out.println(
name[i] + "\t" + c_score[i] + "\t" + java_score[i] + "\t" + getAvg()[i] + "\t" + getRank()[i]);
}
}
}
// *****4. 성적순으로 이름 출력
void ScoreRank() {
rank = getRank();
String[] arr = new String[rank.length];
for (int i = 0; i < MAX_NUM; i++) {
for (int j = 0; j < MAX_NUM; j++) {
if (rank[j] == (i + 1)) {
arr[i] = name[j];
}
}
}
for (int i = 0; i < index; i++) {
System.out.println((i + 1) + "등 : " + arr[i]);
}
}
// *****5. 현재 입력된 학생들의 총인원수를 출력
void StudentNumber() {
System.out.println("현재 입력된 학생 인원수 : " + index);
}
// *****6. 이름으로 삭제(이름을 입력받아 학생의 정보를 모두 삭제)
void RemoveInfo() {
System.out.print("삭제할 학생의 이름을 입력하세요 >> ");
String nameLookup = s.next();
for (int i = 0; i < index; i++) {
if (name[i].equals(nameLookup)) {
System.out.println(name[i] + "과 관련된 정보를 모두 삭제합니다.");
for (int j = i; j < index - 1; j++) {
name[j] = name[j + 1]; // 이름 제거
c_score[j] = c_score[j + 1]; // c언어 점수 제거
java_score[j] = java_score[j + 1]; // java언어 점수 제거
}
index--;
}
}
for (int i = 0; i < index; i++) {
System.out.println(name[i] + "\t" + c_score[i] + "\t" + java_score[i]);
}
// System.out.println("이름\tC성적\tJAVA성적");
// for(int i=0; i<index-1; i++) {
// if(name[i] == null) {
// --index;
// }
// System.out.println(
// name[i] + "\t" + c_score[i] + "\t" + java_score[i]);
// }
}
// 학생별 (C언어 점수 + JAVA언어 점수) 합계 반환 메소드
int[] getSum() {
// 0으로 모두 초기화
for (int i = 0; i < MAX_NUM; i++) {
sum[i] = 0;
}
for (int i = 0; i < MAX_NUM; i++) {
sum[i] += c_score[i] + java_score[i];
}
return sum;
}
// 학생별 평균 반환 메소드
float[] getAvg() {
sum = getSum();
for (int i = 0; i < MAX_NUM; i++) {
average[i] = (float) sum[i] / 2;
}
return average;
}
// 평균별 석차 구하는 메소드
int[] getRank() {
average = getAvg();
// 모두 1로 초기화
for (int i = 0; i < rank.length; i++) {
rank[i] = 1;
}
for (int i = 0; i < MAX_NUM; i++) {
for (int j = 0; j < MAX_NUM; j++) {
if (average[i] < average[j]) {
rank[i]++;
}
}
}
return rank;
}
// 버튼을 눌렀을 때
void ClickButton() {
int button = WhatIsButton();
switch (button) {
case 1:
System.out.println("\n메뉴 1 이동");
InputData();
Information();
ClickButton();
break;
case 2:
System.out.println("\n메뉴 2 이동");
OutputData();
Information();
ClickButton();
break;
case 3:
System.out.println("\n메뉴 3 이동");
FindScore();
Information();
ClickButton();
break;
case 4:
System.out.println("\n메뉴 4 이동");
ScoreRank();
Information();
ClickButton();
break;
case 5:
System.out.println("\n메뉴 5 이동");
StudentNumber();
Information();
ClickButton();
break;
case 6:
System.out.println("\n메뉴 6 이동");
RemoveInfo();
Information();
ClickButton();
break;
default:
System.out.println("잘못 입력하셨습니다.");
Information();
ClickButton();
}
}
}
💻 실행 결과
728x90
반응형
'Project > Study | etc' 카테고리의 다른 글
Team Project - 계산기 프로그램 (0) | 2022.07.01 |
---|---|
상품 구매 프로그램 (0) | 2022.06.29 |
랜덤 카드 추출 게임 (0) | 2022.06.26 |
Cat 클래스 만들기 (0) | 2022.06.23 |
성적 관리 프로그램 (0) | 2022.06.23 |
댓글