JSP & Servlet


1. JSP 작성시 이클립스에서 JDBC 연동 을 하기 위해서는

다이나믹 웹 프로젝트 생성 후에 WebContent > WEB-INF > lib 폴더에 ojdbc14.jar 파일을 넣어야 함.






DBConn 클래스를 이용한 오라클 연결 테스트



//DBConn.java -> Java Resources > src 폴더에 패키지 생성 후 복사할 것.

package com.test;


import java.sql.*;


public class DBConn {

//Singleton pattern

private static Connection dbConn;

public static Connection getConnection()

throws SQLException, ClassNotFoundException {

if (dbConn == null) {


String url = "jdbc:oracle:thin:@localhost:1521:xe";

String user = "scott";

String pw = "tiger";

Class.forName("oracle.jdbc.driver.OracleDriver");

dbConn = DriverManager.getConnection(url, user, pw);


}

return dbConn;

}

public static void close()

throws SQLException {

if (dbConn != null) {

if (!dbConn.isClosed()) {

dbConn.close();

}

}

dbConn = null;

}

}






SQL 쿼리 전송 테스트1 (scott 계정)


//회원 테이블 생성. 회원번호, 이름, 전화번호. 시퀀스 객체 생성.

CREATE TABLE member (

mid NUMBER --PK

,name VARCHAR2(10)

,tel VARCHAR2(20)

);


ALTER TABLE member

ADD CONSTRAINT member_mid_pk PRIMARY KEY(mid);


CREATE SEQUENCE memberSeq;



//회원 테이블에 자료 입력. INSERT 쿼리.

//쿼리문의 끝에 ; 표시하지 말것.

//INSERT INTO member (mid, name, tel) VALUES (memberSeq.nextval, 'hong', '111-1111')


//DBConn.java

//Oracle02.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<%


String str = "";


try {

//연결

Connection conn = DBConn.getConnection();

//쿼리 준비

//쿼리 작성시 끝에 ; 표시하지 말것.

String sql = String.format("INSERT INTO member (mid, name, tel) VALUES (memberSeq.nextval, 'lee', '123-1234')");

//쿼리 실행

//Java에서 쿼리를 실행하면 

//내부적으로 COMMIT은 자동 실행됨.

//executeUpdate() 메소드는 DML문인 경우만 실행.

Statement stmt = conn.createStatement();

int count = stmt.executeUpdate(sql);

//결과 출력

str = String.format("%d개의 행이 입력되었습니다.<br>", count);

}catch(Exception e) {

str = e.toString();

}

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<h2>SQL 쿼리 전송 테스트1</h2>

<div><%=str%></div>

</body>

</html>






회원 테이블 자료 출력 테스트. SELECT 쿼리.

//쿼리문의 끝에 ; 표시하지 말것.

//SELECT mid, name, tel FROM member ORDER BY mid



//DBConn.java

//Oracle03.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<%


StringBuilder str = new StringBuilder();


try {

Connection conn = DBConn.getConnection();

String sql = String.format("SELECT mid, name, tel FROM member ORDER BY mid");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

str.append("<table border=\"1\"><tbody><tr><th align=\"center\">mid</th><th align=\"center\">name</th><th align=\"center\">tel</th></tr>");

while(rs.next()) { //row 단위 접근

int mid = rs.getInt("mid"); //column 단위 접근

String name = rs.getString("name");

String tel = rs.getString("tel");

str.append(String.format("<tr><td align=\"center\">%d</td><td align=\"center\">%s</td><td align=\"center\">%s</td></tr>", mid, name, tel));

}

str.append("</tbody></table>");

//ResultSet 객체 소멸->필수

rs.close();

} catch(Exception e) {

}


%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<h2>SQL 쿼리 전송 테스트2</h2>

<div><%=str%></div>

</body>

</html>





문제) member 테이블의 회원수를 출력하는 프로그램 작성.

//SELECT COUNT(*) AS count FROM member


//DBConn.java

//Oracle04.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<%


String str = "";

try {

Connection conn = DBConn.getConnection();

String sql = String.format("SELECT COUNT(*) AS count FROM member");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) { //row 단위 접근

int count = rs.getInt("count");

str = String.format("회원수 : %d 명<br>", count);

}

//ResultSet 객체 소멸->필수

rs.close();

} catch(Exception e) {

str = e.toString();

}


%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<h2>SQL 쿼리 전송 테스트3</h2>

<div><%=str%></div>

</body>

</html>








문제) 이름과 전화번호를 저장하는 JDBC 프로그램 작성. 오라클, JSP 이용.

데이터 입력과 출력을 동시 실행. 


실행 예)

이름 [        ]

전화번호 [         ]

[ 등록 ]


----------------------------

전체 회원수 : 2명

----------------------------

회원번호 이름   전화번호

----------------------------

1        홍길동 010-123-1234

2        김길동 010-222-3333

----------------------------




//DBConn.java

//Oracle05.jsp -> 입력, 출력 화면 구성용 페이지. 액션 처리 겸용.

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<%


int rowcount = 0;

String count = "";

String insert_check = "";

StringBuilder str = new StringBuilder();

try {

//데이터 베이스 연결

Connection conn = DBConn.getConnection();

//데이터 수신

request.setCharacterEncoding("euc-kr");

String r_name = request.getParameter("name");

String r_tel = request.getParameter("tel");

//submit 되기전 각 항목을 입력받기 전이라면 아래의 제어문 이 실행되지 않음.

if (r_name != null && r_tel != null) {

String sql0 = String.format("INSERT INTO member (mid, name, tel) VALUES (memberSeq.nextval, '%s', '%s')", r_name, r_tel);

Statement stmt0 = conn.createStatement();

rowcount = stmt0.executeUpdate(sql0);

if (rowcount == 1) {

insert_check = "정상적으로 입력이 완료되었습니다.";

}

}

String sql1 = String.format("SELECT COUNT(*) AS count FROM member");

Statement stmt1 = conn.createStatement();

ResultSet rs1 = stmt1.executeQuery(sql1);

while(rs1.next()) { //row 단위 접근

count = rs1.getString("count");

}

String sql2 = String.format("SELECT mid, name, tel FROM member ORDER BY mid");

Statement stmt2 = conn.createStatement();

ResultSet rs2 = stmt2.executeQuery(sql2);

while(rs2.next()) { //row 단위 접근

int mid = rs2.getInt("mid"); //column 단위 접근

String name = rs2.getString("name");

String tel = rs2.getString("tel");

str.append(String.format("<tr><td align=\"center\">%d</td><td align=\"center\">%s</td><td align=\"center\">%s</td></tr>", mid, name, tel));

}


rs1.close();

rs2.close();

} catch(Exception e) {

count = e.toString();

}


%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">


function myFunc(obj) {

var name = document.getElementById("name");

var tel = document.getElementById("tel");

var msg = document.getElementById("msg");

msg.style.display = "none";

if (name.value == "") {

msg.style.display = "inline";

name.value = "";

name.focus();

return;

}

if (tel.value == "") {

msg.style.display = "inline";

tel.value = "";

tel.focus();

return;

}

obj.form.submit();

}


</script>

</head>

<body>

<h2>이름 전화번호 저장 JDBC 프로그램</h2>

<form method="post">

이름 <input type="text" name="name" id="name"><br>

전화번호 <input type="text" name="tel" id="tel"><br>

<input type="button" value="결과" onclick="myFunc(this)"><br>

<span id="msg" style="display:none; color:red;">모든 항목을 입력해야함</span>

<font color="blue"><%=insert_check%></font>

</form>

<h3>출력 -------------------</h3>

<div>

<h4>전체 회원수 : <%=count%> 명</h4>

<table border="1">

<tbody>

<tr><th>번호</th><th>이름</th><th>전화</th></tr>

<%=str%>

</tbody>

</table>

</div>

</body>

</html>







문제) 이름과 전화번호를 저장하는 JDBC 프로그램 작성. 오라클, JSP 이용. JSP 파일 분할 / forward() 메소드 이용.

데이터 입력과 출력을 동시 실행. 


실행 예)

이름 [        ]

전화번호 [         ]

[ 등록 ]


----------------------------

전체 회원수 : 2명

----------------------------

회원번호 이름   전화번호

----------------------------

1        홍길동 010-123-1234

2        김길동 010-222-3333

----------------------------


//DBConn.java


//Oracle06.jsp -> 입력, 출력 화면 구성 페이지 및 데이터 베이스 select 액션 처리

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<%


String count = "";

StringBuilder str = new StringBuilder();

try {

//데이터 베이스 연결

Connection conn = DBConn.getConnection();

//Insert와 관련된 액션은 Oracle06_Insert.jsp에서 구현

String sql1 = String.format("SELECT COUNT(*) AS count FROM member");

Statement stmt1 = conn.createStatement();

ResultSet rs1 = stmt1.executeQuery(sql1);

while(rs1.next()) { //row 단위 접근

count = rs1.getString("count");

}

String sql2 = String.format("SELECT mid, name, tel FROM member ORDER BY mid");

Statement stmt2 = conn.createStatement();

ResultSet rs2 = stmt2.executeQuery(sql2);

while(rs2.next()) { //row 단위 접근

int mid = rs2.getInt("mid"); //column 단위 접근

String name = rs2.getString("name");

String tel = rs2.getString("tel");

str.append(String.format("<tr><td align=\"center\">%d</td><td align=\"center\">%s</td><td align=\"center\">%s</td></tr>", mid, name, tel));

}


rs1.close();

rs2.close();

} catch(Exception e) {

count = e.toString();

}


%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">


function myFunc(obj) {

var name = document.getElementById("name");

var tel = document.getElementById("tel");

var msg = document.getElementById("msg");

msg.style.display = "none";

if (name.value == "") {

msg.style.display = "inline";

name.value = "";

name.focus();

return;

}

if (tel.value == "") {

msg.style.display = "inline";

tel.value = "";

tel.focus();

return;

}

obj.form.submit();

}


</script>

</head>

<body>

<h2>이름 전화번호 저장 JDBC 프로그램</h2>

<form action="Oracle06_Insert.jsp" method="post">

이름 <input type="text" name="name" id="name"><br>

전화번호 <input type="text" name="tel" id="tel"><br>

<input type="button" value="결과" onclick="myFunc(this)"><br>

<span id="msg" style="display:none; color:red;">모든 항목을 입력해야함</span>

</form>

<h3>출력 -------------------</h3>

<div>

<h4>전체 회원수 : <%=count%> 명</h4>

<table border="1">

<tbody>

<tr><th>번호</th><th>이름</th><th>전화</th></tr>

<%=str%>

</tbody>

</table>

</div>

</body>

</html>


//Oracle06_Insert.jsp -> 데이터 베이스 insert 액션 처리

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<% 


//데이터 수신

request.setCharacterEncoding("euc-kr");

String r_name = request.getParameter("name");

String r_tel = request.getParameter("tel");

try {

//데이터 베이스 연결

Connection conn = DBConn.getConnection();

String sql0 = String.format("INSERT INTO member (mid, name, tel) VALUES (memberSeq.nextval, '%s', '%s')", r_name, r_tel);

Statement stmt0 = conn.createStatement();

stmt0.executeUpdate(sql0);

} catch (Exception e) {

}

//입력이 끝나면 Oracle06.jsp로 자동 이동해야 함.

//sendRedirect() 메소드 이용.

String url = String.format("Oracle06.jsp");

response.sendRedirect(url);


%>





문제) 이름과 전화번호를 저장하는 JDBC 프로그램 작성. 오라클, JSP 이용. JSP 파일 분할 / forward() 메소드 이용.

데이터 입력과 출력을 동시 실행.  삭제 기능 추가.


실행 예)

이름 [        ]

전화번호 [         ]

[ 등록 ]


---------------------------------

전체 회원수 : 2명

---------------------------------

회원번호 이름   전화번호     삭제

---------------------------------

1        홍길동 010-123-1234 삭제

2        김길동 010-222-3333 삭제

---------------------------------


//DBconn.java

//Oracle07.jsp -> 입력, 출력 화면 구성 페이지. 출력 액션만 처리.

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<%


String count = "";

StringBuilder str = new StringBuilder();

try {


Connection conn = DBConn.getConnection();


String sql1 = String.format("SELECT COUNT(*) AS count FROM member");

Statement stmt1 = conn.createStatement();

ResultSet rs1 = stmt1.executeQuery(sql1);

while(rs1.next()) { //row 단위 접근

count = rs1.getString("count");

}

String sql2 = String.format("SELECT mid, name, tel FROM member ORDER BY mid");

Statement stmt2 = conn.createStatement();

ResultSet rs2 = stmt2.executeQuery(sql2);

while(rs2.next()) { //row 단위 접근

int mid = rs2.getInt("mid"); //column 단위 접근

String name = rs2.getString("name");

String tel = rs2.getString("tel");

str.append(String.format("<tr><td align=\"center\">%d</td><td align=\"center\">%s</td><td align=\"center\">%s</td><td><input type=\"button\" value=\"삭제\" onclick=\"myDel(%d)\"></td></tr>", mid, name, tel, mid));

}


rs1.close();

rs2.close();

} catch(Exception e) {

count = e.toString();

}


%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">


function myFunc(obj) {

var name = document.getElementById("name");

var tel = document.getElementById("tel");

var msg = document.getElementById("msg");

msg.style.display = "none";

if (name.value == "") {

msg.style.display = "inline";

name.value = "";

name.focus();

return;

}

if (tel.value == "") {

msg.style.display = "inline";

tel.value = "";

tel.focus();

return;

}

obj.form.submit();

}

function myDel(num) {

if (confirm("선택한 자료를 삭제하시겠습니까?")) {

//URL 요청 명령

window.location.href = "Oracle07_Delete.jsp?mid="+num;

}

}


</script>

</head>

<body>

<h2>이름 전화번호 저장 JDBC 프로그램3</h2>

<form action="Oracle07_Insert.jsp" method="post">

이름 <input type="text" name="name" id="name"><br>

전화번호 <input type="text" name="tel" id="tel"><br>

<input type="button" value="결과" onclick="myFunc(this)"><br>

<span id="msg" style="display:none; color:red;">모든 항목을 입력해야함</span>

</form>

<h3>출력 -------------------</h3>

<div>

<h4>전체 회원수 : <%=count%> 명</h4>

<table border="1">

<tbody>

<tr><th>번호</th><th>이름</th><th>전화</th><th>삭제</th></tr>

<%=str%>

</tbody>

</table>

</div>

</body>

</html>



//Oracle07_Insert.jsp  -> 입력 액션만 처리.

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<% 


//데이터 수신

request.setCharacterEncoding("euc-kr");

String r_name = request.getParameter("name");

String r_tel = request.getParameter("tel");

try {

//데이터 베이스 연결

Connection conn = DBConn.getConnection();

String sql0 = String.format("INSERT INTO member (mid, name, tel) VALUES (memberSeq.nextval, '%s', '%s')", r_name, r_tel);

Statement stmt0 = conn.createStatement();

stmt0.executeUpdate(sql0);

} catch (Exception e) {

}

//입력이 끝나면 Oracle07.jsp로 자동 이동해야 함.

//sendRedirect() 메소드 이용.

String url = String.format("Oracle07.jsp");

response.sendRedirect(url);


%>



//Oracle07_Delete.jsp  -> 삭제 액션만 처리.

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<%


String mid = request.getParameter("mid");


if (mid != null) {

try {

Connection conn = DBConn.getConnection();

String sql = String.format("DELETE member WHERE mid=%s", mid);

Statement stmt = conn.createStatement();

stmt.executeUpdate(sql);

} catch (Exception e) {

}

}


//삭제처리후 메인 페이지 자동 이동

String url = String.format("Oracle07.jsp");

response.sendRedirect(url);


%>





문제) 여러명의 국어, 영어, 수학 점수를 입력 받아서 

총점, 평균, 판정 결과 출력하는 JDBC 프로그램 작성. 오라클 이용. JSP 이용.

총점 기준 정렬(내림차순) 출력.


판정 기준은

합격 -> 과목별로 40점 이상이면서, 평균이 60점 이상

과락 -> 과목중에 40점 미만이 있고, 평균은 60점 이상

불합격 -> 평균이 60점 미만


평균이 60점 이상 -> 합격

평균이 60점 미만 -> 불합격


합격 또는 과락 구분은 -> 국어, 영어, 수학 점수가 모두 40점 이상인 확인.


실행 예)

성적 입력 -------------------------

이름 [        ]

국어 [        ]

영어 [        ]

수학 [        ]

[ 등록 ]



---------------------------------------

    이름 국어 영어 수학 총점 평균 판정

---------------------------------------

1등 hong 100  100  100  300  100.0 합격

2등 kim   80   90   80  ..    ..   합격

---------------------------------------



---------------------------------------------

--오라클에 성적 저장용 테이블 생성

CREATE TABLE score (

sid NUMBER --PK, 자동 번호 부여

,name VARCHAR2(10)

,kor NUMBER(3) --CK (0~100)

,eng NUMBER(3) --CK (0~100)

,mat NUMBER(3) --CK (0~100)

);


--제약 조건 추가

ALTER TABLE score

ADD CONSTRAINT score_sid_pk PRIMARY KEY (sid);

ALTER TABLE score

ADD CONSTRAINT score_kor_ck CHECK (kor BETWEEN 0 AND 100);

ALTER TABLE score

ADD CONSTRAINT score_eng_ck CHECK (eng BETWEEN 0 AND 100);

ALTER TABLE score

ADD CONSTRAINT score_mat_ck CHECK (mat BETWEEN 0 AND 100);


--자동 번호 부여 시퀀스 객체 생성

CREATE SEQUENCE scoreSeq;



--INSERT 쿼리 샘플 (쿼리 끝 부분에 ; 표시하지 말 것)

INSERT INTO score (sid, name, kor, eng, mat)

VALUES (scoreSeq.nextval, 'hong', 100, 100, 100)


--SELECT 쿼리 샘플 (쿼리 끝 부분에 ; 표시하지 말 것)

SELECT sid, name, kor, eng, mat

, (kor+eng+mat) AS tot

, (kor+eng+mat)/3 AS ave


--, 조건검사 쿼리 추가 ->합격, 불합격, 과락 출력

, CASE

WHEN ((kor+eng+mat)/3 >= 60) AND (kor<40 OR eng<40 OR mat<40) THEN '과락'

WHEN ((kor+eng+mat)/3 >= 60) THEN '합격'

ELSE '불합격'

END AS grade


FROM score

ORDER BY tot DESC


--scoewView를 이용한 select 쿼리

SELECT sid, name, kor, eng, mat, tot, ave, grade

FROM score

ORDER BY tot DESC;




//DBConn.java

//Oracle08.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<%


StringBuilder str = new StringBuilder();


try {

Connection conn = DBConn.getConnection();

String sql = String.format ("SELECT name, kor, eng, mat, tot, ave, grade FROM scoreView ORDER BY tot DESC");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

int rank = 1;

while (rs.next()) {

String name = rs.getString("name");

int kor = rs.getInt("kor");

int eng = rs.getInt("eng");

int mat = rs.getInt("mat");

int tot = rs.getInt("tot");

double ave = rs.getDouble("ave");

String grade = rs.getString("grade");

str.append (String.format("<tr><td align=\"center\">%d등</td><td align=\"center\">%s</td><td align=\"right\">%d</td><td align=\"right\">%d</td><td align=\"right\">%d</td><td align=\"right\">%d</td><td align=\"right\">%.1f</td><td align=\"center\">%s</td></tr>", rank++, name, kor, eng, mat, tot, ave, grade));

}

} catch(Exception e) {

}


%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">


function myFunc(obj) {

//데이터 검사

var name = document.getElementById("name");

var kor = document.getElementById("kor");

var eng = document.getElementById("eng");

var mat = document.getElementById("mat");

var korVal = parseInt(kor.value);

var engVal = parseInt(eng.value);

var matVal = parseInt(mat.value);

var msg1 = document.getElementById("msg1");

var msg2 = document.getElementById("msg2");

msg1.style.display = "none";

msg2.style.display = "none";

if (name.value == "") {

msg1.style.display = "inline";

name.focus();

return;

}

if (kor.value.match(/[^0-9]/) || korVal > 100 || kor.value == "") {

msg2.style.display = "inline";

kor.value = "";

kor.focus();

return;

}

if (eng.value.match(/[^0-9]/) || engVal > 100 || eng.value == "") {

msg2.style.display = "inline";

eng.value = "";

eng.focus();

return;

}

if (mat.value.match(/[^0-9]/)|| matVal > 100 || mat.value == "") {

msg2.style.display = "inline";

mat.value = "";

mat.focus();

return;

}

//모든 데이터 확인 후 서브밋

obj.form.submit();

}


</script>

</head>

<body>

<div>

<h2>성적 처리</h2>

<form action="Oracle08_Insert.jsp" method="post">

이름 <input type="text" style="width:80px;" name="name" id="name"><br>

국어(0~100) <input type="text" style="width:80px;" name="kor" id="kor"><br>

영어(0~100) <input type="text" style="width:80px;" name="eng" id="eng"><br>

수학(0~100) <input type="text" style="width:80px;" name="mat" id="mat"><br>

<input type="button" value="등록" onclick="myFunc(this)"><br>

<span id="msg1" style="color:red; display:none;">모든 항목을 입력해야 합니다.</span><br>

<span id="msg2" style="color:red; display:none;">반드시 국어, 영어, 수학은 0~100 사이 점수를 입력해야 합니다.</span><br>

</form>

<h3>출력 -------------</h3>

<div>

<table border="1" style="width:500px;">

<tbody>

<tr><th>등수</th><th>이름</th><th>국어</th><th>영어</th><th>수학</th><th>총점</th><th>평균</th><th>판정</th></tr>

<%=str%>

</tbody>

</table>

</div>

</div>

</body>

</html>



//Oracle08_Insert.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<% 


//데이터 수신

request.setCharacterEncoding("euc-kr");

String r_name = request.getParameter("name");

String r_kor = request.getParameter("kor");

String r_eng = request.getParameter("eng");

String r_mat = request.getParameter("mat");

try {

//데이터 베이스 연결

Connection conn = DBConn.getConnection();

String sql = String.format("INSERT INTO score (sid, name, kor, eng, mat) VALUES (scoreSeq.nextval, '%s', %s, %s, %s)", r_name, r_kor, r_eng, r_mat);

Statement stmt = conn.createStatement();

stmt.executeUpdate(sql);

} catch (Exception e) {

}


String url = String.format("Oracle08.jsp");

response.sendRedirect(url);


%>






문제) 이름과 전화번호를 저장하는 JDBC 프로그램 작성4. 오라클, JSP 이용.

데이터 입력과 출력을 동시 실행. 


실행 예)

이름 [        ]

전화번호 [         ]

[ 등록 ]


----------------------------

전체 회원수 : 2명

----------------------------

회원번호 이름   전화번호

----------------------------

1        홍길동 010-123-1234

2        김길동 010-222-3333

----------------------------


//DBConn.java

//MemberDTO.java -> 자료 처리 전용 클래스. 멤버변수. getter, setter

package com.test;


public class MemberDTO {

private int mid;

private String name, tel;

public int getMid() {

return mid;

}

public void setMid(int mid) {

this.mid = mid;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getTel() {

return tel;

}

public void setTel(String tel) {

this.tel = tel;

}


}





//MemberDAO.java -> 데이터베이스 액세스 담당 클래스. 입력, 출력, 연결용 메소드.

package com.test;


import java.util.*;

import java.sql.*;


public class MemberDAO {

private Connection conn;

//연결 전용 메소드

public void connect() throws SQLException, ClassNotFoundException{

conn  = DBConn.getConnection();

}

//연결 해제 전용 메소드

public void close() throws SQLException{

DBConn.close();

conn = null;

}

//입력 메소드 즉, INSERT 쿼리 실행

public int add(MemberDTO dto) throws SQLException{

int result = 0;

String sql = String.format("INSERT INTO member (mid, name, tel) VALUES (memberSeq.nextval, '%s', '%s')", dto.getName(), dto.getTel());


//쿼리 실행

//Java에서 쿼리를 실행하면 

//내부적으로 COMMIT은 자동 실행됨.

//executeUpdate() 메소드는 DML문인 경우만 실행.

Statement stmt = conn.createStatement();

result = stmt.executeUpdate(sql);

return result;

}

//회원수 출력 전용 메소드

public int count() throws SQLException {

int result = 0;

String sql = String.format("SELECT COUNT(*) AS count FROM member");

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql); //결과집합

while(rs.next()) { //row 단위 접근

int count = rs.getInt("count"); //column 단위 접근

result = count;

}

rs.close();

return result;

}

//출력 메소드 즉, SELECT 쿼리 실행

public ArrayList<MemberDTO> lists() throws SQLException{

ArrayList<MemberDTO> arrayList = new ArrayList<MemberDTO>();

//SELECT 쿼리 준비

String sql = String.format("SELECT mid, name, tel FROM member ORDER BY mid");

//쿼리 실행

//executeQuery() 메소드는 DQL문인 경우만 실행.

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql); //결과집합

//결과 집합(ResultSet)을 리턴해야 된다.

//결과 집합은 특성상 이 메소드를 벗어날 수 없다. 왜냐하면 ResultSet은 메소드 빠져나가기 전에 반드시 클로즈하기 때문.

//결과 집합을 -> 결렉션 저장

//컬렉션을 리턴.

while(rs.next()) { //row 단위 접근

int mid = rs.getInt("mid"); //column 단위 접근

String name = rs.getString("name");

String tel = rs.getString("tel");

MemberDTO dto = new MemberDTO();

dto.setMid(mid);

dto.setName(name);

dto.setTel(tel);

arrayList.add(dto);

}

rs.close();

return arrayList;

}


}





//Oracle09.jsp -> 입력, 출력 화면구성. 출력 액션 처리.

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<%


String count = "";

StringBuilder str = new StringBuilder();

MemberDAO dao = new MemberDAO();

try {


//데이터 베이스 연결 구문

dao.connect();


//회원수를 돌려주는 메소드 호출.

count = String.format("%d", dao.count());

//회원 명단을 돌려주는 메소드 호출.

for (MemberDTO dto : dao.lists()) {

str.append("<tr>");

str.append(String.format("<td align=\"center\">%d</td><td align=\"center\">%s</td><td align=\"center\">%s</td><td><input type=\"button\" value=\"삭제\" onclick=\"myDel(%d)\"></td>", dto.getMid(), dto.getName(), dto.getTel(), dto.getMid()));

str.append("</tr>");

}

} catch(Exception e) {

count = e.toString();

} finally {

dao.close();

}


%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">


function myFunc(obj) {

var name = document.getElementById("name");

var tel = document.getElementById("tel");

var msg = document.getElementById("msg");

msg.style.display = "none";

if (name.value == "") {

msg.style.display = "inline";

name.value = "";

name.focus();

return;

}

if (tel.value == "") {

msg.style.display = "inline";

tel.value = "";

tel.focus();

return;

}

obj.form.submit();

}

function myDel(num) {

if (confirm("선택한 자료를 삭제하시겠습니까?")) {

//URL 요청 명령

window.location.href = "Oracle09_Delete.jsp?mid="+num;

}

}


</script>

</head>

<body>

<div>

<h2>이름 전화번호 저장 JDBC 프로그램4</h2>

<form action="Oracle09_Insert.jsp" method="post">

이름 <input type="text" name="name" id="name"><br>

전화번호 <input type="text" name="tel" id="tel"><br>

<input type="button" value="결과" onclick="myFunc(this)"><br>

<span id="msg" style="display:none; color:red;">모든 항목을 입력해야함</span>

</form>

<h3>출력 -------------------</h3>

<div>

<h4>전체 회원수 : <%=count%> 명</h4>

<table border="1">

<tbody>

<tr><th>번호</th><th>이름</th><th>전화</th><th>삭제</th></tr>

<%=str%>

</tbody>

</table>

</div>

</div>

</body>

</html>




//Oracle09_Insert.jsp -> 입력 액션 처리.

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<% 


//데이터 수신

request.setCharacterEncoding("euc-kr");

String r_name = request.getParameter("name");

String r_tel = request.getParameter("tel");

MemberDAO dao = new MemberDAO();

try {

//데이터 베이스 연결

dao.connect();


MemberDTO dto = new MemberDTO();

dto.setName(r_name);

dto.setTel(r_tel);

dao.add(dto);

} catch (Exception e) {

} finally {

dao.close();

}

//입력이 끝나면 Oracle09.jsp로 자동 이동해야 함.

//sendRedirect() 메소드 이용.

String url = String.format("Oracle09.jsp");

response.sendRedirect(url);


%>



//Oracle09_Delete.jsp -> 삭제 액션 처리.

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<%


String num = request.getParameter("num");


MemberDAO dao = new MemberDAO();


if (num != null) {

try {

dao.connect();

dao.remove(Integer.parseInt(num));

} catch (Exception e) {

}

}


//삭제처리후 메인 페이지 자동 이동

String url = String.format("Oracle09.jsp");

response.sendRedirect(url);


%>








문제) 여러명의 국어, 영어, 수학 점수를 입력 받아서 

총점, 평균, 판정 결과 출력하는 JDBC 프로그램 작성. 오라클 이용. JSP 이용. DAO / DTO 분할구현 후 이용하는 방식사용.

총점 기준 정렬(내림차순) 출력.


판정 기준은

합격 -> 과목별로 40점 이상이면서, 평균이 60점 이상

과락 -> 과목중에 40점 미만이 있고, 평균은 60점 이상

불합격 -> 평균이 60점 미만


평균이 60점 이상 -> 합격

평균이 60점 미만 -> 불합격


합격 또는 과락 구분은 -> 국어, 영어, 수학 점수가 모두 40점 이상인 확인.


실행 예)

성적 입력 -------------------------

이름 [        ]

국어 [        ]

영어 [        ]

수학 [        ]

[ 등록 ]



---------------------------------------

    이름 국어 영어 수학 총점 평균 판정

---------------------------------------

1등 hong 100  100  100  300  100.0 합격

2등 kim   80   90   80  ..    ..   합격

---------------------------------------



//DBConn.java

//ScoreDTO.java

package com.test;


public class ScoreDTO {

private int sid, kor, eng, mat, tot;

private String name;

private String grade;

private double avg;

public int getSid() {

return sid;

}

public void setSid(int sid) {

this.sid = sid;

}

public int getKor() {

return kor;

}

public void setKor(int kor) {

this.kor = kor;

}

public int getEng() {

return eng;

}

public void setEng(int eng) {

this.eng = eng;

}

public int getMat() {

return mat;

}

public void setMat(int mat) {

this.mat = mat;

}

public int getTot() {

return tot;

}

public void setTot(int tot) {

this.tot = tot;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getGrade() {

return grade;

}

public void setGrade(String grade) {

this.grade = grade;

}

public double getAvg() {

return avg;

}

public void setAvg(double avg) {

this.avg = avg;

}


}






//ScoreDAO.java

package com.test;


import java.sql.*;

import java.util.*;


public class ScoreDAO {


private Connection conn;

public void connect () throws SQLException, ClassNotFoundException{

conn = DBConn.getConnection();

}


public void close() throws SQLException{

DBConn.close();

conn = null;

}


public int add(ScoreDTO dto) throws SQLException{

int result = 0; // 1행이 입력되었습니다. 에서 1을 반환받기 위해 사용.

String sql = String.format("INSERT INTO score (sid, name, kor, eng, mat) VALUES (scoreSeq.nextval, '%s', %d, %d, %d)", dto.getName(), dto.getKor(), dto.getEng(), dto.getMat());

Statement stmt = conn.createStatement();

result = stmt.executeUpdate(sql);

return result;

}

public int remove(int num) throws SQLException{

int result = 0; // 1행이 입력되었습니다. 에서 1을 반환받기 위해 사용.

String sql = String.format("DELETE score WHERE sid=%s", num);

Statement stmt = conn.createStatement();

result = stmt.executeUpdate(sql);

return result;

}


public ArrayList<ScoreDTO> lists() throws SQLException {

ArrayList<ScoreDTO> arrayList = new ArrayList<ScoreDTO>();

//쿼리 준비

String sql = String.format("SELECT sid, name, kor, eng, mat, (kor+eng+mat) as tot, (kor+eng+mat)/3 as ave, case when ((kor+eng+mat)/3 >= 60) and (kor<40 or eng<40 or mat<40) then '과락' when ((kor+eng+mat)/3 >= 60) then '합격' else '불합격' end as grade FROM score ORDER BY (kor+eng+mat) DESC");

//쿼리 실행

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) { //row 단위 접근

int sid = rs.getInt("sid"); //column 단위 접근

String name = rs.getString("name");

int kor = rs.getInt("kor");

int eng = rs.getInt("eng");

int mat = rs.getInt("mat");

int tot = rs.getInt("tot");

double avg = rs.getDouble("ave");

String grade = rs.getString("grade");

ScoreDTO dto = new ScoreDTO();

dto.setSid(sid);

dto.setName(name);

dto.setKor(kor);

dto.setEng(eng);

dto.setMat(mat);

dto.setTot(tot);

dto.setAvg(avg);

dto.setGrade(grade);

arrayList.add(dto);

}

rs.close();

return arrayList;

}

}





//Oracle10.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<%


StringBuilder str = new StringBuilder();

ScoreDAO dao = new ScoreDAO();


try {

dao.connect();

int rank = 1;

for (ScoreDTO dto :dao.lists()) {

str.append (String.format("<tr><td class=\"style01\">%d등</td><td class=\"style01\">%s</td><td class=\"style02\">%d</td><td class=\"style02\">%d</td><td class=\"style02\">%d</td><td class=\"style02\">%d</td><td class=\"style02\">%.1f</td><td class=\"style01\">%s</td><td class=\"style01\"><input type=\"button\" value=\"삭제\" onclick=\"myDel(%s)\"></td></tr>", rank++, dto.getName(), dto.getKor(), dto.getEng(), dto.getMat(), dto.getTot(), dto.getAvg(), dto.getGrade(), dto.getSid()));

}

} catch(Exception e) {

} finally {

dao.close();

}


%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<style type="text/css">

.style01 {

text-align: center;

}

.style02 {

text-align: right;

}



</style>

<script type="text/javascript">


function myFunc(obj) {

//데이터 검사

var name = document.getElementById("name");

var kor = document.getElementById("kor");

var eng = document.getElementById("eng");

var mat = document.getElementById("mat");

var korVal = parseInt(kor.value);

var engVal = parseInt(eng.value);

var matVal = parseInt(mat.value);

var msg1 = document.getElementById("msg1");

var msg2 = document.getElementById("msg2");

msg1.style.display = "none";

msg2.style.display = "none";

if (name.value == "") {

msg1.style.display = "inline";

name.focus();

return;

}

if (kor.value.match(/[^0-9]/) || korVal > 100 || kor.value == "") {

msg2.style.display = "inline";

kor.value = "";

kor.focus();

return;

}

if (eng.value.match(/[^0-9]/) || engVal > 100 || eng.value == "") {

msg2.style.display = "inline";

eng.value = "";

eng.focus();

return;

}

if (mat.value.match(/[^0-9]/)|| matVal > 100 || mat.value == "") {

msg2.style.display = "inline";

mat.value = "";

mat.focus();

return;

}

//모든 데이터 확인 후 서브밋

obj.form.submit();

}

function myDel(num) {

if (confirm("선택한 자료를 삭제하시겠습니까?")) {

//URL 요청 명령

window.location.href = "Oracle10_Delete.jsp?sid="+num;

}

}


</script>

</head>

<body>

<div>

<h2>성적 처리</h2>

<form action="Oracle10_Insert.jsp" method="post">

이름 <input type="text" style="width:80px;" name="name" id="name"><br>

국어(0~100) <input type="text" style="width:80px;" name="kor" id="kor"><br>

영어(0~100) <input type="text" style="width:80px;" name="eng" id="eng"><br>

수학(0~100) <input type="text" style="width:80px;" name="mat" id="mat"><br>

<input type="button" value="등록" onclick="myFunc(this)"><br>

<span id="msg1" style="color:red; display:none;">모든 항목을 입력해야 합니다.</span><br>

<span id="msg2" style="color:red; display:none;">반드시 국어, 영어, 수학은 0~100 사이 점수를 입력해야 합니다.</span><br>

</form>

<h3>출력 -------------</h3>

<div>

<table border="1" style="width:500px;">

<tbody>

<tr><th>등수</th><th>이름</th><th>국어</th><th>영어</th><th>수학</th><th>총점</th><th>평균</th><th>판정</th><th>삭제</th></tr>

<%=str%>

</tbody>

</table>

</div>

</div>

</body>

</html>




//Oracle10_Insert.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<% 


//데이터 수신

request.setCharacterEncoding("euc-kr");

String r_name = request.getParameter("name");

String r_kor = request.getParameter("kor");

String r_eng = request.getParameter("eng");

String r_mat = request.getParameter("mat");

ScoreDAO dao = new ScoreDAO();

ScoreDTO dto = new ScoreDTO();

try {

//데이터 베이스 연결

dao.connect();

dto.setName(r_name);

dto.setKor(Integer.parseInt(r_kor));

dto.setEng(Integer.parseInt(r_eng));

dto.setMat(Integer.parseInt(r_mat));

dao.add(dto);

} catch (Exception e) {

} finally {

dao.close();

}


String url = String.format("Oracle10.jsp");

response.sendRedirect(url);


%>




//Oracle10_Delete.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"

    pageEncoding="EUC-KR"%>

<%@ page import="java.sql.*" %>

<%@ page import="com.test.*" %>

<% 


//데이터 수신

request.setCharacterEncoding("euc-kr");

String sid = request.getParameter("sid");

ScoreDAO dao = new ScoreDAO();

ScoreDTO dto = new ScoreDTO();

try {

//데이터 베이스 연결

dao.connect();

dao.remove(Integer.parseInt(sid));

} catch (Exception e) {

} finally {

dao.close();

}


String url = String.format("Oracle10.jsp");

response.sendRedirect(url);


%>



WRITTEN BY
빨강꼬마

,

문제) 성적 처리 -> ArrayList 컬렉션, RecordDTO 클래스 이용. 메뉴 구성 추가

여러명의 이름, 국어, 영어, 수학 입력 받아서 총점, 평균 계산해서 출력. 출력시 이름 오름차순 정렬해서 출력.


실행 예)

======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 이름 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->1


1번 학생 성적 입력(이름 국어 영어 수학)?park 80 75 60

2번 학생 성적 입력(이름 국어 영어 수학)?hong 100 90 80

3번 학생 성적 입력(이름 국어 영어 수학)?kim 80 85 80

4번 학생 성적 입력(이름 국어 영어 수학)?-1


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 이름 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->2


 이름   국어  영어  수학  총점  평균

 hong    100   90    80    XXX  XXX.X

 kim      80   85    80    XXX  XXX.X

 park     80   75    60    XXX  XXX.X



======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 이름 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->3

검색하려는 이름?kim

 이름   국어  영어  수학  총점  평균

 kim      80   85    80    XXX  XXX.X



======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 이름 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->3

검색하려는 이름?choi

검색 결과가 없습니다.


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 이름 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->-1


프로그램이 종료되었습니다.


//ScoreDTO.java

//Process.java

//Class70.java








이름과 전화번호를 저장할 수 있는 자료형 만들기.

MemberDTO 클래스, ArrayList 컬렉션


출력시 이름 오름차순 출력


=======  회원 관리  ========

1. 회원 입력

2. 회원 전체 출력

3. 이름 검색 출력


실행 예)

이름 전화번호(1)?홍길동 010-123-1234

이름 전화번호(2)?김길동 010-222-3333


--------------------

이름   전화번호

--------------------

홍길동 010-123-1234

김길동 010-222-3333

--------------------


//문제임 알아서 풀어보세용~ㅋㅋ










ScoreDAO, ScoreDTO 클래스. 

ArrayList 컬렉션


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 이름 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->3



//ScoreDTO.java -> 자료 처리 전용 클래스

//ScoreDAO.java -> 데이터 엑세스 전용 클래스

//Process2.java -> 메뉴 액션 처리 전용 클래스

//Class72.java -> main() 메소드 추가. 메뉴 출력








Map 인터페이스를 구현한 TreeMap 클래스


1. 컬렉션 종류

◆ Collection 인터페이스

- Value의 집합체

- 특정 Value를 얻기 위해서는 검색 과정 필요.


◆ Map 인터페이스

- Key, Value의 집합체.

- Key을 제시하면 Value를 얻을 수 있는 구조.


**개별정리내용**

TreeMap에서 자동인덱스가 아닌 키값 구분 인덱스 이기때문에 단일 출력에는 편리하나,

전체출력을 할 경우 while 문을 통해 출력해야 하며, 이때 , Iterator클래스를 사용해야 함.

ex)

Iterator<Integer> it = tm.keySet().iterator(); //Integer > 키자료형

while(it.hasNext()) {

int key = it.next();

System.out.printf("%d %s %d %d %d %d %.1f %n"

, key

, tm.get(key).getName()

, tm.get(key).getKor()

, tm.get(key).getEng()

, tm.get(key).getMat()

, tm.get(key).getTotal()

, tm.get(key).getAve());

}





//Class73.java ->TreeMap에서의 선언, 자료 입력, 출력.







문제) 성적 처리 -> TreeMap 컬렉션, ScoreDTO 클래스, ScoreDAO 클래스 이용,

메뉴 구성 추가. 


여러명의 학번, 이름, 국어, 영어, 수학 입력 받아서 총점, 평균 계산해서 출력. 

학번은 Key로 사용하고, 이름~평균은 ScoreDTO 객체로 만들어서 Value로 사용한다.

실행 예)

======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 학번 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->1


학생 성적 입력(학번 이름 국어 영어 수학)?1 park 80 75 60

학생 성적 입력(학번 이름 국어 영어 수학)?2 hong 100 90 80

학생 성적 입력(학번 이름 국어 영어 수학)?3 kim 80 85 80

학생 성적 입력(학번 이름 국어 영어 수학)?-1


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 학번 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->1


학생 성적 입력(학번 이름 국어 영어 수학)?3 choi 80 80 80

이미 입력된 학번입니다.

학생 성적 입력(학번 이름 국어 영어 수학)?4 choi 80 80 80

학생 성적 입력(학번 이름 국어 영어 수학)?-1


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 학번 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->2


학번 이름   국어  영어  수학  총점  평균

  1  hong    100   90    80    XXX  XXX.X

  2  kim      80   85    80    XXX  XXX.X

  3  park     80   75    60    XXX  XXX.X

  4  choi     80   80    80    XXX  XXX.X


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 학번 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->3

검색하려는 학번?2

학번 이름   국어  영어  수학  총점  평균

  2  kim      80   85    80    XXX  XXX.X


======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 학번 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->3

검색하려는 학번?5

검색 결과가 없습니다.



======== 성적 처리 ==============

1. 성적 입력

2. 성적 전체 출력

3. 학번 검색 출력

4. 성적 수정

5. 성적 삭제

선택(1~5, -1 종료)->-1


프로그램이 종료되었습니다.




//ScoreDTO.java -> 동일(학번은 TreeMap의 키로만 사용되므로 DTO에는 학번이 없다)

//ScoreDAO3.java -> 변경(자료저장공간이 ArrayList 에서 TreeMap으로 변경되므로)

//Process3.java -> 변경(자료저장공간이 ArrayList 에서 TreeMap으로 변경되므로 관련 액션 수정)

//Class74.java -> 변경(이름 검색 출력을 학번 검색 출력으로 수정





JAVA SE 과목 끝.


예외처리 배우지 않았으므로 ORACLE 과목 종료되면 배워야함.


WRITTEN BY
빨강꼬마

,