과제

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
      • 상품 관련
        • 상품 정보 수정 : 가격, 이름, 정보
          • 이름 규칙 : 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>
    -- 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를 이용한 주소 검색 기능 추가