개발 ON
  • [정보처리산업기사 | 실기] 골프연습장 회원관리 프로그램
    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% 차감된 금액이 페이지에 출력된다.

    댓글