DB- 캠핑장 프로그램
캠핑장 프로그램이다. 등록, 목록, 조회 (스타일,시설물 등록삭제) 로 이루어져있다.
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;
댓글남기기