Notice
Recent Posts
Recent Comments
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

정보처리기사 실기

[기본형 실습 과제 1] 4차시_페이지별 기능 구현 본문

외부평가 기본형 실무문제 1번

[기본형 실습 과제 1] 4차시_페이지별 기능 구현

윤서입니다롱 2026. 4. 27. 12:34

입력, 검색, 조회 등 각 조건에 맞는 프로그램을 구현 및 단위 테스트를 한다


시작 페이지 index.jsp는 기본 영역 구성과 디자인을 결정한다. 페이지가 원활하게 작동하기 위해 3개의 페이지가 필요하다.

1. 시작 페이지 index.jsp

2. 스타일시트 페이지 style.css

3. 메인 본문 내용 페이지 main.jsp


index.jsp 페이지 소스 코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>일정 관리 프로그램</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>

    <header>
        <h2>일정 관리 프로그램</h2>
    </header>

    <nav>
        <ul>
            <li><a href="reg.jsp" target="section_page">일정등록</a></li>
            <li><a href="list.jsp" target="section_page">회원현황</a></li>
            <li><a href="list_j.jsp" target="section_page">일정현황</a></li>
            <li><a href="main.jsp" target="section_page">홈으로</a></li>
        </ul>
    </nav>

    <section>
        <iframe name="section_page" src="main.jsp"></iframe>
    </section>

    <footer>
        <h3>Copyright (c) 2025. 주식회사 OOOO Inc ALL Rights Reserved.</h3>
    </footer>

</body>
</html>

 


style.css 소스코드

@charset "UTF-8";
BODY, HTML {
	text-align: center;
}
HEADER, NAV, SECTION, IFRAME, FOOTER {
	width: 100%;
	padding: 15px;
	display: flex;
	align-items: center;
	justify-content: center;
}
HEADER{
	height: 30px;
	background: #ffffff;

}
FOOTER{
	height: 70px;
	background: rgb(128, 128, 128);
	color: #ffffff;
}
NAV{
	height: 30px;
	background: rgb(0, 0, 0);
}
NAV UL{
	margin: 0;
	padding: 0;
}
NAV LI{
	display: inline-block;
	width: 170px;
}
NAV A{
	color: #ffffff;
	text-decoration: none;
}
SECTION{
	background: #ffffff;
	border: 0;
}
SECTION IFRAME{
	height: 400px;
	border: 0;
}
TABLE {
	margin: auto;
}

 


main.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>
<h4>일정관리 프로그램</h4>
<pre>
회원 일정 관리를 위한 데이터베이스를 구축하고 회원 일정 관리 프로그램을 작성하는 프로그램이다.
프로그램 작성순서
1. 회원 테이블을 작성한다.
2. 일정 테이블을 작성한다.
3. 회원 및 일정 테이블에서 제시된 문제지의 참조데이터를 추가 생성한다.
4. 홈페이지 프로그램을 작성한다.
5. 일정등록 프로그램을 조건에 맞게 작성한다.
6. 회원현황, 일정현황 프로그램을 작성한다.
</pre>
</body>
</html>

 


list.jsp 소스코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.sql.*" %>
<%@ page import = "DBPKG.Util" %>

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>일정 관리 프로그램</title>
	<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
Connection conn = Util.getConnection();
Statement stmt	= conn.createStatement();
String sql = "	SELECT	 pk_member 	AS 	 회원코드		"+
			 ",			 name		AS	 회원명		"+
			 ",			 grade		AS	 등급			"+
			 "	FROM	 tbl_member					";
ResultSet rs = stmt.executeQuery(sql);
%>
<H4>회원현황</H4>
<TABLE border='1'>
	<TR>
		<TH width='100px'>	회원코드	</TH>
		<TH width='100px'>	회원명	</TH>
		<TH width='100px'>	등급	</TH>
	</TR>
<% while(rs.next()){ %>
	<TR>
		<TD align='left'>	<%=rs.getString("회원코드") %>	</TD>
		<TD align='center'>	<%=rs.getString("회원명") %>	</TD>
		<TD align='right'>	<%=rs.getString("등급") %>	</TD>
	</TR>		
<% } %>

<%
rs.close();
conn.close();
stmt.close();
%>
</TABLE>
</body>
</html>

 


list_j.jsp 소스코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.sql.*" %>
<%@ page import = "DBPKG.Util" %>

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>일정 관리 프로그램</title>
	<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
Connection conn = Util.getConnection();
Statement stmt	= conn.createStatement();
String sql = 
" SELECT	 	tbl_s.pk_schedule 								AS 	 일정코드		"+
" ,			 	to_char(tbl_s.do_date,'yyyy-MM-dd')				AS	 일정일자		"+
" ,			 	tbl_s.do_memo									AS	 일정메모		"+
" ,			 	tbl_m.pk_member 								AS 	 회원코드		"+
" ,			 	tbl_m.name 										AS 	 회원명		"+
" FROM	 	 	tbl_member 		tbl_m											"+
" LEFT JOIN 	tbl_schedule 	tbl_s	 ON 	tbl_s.fk_member=tbl_m.pk_member "+
" WHERE		 	tbl_s.pk_schedule IS NOT NULL									";
ResultSet rs = stmt.executeQuery(sql);
%>
<H4>일정현황</H4>
<TABLE border='1'>
	<TR>
		<TH width='100px'>	일정코드	</TH>
		<TH width='100px'>	일정일자	</TH>
		<TH width='200px'>	일정메모	</TH>
		<TH width='100px'>	회원코드	</TH>
		<TH width='100px'>	회원명	</TH>
	</TR>
<% while(rs.next()){ %>
	<TR>
		<TD align='center'>	<%=rs.getString("일정코드") %>	</TD>
		<TD align='center'>	<%=rs.getString("일정일자") %>	</TD>
		<TD align='left'>	<%=rs.getString("일정메모") %>	</TD>
		<TD align='center'>	<%=rs.getString("회원코드") %>	</TD>
		<TD align='center'>	<%=rs.getString("회원명") %>	</TD>
	</TR>		
<% } %>

<%
rs.close();
conn.close();
stmt.close();
%>
</TABLE>
</body>
</html>

 


reg.jsp 소스코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.sql.*" %>
<%@ page import = "DBPKG.Util" %>

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>일정등록</title>
	<link rel="stylesheet" type="text/css" href="style.css">
	<script>
		function check_val(){
			var do_date = document.fm.do_date.value;
			if(do_date==""){
				alert("일정일자를 입력하지 않았습니다.");
				fm.do_date.focus();
				return false;
			}
			var fk_member = document.fm.fk_member.value;
			if(fk_member==""){
				alert("회원번호를 입력하지 않았습니다.");
				fm.fk_member.focus();
				return false;
			}
			var do_memo = document.fm.do_memo.value;
			if(do_memo==""){
				alert("일정메모를 입력하지 않았습니다.");
				fm.do_memo.focus();
				return false;
			}
		}
	</script>
</head>
<%
request.setCharacterEncoding("UTF-8");
Connection conn = Util.getConnection();
Statement stmt	= conn.createStatement();
String sql = "	SELECT	 TRIM(to_char(max(pk_schedule)+1)) 	AS 	 pk_schedule		"+
			 "	FROM	 tbl_schedule												";
ResultSet rs = stmt.executeQuery(sql);
rs.next();
String pk_schedule = rs.getString("pk_schedule");
%>
<body>
	<H4>일정등록</H4>
	<FORM name='fm' action='action.jsp' onsubmit="return check_val()">
		<TABLE border='1'>
			<TR>
				<TH align="center"	width="300px">일정번호(자동발생)</TH>
				<TD align="left"	width="400px">
					<INPUT type='text' name='pk_schedule' value='<%=pk_schedule %>' readonly>
				</TD>
			</TR>
			<TR>
				<TH align="center">일정일자</TH>
				<TD align="left"	width="400px">
					<INPUT type='text' name='do_date'>(ex: 20년 1월 1일>20250101)
				</TD>
			</TR>
			<TR>
				<TH align="center">회원번호</TH>
				<TD align="left"	width="400px">
					<INPUT type='text' name='fk_member'>(ex: M0001)
				</TD>
			</TR>
			<TR>
				<TH align="center">일정메모</TH>
				<TD align="left"	width="400px">
					<INPUT type='text' name='do_memo'>
				</TD>
			</TR>
			<TR>
				<TD align="center"	colspan='2'>
					<INPUT type='submit' value="등록">
					<INPUT type='button' value="조회" onclick="location.href='list.jsp'">
				</TD>
			</TR>
		</TABLE>
	</FORM>

<%
rs.close();
conn.close();
stmt.close();
%>
</body>
</html>

 


action.jsp 소스코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import 	= "java.sql.*" %>
<%@ page import 	= "DBPKG.Util" %>
<%
request.setCharacterEncoding("UTF-8");
Connection conn 	= Util.getConnection();
Statement stmt		= conn.createStatement();

String pk_schedule	= request.getParameter("pk_schedule");
String fk_member 	= request.getParameter("fk_member");
String do_memo 		= request.getParameter("do_memo");
String do_date 		= request.getParameter("do_date");


String sql = 
" INSERT 	INTO	 tbl_schedule 	VALUES('"	+ pk_schedule	+	"'"+
"										 , '"	+ do_date		+	"'"+
"										 , '"	+ do_memo		+	"'"+
"										 , '"	+ fk_member		+	"')";
ResultSet rs 		= stmt.executeQuery(sql);

rs.close();
conn.close();
stmt.close();
%>
<script>
	alert("일정등록이 정상적으로 되었습니다.");
	window.location.href = "main.jsp";
</script>