캠핑장 프로그램이다. 등록, 목록, 조회 (스타일,시설물 등록삭제) 로 이루어져있다.

Camp

public class Camp {
	private String cno;
	private String cname;
	private String ctel;
	
	public String getCno() {
		return cno;
	}
	public void setCno(String cno) {
		this.cno = cno;
	}
	public String getCname() {
		return cname;
	}
	public void setCname(String cname) {
		this.cname = cname;
	}
	public String getCtel() {
		return ctel;
	}
	public void setCtel(String ctel) {
		this.ctel = ctel;
	}
	@Override
	public String toString() {
		return "Camp [cno=" + cno + ", cname=" + cname + ", ctel=" + ctel + "]";
	}
}

Main

public class Main {

	public static void main(String[] args) {
		Connection CON=Database.CON;
		boolean run =true;
		Scanner s=new Scanner(System.in);
		CampDAO cdao = new CampDAO();
		while(run) {
			System.out.println("┌─────────────────────────────────────────────┐");
			System.out.print("│1.캠핑장등록   ");
			System.out.print("2.캠핑장목록   ");
			System.out.print("3.캠핑장조회  ");
			System.out.print("0.프로그램종료   │\n");
			System.out.println("└─────────────────────────────────────────────┘");
			System.out.print("선택>");
			String menu = s.nextLine();
			switch(menu) {
			case "1":
				Camp cvo= new Camp();
				cvo.setCno(cdao.getcode());
				System.out.println("캠핑장번호:"+ cvo.getCno());
				System.out.print("캠핑장이름:"); cvo.setCname(s.nextLine());
				System.out.print("캠핑장전화:"); cvo.setCtel(s.nextLine());
				System.out.print("캠핑장을 등록하실래요? >"); String sel=s.nextLine();
				if(sel.equals("y")||sel.equals("Y")||sel.equals("ㅛ")) {
					cdao.insert(cvo);
				}
				break;
			case "2":
				System.out.println("─────────────────────────────────────");

				System.out.printf("%s\t%s\t\t%s\n" ,"번호","이름","전화번호");
				System.out.println("─────────────────────────────────────");
				ArrayList<Camp> array = cdao.list();
				for(Camp vo:array) {
					System.out.printf("%s\t%-10s\t%s\n" ,
							vo.getCno(), vo.getCname(),vo.getCtel());
					//캠핑장의 시설물 목록 출력
					ArrayList<String> farray = cdao.flist(vo.getCno());
		
					if(farray.size()==0) {
						System.out.println("시설물이 없습니다.");
					}else {
						System.out.print("시설물목록:");
						for(String fname:farray) {
							System.out.printf("%s|", fname);
						}
						System.out.print("\n");
					}
					//스타일 목록 출력
					ArrayList<String> sarray = cdao.slist(vo.getCno());
					
					if(sarray.size()==0) {
						System.out.println("스타일이 없습니다.");
					}else {
						System.out.print("스타일목록:");
						for(String sname:sarray) {
							System.out.printf("%s|", sname);
						}
					}
					System.out.println("\n─────────────────────────────────────");
				}
				
				break;
			case "3":
				System.out.print("검색할 캠핑장이름>"); String cname = s.nextLine();
				cvo=cdao.read(cname);
				if(cvo.getCname()==null) {
					System.out.println("캠핑장이 존재하지 않습니다.");
				}else {
					System.out.println("캠핑장번호:"+cvo.getCno());
					System.out.println("캠핑장이름:"+cvo.getCname());
					System.out.println("캠핑장전화:"+cvo.getCtel());
					//캠핑장의 시설물 목록 출력
					ArrayList<String> farray = cdao.flist(cvo.getCno());
		
					if(farray.size()==0) {
						System.out.println("시설물이 없습니다.");
					}else {
						System.out.print("시설물목록:");
						for(String fname:farray) {
							System.out.printf("%s|", fname);
						}
						System.out.print("\n");
					}
					//스타일 목록 출력
					ArrayList<String> sarray = cdao.slist(cvo.getCno());
					
					if(sarray.size()==0) {
						System.out.println("스타일이 없습니다.");
					}else {
						System.out.print("스타일목록:");
						for(String sname:sarray) {
							System.out.printf("%s|", sname);
						}
						System.out.println("");
					}
				}
				//시설물, 스타일등록
				Sub.menu(cvo.getCno());
				break;
			case "0":
				run=false;
				break;
			default:
				System.out.println("0~3번메뉴를 선택하세요!");
			}
		}
		System.out.println("※프로그램을 종료합니다※");
	}
}

3번에 시설물등록,삭제 스타일 등록,삭제는 sub로 따로 뺏다.

Sub

public class Sub {
	
	public static void menu(String cno) {
		CampDAO cdao = new CampDAO();
		Camp cvo= new Camp();
		cvo.setCno(cno);
		Scanner s=new Scanner(System.in);
		
		System.out.println("┌──────────────────────────────────────────────────┐");
		System.out.println("|1.시설물등록|2.시설물삭제|3.스타일등록|4.스타일삭제|0.메인메뉴|");
		System.out.println("└──────────────────────────────────────────────────┘");
		boolean subrun= true;
		while(subrun) {
			System.out.print("메뉴선택>"); String submenu=s.nextLine();
			switch(submenu) {
			case "1":
				//시설물등록
				ArrayList<HashMap<String,Object>> afarray = cdao.flist();
				for(HashMap<String,Object> map:afarray) {
					System.out.printf("%s|%s|",map.get("fno"), map.get("fname"));
				}
				System.out.print("시설물선택>"); String fno =s.nextLine();
				//캠핑장에 시설물 등록
				int result =cdao.insert_facility(cvo.getCno(), fno);
				if(result==0) {
					System.out.println("등록된 시설물이 없습니다!");
				}else if(result ==1) {
					System.out.println("시설물 등록 성공!");
				}else if(result==2) {
					System.out.println("이미 등록된 시설물입니다!");
				}
				break;
			case "2":
				afarray = cdao.flist();
				for(HashMap<String,Object> map:afarray) {
					System.out.printf("%s|%s|",map.get("fno"), map.get("fname"));
				}
				System.out.print("삭제할 시설물선택>"); fno =s.nextLine();
				result =cdao.delete_facility(cvo.getCno(), fno);
				if(result==0) {
					System.out.println("등록된 시설물이 없습니다!");
				}else if(result ==1) {
					System.out.println("시설물 삭제 성공!");
				}else if(result==2) {
					System.out.println("등록된 시설물이 없습니다!");
				}
				
				break;
			case "3"://스타일
				String sno ;
				ArrayList<HashMap<String,Object>> asarray = cdao.slist();
				for(HashMap<String,Object> map:asarray) {
					System.out.printf("%s|%s|",map.get("sno"), map.get("sname"));
				}
				System.out.print("스타일선택>"); sno =s.nextLine();
				//캠핑장에 스타일 등록
				result =cdao.insert_style(cvo.getCno(), sno);
				if(result==0) {
					System.out.println("등록된 스타일이 없습니다!");
				}else if(result ==1) {
					System.out.println("스타일 등록 성공!");
				}else if(result==2) {
					System.out.println("이미 등록된 스타일입니다!");
					}
				break;
			case "4":
				asarray = cdao.slist();
				for(HashMap<String,Object> map:asarray) {
					System.out.printf("%s|%s|",map.get("sno"), map.get("sname"));
				}
				System.out.print("삭제할 스타일선택>"); sno =s.nextLine();
				result =cdao.delete_style(cvo.getCno(), sno);
				if(result==0) {
					System.out.println("등록된 스타일이 없습니다!");
				}else if(result ==1) {
					System.out.println("스타일 삭제 성공!");
				}else if(result==2) {
					System.out.println("등록된 스타일이 없습니다!");
				}
				break;
			case "0":
				subrun=false;
				break;
			default:
				System.out.println("0~4번메뉴를선택하세요!");
			}
		}
		System.out.println("메인메뉴로돌아갑니다.");
	}
}

CampDAO

public class CampDAO {

	
	//캠핑장목록
	public ArrayList<Camp> list(){
		ArrayList<Camp> array = new ArrayList<>();
		try {
			String sql = "select * from tbl_camp order by cno desc" ;
			PreparedStatement ps=Database.CON.prepareStatement(sql);
			ResultSet rs=ps.executeQuery();
			while(rs.next()) {
				Camp vo= new Camp();
				vo.setCno(rs.getString("cno"));
				vo.setCname(rs.getString("cname"));
				vo.setCtel(rs.getString("ctel"));
				array.add(vo);
			}
		}catch(Exception e) {
			System.out.println("list에러 :" +e.toString());
		}
		return array;
		
	}

	//특정캠핑장이 가지고있는 시설물목록
	public ArrayList<String> flist(String cno) {
		ArrayList<String> array = new ArrayList<>();
		try {
			String sql="select * from view_facility where cno=?";
			PreparedStatement ps=Database.CON.prepareStatement(sql);
			ps.setString(1, cno);
			ResultSet rs=ps.executeQuery();
			while(rs.next()) {
				String fname=rs.getString("fname");
				array.add(fname);
				
			}
			
		}catch(Exception e) {
			System.out.println("flist에러 :" +e.toString());
		}
		return array;
		
	}
	
	//특정캠핑장이 가지고있는 스타일목록
		public ArrayList<String> slist(String cno) {
			ArrayList<String> array = new ArrayList<>();
			try {
				String sql="select * from view_style where cno=?";
				PreparedStatement ps=Database.CON.prepareStatement(sql);
				ps.setString(1, cno);
				ResultSet rs=ps.executeQuery();
				while(rs.next()) {
					String sname=rs.getString("sname");
					array.add(sname);
					
				}
				
			}catch(Exception e) {
				System.out.println("slist에러 :" +e.toString());
			}
			return array;
		}
		
		//새로운 캠핑장 번호 구하기
		public String getcode() {
			String code= "";
			try {
				String sql = "select max(cno)+1 code from tbl_camp ";
				PreparedStatement ps=Database.CON.prepareStatement(sql);
				ResultSet rs=ps.executeQuery();
				if(rs.next()) {
					code = rs.getString("code");
					
				}
				
			}catch(Exception e) {
				System.out.println("getcode 에러 :" +e.toString());
			}
			return code;
		}
		
		//캠핑장등록
		public void insert(Camp vo) {
			try {
				String sql = "insert into tbl_camp(cno,cname,ctel) values(?,?,?)";
				PreparedStatement ps=Database.CON.prepareStatement(sql);
				ps.setString(1, vo.getCno());
				ps.setString(2, vo.getCname());
				ps.setString(3, vo.getCtel());
				ps.execute();
				System.out.println("캠핑장등록완료!");
				
			}catch(Exception e) {
				System.out.println("getcode 에러 :" +e.toString());
			}
		}
		
		//캠핑장조회
		public Camp read(String cname) {
			Camp vo = new Camp();
			try {
				String sql = "select * from tbl_camp where cname like ?";
				PreparedStatement ps=Database.CON.prepareStatement(sql);
				ps.setString(1, "%"+cname+"%");
				ResultSet rs=ps.executeQuery();
				if(rs.next()) {
					vo.setCno(rs.getString("cno"));
					vo.setCname(rs.getString("cname"));
					vo.setCtel(rs.getString("ctel"));
					
				}
			}catch(Exception e) {
				System.out.println("getcode 에러 :" +e.toString());
			}
			return vo;
		}
		
		///////////////////////////////////////////////////////
		//시설물 전체목록
		public ArrayList<HashMap<String,Object>> flist() {
			ArrayList<HashMap<String,Object>> array = new ArrayList<>();
			try {
				String sql="select * from tbl_facility order by fno";
				PreparedStatement ps=Database.CON.prepareStatement(sql);
				ResultSet rs=ps.executeQuery();
				while(rs.next()) {
					HashMap<String,Object> map = new HashMap<>();
					map.put("fno", rs.getString("fno"));
					map.put("fname", rs.getString("fname"));
					array.add(map);
				}
				
			}catch(Exception e) {
				System.out.println("flist 에러 :" +e.toString());
			}
			return array;
			
		}
		
		//시설물등록
		public int insert_facility(String cno, String fno) {
			int result=0; //시설물테이블에 시설물이 없는경우
			try {
				String sql= "call add_facility(?,?,?,?)";
				CallableStatement cs= Database.CON.prepareCall(sql);
				cs.setString(1, cno);
				cs.setString(2, fno);
				cs.registerOutParameter(3, oracle.jdbc.OracleTypes.INTEGER);
				cs.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);
				cs.execute();
				
				int c_count =(int)cs.getObject(3);
				int o_count =(int)cs.getObject(4);
				
				if(c_count==1) { 
					if(o_count==1)  {
						result=2;  //시설물 테이블에 중복 저장할 경우
					}else {
						result=1; //등록성공
					}
				}
			}catch(Exception e) {
				System.out.println("insert_facility 에러 :" +e.toString());
			}
			return result;
		}
		
		//스타일 전체목록
		public ArrayList<HashMap<String,Object>> slist() {
			ArrayList<HashMap<String,Object>> array = new ArrayList<>();
			try {
				String sql="select * from tbl_style order by sno";
				PreparedStatement ps=Database.CON.prepareStatement(sql);
				ResultSet rs=ps.executeQuery();
				while(rs.next()) {
					HashMap<String,Object> map = new HashMap<>();
					map.put("sno", rs.getString("sno"));
					map.put("sname", rs.getString("sname"));
					array.add(map);
				}
				
			}catch(Exception e) {
				System.out.println("slist 에러 :" +e.toString());
			}
			return array;
			
		}
		
		//시설물등록
		public int insert_style(String sno, String sname) {
			int result=0; //시설물테이블에 스타일이 없는경우
			try {
				String sql= "call add_style(?,?,?,?)";
				CallableStatement cs= Database.CON.prepareCall(sql);
				cs.setString(1, sno);
				cs.setString(2, sname);
				cs.registerOutParameter(3, oracle.jdbc.OracleTypes.INTEGER);
				cs.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);
				cs.execute();
				
				int c_count =(int)cs.getObject(3);
				int o_count =(int)cs.getObject(4);
				
				if(c_count==1) { 
					if(o_count==1)  {
						result=2;  //스타일 테이블에 중복 저장할 경우
					}else {
						result=1; //등록성공
					}
				}
			}catch(Exception e) {
				System.out.println("insert_style 에러 :" +e.toString());
			}
			return result;
		}
		
		//시설물삭제
		public int delete_facility(String cno, String fno) {
			int result=0; //시설물테이블에 시설물이 없는경우
			try {
				String sql= "call del_facility(?,?,?,?)";
				CallableStatement cs= Database.CON.prepareCall(sql);
				cs.setString(1, cno);
				cs.setString(2, fno);
				cs.registerOutParameter(3, oracle.jdbc.OracleTypes.INTEGER);
				cs.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);
				cs.execute();
				
				int c_count =(int)cs.getObject(3);
				int o_count =(int)cs.getObject(4);
				
				if(c_count==1) { 
					if(o_count==1)  {
						result=1;  //삭제 성공
					}else {
						result=2; //등록된 시설물이 등록되지않은경우
					}
				}
			}catch(Exception e) {
				System.out.println("delete_facility 에러 :" +e.toString());
			}
			return result;
		}
		
		// 스타일 삭제
		public int delete_style(String cno, String sno) {
			int result=0; //시설물테이블에 시설물이 없는경우
			try {
				String sql= "call del_style(?,?,?,?)";
				CallableStatement cs= Database.CON.prepareCall(sql);
				cs.setString(1, cno);
				cs.setString(2, sno);
				cs.registerOutParameter(3, oracle.jdbc.OracleTypes.INTEGER);
				cs.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);
				cs.execute();
				
				int c_count =(int)cs.getObject(3);
				int o_count =(int)cs.getObject(4);
				
				if(c_count==1) { 
					if(o_count==1)  {
						result=1;  //삭제 성공
					}else {
						result=2; //등록된 시설물이 등록되지않은경우
					}
				}
			}catch(Exception e) {
				System.out.println("delete_style 에러 :" +e.toString());
			}
			return result;
		}
}

그 전 실습이랑 동일하다. 다른건 프로시저를 만들어서 삭제, 입력을 하는것이다.

시설물 입력

create or replace PROCEDURE ADD_FACILITY(
  i_cno in varchar,
  i_fno in int,
  f_count out int, --시설물정보 테이블에 번호가있으면1, 없으면0
  o_count out int --캠핑장별 시설물 테이블에 있으면1, 없으면0
)
AS 
BEGIN
  --시설물정보 테이블에 시설물번호가 있는지 체크
  select count(*) into f_count from tbl_facility where fno=i_fno;
  --캠핑장별 시설물 테이블에 시설물번호가 있는지 체크
  select count(*) into o_count from tbl_camp_facility
  where cno=i_cno and fno=i_fno;
  
  IF(f_count=1 AND o_count=0)THEN
    insert into tbl_camp_facility values(i_cno, i_fno);
  END IF;
END ADD_FACILITY;

시설물 삭제

create or replace PROCEDURE DEL_style(
  i_cno in varchar,
  i_sno in int,
  f_count out int,
  o_count out int
)
AS 
BEGIN
   --시설물정보 테이블에 시설물번호가 있는지 체크
  select count(*) into f_count from tbl_style where sno=i_sno;
  --캠핑장별 시설물 테이블에 시설물번호가 있는지 체크
  select count(*) into o_count from tbl_camp_style
  where cno=i_cno and sno=i_sno;
  
  IF(f_count=1 AND o_count=1)THEN
    delete from tbl_camp_style where cno=i_cno and sno=i_sno;
  END IF;
END DEL_style;

스타일 입력

create or replace PROCEDURE ADD_STYLE (
  i_cno in varchar,
  i_sno in int,
  s_count out int,
  o_count out int
)
AS 
BEGIN
  select count(*) into s_count from tbl_style where sno=i_sno;
  select count(*) into o_count from tbl_camp_style
  where cno=i_cno and sno=i_sno;
  if(s_count=1 and o_count =0) then
    insert into tbl_camp_style values(i_cno, i_sno);
  end if;
END ADD_STYLE;

스타일 삭제

create or replace PROCEDURE DEL_style(
  i_cno in varchar,
  i_sno in int,
  f_count out int,
  o_count out int
)
AS 
BEGIN
   --시설물정보 테이블에 시설물번호가 있는지 체크
  select count(*) into f_count from tbl_style where sno=i_sno;
  --캠핑장별 시설물 테이블에 시설물번호가 있는지 체크
  select count(*) into o_count from tbl_camp_style
  where cno=i_cno and sno=i_sno;
  
  IF(f_count=1 AND o_count=1)THEN
    delete from tbl_camp_style where cno=i_cno and sno=i_sno;
  END IF;
END DEL_style;

태그:

카테고리:

업데이트:

댓글남기기