방명록
- [정보처리산업기사 | 실기] 골프연습장 회원관리 프로그램2023년 08월 10일 04시 01분 57초에 업로드 된 글입니다.작성자: 이주여이
강사매출현황.jsp
<%@page import="java.text.DecimalFormat"%> <%@page import="java.sql.ResultSet"%> <%@page import="java.sql.PreparedStatement"%> <%@include file="DB.jsp" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <jsp:include page="header.jsp"></jsp:include> <section style="height: 100%"> <h2 style="text-align: center">강사매출현황</h2> <form style="display: flex; justify-content: center; text-align: center"> <table border="1"> <tr> <td>강사코드</td> <td>강의명</td> <td>강사명</td> <td>총매출</td> </tr> <% request.setCharacterEncoding("UTF-8"); try { String sql = "select t.teacher_code, t.class_name, t.teacher_name, sum(c.tuition) " + "from tbl_teacher_202201 t, tbl_class_202201 c " + "where t.teacher_code = c.teacher_code " + "group by t.teacher_code, t.class_name, t.teacher_name"; PreparedStatement pstmt = c.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while(rs.next()) { int price_ = rs.getInt(4); DecimalFormat df = new DecimalFormat("₩ ###,###,###"); String price = df.format(price_); %> <tr> <td><%=rs.getString(1) %></td> <td><%=rs.getString(2) %></td> <td><%=rs.getString(3) %></td> <td><%=price %></td> </tr> <% } } catch(Exception e) { e.printStackTrace(); } %> </table> </form> </section> <jsp:include page="footer.jsp"></jsp:include> </body> </html>
int price_ = rs.getInt(4); DecimalFormat df = new DecimalFormat("₩ ###,###,###"); String price = df.format(price_);
DecimalFormat: java에서 제공하는 숫자 포맷 클래스
원하는 숫자 포맷으로 변경 후, 문자가 들어가기 때문에 String으로 받으면된다.
강사조회.jsp
<%@page import="java.text.DecimalFormat"%> <%@page import="java.sql.ResultSet"%> <%@include file="DB.jsp" %> <%@page import="java.sql.PreparedStatement"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <jsp:include page="header.jsp"></jsp:include> <section style="height: 100%"> <h2 style="text-align: center">강사 조회</h2> <form style="display: flex; justify-content: center; text-align: center"> <table border="1"> <tr> <td>강사코드</td> <td>강사명</td> <td>강의명</td> <td>수강료</td> <td>강사자격취득일</td> </tr> <% request.setCharacterEncoding("UTF-8"); try { String sql = "select * from tbl_teacher_202201"; PreparedStatement pstmt = c.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while(rs.next()) { int price_ = rs.getInt(4); DecimalFormat df = new DecimalFormat("₩ ###,###,###"); String price = df.format(price_); String date = rs.getString(5).substring(0,4) + "년" + rs.getString(5).substring(4,6) + "월" + rs.getString(5).substring(6,8) + "일"; %> <tr> <td><%=rs.getString(1) %></td> <td><%=rs.getString(2) %></td> <td><%=rs.getString(3) %></td> <td><%=price %></td> <td><%=date %></td> </tr> <% } } catch(Exception e) { e.printStackTrace(); } %> </table> </form> </section> <jsp:include page="footer.jsp"></jsp:include> </body> </html>
date는 날짜 포맷 클래스 사용법 찾기 귀찮아서 substring으로 썼다.
시험에는 날짜 포맷 클래스로 사용할 예정이다.
회원정보조회.jsp
<%@page import="java.text.DecimalFormat"%> <%@page import="java.sql.ResultSet"%> <%@page import="java.sql.PreparedStatement"%> <%@include file="DB.jsp" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <jsp:include page="header.jsp"></jsp:include> <section style="height: 100%"> <h2 style="text-align: center">회원정보조회</h2> <form style="display: flex; justify-content: center; text-align: center"> <table border="1"> <tr> <td>수강일</td> <td>회원번호</td> <td>회원명</td> <td>강의명</td> <td>강의장소</td> <td>수강료</td> <td>등급</td> </tr> <% request.setCharacterEncoding("UTF-8"); try { String sql = "select c.resist_month 수강월, c.c_no 회원번호, m.c_name 회원명, t.class_name 강의명, c.class_area 강의장소, t.class_price 수강료, m.grade 등급 " + "from tbl_teacher_202201 t, tbl_member_202201 m, tbl_class_202201 c " + "where m.c_no = c.c_no and t.teacher_code = c.teacher_code"; PreparedStatement pstmt = c.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while(rs.next()) { String date = rs.getString(1).substring(0,4) + "년" + rs.getString(1).substring(4,6) + "월"; int price_ = rs.getInt(6); DecimalFormat df = new DecimalFormat("₩ ###,###,###"); String price = df.format(price_); %> <tr> <td><%=date %></td> <td><%=rs.getString(2) %></td> <td><%=rs.getString(3) %></td> <td><%=rs.getString(4) %></td> <td><%=rs.getString(5) %></td> <td><%=price %></td> <td><%=rs.getString(7) %></td> </tr> <% } } catch(Exception e) { e.printStackTrace(); } %> </table> </form> </section> <jsp:include page="footer.jsp"></jsp:include> </body> </html>
수강신청.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="check.js"></script> </head> <body> <jsp:include page="header.jsp"></jsp:include> <section style="height: 100%"> <h2 style="text-align: center">수강신청</h2> <form name="frm" action="action.jsp" method="post" style="display: flex; justify-content: center; text-align: left"> <table border="1"> <tr> <td>수강월</td> <td><input type="text" name="resist_month"> 예) 202203</td> </tr> <tr> <td>회원명</td> <td> <select name="c_name" onchange="getValue(this.value)"> <!-- 해당 select의 value를 넘긴다. --> <option value="">회원명</option> <option value="10001">홍길동</option> <option value="10002">장발장</option> <option value="10003">임꺽정</option> <option value="20001">성춘향</option> <option value="20002">이몽룡</option> </select> </td> </tr> <tr> <td>회원번호</td> <td><input type="text" id="c_no" name="c_no" readonly></td> <!-- 회원명 값을 받아 출력한다. --> </tr> <tr> <td>강의장소</td> <td> <input type="radio" name="class_area" value="서울본원">서울본원 <input type="radio" name="class_area" value="성남본원">성남본원 <input type="radio" name="class_area" value="대전본원">대전본원 <input type="radio" name="class_area" value="부산본원">부산본원 <input type="radio" name="class_area" value="대구본원">대구본원 </td> <tr> <td>강의명</td> <td> <select name="class_name" onchange="getPrice(this.value)"> <option value="">강의신청</option> <option value="100000">초급반</option> <option value="200000">중급반</option> <option value="300000">고급반</option> <option value="400000">심화반</option> </select> </td> </tr> <tr> <td>수강료</td> <td><input type="text" id="tuition" name="tuition" readonly>원</td> </tr> <tr> <td colspan="2" style="text-align: center"> <input type="button" value="수강신청" onclick="check()"> <input type="button" value="다시쓰기" onclick="reset()"> </td> </tr> </table> </form> </section> <jsp:include page="footer.jsp"></jsp:include> </body> </html>
action.jsp(INSERT)
<%@page import="java.sql.ResultSet"%> <%@page import="java.sql.PreparedStatement"%> <%@include file="DB.jsp" %> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); String resist_month = request.getParameter("resist_month"); String c_no = request.getParameter("c_no"); String class_area = request.getParameter("class_area"); String tuition = request.getParameter("tuition"); String class_name = request.getParameter("class_name"); int teacher_code = Integer.parseInt(class_name) / 1000; try { String sql = "insert into tbl_class_202201 values(?, ?, ?, ?, ?)"; PreparedStatement pstmt = c.prepareStatement(sql); pstmt.setString(1, resist_month); pstmt.setString(2, c_no); pstmt.setString(3, class_area); pstmt.setString(4, tuition); pstmt.setInt(5, teacher_code); pstmt.executeUpdate(); } catch(Exception e) { e.printStackTrace(); } %> <jsp:forward page="insert.jsp"></jsp:forward>
check.js
function check() { if(frm.resist_month.value.length==0) { alert("수강월이 입력되지 않았습니다."); frm.resist_month.focus(); return false; } else if(frm.c_name.value==0) { alert("회원명이 입력되지 않았습니다."); frm.c_name.focus(); return false; } else if( frm.class_area[0].checked==false && frm.class_area[1].checked==false && frm.class_area[2].checked==false && frm.class_area[3].checked==false && frm.class_area[4].checked==false) { alert("강의 장소가 입력되지 않았습니다."); frm.class_area.focus(); return false; } else if(frm.class_name.value==0) { alert("강의명이 입력되지 않았습니다."); frm.class_name.focus(); return false; } else { alert("수강 신청이 완료되었습니다.") document.frm.submit(); return true; } } function reset() { alert("정보를 리셋합니다."); document.frm.reset(); } function getValue(c_no) { /* getValue를 호출한 메소드의 value를 매개변수로 받아 id가 c_no인 input 폼의 value로 넣는다. */ document.getElementById("c_no").value = c_no; c_no_ = c_no; } function getPrice(tuition) { if(c_no_ >= 20000) { document.getElementById("tuition").value = tuition / 2; } else { document.getElementById("tuition").value = tuition; } }
조건: '수강신청' 페이지에서 회원명을 선택하면 해당 회원번호가 폼에 자동으로 채워져야하며 회원번호가 20000 이상일 경우, 50% 할인된 금액을 페이지에 출력되어야한다.
document.frm.submit();
form(name = frm)을 submit한다.
document.frm.reset();
form의 내용을 reset한다.
function getValue(c_no) { /* getValue를 호출한 메소드의 value를 매개변수로 받아 id가 c_no인 input 폼의 value로 넣는다. */ document.getElementById("c_no").value = c_no; c_no_ = c_no; }
jsp에서 getValue를 호출한 태그의 value를 매개변수로 가져온다.
이후, 해당 document의 id가 c_no인 value에 값을 넣어준다.
밑에 c_no_ 변수를 생성해 c_no를 참조하는데 밑에 getPrice의 if문에 들어가는 회원번호이다.
더보기<td>회원명</td> <td> <select name="c_name" onchange="getValue(this.value)"> <!-- 해당 select의 value를 넘긴다. --> <option value="">회원명</option> <option value="10001">홍길동</option> <option value="10002">장발장</option> <option value="10003">임꺽정</option> <option value="20001">성춘향</option> <option value="20002">이몽룡</option> </select> </td> </tr> <tr> <td>회원번호</td> <td><input type="text" id="c_no" name="c_no" readonly></td> <!-- 회원명 값을 받아 출력한다. --> </tr>
function getPrice(tuition) { if(c_no_ >= 20000) { document.getElementById("tuition").value = tuition / 2; } else { document.getElementById("tuition").value = tuition; } }
더보기<tr> <td>강의명</td> <td> <select name="class_name" onchange="getPrice(this.value)"> <option value="">강의신청</option> <option value="100000">초급반</option> <option value="200000">중급반</option> <option value="300000">고급반</option> <option value="400000">심화반</option> </select> </td> </tr> <tr> <td>수강료</td> <td><input type="text" id="tuition" name="tuition" readonly>원</td> </tr>
위에서 생성한 변수 c_no_는 회원 번호이며 조건에 해당 회원 번호가 20000 이상일 경우 50% 할인이 들어가기 때문에 해당 id의 value를 갖고와 if문을 돌려 20000 이상인지 확인한다. 회원 번호가 20000 이상이면 강의명을 선택했을 때, 자동으로 수강료가 50% 차감된 금액이 페이지에 출력된다.
'ETC > 정보처리산업기사' 카테고리의 다른 글
[정보처리산업기사 | 실기] 지역구의원투표 프로그램 (0) 2023.08.14 [정보처리산업기사 | 필기] pdf (0) 2023.08.10 [정보처리산업기사 | 실기] 성적관리 프로그램 (0) 2023.08.09 [정보처리산업기사 | 실기] 수강신청 싸이트 (0) 2023.08.08 [정보처리산업기사 | 필기] 3. 화면 구현 (4) 2023.08.06 다음글이 없습니다.이전글이 없습니다.댓글