Notice
Recent Posts
Recent Comments
Link
drexqq
[Java, 자바] 성적 통계프로그램.ver3 본문
728x90
반응형
기존에 있던 성적 통계프로그램을 계속해서 업그레이드 하는 중이다.
어디까지 가는지 궁금하면 자주 와서 확인해보자..
코드
import java.util.Scanner;
public class mainClass {
public static void main(String[] args) {
/*
학생 성적 관리
String student[][];
-------메뉴-------
1. 학생 정보 추가 insert (ex : 이름, 나이, 영어, 수학)
2. 학생 정보 삭제 delete 빈문자열로 초기화
3. 학생 정보 검색 search 이름으로 검색
4. 학생 정보 수정 update 이름으로 검색 후 수정
5. 학생 정보 모두 출력 findAll
------------
6. 과목의 총점 (ex : 1.영어, 2.수학)
7. 과목의 평균
--------------
8. 성적순으로 정렬해서 출력
*/
Scanner sc = new Scanner(System.in);
String student[][] = new String[20][4];
// 배열 초기화
for (int i = 0; i < student.length; i++) {
for (int j = 0; j < student[i].length; j++) {
student[i][j] = "";
}
}
int choice;
while(true) {
System.out.println("-------메뉴-------");
System.out.println("1. 학생 정보 추가");
System.out.println("2. 학생 정보 삭제");
System.out.println("3. 학생 정보 검색");
System.out.println("4. 학생 정보 수정");
System.out.println("5. 학생 정보 모두 출력");
System.out.println("6. 과목의 총점");
System.out.println("7. 과목의 평균");
System.out.println("8. 성적순으로 정렬해서 출력");
System.out.println("메뉴 번호를 입력해주세요.");
System.out.print(">>> ");
choice = sc.nextInt();
switch (choice) {
case 1: // insert
insert(student);
break;
case 2:
delete(student);
break;
case 3:
find(student);
break;
case 4:
update(student);
break;
case 5:
findAll(student);
break;
case 6:
subjectTotal(student);
break;
case 7:
subjectAvg(student);
break;
case 8:
sortGrade(student);
break;
}
}
}
// create, insert ...
static void insert(String student[][]) {
Scanner sc = new Scanner(System.in);
// 빈 공간 찾기
int findIndex = -1;
for (int i = 0; i < student.length; i++) {
if (student[i][0].equals("")) {
findIndex = i;
break;
}
}
System.out.println("findIndex : " + findIndex);
// 입력
System.out.println("이름 : ");
String name = sc.next();
System.out.println("나이 : ");
String age = sc.next();
System.out.println("영어 : ");
String eng = sc.next();
System.out.println("수학 : ");
String math = sc.next();
// 할당
student[findIndex][0] = name;
student[findIndex][1] = age;
student[findIndex][2] = eng;
student[findIndex][3] = math;
System.out.println("입력 완료 : "+student[findIndex][0]);
}
// delete
static void delete(String student[][]) {
Scanner sc = new Scanner(System.in);
// 학생 찾기
System.out.println("삭제할 학생의 이름을 입력해주세요.");
String find = sc.next();
for (int i = 0; i < student.length; i++) {
if (student[i][0].equals(find)) {
// 정보 ""로 초기화
System.out.println(student[i][0]+"학생의 모든 정보가 삭제되었습니다.");
for (int j = 0; j < student[i].length; j++) {
student[i][j] = "";
}
break;
}
}
}
// find
static void find(String student[][]) {
Scanner sc = new Scanner(System.in);
// 학생 찾기
System.out.println("검색할 학생의 이름을 입력해주세요.");
String find = sc.next();
for (int i = 0; i < student.length; i++) {
if (student[i][0].equals(find)) {
System.out.println(student[i][0]+"학생의 정보\t나이 : "+student[i][1]+"살, 영어 : "+student[i][2]+"점, 수학 : "+student[i][3]+"점");
break;
}
}
}
// update
static void update(String student[][]) {
Scanner sc = new Scanner(System.in);
// 학생 찾기
System.out.println("수정할 학생의 이름을 입력해주세요.");
String find = sc.next();
for (int i = 0; i < student.length; i++) {
if (student[i][0].equals(find)) {
System.out.println(student[i][0]+"학생의 정보 수정");
System.out.println("이름 : ");
String name = sc.next();
System.out.println("나이 : ");
String age = sc.next();
System.out.println("영어 : ");
String eng = sc.next();
System.out.println("수학 : ");
String math = sc.next();
student[i][0] = name;
student[i][1] = age;
student[i][2] = eng;
student[i][3] = math;
break;
}
}
}
// findAll
static void findAll(String student[][]) {
String info[] = {"이름", "나이", "영어", "수학"};
for (int i = 0; i < student.length; i++) {
if (!student[i][0].equals("")) {
System.out.print((i+1)+"번 ");
for (int j = 0; j < student[i].length; j++) {
System.out.print(info[j]+" : "+student[i][j]+", ");
}
System.out.println();
}
}
}
// subjectTotal
static void subjectTotal(String student[][]) {
double engMax = 0;
double mathMax = 0;
double eng, math;
for (int i = 0; i < student.length; i++) {
if (!student[i][0].equals("")) {
eng = Double.parseDouble(student[i][2]);
engMax += eng;
math = Double.parseDouble(student[i][3]);
mathMax += math;
}
}
System.out.println("영어 총점 : "+engMax+", 수학 총점 : "+mathMax);
}
// subjectAvg
static void subjectAvg(String student[][]) {
double engTotal = 0;
double mathTotal = 0;
double engAvg = 0;
double mathAvg = 0;
double eng = 0, math = 0;
int studentNum = 0;
for (int i = 0; i < student.length; i++) {
if (!student[i][0].equals("")) {
eng = Double.parseDouble(student[i][2]);
engTotal = engTotal +eng;
math = Double.parseDouble(student[i][3]);
mathTotal = mathTotal + math;
studentNum++;
}
}
System.out.println(studentNum);
engAvg = engTotal / studentNum;
mathAvg = mathTotal / studentNum;
System.out.println("영어 평균 : "+engAvg+", 수학 평균 : "+mathAvg);
}
//sortGrade
static void sortGrade(String student[][]) {
Scanner sc = new Scanner(System.in);
String sort[][] = new String[student.length][student[0].length];
int num = 0;
for (int i = 0; i < student.length; i++) {
for (int j = 0; j < student[i].length; j++) {
sort[i][j] = student[i][j];
}
}
System.out.println("오름차순(1) / 내림차순(2) 선택해주세요.");
int str = sc.nextInt();
boolean updown = (str == 1)?true:false;
System.out.println(updown);
if (updown) {
System.out.println("오름차순입니다.");
}
else {
System.out.println("내림차순입니다.");
}
for (int i = 0; i < sort.length; i++) {
for (int j = 0; j < i; j++) {
if (!sort[i][0].equals("")) {
int max1 = Integer.parseInt(sort[j][2]) + Integer.parseInt(sort[j][3]);
int max2 = Integer.parseInt(sort[ (j+1) ][2]) + Integer.parseInt(sort[ (j+1) ][3]);
// 내림차순
if (updown) {
if (max1 < max2) {
String[] temp = sort[j];
sort[j] = sort[ (j+1) ];
sort[ (j+1) ] = temp;
i--;
}
}
//내림차순
else {
if (max1 > max2) {
String[] temp = sort[j];
sort[j] = sort[ (j+1) ];
sort[ (j+1) ] = temp;
i--;
}
}
}
}
}
String info[] = {"이름", "나이", "영어", "수학"};
for (int i = 0; i < sort.length; i++) {
if (!sort[i][0].equals("")) {
System.out.print((i+1)+"번\t");
for (int j = 0; j < sort[i].length; j++) {
System.out.print(info[j]+" : "+sort[i][j]+", ");
}
System.out.println();
}
}
}
}
728x90
반응형
'공부노트 > 개인공부!' 카테고리의 다른 글
[Java, 자바] Sorting(정렬).ver2 (0) | 2020.05.29 |
---|---|
[Java, 자바] baseball(숫자야구).ver2 (0) | 2020.05.29 |
[Java, 자바] 암호화, 복호화(ASCII code) (0) | 2020.05.27 |
[Java, 자바] 배열의 값 연산하기 (0) | 2020.05.27 |
[Java, 자바] 문자열이 숫자인지 아닌지(isNumber) (0) | 2020.05.27 |
Comments