20211014 첫교수님과 마지막수업 복습3

DUUUPPAAN·2021년 10월 14일
0

20211012~ 복습&정리

목록 보기
3/12

·전체 복습 마지막 날

-지금까지 배운 것들을 전체적으로 복습하는 마지막 날이자, 첫 교수님의 마지막 수업을 진행했다. 교재에서 배운 java 코드들을 보면서 복습할 것들을 진행했는데, 아무래도 입력할 시간이 없기 때문에, 미리 java파일들을 보내주셔서 그걸 열어보고 결과를 보고 눈으로 하는 복습을 진행했다. 물론, 시간이 충분하지 않았기 때문에 그랬기에 충분히 이해할 수 있는 진행이었다.

-보니까 확실히 전에 이해했던 내용이여도 다시 살펴보니 더 확 와닿게 오는 느낌이었다. 그리고 오버로딩과 오버라이딩은 역시 다시 보면 헷갈렸다. 사실 기능적인 헷갈림은 없는데, 그냥 용어만 놓고 봤을 때 잠깐 헷갈렸다. 그래도 이클립스를 사용하면 @override를 자주 보게 되고 그러면 오버라이딩이 재정의라는 것을 충분히 기억할 수 있어서 두 차이를 확실히 알 수 있었다.

·진행했던 성적 class

-전에도 해봤던 성적을 입력받아서 출력하는 class를 만들었다. 대신 이번엔 기능을 정말 분할해서 최대한 메소드를 활용하는 방식으로 진행했다.

package sungjuk;

import java.util.Scanner;

class sungjukPT{
	
	public int tot(int kor, int mat, int eng) {
		int tot = 0;
		tot = kor+mat+eng;
		return tot;
	}
	
	public int evg(int tot) {
		int evg = tot/3;
		return evg;
	}
	
	
	public String grade(int evg) {
		String grade="";
		if(evg>89) {
			grade = "A";
		}else if(evg <90 && evg>79) {
			grade = "B";
		}else if(evg <80 && evg>69) {
			grade = "C";
		}else if(evg <700 && evg>59) {
			grade = "D";
		}else {
			grade = "F";
		}
		return grade;
	}
	
	public void pt(String name, int kor, int mat, int eng, int tot, int evg, String grade) {
		System.out.println("당신의 이름은 "+name+"이고, 국어 수학 영어 성적은 각각 "+kor+" "+mat+
				" "+eng+" 이며 총점은 "+tot+"이고 평균은 "+evg+"이며 따라서 학점은 "+grade+"입니다.");
	}
}

public class sungjuk {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("이름: ");
		String name = sc.next();
		
		System.out.print("국어: ");
		int kor = sc.nextInt();
		
		System.out.print("수학: ");
		int mat = sc.nextInt();
		
		System.out.print("영어: ");
		int eng = sc.nextInt();
		
		sungjukPT sj = new sungjukPT();
		int tot= sj.tot(kor, mat, eng);
		int evg= sj.evg(tot);
		
		String grade=sj.grade(evg);
		
		sj.pt(name, kor, mat, eng, tot, evg, grade);
	}

}

-보면 전에는 한번에 작성한 코드지만, 각각 총점을 구하는 메소드, 평균을 구하는 메소드, 평균을 입력받아 성적을 구하는 메소드, 그리고 모든 값들을 출력하는 메소드를 만들어서 객체를 만들어 사용했다. 전보다 더 분할해서 사용해보고 싶어서 진행했는데, 무리없이 만들었다. 똑같은 코드인데 굉장히 다른 느낌이고 재밌었다.

·어제 입력했던 MySQL의 데이터 불러오기

어제 MySQL에는 인사과에 대한 데이터들을 입력했다.
그리고 인원이라는 테이블을 다음과 같이 만들었다.

create table 인원(
사원번호 varchar(20) primary key,
이름 varchar(10),
부서 varchar(10),
직위 varchar(10),
연락처 varchar(20)
);

-그리고 다른 학생 두 분의 도움을 받아서 구체적인 값들을 테이블에 넣어주는 작업까지 진행했었다.

-그리고 오늘은 그 값들을 java에서 불러오는 코드를 진행했다. 이건 배울 때도 그냥 복사 붙여넣기 하고 살펴만 본 수준이라서 제로베이스에서 직접 모두 타이핑하기는 어려울 것 같지만, 사용하는 방법은 알고 있었기에 이 데이터베이스와 테이블에 맞게 수정해서 값들을 불러와보았다.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Personnel {

	public static void main(String[] args) {
		//학과에 화학이 들어가는 사람들의 학번 이름 성별 학과 성적 검색
		Connection conn;
		Statement stmt = null;
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");//MySQL 드라이버 로드
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"
					+"HumanDB?useSSL=false&serverTimezone=Asia/Seoul","root","akfkskxk2@"
					);//JDBC 연결 요 윗줄에 데이터베이스 바꿔야됨!!!!! 
			System.out.println("DB 연결 완료");
			stmt = conn.createStatement();//SQL문 처리용 Statement 객체 생성
			ResultSet srs = stmt.executeQuery("select * from 인원");
				/*테이블의 모든 데이터 검색*/
			printData(srs, "사원번호", "이름","부서","직위","연락처");

			srs.close();
			stmt.close();
		}
		catch(ClassNotFoundException e) {
			System.out.println("JDBC 드라이버 로드 오류");
		}catch(SQLException e) {
			System.out.println("SQL 실행오류");
		}
	}
	
	//레코드의 각 열의 값 화면에 출력
	private static void printData(ResultSet srs, String col1, String col2, String col3, String col4, String col5) throws SQLException{
		while(srs.next()) {
			System.out.println();
			if(!col1.equals(""))
				System.out.print(srs.getString("사원번호"));
			if(!col2.equals(""))
				System.out.print("  "+srs.getString("이름"));
			if(!col3.equals(""))
				System.out.print("\t"+srs.getString("부서"));
			if(!col4.equals(""))
				System.out.print("\t"+srs.getString("직위"));
			if(!col5.equals(""))
				System.out.print("\t"+srs.getString("연락처"));
			else
				System.out.println();
		}
	}

}

처음엔 연동이 안되었는데, 위에 HumanDB라고 쓰인 데이터베이스의 이름을 변경해주지 않아서 제대로 작동하지 않았었다. 다음부터는 정말 잘 살펴봐야겠다.

·추가로 꼭 해보고 싶었던 것들 자가복습

package chapter5;

public class Member {
	private String name;
	private int height;
	private int weight;
	private String nation;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getHeight() {
		return height;
	}
	public void setHeight(int height) {
		this.height = height;
	}
	public int getWeight() {
		return weight;
	}
	public void setWeight(int weight) {
		this.weight = weight;
	}
	public String getNation() {
		return nation;
	}
	public void setNation(String nation) {
		this.nation = nation;
	}
	public Member(String name, int height, int weight, String nation) {
		super();
		this.name = name;
		this.height = height;
		this.weight = weight;
		this.nation = nation;
	}
	
	
}

-private로 선언된 변수들과 get set 메소드 그리고 초기화.

package chapter5;

public class SearchService {
 Member[] members = new Member[5];
 
 
 public SearchService() {
	 members[0] = new Member("박의수",181,75,"대한민국");
	 members[1] = new Member("노명석",171,65,"대한민국");
	 members[2] = new Member("김시영",165,69,"대한민국");
	 members[3] = new Member("최병주",179,80,"대한민국");
	 members[4] = new Member("신동주",178,77,"대한민국");
 }
 
 boolean searchMember (String name) {
	 boolean searchResult=false;
	 
	 for(int i=0;i<members.length;i++) {
		 if(members[i].getName().equals(name)) {
		 printInfo(members[i]);
		 searchResult=true;
		 }
	 }
	 return searchResult;
 }
 private void printInfo(Member member) {
	 System.out.println(member.getName()+"으로 찾은 결과");
	 System.out.println("이름: "+member.getName());
	 System.out.println("신장: "+member.getHeight());
	 System.out.println("몸무게: "+member.getWeight());
	 System.out.println("이름: "+member.getNation());
 }
}

배열 객체를 만들고, 각 배열마다 객체를 하나씩 넣어줌. 단 순서는 위의 초기화 순서대로 대응되는 값들을 입력함. 여기서 또 printInfo라는 메소드도 정의함.

package chapter5;

import java.util.Scanner;

public class SearchMainP209 {

	public static void main(String[] args) {
		SearchService sv = new SearchService();
		Scanner sc = new Scanner(System.in);
		
		do {
			System.out.print("검색할 회원 이름을 입력:");
			String name = sc.next();
			boolean searchResult = sv.searchMember(name);
			if(searchResult) break;
			System.out.println("해당 회원이 없습니다.");
		}
		while(true);
	}

}

-검색을 할 입력값을 Scanner기능과 System.in을 통해 입력받음. 그리고 do while문으로 검색할 회원이 있다면 해당 값을 출력하는 메소드를 이용해서 출력함.

이 코드들은 굉장히 직관적이고 쉬워보이지만 막상 스스로 해보려고 하니 헷갈리고 어려운 느낌이 많이 들었다. 다음에도 또 해봐야겠다.

·마지막 수업

-첫 교수님과 마지막 수업을 진행했다. 물론, 굉장히 아쉽지만, 다음 교수님이 당장 내일부터 수업을 진행하시기 때문에 긴장도 되고 설렘도 있다. 더 많은 기능과 더 많은 과정으로 이 수업을 이끌어주실 것이고, 팀 프로젝트까지 우리와 함께할 교수님이셔서 정말 잘 맞았으면 하는 바람이 있다. 내일은 학원을 꼭 나가기로 다짐했다. 직접 대면하는 첫 날은 얼굴을 마주하는 것이 바람직하다고 생각했기 때문이다. 오늘도 고생했다!! 파이팅!! 운동 영어공부도 지금처럼 꾸준히 하자!!!

profile
비전공자란 이름으로 새로운 길을 가려 하는 신입

0개의 댓글