학생 3명 성적 관리
1. 국어
2. 영어
3. 수학
4. 총점
5. 평균
6. 학점
1. 데이터 저장 _ 일반 변수
중복 코딩이 많고, 복잡
이름: 김가가
국어: 45
영어: 83
수학: 63
총점: 191
평균: 63.67
==================
이름: 김나나
국어: 82
영어: 43
수학: 100
총점: 225
평균: 75.00
==================
이름: 김다다
국어: 14
영어: 92
수학: 41
총점: 147
평균: 49.00
==================
public static void main(String[] args) {
// 1. 국어 점수
int kor1, kor2, kor3;
// 2. 영어 점수
int eng1, eng2, eng3;
// 3. 수학 점수
int math1, math2, math3;
// 4. 총점
int total1, total2, total3;
// 5. 평균
double avg1, avg2, avg3;
String name1, name2, name3;
// 데이터 모아서 관리 방법
// 1명에 대한 정보
name1 = "김가가";
kor1 = (int)(Math.random()*101); // 1-100
eng1 = (int)(Math.random()*101);
math1 = (int)(Math.random()*101);
total1 = kor1 + eng1 + math1;
avg1 = total1/3.0;
name2 = "김나나";
kor2 = (int)(Math.random()*101); // 1-100
eng2 = (int)(Math.random()*101);
math2 = (int)(Math.random()*101);
total2 = kor2 + eng2 + math2;
avg2 = total2/3.0;
name3 = "김다다";
kor3 = (int)(Math.random()*101); // 1-100
eng3 = (int)(Math.random()*101);
math3 = (int)(Math.random()*101);
total3 = kor3 + eng3 + math3;
avg3 = total3/3.0;
// 출력
// 학생1
System.out.println("이름: " + name1);
System.out.println("국어: " + kor1);
System.out.println("영어: " + eng1);
System.out.println("수학: " + math1);
System.out.println("총점: " + total1);
System.out.printf("평균: %.2f\n", avg1);
System.out.println("==================");
// 학생2
System.out.println("이름: " + name2);
System.out.println("국어: " + kor2);
System.out.println("영어: " + eng2);
System.out.println("수학: " + math2);
System.out.println("총점: " + total2);
System.out.printf("평균: %.2f\n", avg2);
System.out.println("==================");
// 학생3
System.out.println("이름: " + name3);
System.out.println("국어: " + kor3);
System.out.println("영어: " + eng3);
System.out.println("수학: " + math3);
System.out.println("총점: " + total3);
System.out.printf("평균: %.2f\n", avg3);
System.out.println("==================");
}
2. 데이터 저장 _ 배열
ROW 변수로 인원 수 조절이 쉽다.
이름: 김
국어: 32
영어: 33
수학: 43
총점: 108
평균: 36.00
=============
이름: 이
국어: 22
영어: 34
수학: 44
총점: 100
평균: 33.33
=============
이름: 박
국어: 44
영어: 67
수학: 11
총점: 122
평균: 40.67
=============
이름: 최
국어: 99
영어: 54
수학: 8
총점: 161
평균: 53.67
=============
이름: 유
국어: 13
영어: 52
수학: 62
총점: 127
평균: 42.33
=============
public static void main(String[] args) {
// 배열 : 같은 기능의 변수를 모아서 관리
// 과목 수
final int ROW=5; // 인원 수 변경 쉽게 한다
int[] kor = new int[ROW];
int[] eng = new int[ROW];
int[] math = new int[ROW];
int[] total = new int[ROW];
double[] avg = new double[ROW];
String[] name = new String[ROW];
Scanner sc = new Scanner(System.in);
for(int i=0; i<ROW; i++)
{
System.out.print("이름 입력: ");
name[i] = sc.next();
kor[i] = (int)(Math.random()*101);
eng[i] = (int)(Math.random()*101);
math[i] = (int)(Math.random()*101);
total[i] = kor[i] + eng[i] + math[i];
avg[i] = total[i]/3.0;
}
for(int i=0; i<ROW; i++)
{
System.out.println("이름: " + name[i]);
System.out.println("국어: " + kor[i]);
System.out.println("영어: " + eng[i]);
System.out.println("수학: " + math[i]);
System.out.println("총점: " + total[i]);
System.out.printf("평균: %.2f\n", avg[i]);
System.out.println("=============");
}
}
3. 데이터 저장 _ 클래스 (**실무 방식)
1명 정보 클래스로 한 번에 저장
이름 입력:
김
이름 입력:
이
이름 입력:
박
이름: 김
국어 점수: 19
영어 점수: 51
수학 점수: 98
총점: 168
평균: 56.00
=================
이름: 이
국어 점수: 4
영어 점수: 17
수학 점수: 12
총점: 33
평균: 11.00
=================
이름: 박
국어 점수: 11
영어 점수: 99
수학 점수: 13
총점: 123
평균: 41.00
=================
class Student
{
String name;
int kor;
int eng;
int math;
int total;
double avg;
}
public class 클래스 {
public static void main(String[] args) {
final int ROW=3;
// 사용자 정의 데이터형
Student[] std = new Student[ROW];
Scanner sc = new Scanner(System.in);
// 초기 값, 처리
for(int i=0; i<ROW; i++)
{
std[i] = new Student(); // 클래스 먼저 저장하고 시작
System.out.println("이름 입력: ");
std[i].name = sc.next();
std[i].kor = (int)(Math.random()*101);
std[i].eng = (int)(Math.random()*101);
std[i].math = (int)(Math.random()*101);
std[i].total = std[i].kor + std[i].eng + std[i].math;
std[i].avg = std[i].total/3.0;
}
// 출력
for(int i=0; i<ROW; i++)
{
System.out.println("이름: " + std[i].name);
System.out.println("국어 점수: " + std[i].kor);
System.out.println("영어 점수: " + std[i].eng);
System.out.println("수학 점수: " + std[i].math);
System.out.println("총점: " + std[i].total);
System.out.printf("평균: %.2f\n", std[i].avg);
System.out.println("=================");
}
}
데이터 저장 _ 뮤직 배열
1. 뮤직데이터베이스.java 생성
2. 페이지 당 음악 10개 출력
페이지 입력(1-5):
2
나로 바꾸자 (Duet With JYP)
순위: 11
곡명: 나로 바꾸자 (Duet With JYP)
가수명: 나로 바꾸자 (Duet With JYP)
앨범: 나로 바꾸자
상태: ▼ 1
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
.
.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
취기를 빌려 (취향저격 그녀 X 산들)
순위: 20
곡명: 취기를 빌려 (취향저격 그녀 X 산들)
가수명: 취기를 빌려 (취향저격 그녀 X 산들)
앨범: 취기를 빌려 (취향저격 그녀 X 산들)
상태: ▼ 4
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
// 가수명 목록 출력 → 페이지 나누기
static void musicList(int page)
{
int j=0; // 10개씩 나누는 변수 → 10개씩 가져와라
int pageCnt=(page*10)-10; // 1페이지 시작 위치
for(int i=0; i<뮤직데이터베이스.title.length; i++)
{
if(j<10 && i>=pageCnt)
{
System.out.println(뮤직데이터베이스.title[i]);
System.out.println("순위: " + (i+1));
System.out.println("곡명: " + 뮤직데이터베이스.title[i]);
System.out.println("가수명: " + 뮤직데이터베이스.title[i]);
System.out.println("앨범: " + 뮤직데이터베이스.album[i]);
String s="";
if(뮤직데이터베이스.state[i].equals("상승"))
{
s="▲";
}
else if(뮤직데이터베이스.state[i].equals("하강"))
{
s="▼";
}
else
{
s="-";
}
// 상태 변화가 없으면 공백 출력
System.out.println("상태: " + s + " " + (뮤직데이터베이스.modify[i]==0?"":뮤직데이터베이스.modify[i]));
System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
j++;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int totalPage = (int)(Math.ceil(뮤직데이터베이스.title.length/10.0));
System.out.println("페이지 입력(1-" + totalPage + "): ");
int page = sc.nextInt();
musicList(page);
}
1페이지 : 0-9
→ 1*10 -10 : 0
2페이지 : 10-19
→ 2*10 -10 : 10
3페이지 : 20-29
→ 3*10 -20 : 20
데이터 저장 _ 뮤직 클래스
검색어 입력 추가
1.Your Lights
이수 (엠씨더맥스)
Your Lights (바이크 원정대 OST Part.1)
유지
0
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
2.겨울잠
장덕철
겨울잠
유지
0
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
.
.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
검색어 입력:
A
14.ON AIR (Feat. 로꼬 & 박재범 & GRAY)
릴보이 (lIlBOI)
쇼미더머니 9 Final
상승
7
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
46.에잇 (Prod. & Feat. SUGA of BTS)
아이유 (IU)
에잇
상승
30
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
49.Achoo (Feat. pH-1 & HAON) (Prod. by GroovyRoom)
미란이 (Mirani)
쇼미더머니 9 Episode 3
상승
34
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
class Music{
int rank;
String title;
String singer;
String album;
String state;
int modify;
}
public class 뮤직클래스 {
// call by reference
static void musicDataInput(Music[] m)
{
for(int i=0; i<m.length; i++)
{
m[i] = new Music(); // 50개 공간 만듬, 먼저 선언해야 됨
m[i].rank = i+1;
m[i].title = 뮤직데이터베이스.title[i];
m[i].singer = 뮤직데이터베이스.singer[i];
m[i].album = 뮤직데이터베이스.album[i];
m[i].state = 뮤직데이터베이스.state[i];
m[i].modify = 뮤직데이터베이스.modify[i];
}
}
// 찾기
static void musicFind(Music[] music, String ss) // 뮤직 클래스, 찾는 단어
{
for(Music m:music)
{
if(m.title.contains(ss))
{
System.out.println(m.rank + "." + m.title);
System.out.println(m.singer);
System.out.println(m.album);
System.out.println(m.state);
System.out.println(m.modify);
System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
}
}
}
public static void main(String[] args) {
Music[] music = new Music[50]; // ArrayList<music> (컬렉션)
musicDataInput(music); // 값을 넣어 줌
// 데이터 출력
for(Music m:music)
{
System.out.println(m.rank + "." + m.title);
System.out.println(m.singer);
System.out.println(m.album);
System.out.println(m.state);
System.out.println(m.modify);
System.out.println("ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ");
}
Scanner sc = new Scanner(System.in);
System.out.println("검색어 입력: ");
String ss = sc.next();
musicFind(music, ss);
}
사원 클래스
class Sawon
{
int sabun;
String name;
String dept;
String job;
String loc;
int pay;
}
public class 뮤직클래스2 {
public static void main(String[] args) {
String[] name = {"김가가", "김나나", "김다다"};
String[] dept = {"개발부", "영업부", "총무부"};
String[] job = {"과장", "대리", "사원"};
String[] loc = {"서울", "부산", "인천"};
int[] pay = {4500, 3500, 3000};
Sawon[] sawon = new Sawon[5]; // 사원 5명, 저장 공간은 아직 생성 안 됨
Scanner sc = new Scanner(System.in);
for(int i=0; i<3; i++)
{
// System.out.println(sawon[i]); // 주소 값X
sawon[i] = new Sawon(); // 저장 공간 생성 되고(**)
// System.out.println(sawon[i]); // 주소 값(데이터 값) 생성 됨
sawon[i].sabun = i+1;
sawon[i].name = name[i];
sawon[i].dept = dept[i];
sawon[i].job = job[i];
sawon[i].loc = loc[i];
sawon[i].pay = pay[i];
}
}
배열 개수인 i<3 으로 수정 후 에러 해결
클래스 데이터형 제작
클래스의 용도
변수 : 데이터형으로 사용
캡슐화 : 데이터 보호
메소드 : 기능형으로 사용
클래스 사용 시 데이터 먼저 저장한다. (new)
class Category
{
int cno; // 카테고리 구분
String title;
String subject;
String poster;
}
class Food
{
int no; // 맛집 구분
int cno; // 카테고리별 분류
String poster;
String name;
double score; // 평점
String address;
String tel;
String type;
String price;
String parking;
String time;
String homePage;
String menu;
}
class Recipe
{
int rno; // 레시피 구분
String poster;
String chefName;
String chefPoster;
String title;
String content; // 설명
String info1, info2, info3; // 몇 인분, 몇 분내, 난이도
String etc; // 재료
String foodMake; // 조리 방법
String images; // 조리 방법의 이미지
// 조회수 → 나중에 trigger로 세기 때문에 지금은 필요X
// 사이트에 필요한 내용만 잡는다 → 전체X
}
'수업' 카테고리의 다른 글
+17 멤버 메소드 (1) | 2022.05.25 |
---|---|
+16 멤버 변수(static, instance) (0) | 2022.05.24 |
+14 메소드 활용 (0) | 2022.05.20 |
+14 메소드 정리(매개변수) (0) | 2022.05.20 |
+13 사용자 정의 클래스, 변수 설정 예제 (0) | 2022.05.19 |