과제
231107 - Java mini project : 쇼핑몰 만들기
CD가참둥그렇다
2023. 11. 7. 17:21
기간 : 231103 ~ 231107
쇼핑몰 프로그램 만들기
- 기본 구조 : CustomerDTO, ItemDTO, OrderListDTO, DAO, Main
- 괄호는 변수 이름
- CustomerDTO
- id(id) : String 글자 수 8~16글자, 기본키, 변경 불가, 제약 조건은 오라클에서
- pw(pw) : String 글자 수 8~16글자, not null
- 주소(address) : String 1단계로는 입력을 그대로 받기, 2단계는 도로명 주소 api에서 주소 정보 받아오기
- 번호(phone) : String - 000-0000-0000의 구조로 입력 필요.
- 이메일(email) : String @가 포함된 문자열
- 포인트(point) : int not null, 기본 값 0
- 회원 등급(grade) : int 1,2,3 사용 회원 등급에 따라 포인트 적립, 구매 종료 시 회원 등급 갱신, 강등은 1월 1일
- silver : 신규 2%
- gold : 10건 이상 or 30만원 이상 3%
- vip : 30건 이상 or 70만원 이상 5%
- 관리자 여부(manager) : boolean, true일 시 관리자 메뉴를 사용할 수 있다.
- 회원 탈퇴 대기(resign) : boolean, true일 시 관리자가 회원 탈퇴를 시킬 수 있다.
- ItemDTO
- 상품 번호(idx) : int, 기본키, 시퀀스를 써서 자동 발급.
- 이름(name) : String, not null, 중복 가능
- 가격(price) : int, not null, 0 이하 불가
- 종류(type) : String, not null, 식품, 도구, 의류, 도서 등 종류를 작성
- 정보(info) : String
- 리뷰(review) : 보류, 리뷰 제작 시 테이블 추가 필요, 작성자, 내용, 별점1~5점
- 별점(rating) : 보류 double, 1~5 사이의 소수점 아래 1자리 까지 표기됨.
- OrderListDTO
- 구매 번호(idx) : int, 기본키, 시퀀스를 써서 자동 발급.
- 상품 번호(item) : int, itemDTO의 index
- 아이디
- 개수(quantity) : int, 1 이상의 값
- 구매 시간(pdate) : String, 구매 확정 시 오라클에서 현재 시간 기준으로 시간 기입
- 구매 여부(purchased) : boolean true일 시 구매 확정, false일 시 장바구니로 취급
- DAO
- 전역변수
- 현재 유저(userIndex) : int, 현재 로그인 된 유저의 index를 임시 저장하도록 하기
- 정렬 방법(itemSort) : int, 1,2 = 상품 번호 순서 오름, 내림 , 3,4 = 이름 순서 오름, 내림, 5,6 = 가격 순서 오름 내림
- 검색 이력(searchLog) : String[] 0 = 검색 방법(name, type) 1 = 검색 내용, 검색 결과를 재 정렬 할 때 사용될 필요가 있다.
- customerDTO, itemDTO, orderListDTO, 출력을 위한 임시 저장용 클래스
- db_url, db_user, db_password :
- 고객 관련
- 고객 정보 수정 : pw, 닉네임, 주소, 번호, 이메일, 포인트 충전
- 이름 규칙 : editUser 내부에 하위 메소드로 editUserPw처럼 editUser 뒤에 각 요소 이름을 붙이기
- 회원 탈퇴 신청
- 이름 규칙 : resignUser
- 고객 정보 수정 : pw, 닉네임, 주소, 번호, 이메일, 포인트 충전
- 상품 관련
- 상품 정보 수정 : 가격, 이름, 정보
- 이름 규칙 : editItem 내부에 하위 메소드로 editItemPrice처럼 editItem 뒤에 각 요소 이름을 붙이기
- 상품 추가 : idx는 item_seq.nextval을 이용한다.
- 이름 규칙 : addItem
- 상품 삭제
- 이름 규칙 : deleteItem
- 회원 탈퇴 수락
- 이름 규칙 : resignAccept
- 상품 정보 수정 : 가격, 이름, 정보
- 장바구니
- 장바구니 삭제
- 이름 규칙 : deleteCart
- 장바구니 구매
- 이름 규칙 : purchaseCart
- 장바구니 삭제
- 구매 관련
- 상품 구매 : 장바구니에 담을지, 즉시 구매할지 결정하고 실시한다.
- 이름 규칙 : purchase
- 즉시 구매 : 상품 번호를 입력하고, 개수를 설정하고 즉시 구매한다.
- 구매 시 orderlist의 정보를 생성하고, pdate를 sysdate로 입력, purchased를 1로 입력한다.
- 이름 규칙 : purchaseNow
- 장바구니 추가 : 상품 번호를 입력하고 장바구니에 추가한다.
- 장바구니에 담을 시 orderlis를 생성하고 purchased를 0으로 입력한다.
- 이름 규칙 : addCart
- 상품 구매 : 장바구니에 담을지, 즉시 구매할지 결정하고 실시한다.
- 메뉴 조작
- 로그인 : 로그인 결과로 회원 번호를 반환한다. 실패 시 -1 반환하기
- 이름 규칙 : login
- 회원 가입
- 이름 규칙 : createUser
- 상품 검색 : 이름으로 검색, 상품 종류로 검색, 검색 로그를 전역변수에 남기기
- 이름 규칙 : searchItem
- 상품 정렬 방법 : 이름 순, 가격 순, 상품 번호 순 3가지 중 하나로 정렬
- 이름 규칙 : sortType
- display 계통
- 유저 정보 displayUserInfo - 파라미터 id
- 상품 정보 displayItemInfo - 파라미터 ArrayList<itemdto>
- 장바구니 displayCart - 파라미터 ArrayList<orderlistdto>
- 구매내역 displayPurchased - 파라미터 ArrayList<orderlistdto>
- 로그인 : 로그인 결과로 회원 번호를 반환한다. 실패 시 -1 반환하기
- 전역변수
-- customerdto 생성 drop table customerdto; drop table orderlistdto; create table customerdto ( id varchar2(16) PRIMARY key, pw varchar2(16) not null, address varchar2(50), phone number(11), email varchar2(30), point number(12) default 0 not null, grade number(1) default 1 not null, manager number(1) not null, resign number(1) default 0 not null, CONSTRAINT id_check check (length(id)>=8), CONSTRAINT pw_check check (length(pw)>=8), CONSTRAINT phone_check check (length(phone)=11), CONSTRAINT email_check check (instr(email,'@')>0), CONSTRAINT point_check check (point>=0), CONSTRAINT level_check check (grade between 1 and 3), CONSTRAINT manager_check check (manager in (0, 1)), CONSTRAINT resign_check check (resign in (0, 1))); --itemdto 생성 create table itemdto ( idx number(8) primary key, name varchar2(20) not null, price number(12) not null, type varchar2(20) not null, info varchar2(500), CONSTRAINT price_check check(price>=0)); --item_idx를 생성하는 시퀀스, item_seq.nextval을 사용하여 레코드 추가 create SEQUENCE item_seq start with 1 increment by 1 maxvalue 99999999; --orderlistdto 생성 create table orderlistdto ( idx number(8) primary key, id varchar2(16) CONSTRAINT idx_fk references customerdto(id), item number(8) CONSTRAINT item_fk references itemdto(idx), quantity number(8) not null, pdate date default null, purchased number(1) not null, CONSTRAINT quantity_check check (quantity >= 0), CONSTRAINT purchased_check check (purchased in (0, 1)) ); --order_idx를 생성하는 시퀀스, item_seq.nextval을 사용하여 레코드 추가 create SEQUENCE order_seq start with 1 increment by 1 maxvalue 99999999; select address, phone, email, point, grade, manager from customerdto where id = 'admin1234'; insert into customerdto (id, pw, manager) values ('admin1234', 'admin1234', 1);
- 메뉴 구조1 / 1. 회원 정보 수정 2. 상품 검색 3. 관리자 메뉴 4. 장바구니 5. 구매 내역 0. 로그아웃1 - 2 / 1. 이름으로 검색 2. 상품 종류로 검색 3. 정렬 방법 변경 4. 상품 구매 0. 돌아가기1 - 3 / 1. 상품 추가 2. 상품 수정 3. 상품 삭제 4. 회원 탈퇴 수락 0. 돌아가기
- 1 - 4 / 1. 장바구니 구매 2. 장바구니 삭제 0. 돌아가기
- 1 - 2 - 3 / 1. 상품 번호 오름차순 2. 상품 번호 내림차순 3. 이름 오름차순 4. 이름 내림차순 5. 가격 오름차순 6. 가격 내림차순 0. 돌아가기
- 1 - 1 / 1. pw 2. 닉네임 3. 주소 4. 번호 5. 이메일 수정 6. 포인트 충전 7. 회원 탈퇴 신청 0. 돌아가기
- 시작 - 1. 로그인 2. 회원 가입 3. 종료
- 1차 역할 분배
- 박찬영(조장) : dto 구조 생성, 메뉴 조작, 출력 메소드 만들기
- 박지민 : 고객 정보 수정, 회원 탈퇴 신청 메소드 만들기
- 배충현 : 상품 수정, 추가, 삭제 메소드 만들기
- 민세희 : 상품 검색, 상품 구매, 회원 가입 메소드 만들기
- 추후 필요한 작업
- 오라클 데이터베이스 테이블 생성
- 오라클 데이터베이스 각각 유저 생성
- 오라클 데이터베이스에 넣을 임시 데이터 생성 혹은 가져오기
- 하면 좋을 작업
- 리뷰 시스템, 별점 시스템 추가
2차 역할 배분
- 회원정보 수정 완벽하게 정리
- 장바구니 - 장바구니 삭제, 구매
- 상품구매 - 즉시구매, 장바구니 추가
- 정렬방법 설정 -
- 병합 잘 하기
분배
- 박찬영 - 병합
- 배충현 - 장바구니 - 장바구니 삭제, 구매
- 민세희 - 상품구매 - 즉시구매, 장바구니 추가, 정렬방법 설정하기
추가 사항
- juso api를 이용한 주소 검색 기능 추가