설계서
3팀 팀프로젝트 과제 설계서
[모델]
[이진, 이성모]
ModelVO, DAO설계서
class product // 상품
변수
- 인스턴스 변수 : PK, 이름, 가격, 재고 - VO
- 클래스 변수 : PK지정값 - DAO
생성자 - VO
- PK 저장 - DAO에서 받기
- 이름 받고 저장
- 가격 받고 저장
- 재고 받고 저장
메서드
- 판매 - View, DAO
- 재고변경 - View,DAO
- 상품 정보 출력 - View,DAO,VO
getter,setter - VO
main
- 스캐너 - View
- 목차 선택값 저장용 변수 - View
- 생성한 상품 개수 저장용 변수 - DAO
사용자모드 - View
- 목차
- 상품목록출력
- 구매하기
- 프로그램 종료
관리자모드 - View
- 목차
- 상품 추가
- 상품 재고 변경
- 상품 삭제
- 관리자모드 종료
그외
- 유효성 검사 - View
- 예외 처리 - View
- 기능 검사(재고 등) - DAO
- 로그 - DAO
- 사용자편의성 - 전체 다 고려할 것
참고
CRUD
1
2
3
==============================================
※※※※ProductVO※※※※ //상품 데이터 그 자체를 의미함
[멤버변수]
인스턴스 변수 :
!!! 전부 private !!!
PK int num //PK
이름 String name; //상품이름
가격 int price; //상품가격
재고 int cnt; // 상품재고
[생성자] //멤버변수 초기화
-getter,setter
[메서드]
기능 : 상품목록 출력 할때 번호,이름,가격,재고가 어떻게 보여질지를 정의하는 기능
INPUT : 없음
OUTPUT : String
toString제정의; 오버라이딩
String msg = "";
if(재고<=0)
msg PK + 상품이름 + 상품가격 + [품절]
else
msg PK + 상품이름 + 상품가격 + 상품재고
return msg;
※※※※ProductDAO※※※※
!!! 주의할 것 !!!
기능 검사(재고 등)
로그
[멤버변수]
private AL <ProductVO> datas; // 선언; ProductVO 상품데이터 사용할것임
private static int PK = 1001; 선언,초기화
[생성자]
ProductVO 초기화, 객체
datas=new AL<ProductVO>(); //상품 데이터 초기화
datas.add(new ProductVO(PK++,"상품이름1",가격1,재고1)) //기본상품 추가
datas.add(new ProductVO(PK++,"상품이름2",가격2,재고2)) //기본상품 추가
datas.add(new ProductVO(PK++,"상품이름3",가격3,재고3)) //기본상품 추가
[메서드]
// [메서드_R (read)]
// 기능 : 상품목록 전체 출력 (이름으로 필터검색시 출력)
// INPUT : ProductVO pVO
// OUTPUT : ArrayList<ProductVO>
// 함수명 : selectAll (상품전체출력)
//Read
AL<ProductVO> selectAll(){ //전체출력
//searchCondition
- 이름으로검색!(필터검색)
-if문
}
// 기능 : 상품 최고가, 최저가 출력
// INPUT : ProductVO pVO( == personVO)
// OUTPUT : ArrayList<ProductVO>
// 함수명 : selectOne (상품1개출력)
//Read
ProductVO selectOne(){ //1개 선택출력
//searchCondition
- 최고값검색
- 최저값검색
-for문
-if문
}
// 기능 : 상품 이름, 가격, 재고를 사용자에게 입력 받아 AL에 저장 하는 기능; PK는 시스템에서 1001번 부터 자동 부여
// INPUT : ProductVO
// OUTPUT : boolean
// 함수명 : insert (상품추가)
//Create
boolean insert(){ //상품추가
- new AL<모델VO>();
- .add(new 모델VO(PK++,"상품이름",가격,재고);
}
// 기능 : 사용자가 상품번호와 구매 개수를 입력시 구매 (재고 업데이트);
혹은 사용자가 상푼번호와 추가/감소 개수를 입력지 재고 업데이트;
// INPUT : ProductVO
// OUTPUT : boolean
// 함수명 : update (상품구매, 상품재고변경)
//Update
boolean update(){ //구매하기,재고변경
- 사용자 입력값 : 상품번호, 개수
- for문
}
// 기능 : 사용자가 상품번호 입력시 삭제
// INPUT : ProductVO
// OUTPUT : boolean
// 함수명 : delete (상품삭제)
//Delete
boolean delete(){ //상품삭제
- for문
- remove
}
[뷰]
[김민섭, 이광원, 조재영]
View
Scanner sc = new Scanner(System.in);
예외처리 모듈 만들어서 진행
tryCatch()
사용자모드
"======[사용자]======\n" +
"1. 상품목록출력 \n" +
"2. 구매하기 \n" +
"3. 상품검색 \n" +
"4. 최저가검색 \n" +
"5. 최고가검색 \n" +
"6. 프로그램종료\n" +
"번호 입력 : ");
tryCatch() + 범위 유효성 검사
사용자 모드에서 사용할 변수
int action == 사용자 메뉴 입력
int uCnt == 상품 재고 입력받기
int uNum == 상품 번호 입력 받기
PK번호가 범위에 해당하지 않다면 안내멘트 출력
String uName == 상품 이름 입력 받기 // 이름 검색에 사용
int uPrice == 최고가, 최저가 검색에 사용
관리자모드
"======[관리자]=====\n" +
"1. 상품추가 \n" +
"2. 상품재고변경 \n" +
"3. 상품삭제 \n" +
"4. 관리자모드종료\n" +
"번호 입력 : ");
tryCatch() + 범위 유효성 검사
관리자 모드에서 사용할 변수
int action == 사용자 메뉴 입력
int aNum == 상품 번호 입력 받기
PK번호가 범위에 해당하지 않다면 안내멘트 출력
int aCnt == 상품 재고 입력받기
String aName == 상품 이름 입력받기
int aPrice == 최고가, 최저가 검색에 사용
유저가 입력 시
유효성 체크 중심으로 진행하고
추가적으로 중간 중간 필요한 멘트 출력하도록 만들거임
※ 주의할것
유효성 검사
사용 빈도수가 많을 경우 모듈 만드는거 추천
[컨트롤]
[강승찬, 김지훈]
int action=view.printMenu( );
1번 입력시 상품 목록출력
ArrayList<ProductVO> datas=dao.selectAll(new ProductVO(null));
view.printProductList(datas); // view를 통해 datas에 있는것들을 사용자에게 보여줌
2번 입력시 구매하기
int num=view.getproductNum( ); // view 에서 상품번호를 입력받아
int cnt=view.getproductCnt( ); // view 상품재고를 입력받아
if(dao.update(vo)){ // 성공했을때
ProductVO data=dao.selectOne(vo); // 저장한 vo를 하나 선택해서 data에 저장
data.setCnt(cnt); // data에 내가 입력한 재고로 바꿔줘
// 구매 성공시 카트에 추가
boolean flag=false 만들어
int index를 하나 만들고
// 내가 저장한 data가 카트에 존재 하는지 확인 ( for문 )
// flag=true로 바꾸어주어 바로 나갈수있게
if ( ) { // 카트안에 존재한다면
// 카트의 재고 + cnt(내가 입력한 재고)
}
else{ // 카트안에 존재하지 않는다면
cart .add( ); // 카트에 데이터 추가
}
// 카트안에 있는 목록 출력해서 보여주기
view.success // 성공했을때 view를 통해 사용자한테 알리기
}
else{ // 실패했을때
view.fail // 실패했을때 view를 통해 사용자한테 알리기
}
3번 입력시 검색하기
// 검색시작!
String name=view.getProductName( ); // 이름을 입력받아
ArrayList<ProducVO> datas=dao.selectAll(new ProducVO(0,name,0,0));
// selectAll에서 name이 들어가있는것들을 찾아서 datas에 저장해줘
view.printProductList( datas ); // datas에 저장되어있는것들 다 보여줘
4번 입력시 최고가 상품 검색하기
ProductVO vo= clienw.getSearchMax();
// new ProductVO(0,"최고가",maxPrice,0) 이름에 "최고가" 라고 저장해놓은걸 받아옴
pDAO.selectOne(vo) // vo를 이용해 selcetOne 실행-> datas에 저장
client.printProduct(datas);
// view를 통해 datas안에 저장된 내용 사용자한테 보여주기
5번 입력시 최저가 상품 검색하기
ProductVO vo= clienw.getSearchMin();
// new ProductVO(0,"최고가",minPrice,0) 이름에 "최저가" 라고 저장해놓은걸 받아옴
pDAO.selectOne(vo) // vo를 이용해 selcetOne 실행-> datas에 저장
client.printProduct(datas);
// view를 통해 datas안에 저장된 내용 사용자한테 보여주기
6번 입력시 프로그램 종료
view.printMenuEnd( ); // 프로그램 종료라고 알려줘
break;
1234번 입력시 관리자 모드
while{ } // 관리자 모드 에서만 돌도록
// view에서 관리자 모드 시작 출력
// view에서 관리자 모드 메뉴 출력
1번 입력시 상품추가
String name=view.getProductName( ); // 상품의 이름받아
int price=view.getProducPrice( ); // 상품의 가격받아
int cnt=view.getProductCnt( ); // 상품의 재고받아
ProductVO vo=new ProductVO( 0 , name , price , cnt ); // numPK은 입력x 0으로 두고저장
if( pDAO.insert(vo) ) {
// 입력받은 vo를 써서 추가해달라고 dao한테 부탁
// 상품추가가 리스트 출력하고 성공한다면
view.success( ); // 관리자한테 알려줘
}
else{ // 상품추가가 실패했다면
view.fail( ); // 실패했다고 관리자한테 알려줘
}
2번 입력시 상품재고변경
int num=view.getProductNum( ); // 재고변경할 상품의 번호를 입력 받아
int cnt = view.getProductCnt( ); // 재고변경할 갯수를 입력 받아
Product vo=new ProductVO(num,null,0,cnt); // vo에 삭제할 상품의 번호를 저장해
if (pDAO.update(vo)) { // vo를 사용해서 update 진행해줘
// 성공했으면 리스트 출력하고
view.success( ); // 관리자한테 알려줘
}
else{ // 실패한다면
view.fail( ); // 실패했으면 실패했다고 관리자한테 알려줘
}
3번 입력시 상품삭제
int num=view.getProductNum( ); // 삭제할 상품의 번호를 입력 받아
Product vo=new ProductVO(num,null,0,0); // vo에 삭제할 상품의 번호를 저장해
if(pDAO.delete(vo)){ // 만약 dao.delete가 성공했다면
// 성공했으면 리스트 출력하고
view.success( ); // 관리자한테 알려줘
}
else{ // 실패한다면
view.fail( ); // 실패했으면 실패했다고 관리자한테 알려줘
}
4번 입력시 관리자 모드종료
view.printAdminMenuEnd( ); // 관리자종료라고 알려줘
break;
// 사용자 로그오프 안내문구
// cart안에 저장된 데이터 비우기
AdminView
package view;
import java.util.ArrayList;
import java.util.Scanner;
import model.ProductVO;
public class AdminView {
private static Scanner sc = new Scanner(System.in);
public int tryCatch() {
while (true) {
try {
int action = sc.nextInt();
return action;
} catch (Exception e) {
sc.nextLine();
System.out.println("정수로 입력해주세요!");
}
}
}
public void printProductList(ArrayList<ProductVO> datas) {
for (ProductVO v : datas) {
System.out.println(v);
}
}
public int printAdminMenu() {
System.out.println();
System.out.println("======[관리자]=====\n"
+ "1. 상품추가 \n"
+ "2. 상품재고변경 \n"
+ "3. 상품삭제 \n"
+ "4. 관리자모드종료");
System.out.print("번호 입력 : ");
while(true) {
int action = tryCatch();
if(action > 4 || action < 1) {
System.out.print("다시 입력 해 주세요 : ");
continue;
}
return action;
}
}
public int getProducNum(ArrayList<ProductVO> mdatas) {
ArrayList<ProductVO> vo=new ArrayList<ProductVO>(mdatas);
while(true) {
System.out.print("상품번호입력) ");
int num = tryCatch();
boolean flag = false;
for(int i=0 ;i <vo.size();i++) {
if(num>=1001 && num<=vo.get(i).getNum()) {
num=vo.get(i).getNum();
flag=true;
break;
}
}
if(!flag) {
System.out.println("해당상품은 존재하지 않습니다.");
continue;
}
return num;
}
}
public String getProductName() {
System.out.print("상품이름입력) ");
String uName = sc.next();
return uName;
}
public int getProductPrice() {
System.out.print("상품가격입력) ");
while(true) {
int uPrice = tryCatch();
if(uPrice < 0) {
System.out.print("양수로 다시 입력 해 주세요 : ");
continue;
}
return uPrice;
}
}
public int getProductCnt() {
System.out.print("상품재고입력) ");
int uCnt = tryCatch();
return uCnt;
}
public void printAdminStart() {
System.out.println();
System.out.println("=== 관 리 자 모 드 시 작 ===");
}
public void printAdminEnd() {
System.out.println();
System.out.println("=== 관 리 자 모 드 종 료 ===");
}
public void addProductStart() {
System.out.println();
System.out.println("=== 상 품 추 가 시 작 ===");
}
public void addProductFail(){
System.out.println();
System.out.println("=== 상 품 추 가 실 패 ===");
}
public void addProductEnd() {
System.out.println();
System.out.println("=== 상 품 추 가 종 료 ===");
}
public void changeProductStart() {
System.out.println();
System.out.println("=== 재 고 시 작 ===");
}
public void changeProductEnd() {
System.out.println();
System.out.println("=== 재 고 변 경 종 료 ===");
}
public void deleteProductStart() {
System.out.println();
System.out.println("=== 상 품 삭 제 시 작 ===");
}
public void deleteProductEnd() {
System.out.println();
System.out.println("=== 상 품 삭 제 종 료 ===");
}
public void updateTrue(){
System.out.println();
System.out.println("=== 업 데 이 트 성 공 ===");
}
public void updateFalse(){
System.out.println();
System.out.println("=== 업 데 이 트 실 패 ===");
}
}
ClientView
package view;
import java.util.ArrayList;
import java.util.Scanner;
import model.MemberVO;
import model.ProductVO;
public class ClientView {
private static Scanner sc = new Scanner(System.in);
public int tryCatch() {
while (true) {
try {
int action = sc.nextInt();
return action;
} catch (Exception e) {
sc.nextLine();
System.out.println("정수로 입력해주세요!");
}
}
}
public int getProductCnt() {
System.out.print("상품재고입력) ");
while(true) {
int uCnt = tryCatch();
if(uCnt < 0) {
System.out.print("양수로 다시 입력 해 주세요 : ");
continue;
}
return uCnt;
}
}
public int getProductPrice() {
System.out.print("상품가격입력) ");
while(true) {
int uPrice = tryCatch();
if(uPrice < 0) {
System.out.print("양수로 다시 입력 해 주세요 : ");
continue;
}
return uPrice;
}
}
public int getProducNum(ArrayList<ProductVO> mdatas) {
ArrayList<ProductVO> vo=new ArrayList<ProductVO>(mdatas);
while(true) {
System.out.print("상품번호입력) ");
int num = tryCatch();
boolean flag = false;
for(int i=0 ;i <vo.size();i++) {
if(num>=1001 && num<=vo.get(i).getNum()) {
if(vo.get(i).getCnt()==0) {
System.out.println("해당상품은 품절입니다.");
return -1;
}
else {
num=vo.get(i).getNum();
flag=true;
break;
}
}
}
if(!flag) {
System.out.println("해당상품은 존재하지 않습니다.");
continue;
}
return num;
}
}
public ProductVO getSearchMax() {
System.out.println();
System.out.println("=== 최 고 가 검 색 ===");
ProductVO pVO=new ProductVO(0,"최고가",0,0);
return pVO;
}
public ProductVO getSearchMin() {
System.out.println();
System.out.println("=== 최 저 가 검 색 ===");
ProductVO pVO=new ProductVO(0,"최저가",0,0);
return pVO;
}
public void printSearchContent() {
System.out.println();
System.out.println("=== 상품 검색 시 작 ===");
}
public String getSearchContent() {
System.out.println();
System.out.println("=== 이 름 으 로 검 색 ===");
System.out.print("검색어입력) ");
String name=sc.next();
return name;
}
public void printUserJoin() {
System.out.println("사용자가 입장했습니다.");
}
public int printClientMenu01() {
System.out.println();
System.out.println("=== 프 로 그 램 모 드 ===");
System.out.println("1. 회원가입");
System.out.println("2. 로그인");
System.out.println("3. 프로그램 종료");
System.out.print("입력) ");
return sc.nextInt();
}
public MemberVO signUp() {
System.out.println();
System.out.println("=== 회 원 가 입 ===");
System.out.print("아이디입력) ");
String mid=sc.next();
System.out.print("비밀번호입력) ");
String mpw=sc.next();
System.out.print("이름입력) ");
String name=sc.next();
return new MemberVO(mid,mpw,name);
}
public int printUserMenu(MemberVO mVO) {
System.out.println();
System.out.println("======[사용자]======\n"
+"현재 로그인한 사용자이름 ["+mVO.getName()+"] \n"
+ "1. 상품목록출력 \n"
+ "2. 구매하기 \n"
+ "3. 이름으로 검색\n"
+ "4. 최고가 검색 \n"
+ "5. 최저가 검색 \n"
+ "6. 로그아웃 \n"
+ "7. 회원탈퇴 ");
System.out.print("번호 입력 : ");
while(true) {
int action = tryCatch();
if(action <=7 && action >= 1 || action==1234) {
return action;
}
else
System.out.println("다시 입력 해 주세요 : ");
continue;
}
}
public void printProductList(ArrayList<ProductVO> mdatas) {
System.out.println();
if (mdatas.isEmpty()) {
System.out.println("=== 상품이 없습니다.! ===");
return;
}
System.out.println("=== 상 품 목 록 ===");
for (ProductVO mdata : mdatas) {
System.out.println(mdata);
}
}
public void printProduct(ProductVO vo){
System.out.println(vo);
}
public void buyProductStart() {
System.out.println();
System.out.println("===구 매 시 작===");
}
public void buyFail() {
System.out.println();
System.out.println("=== 구 매 실 패 ===");
}
public void buyProductEnd() {
System.out.println();
System.out.println("===구 매 완 료===");
}
public void printClientStart() {
System.out.println();
System.out.println("=== 사 용 자 모 드 시 작 ===");
}
public void printClientEnd() {
System.out.println();
System.out.println("=== 사 용 자 모 드 종 료 ===");
}
public void cartStart() {
System.out.println();
System.out.println("=== 장 바 구 니 에 담 기 ===");
}
public void printcartList(ArrayList<ProductVO> mdatas) {
System.out.println();
if (mdatas.isEmpty()) {
System.out.println("=== 상품이 없습니다.! ===");
return;
}
System.out.println("=== 상 품 목 록 ===");
for (ProductVO mdata : mdatas) {
System.out.println(mdata);
}
}
public void cartEnd() {
System.out.println();
System.out.println("=== 장 바 구 니 담 기 종 료 ===");
}
public void printNumMisMatch() {
System.out.println("없는 상품번호입니다.");
}
public void signUpTrue() {
System.out.println();
System.out.println("회원가입 성공!");
}
public void signUpFalse() {
System.out.println();
System.out.println("회원가입 실패...");
}
public MemberVO signIn() {
System.out.println();
System.out.println("=== 로 그 인 ===");
System.out.print("아이디입력) ");
String mid=sc.next();
System.out.print("비밀번호입력) ");
String mpw=sc.next();
return new MemberVO(mid,mpw,null);
}
public void signInTrue() {
System.out.println();
System.out.println("로그인 성공!");
}
public void signInFalse() {
System.out.println();
System.out.println("로그인 실패...");
}
public void logout() {
System.out.println();
System.out.println("=== 로 그 아 웃 ===");
}
public void printPwrOff() {
System.out.println("프로그램을 종료합니다");
}
public String getMpw() {
System.out.println();
System.out.println("=== 비 밀 번 호 확 인 ===");
System.out.println("비밀번호입력) ");
String mpw=sc.next();
return mpw;
}
public void printFalse() {
System.out.println("비밀번호불일치");
}
public void printMemberDeleteTrue(){
System.out.println();
System.out.println("회원탈퇴성공");
}
public void printMemberDeleteFalse() {
System.out.println();
System.out.println("회원탈퇴실패");
}
}
MemberVO
package model;
public class MemberVO {
private String mid;
private String mpw;
private String name;
public MemberVO(String mid,String mpw,String name) {
this.mid=mid;
this.mpw=mpw;
this.name=name;
}
public String getMid() {
return mid;
}
public void setMid(String mid) {
this.mid = mid;
}
public String getMpw() {
return mpw;
}
public void setMpw(String mpw) {
this.mpw = mpw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return this.name+"님";
}
@Override
public boolean equals(Object obj) {
MemberVO mVO=(MemberVO)obj;
if(this.mid.equals(mVO.mid)) {
return true;
}
return false;
}
}
MemberDAO
package model;
import java.util.ArrayList;
public class MemberDAO {
private ArrayList<MemberVO> datas;
public MemberDAO () {
datas=new ArrayList<MemberVO>();
datas.add(new MemberVO("admin","1234","관리자"));
}
public ArrayList<MemberVO> selectAll(MemberVO mVO){
return datas;
}
public MemberVO selectOne(MemberVO mVO){
for(MemberVO v : datas) {
if(mVO.getMid().equals(v.getMid())) {
if(mVO.getMpw().equals(v.getMpw())) {
return v;
}
System.out.println(" 로그: MemberDAO: selectOne(): 비밀번호가 일치하지않습니다!");
return null;
}
}
System.out.println(" 로그: MemberDAO: selectOne() : 해당 아이디가 없습니다!");
return null;
}
public boolean insert(MemberVO mVO) {
boolean flag=false;
for(MemberVO data:datas) {
if(data.equals(mVO)) {
flag=true;
System.out.println(" 로그: MemberDAO: insert(): 아이디 중복");
break;
}
}
if(flag) {
return false;
}
datas.add(new MemberVO(mVO.getMid(),mVO.getMpw(),mVO.getName()));
return true;
}
public boolean update(MemberVO mVO) {
return true;
}
public boolean delete(MemberVO mVO) {
for(int i=0; i<datas.size();i++) {
if(datas.get(i).equals(mVO)) {
datas.remove(i);
return true;
}
}
return true;
}
}
ProductVO
package model;
public class ProductVO {
int num;
String name;
int price;
int cnt;
public ProductVO(int num,String name,int price,int cnt) {
this.num=num;
this.name=name;
this.price=price;
this.cnt=cnt;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getCnt() {
return cnt;
}
public void setCnt(int cnt) {
this.cnt = cnt;
}
@Override
public String toString() {
String msg="";
if(cnt<=0) {
msg=num+". "+name+" "+price+"원 [품절]";
}
else {
msg=num+". "+name+" "+price+"원 ["+cnt+"]";
}
return msg;
}
}
ProductDAO
package model;
import java.util.ArrayList;
public class ProductDAO {
private ArrayList<ProductVO> datas;
private static int PK=1001;
public ProductDAO() {
datas=new ArrayList<ProductVO>();
datas.add(new ProductVO(PK++,"물",1000,10));
datas.add(new ProductVO(PK++,"멘토씨리즈자바",2000,10));
datas.add(new ProductVO(PK++,"마스크KF99",3000,10));
}
public boolean insert(ProductVO vo){
datas.add(new ProductVO(PK++,vo.getName(),vo.getPrice(),vo.getCnt()));
return true;
}
public ArrayList<ProductVO> selectAll(ProductVO pVO){
if(pVO==null) {
return datas;
}
else if(pVO.getName().equals("필터검색")) {
ArrayList<ProductVO> mdatas=new ArrayList<ProductVO>();
for(ProductVO data:datas) {
if(pVO.getPrice() <= data.getPrice() && data.getPrice() <= pVO.getCnt()) {
mdatas.add(data);
}
}
return mdatas;
}
else {
ArrayList<ProductVO> mdatas=new ArrayList<ProductVO>();
for(ProductVO data:datas) {
if(data.getName().contains(pVO.getName())) {
mdatas.add(data);
}
}
return mdatas;
}
}
public ProductVO selectOne(ProductVO pVO){
for(ProductVO data:datas) {
if(data.getNum()==pVO.getNum()) {
ProductVO p2VO=new ProductVO(data.getNum(),data.getName(),data.getPrice(),data.getCnt());
return p2VO;
}
}
if(pVO.getName().equals("최고가")) {
int max=datas.get(0).getPrice();
int maxIndex=0;
for(int i=1;i<datas.size();i++) {
if(max<datas.get(i).getPrice()) {
max=datas.get(i).getPrice();
maxIndex=i;
}
}
return datas.get(maxIndex);
}
else if(pVO.getName().equals("최저가")) {
int min=datas.get(0).getPrice();
int minIndex=0;
for(int i=1;i<datas.size();i++) {
if(min>datas.get(i).getPrice()) {
min=datas.get(i).getPrice();
minIndex=i;
}
}
return datas.get(minIndex);
}
return null;
}
public boolean update(ProductVO vo){
for(ProductVO data:datas) {
if(data.getNum()==vo.getNum()) {
if(vo.getCnt()<0) {
int cnt=vo.getCnt()*(-1);
if(cnt<=data.getCnt()) {
return false;
}
data.setCnt(data.getCnt()+vo.getCnt());
return true;
}
if(vo.getCnt()>0) {
int cnt=vo.getCnt();
data.setCnt(data.getCnt()+cnt);
return true;
}
}
}
System.out.println("로그 : update(): 해당상품없음");
return false;
}
public boolean delete(ProductVO vo){
for(int i=0;i<datas.size();i++) {
if(datas.get(i).getNum()==vo.getNum()) {
datas.remove(i);
return true;
}
}
return false;
}
}
Ctrl
package ctrl;
import java.util.ArrayList;
import model.MemberDAO;
import model.MemberVO;
import model.ProductDAO;
import model.ProductVO;
import view.AdminView;
import view.ClientView;
public class Ctrl {
private MemberDAO mDAO;
private ProductDAO pDAO;
private AdminView admin;
private ClientView client;
private MemberVO member;
public Ctrl() {
mDAO=new MemberDAO();
pDAO=new ProductDAO();
admin=new AdminView();
client=new ClientView();
member=null;
}
public void startApp() {
while(true) {
int action=client.printClientMenu01();
if(action == 1234) {
admin.printAdminStart();
while(true) {
action = admin.printAdminMenu();
if(action == 1) {
String name=admin.getProductName( );
int price=admin.getProductPrice( );
int cnt=client.getProductCnt( );
ProductVO vo=new ProductVO( 0 , name , price , cnt );
if( pDAO.insert(vo) ) {
ArrayList<ProductVO> datas=pDAO.selectAll(null);
client.printProductList(datas);
admin.addProductEnd();
}
else{
admin.addProductFail();
}
}
else if (action == 2) {
ArrayList<ProductVO> datas=pDAO.selectAll(null);
int num=admin.getProducNum( datas );
int cnt = admin.getProductCnt( );
ProductVO vo=new ProductVO(num,null,0,cnt);
if (pDAO.update(vo)) {
ArrayList<ProductVO> data=pDAO.selectAll(null);
client.printProductList(data);
admin.updateTrue( );
}
else{
admin.updateFalse( );
}
}
else if(action == 3) {
ArrayList<ProductVO> datas=pDAO.selectAll(null);
int num=admin.getProducNum(datas);
ProductVO vo=new ProductVO(num,null,0,0);
if(pDAO.delete(vo)){
client.printProductList(datas);
admin.updateTrue( );
}
else{
client.printNumMisMatch();
admin.updateFalse( );
}
}
else if(action == 4) {
admin.printAdminEnd( );
break;
}
}
}
else if(action==1) {
MemberVO mVO=client.signUp();
boolean flag=mDAO.insert(mVO);
if(flag) {
client.signUpTrue();
}
else {
client.signUpFalse();
}
}
else if(action==2) {
MemberVO mVO = client.signIn();
member = mDAO.selectOne(mVO);
if(member==null) {
client.signInFalse();
continue;
}
client.signInTrue();
while(true) {
client.printUserJoin();
ArrayList<ProductVO> cart=new ArrayList<ProductVO>();
client.printClientStart();
action=client.printUserMenu(member);
if(action == 1) {
ArrayList<ProductVO> datas=pDAO.selectAll(null);
client.printProductList(datas);
}
else if (action == 2) {
client.buyProductStart();
ArrayList<ProductVO> datas=pDAO.selectAll(null);
int num=client.getProducNum(datas);
if(num == -1) {
continue;
}
int cnt=client.getProductCnt();
ProductVO vo=new ProductVO(num,null,0,-cnt);
if(pDAO.update(vo)){
ProductVO data=pDAO.selectOne(vo);
data.setCnt(cnt);
boolean flag=false;
int index=0;
for(int i=0;i<cart.size();i++) {
if(data.equals(cart.get(i))) {
index=i;
flag=true;
}
}
if(flag) {
cart.get(index).setCnt(cart.get(index).getCnt()+cnt);
}
else {
cart.add(data);
}
client.printcartList(cart);
client.buyProductEnd();
}
else{
client.buyFail();
}
}
else if (action == 3) {
client.printSearchContent();
String name=client.getSearchContent();
ArrayList<ProductVO> datas=pDAO.selectAll(new ProductVO(0,name,0,0));
client.printProductList( datas );
}
else if (action == 4) {
ProductVO vo= client.getSearchMax();
ProductVO datas=pDAO.selectOne(vo);
client.printProduct(datas);
}
else if (action == 5) {
ProductVO vo= client.getSearchMin();
ProductVO datas=pDAO.selectOne(vo);
client.printProduct(datas);
}
else if (action == 6) {
member = null;
client.logout();
client.printClientEnd();
break;
}
else if(action == 7) {
String mpw=client.getMpw();
if(!member.getMpw().equals(mpw)) {
client.printFalse();
continue;
}
if(!mDAO.delete(member)) {
client.printMemberDeleteFalse();
continue;
}
client.printMemberDeleteTrue();
client.printClientEnd();
break;
}
else {
client.cartEnd();
cart.clear();
break;
}
}
}
else if(action==3) {
client.printPwrOff();
break;
}
}
}
}
Client
package client;
import ctrl.Ctrl;
public class Client {
public static void main(String[] args) {
Ctrl app=new Ctrl();
app.startApp();
}
}