정보처리산업기사

[정보처리산업기사] 과정평가형 실기 2_ 회원등록/조회/수정(배열ver)

YOU R PLANET 2022. 1. 4. 14:01

https://you-r-planet-b612.tistory.com/122

 

[정보처리산업기사] 과정평가형 실기 1_ 기본세팅

1.개발 환경 확인하기 (시험장에서도 동일합니다.) 언어는 JAVA 개발 환경은 ECLIPSE 서버는 톰캣 DB는 ORACLE 2. 요구 사항 확인하기 (실제 시험이 1.5배 정도 어렵다고 합니다.) 1. 구현할 기능: 등록, 조

you-r-planet-b612.tistory.com

전 단계 참고 ↑


1. 회원 등록


 

 

 

 

회원번호

회원성명

회원전화

통신사(라디오 버튼)

가입일자

고객등급(드롭다운)

도시코드

 

* 유효성 체크(각 항목별)

* 등록 누르면 목록 조회

 

 

 

 

 

 

03_RegisterForm.jsp
<%@page import="DBPKG.DAO"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ 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>
		
		function check(){
			if(document.f1.name.value == ""){
				alert('이름을 입력하세요.');
				document.f1.name.focus();
				return false;
			}
			if(document.f1.tel.value == ""){
				alert('전화번호를 입력하세요.');
				document.f1.tel.focus();
				return false;
			}
			if(document.f1.date.value == ""){
				alert('날짜를 입력하세요.');
				document.f1.date.focus();
				return false;
			}
			if(document.f1.city.value == ""){
				alert('도시코드를 입력하세요.');
				document.f1.city.focus();
				return false;
			}
			document.f1.submit();
		}
</script>

</head>
 	<%
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		conn = DAO.getConnection();
		int number = 0; // 새로 등록할 번호
		
		 try{
			 String sql = "select max(custno) from member_tbl_02";
			 pstmt = conn.prepareStatement(sql);
			 rs = pstmt.executeQuery();
			 if(rs.next()){
				 number = rs.getInt(1);
				 number++;
			 }
			 conn.close();
			 pstmt.close();
			 rs.close();
		 }catch(Exception e){
			 e.printStackTrace();
		 }
	%>
<body>
 <form name="f1" action="03_RegisterPro.jsp" method="post">
 	<table border="1">
		<tr>
			<td>회원번호(자동발생)</td>
			<td><input type="text" value=<%=number%>></td>
		</tr> 
		
		<tr>
			<td>회원성명</td>
			<td><input type="text" name="name"></td>
		</tr> 	
		
		<tr>
			<td>회원전화</td>
			<td><input type="text" name="tel"></td>
		</tr> 	
		
		<tr>
			<td>통신사</td>
			<td>
			<input type="radio" name="address" value="SK" checked>SK
			<input type="radio" name="address" value="KT" >KT
			<input type="radio" name="address" value="LG" >LG
			</td>
		</tr> 		
		
		<tr>
			<td>가입일자</td>
			<td><input type="text" name="date"></td>
		</tr> 
		
		<tr>
			<td>고객등급</td>
			<td>
			<select name="grade">
			<option value="A">A</option>
			<option value="B">B</option>
			<option value="C">C</option>
			</select>
			</td>
		</tr> 
		
		<tr>
			<td>도시코드</td>
			<td><input type="number" name="city"></td>
		</tr> 
		
		<tr align="center">
			<td colspan="2">
			<input type="hidden" name="number" value=<%=number%>>
			<input type="button" onclick="check()" value="등록">
			<button onclick="00_Main.jsp?center=04_MemberList.jsp">조회</button>
			</td>
		</tr>
 	</table>
</form>
</body>
</html>

실행화면


03_RegisterPro.jsp
<%@page import="DBPKG.DAO"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ 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>
<!-- 
   custno number(6),
    custname varchar2(20),
    phone varchar2(13),
    address varchar2(4),
    joindate date,
    grade char(1),
    city char(2),
 -->
<body>
	<%
		int state = 0;
		request.setCharacterEncoding("UTF-8");
	
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		conn = DAO.getConnection();
		
		String custname = request.getParameter("name");
		String phone = request.getParameter("tel");
		String address = request.getParameter("address");
		String date = request.getParameter("date");
		String grade = request.getParameter("grade");
		String city = request.getParameter("city");
		// 시퀀스로 처리하므로 custno를 request 값으로 넘겨주지 않음
		try{
			String sql = "INSERT INTO member_tbl_02 values(member_seq.nextval, ?,?,?,?,?,?)";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, custname);
			pstmt.setString(2, phone);
			pstmt.setString(3, address);
			pstmt.setString(4, date);
			pstmt.setString(5, grade);
			pstmt.setString(6, city);
			pstmt.executeUpdate();
			
			pstmt.close();
			conn.close();
		}catch(Exception e){
			state = -1;
			e.printStackTrace();
		}
	%>
	<%if(state == 0){%>
		<script>
			alert('회원 등록 완료');	
			location.href="00_Main.jsp?center=04_MemberList.jsp";
		</script>
	<%}else{%>
		<script>
			alert('회원 등록 실패');	
			history.go(-1);
		</script>
	<%}%>
</body>
</html>

2. 회원 조회


04_MemberList.jsp
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.sql.Date"%>
<%@page import="java.util.ArrayList"%>
<%@page import="DBPKG.DAO"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ 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>
	<%
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		conn = DAO.getConnection();
		
		ArrayList<String[]> memberList = new ArrayList<>(); // DB에서 가져올 정보를 저장할 곳
		
		try{
			String sql = "SELECT * FROM member_tbl_02";
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			
			while(rs.next()){
				String[] member = new String[7];				
				member[0] = rs.getInt(1) + "";
				member[1] = rs.getString(2);
				member[2] = rs.getString(3);
				member[3] = rs.getString(4);
				
				Date date = rs.getDate(5); 
				SimpleDateFormat sdf = new SimpleDateFormat("YYYY년 MM월 dd일");
				member[4] = sdf.format(date); // 날짜
				
				String gradeChar[] = {"A","B","C"};
				String grade[] = {"VIP","일반","직원"};
				for(int i = 0; i < gradeChar.length; i++){
					if(gradeChar[i].equals(rs.getString(6))){
						member[5] = grade[i]; // 등급
						break;
					}
				}
				
				String cityNum[] = {"01","10","20","30","40","60"};
				String city[] = {"서울","인천","성남","대전","광주","부산"};
				for(int i = 0; i < cityNum.length; i++){
					if(cityNum[i].equals(rs.getString(7))){
						member[6] = city[i]; // 도시
						break;
					}
				}
				memberList.add(member);
			}
			pstmt.close();
			conn.close();
			rs.close();
		}catch(Exception e){
			e.printStackTrace();
		}
	%>
	<div>
	<h1>회원목록조회/수정</h1>
	</div>
	<table border="1">
		<tr align="center">
			<td>회원번호</td>
			<td>회원성명</td>
			<td>전화번호</td>
			<td>통신사</td>
			<td>가입일자</td>
			<td>고객등급</td>
			<td>거주지역</td>
		</tr>
		
		<%for(int i = 0; i < memberList.size(); i++){%>
			<% String[] member = memberList.get(i); %>
			<tr align="center">
				<td><a href="00_Main.jsp?center=06_UpdateForm.jsp&number=<%=member[0]%>"><%=member[0]%></a></td>
				<td><%=member[1]%></td>
				<td><%=member[2]%></td>
				<td><%=member[3]%></td>
				<td><%=member[4]%></td>
				<td><%=member[5]%></td>
				<td><%=member[6]%></td>
			</tr>
		<%} %>
	</table>
</body>
</html>

SimpleDateFormat sdf = new SimpleDateFormat("YYYY년 MM월 dd일");

날짜 형식 함수 알아 둘 것!

실행화면


3. 회원 수정


06_UpdateForm.jsp
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.sql.Date"%>
<%@page import="DBPKG.DAO"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ 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>
<%
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		int number = Integer.parseInt(request.getParameter("number"));
		conn = DAO.getConnection();
		String[] member = new String[7];
		
		try{
			String sql = "Select * from member_tbl_02 where custno = ?";
			pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1, number);
			rs = pstmt.executeQuery();
			if(rs.next()){
				member[0] = rs.getInt(1) + "";
				member[1] = rs.getString(2);
				member[2] = rs.getString(3);
				member[3] = rs.getString(4);
				
				Date date = rs.getDate(5);
				SimpleDateFormat sdf = new SimpleDateFormat("YYYYMMdd");
				member[4] = sdf.format(date);
				System.out.println(member[4]);
				member[5] = rs.getString(6);
				member[6] = rs.getString(7);
			}
			conn.close();
			pstmt.close();
			rs.close();
		}catch(Exception e){
			e.printStackTrace();
		}
%>
<body>
	<form name="f1" action="06_UpdatePro.jsp" method="post">
 	<table border="1">
		<tr>
			<td>회원번호(자동발생)</td>
			<td><input type="text" name="number" value=<%=member[0]%>></td>
		</tr> 
		
		<tr>
			<td>회원성명</td>
			<td><input type="text" name="name" value=<%=member[1]%>></td>
		</tr> 	
		
		<tr>
			<td>회원전화</td>
			<td><input type="text" name="tel" value=<%=member[2]%>></td>
		</tr> 	
		
		<tr>
			<td>통신사</td>
			<td>
			<input type="radio" name="address" value="SK" <%if(member[3].equals("SK")){%> checked <%}%>>SK
			<input type="radio" name="address" value="KT" <%if(member[3].equals("KT")){%> checked <%}%> >KT
			<input type="radio" name="address" value="LG" <%if(member[3].equals("LG")){%> checked <%}%>>LG
			</td>
		</tr> 		
		
		<tr>
			<td>가입일자</td>
			<td><input type="text" name="date" value=<%=member[4]%>></td>
		</tr> 
		
		<tr>
			<td>고객등급</td>
			<td>
			<select name="grade">
			<option value="A"<%if(member[5].equals("A")){%> selected <%}%>>A</option>
			<option value="B"<%if(member[5].equals("B")){%> selected <%}%>>B</option>
			<option value="C"<%if(member[5].equals("C")){%> selected <%}%>>C</option>
			</select>
			</td>
		</tr> 
		
		<tr>
			<td>도시코드</td>
			<td><input type="number" name="city" value=<%=member[6]%>></td>
		</tr> 
		
		<tr align="center">
			<td colspan="2">
			<input type="submit" value="수정">
			<button onclick="00_Main.jsp?center=04_MemberList.jsp">조회</button>
			</td>
		</tr>
 	</table>
</form>
</body>
</html>
06_UpdatePro.jsp
<%@page import="DBPKG.DAO"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ 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>
<!-- 
   custno number(6),
    custname varchar2(20),
    phone varchar2(13),
    address varchar2(4),
    joindate date,
    grade char(1),
    city char(2),
 -->
<%
		int state = 0;
		request.setCharacterEncoding("UTF-8");
	
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		conn = DAO.getConnection();
		
		int custno = Integer.parseInt(request.getParameter("number"));
		String custname = request.getParameter("name");
		String phone = request.getParameter("tel");
		String address = request.getParameter("address");
		String date = request.getParameter("date");
		String grade = request.getParameter("grade");
		String city = request.getParameter("city");
		
		try{
			String sql = "update member_tbl_02 set custname = ?, phone = ?, address =?, joindate = ?, grade=?, city=? where custno = ? ";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, custname);
			pstmt.setString(2, phone);
			pstmt.setString(3, address);
			pstmt.setString(4, date);
			pstmt.setString(5, grade);
			pstmt.setString(6, city);
			pstmt.setInt(7,custno);
			pstmt.executeUpdate();
			
			pstmt.close();
			conn.close();
		}catch(Exception e){
			state = -1;
			e.printStackTrace();
		}
	%>
	<%if(state == 0){ %>
		<script>
		alert('수정완료!');
		location.href="00_Main.jsp?center=04_MemberList.jsp";
		</script>
	<%}else{%>
		<script>
		alert('수정 실패');
		history.go(-1);
		</script>
	<%} %>
</body>
</html>

실행화면


4. 매출 조회


05_RankList.jsp
<%@page import="java.text.DecimalFormat"%>
<%@page import="java.util.ArrayList"%>
<%@page import="DBPKG.DAO"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ 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>
	<%
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		conn = DAO.getConnection();
		
		ArrayList<int[]> money = new ArrayList<>();
		ArrayList<String[]> rankList = new ArrayList<>();
		
		try{
			String sql = "SELECT custno, sum(price) from money_tbl_02 group by custno order by sum(price) desc";
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			
			while(rs.next()){
				int[] temp = new int[2];
				temp[0] = rs.getInt(1);
				temp[1] = rs.getInt(2);
				money.add(temp);				
			}
			
			for(int i = 0; i < money.size(); i++){
				String[] temp2 = new String[4];
				temp2[0] = money.get(i)[0] + "";
				temp2[3] = money.get(i)[1] + "";
				sql = "SELECT custname, grade from member_tbl_02 where custno = ?";
				pstmt = conn.prepareStatement(sql);
				pstmt.setInt(1, money.get(i)[0]);
				rs = pstmt.executeQuery();
				if(rs.next()){
					temp2[1] = rs.getString(1);
					
					String gradeChar[] = {"A","B","C"};
					String grade[] = {"VIP","일반","직원"};
					
					for(int j = 0; j < gradeChar.length; j++){
						if(gradeChar[j].equals(rs.getString(2))){
							temp2[2] = grade[j];
							break;
						}
					}
				}
				rankList.add(temp2);
			}
			pstmt.close();
			pstmt.close();
			rs.close();
		}catch(Exception e){
			e.printStackTrace();
		}
		DecimalFormat df = new DecimalFormat("###,###");
	%>
	<table border="1">
		<tr>
			<td><strong>회원번호</strong></td>
			<td><strong>회원성명</strong></td>
			<td><strong>고객등급</strong></td>
			<td><strong>매출</strong></td>
		</tr>
		
		<%for(int i= 0; i < rankList.size(); i++){ %>
		<%String[] tempList = rankList.get(i); 
		  int total = Integer.parseInt(tempList[3]);
		%>
		<tr align="center">
			<td><%=tempList[0]%></td>
			<td><%=tempList[1]%></td>
			<td><%=tempList[2]%></td>
			<td><%=df.format(total)%></td>
		</tr>
		<%} %>
	</table>
</body>
</html>

DecimalFormat df = new DecimalFormat("###,###");

숫자 서식 함수 알아 둘 것!

 

실행화면

 

매출 조회는 다양한 방법이 있겠지만 나는 SQL 문으로 처리했다.