프로젝트 & 과제/3학년

[데이터베이스] DB 연동 웹사이트

qqlzzb 2022. 2. 10. 19:33

개요

프로그래밍 언어 : python

과제 수행 날짜 : 2020.11.19 ~ 2020.12.16

과제 개요 : 국립현대미술관에서 제공하는 데이터를 이용하여 데이터베이스를 구성하고, 데이터베이스에 존재하는 전시를 예매하는 페이지를 제작

 

개발 환경

개발 언어는 python을 사용하고, 웹 프레임 워크로 Flask를, DBMS로 sqlite3을 사용한다.

 

데이터베이스

데이터의 출처는 국립현대미술관 (http://www.mmca.go.kr/contents.do?menuId=6094005450)으로, 전시 이름, 장소와 같은 기본적인 정보를 담고 있다. 이 데이터를 목적에 맞게 수정하여 사용하였다.

 

데이터베이스의 스키마

 

기능

 

1) 로그인

① 표시되는 정보
사용자가 이미 회원가입을 한 경우, IDPW를 입력하도록 하고, 로그인 창에서 회원가입 페이지로 넘어갈 수 있는 버튼을 제공. 로그인 시, IDPW가 데이터베이스에 저장되어 있지 않은 경우에는 회원 정보가 없다는 팝업 메시지를 띄운다.
② 사용자로부터 받아들이는 정보
사용자의 IDPW.
③ 데이터베이스 사용
사용자가 입력한 IDPW를 데이터베이스의 USERS 테이블에서 찾아서, 해당하는 데이터가 있다면 전시 목록을 보여주는 페이지로 이동하고, 없다면 팝업 메시지를 띄운다.

 

2) 회원가입

① 표시되는 정보
회원가입을 위해 필요한 정보들을 입력할 수 있는 입력창과 제출 버튼. 정보가 모두 입력되지 않았을 경우에는 정보를 모두 입력하라는 팝업 메시지를 띄우고, 이미 DB 내에 존재하는 ID로 회원가입을 하려는 경우 이미 존재하는 ID’라는 메시지를 띄운다.
② 사용자로부터 받아들이는 정보
사용자로부터 이름, ID, PW, 생년월일, 전화번호, e-mail 주소.
③ 데이터베이스 사용
사용자로부터 데이터들이 정상적으로 입력되었다면 (정보를 모두 입력하지 않았거나, 이미 존재하는 ID로 회원 가입하려는 경우를 제외함) 데이터베이스에 입력받은 데이터들을 USERS 테이블에 INSERT 한다.
이미 존재하는 ID인지 아닌지를 판단하기 위해 데이터베이스에서 입력받은 IDPWUSERS 테이블을 찾아서 만약 그러한 데이터가 존재하면 팝업 메시지를 띄우고 login 페이지로 이동하도록 한다.

 

3) 전시 목록 표시

① 표시되는 정보
데이터베이스에 저장된 전시 목록들을 표로 보여준다. 이때, 전시명을 클릭하면 해당 전시의 상세 정보를 보여주는 페이지로 이동. 이 페이지에서 logout과 회원 정보 조회, 예매 기록 조회 버튼을 추가하여 해당 서비스들을 이용할 수 있도록 한다.
② 사용자로부터 받아들이는 정보
어떤 전시를 클릭하였는지, Logout, 회원 정보 조회, 예매 기록 조회 버튼을 클릭하였는지에 대한 정보.
③ 데이터베이스 사용
데이터베이스의 EXHIBITION 테이블에 저장되어 있는 전시에 대한 애트리뷰트(전시명, 전시 장소 등)를 모두 읽어 와서 필요한 context.html에서 필요한 정보를 페이지에 표시한다.

 

4) 전시 상세 정보 표시

① 표시되는 정보
사용자가 선택한 전시에 대한 상세 정보들을 모두 보여주고, 해당 전시에 대해 다른 사용자들이 남긴 한줄평을 보여준다. 그리고 한줄평을 남길 수 있도록 하는 입력창을 표시한다. 돌아가기 버튼을 통해 전시 목록을 보여주는 페이지로 이동하고, 예매하기 버튼을 통해 해당 전시를 예매하는 페이지로 이동한다.
② 사용자로부터 받아들이는 정보
돌아가기, 예매하기 버튼이 눌렸는지와, comment 창에 입력한 text.
③ 데이터베이스 사용
전시에 대한 상세 정보를 보여주기 위해 데이터베이스의 EXHIBITION 테이블에서 eID가 현재 페이지에서 보여주는 전시의 eID인 투플을 전부 읽어온다. 그리고 COMMENT 테이블에서도 eID가 일치하는 투플들을 읽어 와서 페이지에 표시한다.

사용자가 입력한 commentupload 버튼을 누르면 데이터베이스의 COMMENT 테이블에 사용자의 ID와 입력한 text가 저장된다.

 

5) 전시 예매

① 표시되는 정보
예매하려는 티켓의 정보를 선택하도록 하는 입력창과, 예매자의 정보를 보여주고, 생년월일을 입력하도록 하는 입력창이 표시된다. 생년월일이 일치하지 않으면 일치하지 않다는 팝업 메시지를 띄우고, 총 결제 금액이 0원이거나, 아무런 정보를 입력하지 않았을 경우에는 정보를 입력하라는 팝업 메시지를 띄운다. 예매가 완료되었을 경우에도 팝업 메시지를 띄운다. 그리고 인원수와 티켓 수령 방법에 따라 결제해야 할 금액을 우측 하단에 보여준다.
② 사용자로부터 받아들이는 정보
예매하려는 연령대별 인원수와 티켓 수령 방법, 예매자의 생년월일.
③ 데이터베이스 사용
예매하려는 전시의 eID로 데이터베이스의 EXHIBITION 테이블에서 어린이, 청소년, 성인의 가격을 읽어온다. 현재 예매하려는 사용자의 ID로 데이터베이스의 USERS 테이블에서 모든 정보를 읽어와서 페이지에 표시한다.

사용자의 IDUSERS 테이블에서 birthday 애트리뷰트의 데이터를 받아와서 사용자가 입력한 생년월일과 일치하는지 확인한다. 정보를 모두 입력하고, 생년월일이 일치한다면 RESERVATION 테이블에 모든 정보(예약 번호, 사용자 ID, 전시 번호, 연령대별 인원수, 배송 여부, 총금액)를 입력한다.

 

6) 예매 기록 조회

① 표시되는 정보
사용자가 총 몇 건의 예매를 했는지 표시하고, 예매한 전시에 대한 정보를 보여준다. 예매한 내용을 cancel 버튼을 눌러서 취소할 수 있도록 한다. 예매 기록이 없으면 예매 정보가 없다고 표시.
② 사용자로부터 받아들이는 정보
전시명을 클릭했는지(해당 전시에 대한 상세 페이지로 이동) Cancel 버튼을 눌렀는지 여부.
③ 데이터베이스 사용
이름과 아이디를 띄우기 위해 USERS 테이블에서 정보를 읽어오고, 사용자의 ID를 이용하여 사용자가 예매한 전시와 그 전시에 대한 상세 정보를 RESERVATION, USERS, EXHIBITION 테이블을 이용하여 읽어와서 페이지에 표시한다. 사용자가 예매한 모든 전시의 건수를 표시하기 위해 RESERVATION 테이블에서 count 하여 읽어온다.

취소 버튼을 누르면, RESERVATION 테이블에서 해당 사용자의 예매 기록을 삭제한다.

 

7) 회원 정보 조회

① 표시되는 정보
회원의 기본 정보들을 표시하고, 탈퇴하거나, 수정할 수 있도록 한다. 탈퇴시 탈퇴가 완료 되었다는 팝업 메시지를 띄운다.
② 사용자로부터 받아들이는 정보
수정 또는 탈퇴 버튼을 눌렀는지에 대한 여부.
③ 데이터베이스 사용
USERS 테이블에서 현재 로그인하고 있는 사용자의 ID에 해당하는 투플들을 모두 읽어온다.
탈퇴 버튼을 누르면 사용자의 ID에 해당하는 투플들을 모두 삭제한다.

 

8) 회원 정보 수정

① 표시되는 정보
ID를 제외한 기본 정보를 입력할 수 있는 입력창을 표시하여 사용자가 정보를 수정할 정보를 입력할 수 있도록 하고, 확인 버튼을 눌러 회원 정보를 수정하도록 한다. 비밀번호가 일치하지 않다면 팝업 메시지를 띄운다.
② 사용자로부터 받아들이는 정보
회원 정보에 대해 수정하려는 데이터.
③ 데이터베이스 사용
먼저 USERS 테이블에서 해당 ID에 대해 입력받은 pw가 일치하는지 확인한 후, 일치한다면 USERS 테이블의 IDpw를 제외한 모든 애트리뷰트의 값을 입력받은 값으로 update 한다.

 

실행화면