- Today
- Total
Notice
Recent Posts
Codemental
[일학습병행제 SW개발 L5] 외부평가 준비 및 자료(4) - 작업형 공개문제 풀이 본문
반응형
[공개자료]SW개발_L5_20V1_2021-06-01.hwp
0.19MB
다들 작업형은 공개문제랑 비슷한 수준으로 나온다고 하니, 공개문제 중 가장 최신 파일을 풀어보고자 한다.
파일은 위에서 다운 받을 수 있다.
[ 요구사항 ]
[ 제 1과제 ] 데이터베이스 구현 실무
( 작업 1 ) DM발송목록 테이블을 생성하시오.
풀이 V
더보기
CREATE TABLE DM_TBL (
dmno NUMBER(8) NOT NULL PRIMARY KEY,
custid VARCHAR2(10),
maildate DATE,
contents VARCHAR2(13),
dept CHAR(2),
grade CHAR(1),
canpain CHAR(2)
);
--COMMENT ON COLUMN [테이블명].[컬럼명] IS '[Comment]';
COMMENT ON COLUMN DM_TBL.dmno IS 'DM발송번호';
COMMENT ON COLUMN DM_TBL.custid IS '고객ID';
COMMENT ON COLUMN DM_TBL.maildate IS '발송일자';
COMMENT ON COLUMN DM_TBL.contents IS 'DM내용';
COMMENT ON COLUMN DM_TBL.dept IS '발송부서';
COMMENT ON COLUMN DM_TBL.grade IS '고객등급';
COMMENT ON COLUMN DM_TBL.canpain IS '캠페인구분';
-- 잘 생성 되었는지 확인
DESC DM_TBL;
( 작업 2 ) 고객정보 테이블을 생성하시오.
풀이 V
더보기
CREATE TABLE bookinfo_tbl (
custid VARCHAR2(10) NOT NULL PRIMARY KEY,
author VARCHAR2(20),
goods CHAR(2),
phone VARCHAR2(13),
email VARCHAR2(20),
area VARCHAR2(20)
);
--COMMENT ON COLUMN [테이블명].[컬럼명] IS '[Comment]';
COMMENT ON COLUMN bookinfo_tbl.custid IS '고객아이디';
COMMENT ON COLUMN bookinfo_tbl.author IS '성명';
COMMENT ON COLUMN bookinfo_tbl.goods IS '관심상품';
COMMENT ON COLUMN bookinfo_tbl.phone IS '전화번호';
COMMENT ON COLUMN bookinfo_tbl.email IS '이메일';
COMMENT ON COLUMN bookinfo_tbl.area IS '거주지역';
-- 잘 생성 되었는지 확인
DESC bookinfo_tbl;
( 작업 3 ) 샘플데이터를 참조하여 DM발송 내역정보와 고객정보 테이블에 데이터를 생성하시오.
[ DM발송내역 샘플 데이터]
[ 고객정보 샘플 데이터 ]
더보기
-- DM발송내역 샘플데이터 등록(DM_TBL)
INSERT INTO DM_TBL VALUES(1, 'aaa', TO_DATE('20171201'), '안녕하세요?','10', '1', 'C1');
INSERT INTO DM_TBL VALUES(2, 'bbb', TO_DATE('20171201'), '안녕하세요?','10', '2', 'C1');
INSERT INTO DM_TBL VALUES(3, 'ccc', TO_DATE('20171201'), '안녕하세요?','10', '3', 'C1');
INSERT INTO DM_TBL VALUES(4, 'ddd', TO_DATE('20171224'), '안녕하세요?','20', 'V', 'C2');
INSERT INTO DM_TBL VALUES(5, 'eee', TO_DATE('20171224'), '안녕하세요?','20', 'VV', 'C2');
INSERT INTO DM_TBL VALUES(6, 'fff', TO_DATE('20171224'), '안녕하세요?','30', '1', 'C3');
-- 제대로 등록되었는지 확인
SELECT * FROM DM_TBL;
-- 고객정보 샘플데이터 등록(bookinfo_tbl)
INSERT INTO bookinfo_tbl VALUES('aaa', '김고객','의류','010-1111-1111','aaa@korea.com','서울');
INSERT INTO bookinfo_tbl VALUES('bbb', '이고객','의류','010-1111-1112','bbb@korea.com','서울');
INSERT INTO bookinfo_tbl VALUES('ccc', '박고객','식료품','010-1111-1113','ccc@korea.com','경기');
INSERT INTO bookinfo_tbl VALUES('ddd', '홍고객','공산품','010-1111-1114','ddd@korea.com','대전');
INSERT INTO bookinfo_tbl VALUES('eee', '조고객','컴퓨터','010-1111-1115','eee@korea.com','대전');
INSERT INTO bookinfo_tbl VALUES('fff', '백고객','관광','010-1111-1116','fff@korea.com','울산');
-- 제대로 등록되었는지 확인
SELECT * FROM bookinfo_tbl;
( 작업 4 ) 고객발송내역 조회 SQL문을 작성하시오.
- 날짜 형식의 데이터는 아래와 같이 편집하여 출력한다.
더보기
SELECT A.dmno as 발송번호,
A.custid as 고객ID,
B.author as 고객명,
A.maildate as 발송일,
A.contents as 내용,
A.campain as 캠페인구분
FROM DM_TBL A LEFT JOIN bookinfo_tbl B ON A.custid = B.custid
( 작업 5 ) 고객등록 입력 화면을 위해 고객정보저장을 위한 SQL을 작성하시오.
더보기
INSERT INTO bookinfo_tbl(?, ?, ?, ?, ?, ?);
( 작업 6 ) 지역별 DM 발송건수 통계를 구하는 SQL문을 작성 하시오.
더보기
SELECT B.area as 지역, COUNT(A.dmno) as 발송건수
FROM DM_TBL A LEFT JOIN bookinfo_tbl B ON A.custid = B.custid
GROUP BY B.area, A.dmno
[ 제 2과제 ] 통합 인터페이스 구현 실무
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>입력화면</title>
</html>
<body>
<form action="result.jsp">
<h1>제조사명 조회</h1>
<table border="1">
<tr>
<td colspan="2">제품코드(4) 입력</td>
</tr>
<tr>
<td>제품코드</td>
<td><input name="code" value=""/></td>
</tr>
<tr>
<td colspan="2"><button>확인</button></td>
</tr>
</table>
</form>
</body>
</html>
result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
import="kr.ac.kope.*"
%>
<%
UserInfo user = new UserInfo("한국인", "1004","2019-10-31");
ProductInfo product = new ProductInfo();
String code = request.getParameter("code");
product.setCode(code);
product.find();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>조회결과</title>
</head>
<body>
<h1>제품코드 조회 결과</h1>
<hr>
<table border="1">
<tr>
<td>제조사 조회 결과</td>
</tr>
<tr>
<td>제품코드</td>
<td><%= product.getCode() %></td>
</tr>
<tr>
<td>제조사명</td>
<td><%= product.getVender() %>/td>
</tr>
<tr>
<td>조회일시</td>
<td><%= product.getDate() %></td>
</tr>
</table>
<hr>
<div>
작성자 : <%= user.getName() %> 비번 : <%= user.getPassword() %> 작성일 : <%= user.getDate() %>
</div>
</body>
</html>
UserInfo.java
package kr.ac.kope;
public class UserInfo {
private String name;
private String password;
private String date;
public UserInfo(String name, String password, String date){
super();
this.name = name;
this.password = password;
this.date = date;
}
public String getName(){
return name;
}
public String setName(String name){
thie.name = name;
}
public String getPassword(){
return name;
}
public String setPassword(String password){
thie.password = password;
}
public String getDate(){
return date;
}
public String setData(String date){
thie.date = date;
}
}
ProductInfo.java
package kr.ac.kope;
public class ProductInfo {
private String code;
private String vender;
private String date;
public String getCode(){
return code;
}
public String setCode(String code){
thie.code = code;
}
public String getVender(){
return vender;
}
public String setVender(String vender){
thie.vender = vender;
}
public String getDate(){
return date;
}
public String setData(String date){
thie.date = date;
}
public void find(){
HashMap<String, String> map = new HashMap<>();
map.put("A100","삼성전자");
map.put("A200","LG전자");
map.put("A300","하이닉스");
vender = map.get(code);
if(vender == null){
vender = "등록되지 않은 제품입니다!!";
}
date = new Date();
}
}
[ 제 3과제 ] 서버프로그램 개발 실무
더보기
CREATE TABLE custon_01 (
p_id VARCHAR2(10) NOT NULL PRIMARY KEY,
p_pw VARCHAR2(10),
c_name VARCHAR2(20),
c_email VARCHAR2(20),
c_tel VARCHAR2(14)
);
-- COMMENT ON COLUMN [테이블명].[컬럼명] IS '[Comment]';
COMMENT ON COLUMN custon_01.p_id IS '회원ID';
COMMENT ON COLUMN custon_01.p_pw IS '비번';
COMMENT ON COLUMN custon_01.c_name IS '회원명';
COMMENT ON COLUMN custon_01.c_email IS '회원email';
COMMENT ON COLUMN custon_01.c_tel IS '연락처';
-- 테이블 생성 잘 되었는지 확인
DESC custon_01;
INSERT INTO custon_01 VALUES('aaa', '1234','김회원','aaa@korea.com','010-111-1111');
INSERT INTO custon_01 VALUES('bbb', '1234','이회원','bbb@korea.com','010-111-1112');
INSERT INTO custon_01 VALUES('ccc', '1234','박회원','ccc@korea.com','010-111-1113');
INSERT INTO custon_01 VALUES('ddd', '1234','오회원','ddd@korea.com','010-111-1114');
INSERT INTO custon_01 VALUES('eee', '1234','최회원','eee@korea.com','010-111-1115');
INSERT INTO custon_01 VALUES('fff', '1234','조회원','fff@korea.com','010-111-1116');
-- 샘플 데이터 잘 들어갔는지 확인
SELECT * FROM custon_01;
ojdbc가 시험장 PC에 설치되어있음. 필요한 프로젝트로 옮겨주는 작업 필요!!
** 설치 위치 : Windows(:C)> oraclexe> app> oracle> product> 11.2.0> server> jdbc> lib > ojdbc6.jar
** 프로젝트에 옮길 위치 : src > main > webapp > WEB-INF > lib (드래그앤 드롭으로 넣어줌)
add.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원등록</title>
</head>
<body>
<h1>회원 등록</h1>
<form action="add_apply.jsp">
<table border="1">
<tr>
<td>아이디</td>
<td><input type="text" name="p_id" value=""/></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="text" name="p_pw" value=""/></td>
</tr>
<tr>
<td>성명</td>
<td><input type="text" name="c_name" value=""/></td>
</tr>
<tr>
<td>이메일</td>
<td><input type="text" name="c_email" value=""/></td>
</tr>
<tr>
<td>연락처</td>
<td><input type="text" name="c_tel" value=""/></td>
</tr>
<tr>
<td colspan="2">
<button type="submit">등록</button>
<a href="find.jsp"><button type="button">조회</button></a>
</td>
</tr>
</table>
</form>
</body>
</html>
add_apply.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
import="java.sql.*"
%>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@lacalhost:1521:xe", "system","1234");
PreparedStatement stmt = conn.preparedStatement("INSERT INTO custom_01 VALUES(?, ?, ?, ?, ?)");
stmt.setString(1, request.getParameter("p_id"));
stmt.setString(2, request.getParameter("p_pw"));
stmt.setString(3, request.getParameter("c_name"));
stmt.setString(4, request.getParameter("c_email"));
stmt.setString(5, request.getParameter("c_tel"));
stmt.excute();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원등록</title>
</head>
<body>
<a href="add.jsp">등록화면</a>
</body>
</html>
find.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
import="java.sql.*"
%>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@lacalhost:1521:xe", "system","1234");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.excuteQuery("SELECT p_id, c_name, c_email, c_tel FROM custom_01");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원목록조회</title>
</head>
<body>
<h1>회원목록조회</h1>
<hr>
<table border="1">
<thead>
<tr>회원아이디</tr>
<tr>회원이름</tr>
<tr>이메일</tr>
<tr>연락처</tr>
</thead>
<tbody>
<% while (rs.next()){ %>
<tr><%= rs.getString(1) %></tr>
<tr><%= rs.getString(2) %></tr>
<tr><%= rs.getString(3) %></tr>
<tr><%= rs.getString(4) %></tr>
<% } %>
</tbody>
</table>
<hr>
<h3>HRDKOREA Copyright©2015 All rights reserved. Human Resources Development Service of Korea.</h3>
</body>
</html>
[ 제 4과제 ] 화면설계 실무
종류에다 쓰는 것이 중요함. 나머지는 요구사항 명세서에 있음.
** 종류 : 대부분 button, TextField, choice 중에 고르면 됨. ( 걍 3개 중에 고르자.)
'자격증 > 일학습병행제 SW L5' 카테고리의 다른 글
[일학습병행제 SW개발 L5] 외부평가 후기(1) - 전반적 후기 (0) | 2022.06.14 |
---|---|
[일학습병행제 SW개발 L5] 외부평가 준비 및 자료(5) - 면접형 기출문제 정리 (0) | 2022.06.13 |
[일학습병행제 SW개발 L5] 외부평가 준비 및 자료(3) - 작업형 평가 (0) | 2022.06.12 |
[일학습병행제 SW개발 L5] 외부평가 준비 및 자료(2) - 지필평가 (0) | 2022.06.12 |
[일학습병행제 SW개발 L5] 외부평가 준비 및 자료(1) - 개요 및 합격기준 (0) | 2022.06.12 |