본문 바로가기

일경험

[국민취업지원제도 일경험프로그램 42일차] 결재 시스템 프로젝트

반응형

42일 차 특이사항

1. 정확하게 알아야 된다. 기억도 날카롭게 해보자. 

2. api 사용 

3. 결재 시스템 개발 시작

 

문제 복습

1. 여기서 오류를 찾는 문제다. 

index(number) name(varchar(4)) addr(varchar(10)) phone(number)
1 yoon seoul 010-1111-1111
2 park pusan 010-2222-3333
3 hwang daegu 010-4444-5555

- phone 컬럼에 하이픈이 들어가는 데이터를 추가해도 오류가 발생하지 않고 음수가 나오더라. 에러발생은 아니지만 좋은 결과는 아니다. 

- varchar(4)로 설정되어 있는 name 컬럼에 hwang이 5글자라 오류다. 

 

2. DQL에는 SELECT가 포함된다. SELECT는 DML이기도 한데? 뭐 그렇다고 한다. 

3. DECODE와 CASE의 차이점 

- case 예제 : CASE WHEN <조건식1> THEN <반환값1> END

SELECT ENAME, SAL,
CASE WHEN SAL<1000 THEN 'C등급' 
     WHEN SAL>=1000 AND SAL<2000 THEN 'B등급'
     ELSE 'A등급'
END
FROM EMP;

 

- decode 예제 : DECODE(<컬럼명>, <값1>, <반환값1>) - 컬럼명이 값1이면 반환값1을 가져온다. 

SELECT DEPTNO,
DECODE (DEPTNO,10,'TRUE','FALSE')
FROM EMP;

SELECT ENAME,JOB,SAL,
DECODE (JOB, 'CLERK', SAL*1.1,
        'SALESMAN', SAL*1.2,
        'PRESIDENT', SAL*4,
        'MANAGER', SAL*1.1,
        'ANALYST', SAL*1.3)
FROM EMP;

 

 

회원가입 api 

1. api를 사용한다는 것은 뭘까? 남이 만들어 놓은 함수 모음집을 가져다가 쓰는 것 

 

2. 우편번호 찾기 api 

1)HTML

우편번호 : <input type="text" size="9" name="num" id = "num"> 
     <input type = "button" name = "searchnum" id = "searchnum" value = "우편번호 찾기" onclick="searchPostalCode();">
     <br><br>
주소 : <input type="text" size="15" name="adrs1" id = "adrs1"><br><br>

2)SCRIPT

<script>
    // 우편번호 찾기 버튼 클릭 시 실행되는 함수
    function searchPostalCode() {
        new daum.Postcode({
            oncomplete: function(data) {
                // 검색 결과에서 선택한 주소 정보를 가져와 원하는 필드에 할당할 수 있습니다.
                var fullAddress = data.address; // 전체 주소
                var zonecode = data.zonecode;   // 우편번호 (우편번호는 zonecode로 가져옵니다.)

                // 가져온 주소 정보를 필드에 할당하는 예제
                document.getElementById("num").value = zonecode;   // 우편번호 필드에 할당
                document.getElementById("adrs1").value = fullAddress; // 주소 필드에 할당
            }
        }).open();
    }
</script>

 

2. 이메일 인증 번호 로직 : 계속 찾아보고 있는데 잘 모르겠다. 

- 구글 이메일을 사용할 것인가? 아니면 네이버 이메일을 사용할 것인가? 

 

1. 클라이언트 측에서 이메일 입력란에 정보를 입력하고  "인증번호 받기" 버튼을 누른다.
2. "인증번호 받기" 버튼을 클릭하면 클라이언트는 서버에 이메일을 보내는 요청을 보냅니다.
3. 백엔드 서버는 해당 이메일 주소로 인증번호를 생성하고, 이메일 또는 SMS 등의 방법으로 해당 번호를 사용자에게 전송한다. 
4. 사용자가 인증번호를 입력하고 "확인" 버튼을 클릭하면 클라이언트는 서버에 인증번호를 제출하는 요청을 보낸다. 
5. 백엔드 서버는 사용자가 입력한 인증번호와 이메일 주소를 대조하여 인증을 처리하고 결과를 클라이언트에게 전송한다. 

 

결재시스템 개발

1. DB 설계 

- 테이블 생성 

- 사원 2명, 대리 2명, 과장 2명, 부장 2명 데이터에 추가

 

2. 로그인 화면  설계 

- login.jsp를 만들고 로그인 기능부터 구현한다. 

- 오후 내도록 부적합한 열 유형이 떠서 시간을 낭비했음... 

- 저녁 먹고 유효성 검사를 만들어보자.


 

- 아이디, 비밀번호 체크 

- 유효성 검사 

 

3. 로그인 후 화면 

- 로그아웃, 글쓰기, 대리결재 버튼 

 

4. 과장 부장만 대리결재 버튼이 보인다. 

 

5. 검색버튼 누르면 동기식, 결재상태 누르면 비동기로 검색됨 

 

6. 날짜 검색은 작성일 기준으로 검색 

 

7. 자신이 쓴 글만 보인다. 

 

8. 칼럼으로 ID칼럼만 생성 

- 사람이름을 메인테이블에 넣지 않는다. 

 

9. 결재상태는 DB에 FLAG값으로 저장됨. 

- 데이터는 한글로 저장되는 경우가 거의 없다. 영어 약자로 저장된다. 

 

10. 글쓰기 클릭 시 나오는 화면 

- 글쓰기는 누구나 할 수 있다. 

- 사원 대리 과장 부장 4개의 직급이 존재  

- 글 번호가 세팅되어 있음 (수정 불가)  

- 제목, 내용 입력

- 글쓰기 처음 들어오면 반려 버튼이 안 보임. 임시저장과 결재만 보임 

- 히스토리에 어떤 상태인지 모두 표시 

 

11. 라인 클릭하면 상세 보기 됨. 강조되도록 색 변화. 

 

12. 임시저장은 내용을 계속 수정할 수 있음. 

 

13.  결재부터 올려도 되고, 임시저장 후 결재할 수도 있다. 

 

14. 결재 올리면 결재대기로 바뀜. 체크박스는 비활성화 상태였다가 올리면 체크가 되도록 함. 

 

15. 부장이 쓰면 한 번에 결재됨. 과장부터 결재자를 표시해 준다. 

 

16. 과장이 볼 때는 임시저장 버튼은 없음. 반려, 결재 버튼만 보인다. 

 

17. 과장이 반려하면 결재상태가 반려로 바뀌고 다시 작성 후 올릴 수 있음. 

 

18. 과장은 자기가 결제 관여한 사람만 보인다. 부장은 다 보인다.  

 

19. 임시저장은 나 말고 아무도 못 본다. 

 

20. 한번 결재 올라간 글은 되돌릴 수 없다. 

 

21. 과장, 부장에게만 결재를 받으면 된다. 

 

※ 다음 주 금요일까지 기한 

 

반응형