[개발일지] 나의 첫 콘솔 프로그램

프로그래밍을 배우고 첫 프로젝트로 콘솔 프로그램을 만들었다. 지금 와서 포트폴리오로 쓰기에는 너무 볼품이 없다.

하지만 그렇다 하더라도 기록해두는 것에는 의미가 있다고 생각한다. 첫 프로젝트이기도 하고, 나름대로 성능 개선을 위한 고민도 했고, 설계부터 구현까지 몰입했던 경험이 즐거운 기억으로 남았기 때문이다.

그래서 일지형식으로 기록을 남겨두려 한다. 프로젝트 소개는 아래와 같다.

개발기간    ┃ 2021.04.29 - 2021.05.06

개발인원    ┃ 2명

프로젝트 개요 ┃ 도서 대출/반납 및 열람실 예약 서비스. 콘솔창에 구현

개발환경    ┃ Java, Oracle DB

담당한 기능  

  1. 관리자
    • 열람실 등록, 사회적 거리두기모드
    • 도서 등록
  2. 열람실
    • 좌석 조회
    • 좌석 예약, 연장, 취소

열람실 좌석표 구현

reservation 사회적 거리두기 모드 적용 시▼ socialdistance 짝수열이 예약 불가능 상태로 바뀐다.

💡 좌석 조회를 빠르게

처음엔 좌석을 조회할 때, 한 좌석의 예약 상태를 각각 읽고 하나씩 표시하는 방식을 사용하였다. 그랬더니 속도가 너무 느려 사용성이 떨어진다는 판단이 들어 조회 방법을 바꿔보았다. :

	for (int i = 0; i < rowCount; i++) {
			char row = (char) ('A' + i);
			System.out.print("          ");
			System.out.print(row + ": ");
			for (int j :  행의 예약상태 배열) {
				if (j == 1) {
					System.out.print("■ ");
				} else {
					System.out.print("□ ");
				}
			}
			System.out.println();
		}

위와 같이 좌석들의 예약 상태를 한 행씩 불러와 (ex. A행에 속하는 모든 좌석 A1, A2, A3, … A8의 예약상태를 한 번에 읽음) 그것을 배열에 저장하고, 배열에 저장된 값들을 for문을 통해 불러와 표시를하니 좌석 조회 속도가 눈에 띄게 향상되었다.

💡 콘솔창에서 로그인 유지

서블릿이나 스프링을 사용한 웹개발에서 로그인 유지는 주로 session을 통해 이루어진다. 콘솔창에서는 어떻게 유지를 해야할지 고민하다가, 아이디를 저장하는 class를 따로 생성하고 로그인 시 myId라는 변수에 저장하는 방식을 생각하였다.

이미 로그인을 한 상태라면 아이디가 필요한 영역에서 새로 아이디 입력을 요구하지 않고, myId에 저장된 값을 불러와 사용하는 식이다. 로그아웃 시, myId는 null으로 설정된다.

💡 DB ERD

Database


github주소    ┃ https://github.com/Dayook/bitLibrary

EPILOGUE

자료구조라는 것을 알게되고나서 2차원 배열을 활용하고 싶다는 생각에 그렇다면 좌석표가 있어야지! 하며 도서관을 프로젝트 주제로 선정했다.

git 사용법을 몰라서 카톡으로 코드를 주고받았던 기억이 난다. 그게 너무 웃겨서 git 사용법을 꼭 잘 익혀둬야겠다고 생각했었다.