pos machine term project

24
- POS System - 데이터베이스 이동호 교수님 윤경수 조교님 2011037224 이기찬

Upload: gichan-lee

Post on 22-Jan-2018

515 views

Category:

Software


2 download

TRANSCRIPT

Page 1: POS machine term project

- POS System -

데이터베이스

이동호 교수님

윤경수 조교님

2011037224

이기찬

Page 2: POS machine term project

1. Schema Diagram

굵게 밑줄 쳐진 속성 은 입니다(Attribute) Primary Key .※

회원정보(customer)

이름(cus_name)

생일(cus_birth)

전화번호(cus_phone)

등급(cus_rank)

ID(cus_ID)

구매금액(cus_tot)

직원정보(employee)

이름(emp_name)

직급(emp_position)

ID(emp_ID)

실적(emp_tot)

메뉴정보(menu)

이름(menu_name)

가격(menu_price)

ID(menu_ID)

결제정보(sales)

이름(sales_name)

가격(sales_price)

판매날짜(sales_date)

Page 3: POS machine term project

2. Class Diagram

같은 방식으로

에Eclipse ObjectAid

를UML Explorer

이용해 를JPG

하였고 첨부된export

프로젝트 폴더 내에

가 존재합니다JPG

Page 4: POS machine term project

3. ReadMe

3-1 ReadMe

> 안녕하세요 이 를 꼭 읽고 프로그램을 시작해주세요? ReadMe !

이 는 프로그램에 대한 모든 것을 상세히 기술하며 스크린샷과 함께 부연설명되어ReadMe

있습니다 프로그램의 특성부터 사용법까지 기술되어 있으므로 참고하여 프로그램을.

이용합시다!

Page 5: POS machine term project

이 프로그램은 을 를 이용하여 와1. POS System JDBC JAVA Oracle

를 연동해 작성한 것으로 프로그램을 시작하면 와DB Oracle DB

연결됩니다 의 모두 기본 설정인. DBA ID, PW system, 123으로

접속하며 기본 의 와 가 다를 경우 아래 그림의, DBA ID PW

의DB_Connect class dbTest 코드에서 변경해주면 접속할 수

있습니다.

( 제출 시 모든 시스템의 기본 설정인 으로 변경하여*** system, system

제출하였습니다! ***)

이 프로그램은 시작과 동시에 에 각각2. DB customer, employee,

와 기능 구현을 위해 새로이 추가한 테이블을 생성하며menu sales

생성하기 전에 상에 존재하는 같은 이름의 들을DB table

시킵니다 이는 프로그램의 안정성을 위한 것으로 적용된 를Drop . DB

유지하고 싶다면 의 을 시켜주어야DB_Connect dropAll() disable

합니다 하지만 안정성을 위해 로 하는 것을 권장합니다. default drop .

의 코드- dropAll

회원정보 직원정보 메뉴정보가 저장되어있는 기본 파일은3. , ,

이며 프로젝트 진행을 위해 제시된 파일입니다 이 파일의data.txt .

내용이 절대 수정되지 않는 것을 원칙으로 프로그램이 작성되었으며

파일을 읽지 않으면 프로그램을 작동할 수 없도록 처리Exception 가

Page 6: POS machine term project

되어 있습니다. (① 파일이 수정될 경우"OPEN FILE FIRST") data.txt

프로그램은 정상적으로 작동하지 않으며 한 번 파일을 정상적으로

삽입했다면 그 후로 파일을 또 오픈하여 비정상적인 진행을 할 수

없도록 처리가 되어 있습니다Exception .(② "ALREADY OPENED")

Page 7: POS machine term project

①.OPEN FILE FIRST

②.ALREADY OPENED

Page 8: POS machine term project

파일이 삽입된 후 프로그램 상의 여러 가지 조작을 통해 구성된4.

에 새로운 데이터를 추가 및 업데이트할 수 있으며 데이터를DB

조작하기 위해서는 로그인을 반드시 하도록 처리를Exception

하였습니다 로그인 하지 않은 상태로 버튼을 누르거나 할 경우에.

로그인이 필요하다는 메시지를 출력합니다. (③ "LOGIN NEEDED")

③.LOGIN NEEDED

로그인을 하기 위해서는 패널의 탭에서5. Enroll&Inquery Employee

직원의 이름으로 정보를 조회해 사원번호를 알아야 합니다.

사원번호는 부터 까지1000 9999 자리4 를 사원마다 고유로 가지게

되며 만약 사원이름을 잘못 적었을 경우 메시지를 출력하여 이름을,

확인하도록 처리를 하였습니다Exception .

(④ "the employee's not found")

Page 9: POS machine term project

④. the employee's not found

이와 같은 방식으로 회원 메뉴정보를 조회할 수 있으며6. , 존재하지

않는 정보를 조회할 경우 찾을 수 없다고 메시지를 출력해 Exception

처리를 하였습니다. (⑤ “the customer's not found", ⑥ "the menu's

not found")

⑤. the customer's not found

⑥. the menu's not found

Page 10: POS machine term project

예를 들어 직급을 가진 박수진을 검색하면 아래와7. ‘Supervisor' ’ ’

같이 정보가 조회되며 이를 이용해 메뉴바의 로그인을 클릭하면

로그인 프레임이 생성됩니다 사원이름과 사원번호를 통해 로그인할.

수 있으며 정보가 맞으면 메시지를 출력하며"READY TO ORDER"

만약 그 정보가 맞지 않을 경우 메시지를 출력해 처리를Exception

하였습니다. (⑦ “IT ISN'T EXIST, TRY AGAIN”)

사원이름은 미리 알고 있는 것으로 제시되었습니다(** )

박수진 사원정보 조회‘ ‘, 2336

로그인 성공!

Page 11: POS machine term project

⑦ “IT ISN'T EXIST, TRY AGAIN”

직급을 가진 로 로그인했을 경우만8. 'Supervisor' Employee 회원,

직원 메뉴를 추가하는 권한, 을 가지며, 매출에 관한 정보 또한

만 접근할 수 있습니다 만약Supervisor . ‘ 직급Staff' 의 직원으로

로그인했다면 권한이 없어 위의 행동을 실행할 수 없다고 메시지를

출력하여 처리하였습니다Exception .(⑧ "Your Position can't use this

즉 직급으로 로그인할 경우 이전에 저장된 만을section") , Staff DB

가지고 업무를 수행할 수 있습니다.

⑧ "Your Position can't use ~

로그인했을 경우 메인 의 최상단 제목 표시줄에 현재9. Frame

로그인되어 있는 직원을 알 수 있으며 메뉴의 로그인을 통해 언제든지

다른 아이디로 로그인할 수 있습니다.

하니 Staff

Page 12: POS machine term project

파일을 오픈하고 로그인을 완료했다면 이제부터 프로그램을10. POS

시작할 수 있습니다 먼저 패널에 생성된 개의 버튼 중. Menu Info 20

메뉴가 등록된 개의 버튼을 활용하여 주문을 할 수 있습니다10 .

파일로부터 개의 메뉴를 읽어왔기에 개의 버튼이 활성화되며10 10

번째 버튼을 클릭할 경우 아무것도 실행되지 않도록 구현하여11

을 처리하였습니다Exception .(⑨ “”)

. “” :⑨ 아무것도 실행되지않음

직급의 아이디로 로그인하여 메뉴를 추가합니다11. 'Supervisor' .

메뉴는 패널의 탭에서 추가할 수 있으며 원래Enroll & Inquery Menu

있는 메뉴를 조회할 경우 메뉴 이름 가격 고유 를 출력합니다, , ID .

메뉴이름 가격, , ID

Page 13: POS machine term project

메뉴의 버튼을 클릭하면 새로운 프레임이 생성되고12. Add

메뉴이름과 가격을 지정하여 메뉴를 추가할 수 있습니다 이 때.

메뉴의 이름은 아무런 문자가 와도 상관없지만 메뉴의 가격은,

정수값이어야하기 때문에 정수값을 넣지 않았을 경우 메시지를

출력하여 을 처리하였습니다Exception . (⑩ “INPUT DIGITS.”)

⑩ “INPUT DIGITS.”

성공적으로 메뉴를 추가했을 경우 다음과 같이 버튼이 활성화되며13.

이제 이 버튼을 통해 주문을 추가할 수 있습니다 하지만 프레임에.

존재하는 버튼을 개이므로 이 이상 추가할 수 없도록 막고 메시지를20

출력하여 을 처리하였습니다Exception . (⑪ “MENU TABLE IS FULL”)

Page 14: POS machine term project

테이블 주문을 받고 있는 상황에서 아무런 메뉴를 추가하지14.

않았는데 주문 주문취소 결제를 할 수는 없습니다 이러한 행동을, , .

막고 각각 메시지를 출력해 을 처리하였습니다Exception .

(⑫ “ADDITIONAL ORDER PLZ”,⑬ “NO ORDER EXIST”,⑭ “NO PAY

EXIST”)

⑫ “ADDITIONAL ORDER PLZ”,

⑬ “NO ORDER EXIST”,

⑭ “NO PAY EXIST”

Page 15: POS machine term project

이제 메뉴 버튼을 눌러 주문을 추가합니다 패널에15. . Recept Info

있는 를 이용하여 각 테이블의 주문을 설정해줄 수check_box

있습니다 번 테이블에 버튼을 눌러 목록을 표시하고 주문을 누르면. 0

아래의 그림과 같이 해당 테이블의 색이 노란색으로 바뀌며 주문이

들어갔다는 사실을 알 수 있습니다 주문이 들어가고 난 후 취소를.

하고 싶다면 취소버튼을 눌러 취소할 수 있으며 해당 테이블의 색이

흰색으로 돌아오며 취소되었음을 알 수 있습니다 또 주문 및 취소를. ,

할 때마다 성공적으로 확인되었음을 알려주는 메시지가 출력됩니다.

이미 주문을 한 테이블에 또 메뉴 버튼을 누르면 새로운16.

주문목록이 출력되며 주문을 하고 테이블을 확인하면 원래 메뉴에

새로운 주문이 더해진 것을 확인할 수 있습니다 원래 주문했던.

메뉴와 같은 메뉴를 시켰을 경우 원래의 리스트에 추가된 형태로

Page 16: POS machine term project

출력이 되고 다른 메뉴를 시켰을 때엔 새로운 리스트로 출력합니다.

이 때에 같은 메뉴를 시켰더라도 요구사항에 따라 새로이 추가하여

메뉴를 보여줍니다.

이제 주문된 메뉴를 결제합니다 결제할 경우 에 적힌17. . Customer

이름이 회원이면 MEMBER PAY를 출력하고 요구사항에 따라 이름이,

없거나 혹은 회원이 아닌 경우 ANONYMOUS PAY를 출력하여

을 분기에 따라 처리하였습니다 메시지가 출력되고나면Exception .

결제된 테이블의 주문목록이 삭제되고 테이블 색상이 원래대로

돌아옵니다. (⑮ 권지용" MEMBER'S PAY COMPLETE!",

⑯ "ANONYMOUS PAY COMPLETE!") 

Page 17: POS machine term project

결제가 끝났으니 탭에서 회원정보를 조회해 결제금액이18. Customer

반영되었는지 확인합니다 결제 당시 권지용의 등급은 였으므로. Silver

기본 구매금액이 원이며 할인이 적용된500000 20% 64000*0.8 ->

원의 금액이 적용되어 원의 구매금액을 가지고51200 551200

있습니다 당시의 직원은 박수진이었으므로 이 실적을. Supervisor

가지게 될 것이며 그 실적은 할인율이 적용되지 않은 금액으로,

적용됩니다 매출 또한 마찬가지로 할인되지 않은 금액으로.

적용됩니다.

결제 후 각각 구매금액 실적 매출, ,

Page 18: POS machine term project

결제를 마치고 에서 각각 데이터를 추가하고 조회해볼19. Recept Info

수 있습니다 에서는 회원을 추가하고 조회하는. Customer Panel

기능을 가지고 있으며 버튼을 눌러 새로운 회원 생성 프레임을Join

생성할 수 있습니다 정보를 기입하고 버튼을 눌러 회원을. JOIN

생성하는데 먼저 이름은 전에 있던 회원일 수 없으며 생일은 자리로, 4

입력해야하고 생일과 전화번호 모두 숫자값만을 입력해야합니다.

그러지 않을 경우 이 발생하며 대로 입력하라는Exception Constraint

메시지를 출력하여 을 처리하였습니다 모든 사항을 지켜Exception .

이기찬 회원을 만들었습니다‘ ’ .

(⑰"ALREADY EXIST",⑱ "CONFIRM THE BIRTH LENGTH",⑲ "INPUT

DIGITS")

이름 중복 방지

생일 길이는 자리로4

Page 19: POS machine term project

생일과 전화번호는 숫자로

정상적으로 만들어진 이기찬‘ ’

고객은 각각 의 등급을 가지며 각각20. Gold, Silver, Bronze, Normal

원을 기준으로 등급이 나뉘어집니다0, 300000, 500000, 1000000 .

처음 생성되는 이기찬과 같은 고객은 등급 구매금액 원으로‘ ’ Normal , 0

생성되며 파일에서 읽어온 고객들은 그 등급에 따라 기본금액으로

생성됩니다.

Page 20: POS machine term project

각각 배수지 권지용 유재석, ,

이기찬 회원을 기준으로 구매금액에 따라 적용되는 등급변화 및21. ‘ ’

할인율을 확인합니다 고객들은 등급부터 등급에 따라 각각. Gold 30%,

의 할인율을 가지고 있으며 구매금액에 할인금액으로20%, 10%, 0%

적용 반영됩니다 원의 알리오올리오 메뉴를 생성하여 결과를, . 200000

확인할 수 있습니다.

노멀 브론즈 알리오올리오 개 원 할인적용 없음-> : 2 400000

브론즈 실버 알리오올리오 개 원 할인적용-> : 1 180000 10%

Page 21: POS machine term project

실버 골드 알리오올리오 개 원 할인적용-> : 3 480000 20%

골드 알리오올리오 개 원 할인적용: 1 140000 30%

각 등급별 기본금액이 넘어감에 따라 등급변화가 있음을 확인할 수*

있습니다.

위에서 언급했던대로 박수진 로그인 상태로만22. Supervisor ‘ ’ Sales

탭을 확인할 수 있습니다 월 일 기준으로 알리오올리오를. 6 4

원어치를 팔았으며 그를 탭을 통해 확인할 수1600000 Sales

있습니다 시스템날짜를 바꾸어 월 일 안심스테이크를 개. 6 5 20

결제함으로써 날짜별 매출 누적 매출 전체 기간 중 가장 많이 적게, , /

팔린 메뉴를 확인합니다 이 때에 최대 최소로 팔린 메뉴들은 같은. /

개수로 팔렸을 경우 같은 개수의 메뉴 중 하나를 골라 출력합니다.

결제가 없고 월 일 이전6 4 날짜인 월 일을 고를 경우 일매출6 1 0,

누적매출 을 표시하며 월 일 이후 결제가 없는 월 일을null 6 4 6 6

선택할 경우 일매출 으로 누적매출은 마지막으로 결제된 월 일을0 , 6 5

기준으로 출력합니다 최대 최소로 팔린 메뉴들은 전체날짜가. /

기준이므로 상관없이 출력됩니다.

월 일 기준 매출6 4

Page 22: POS machine term project

월 일로 날짜를 변경하고 안심스테이크 개 원 결제6 5 20 : 420000 ->

일 매출 원 가장 많이 팔린 메뉴는 안심스테이크로420000 ,

바뀌었으며 알리오올리오 안심스테이크 로 누적1600000( )+420000( )

매출이 변경되었습니다.

각각 월 일 월 일 기준으로 매출을 확인한 결과6 1 , 6 6 .

오픈하지 않은 날짜를 보려고 했을 때 메시지를 출력하여 을Exception

처리하였습니다. (⑳ "NOTICE : The restaurant didn't open in

choosed day")

다음은 탭입니다 탭에서 를23. Employee . Employee Employee

새로이 추가할 수 있고 위에서 언급한대로 만 추가해줄 수Supervisor

있습니다.( 과 동일)⑧ 버튼을 누르면 새로운 프레임이 생성되며Employ

이름과 직급을 부여할 수 있습니다 이름은 기존의 이름과 동일할 수.

없도록 막고 메시지를 출력하여 Exception(⑰과 동일)을 처리하였습니다.

Page 23: POS machine term project

박수진 생성 불가 이름 동일1) ->

박지성 생성 및 조회2,3) (3573, Supervisor)

박지성 로그인 시도 및 성공4,5)

마지막 메뉴 패널은 번에서 이미 해보았기에 생략합니다24. 12 .

에 알리오올리오부터의 예제가 실제 에 적용된Oracle Database DB

스크린샷을 확인합니다.

이기찬 회원이 에 출력됨customer table .

Page 24: POS machine term project

알리오올리오가 에 생성menutable

알리오올리오 개 안심스테이크 개 총 개의 결제가7 , 20 27 sales

테이블에 생성되었으며 를 통해 결제날짜 확인sales_date .

박수진 의 실적과 생성된 박지성 확인‘ ’ Supervisor ‘ ’ Supervisor .