/////////////////////////////////////////////////
1.성적표출력
DB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | show tables; desc sungjuk select*from sungjuk create table sungjuk( idx int not null auto_increment primary key, /*성적고유번호*/ name varchar(20) not null, /*이름*/ kor int default 0, /*국어점수*/ eng int default 0, /*영어점수*/ mat int default 0 /*수학점수*/ ); insert into sungjuk values (default,'홍길동',100,90,80); | cs |
VO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | package T8_sungjuk; public class SungjukVO { private int idx; private String name; private int kor; private int eng; private int mat; private int tot; private double avg; private char grade; public int getIdx() { return idx; } public void setIdx(int idx) { this.idx = idx; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getKor() { return kor; } public void setKor(int kor) { this.kor = kor; } public int getEng() { return eng; } public void setEng(int eng) { this.eng = eng; } public int getMat() { return mat; } public void setMat(int mat) { this.mat = mat; } public int getTot() { return tot; } public void setTot(int tot) { this.tot = tot; } public double getAvg() { return avg; } public void setAvg(double avg) { this.avg = avg; } public char getGrade() { return grade; } public void setGrade(char grade) { this.grade = grade; } @Override public String toString() { return "SungjukVO [idx=" + idx + ", name=" + name + ", kor=" + kor + ", eng=" + eng + ", mat=" + mat + ", tot=" + tot + ", avg=" + avg + ", grade=" + grade + "]"; } } | cs |
Run
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | package T8_sungjuk; import java.util.Scanner; public class SungjukRun { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); SungjukService service = new SungjukService(); boolean run =true; while(run) { System.out.println("\n\t\t * * 성 적 표 * *"); System.out.print("1>입력 2>전체조회 3>개별조회 4>수정 5>삭제 0>종료 =>"); int no = scanner.nextInt(); switch (no) { case 1: //성적입력 (중복처리) service.setInput(); break; case 2: //전체조회 service.setList(); break; case 3: //개별조회 service.setSearch(); break; case 4: //성적수정 service.setUpdate(); break; case 5: //성적삭제 service.setDelete(); break; default: run=false; } } System.out.println("\t* * * 작업을 종료합니다 * * *"); scanner.close(); } } | cs |
Service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | package T8_sungjuk; import java.util.ArrayList; import java.util.Scanner; public class SungjukService { Scanner scanner = new Scanner(System.in); SungjukDAO dao = new SungjukDAO(); SungjukVO vo = null; String ans="N"; String name=""; int no=0; //성적입력하기 public void setInput() { vo = new SungjukVO(); re:while(true) { System.out.println("\n**성적 입력처리 **"); //동명이인 입력 안받을것임 System.out.print("성명 : "); name=scanner.next(); ///////////////////동명의가 있는지 확인///////////////////////// vo=dao.getSearch(name); if(vo.getName()!=null) { System.out.println("같은 이름이 존재합니다. 다시 입력해주세요."); continue re; } ////////////////////////////////////////////////////// vo.setName(name); System.out.print("국어 : "); vo.setKor(scanner.nextInt()); System.out.print("영어 : "); vo.setEng(scanner.nextInt()); System.out.print("수학 : "); vo.setMat(scanner.nextInt()); // 동명이인 처리 (같은 성명자료는 입력하지 않는다.) int res=dao.setInput(vo); if(res==0)System.out.println("성적등록실패"); else System.out.println("성적이 등록되었습니다."); System.out.print("한번 더 입력하시겠습니까? (y/n) => "); ans=scanner.next(); if(ans.toUpperCase().equals("N"))break; } } // 전체목록 조회하기 public void setList() { ArrayList<SungjukVO> vos = dao.getList(); //전체목록 조회시 총점과 학점도 출력해야함** System.out.println("\n\t*** 성 적 리 스 트 ***"); System.out.println("=".repeat(60)); System.out.println("번호\t성명\t국어\t영어\t수학\t총점\t평균\t학점"); System.out.println("-".repeat(60)); for(int i=0; i<vos.size(); i++) { vo=vos.get(i); calculator(vo); System.out.print(vo.getIdx() +"\t"); System.out.print(vo.getName() +"\t"); System.out.print(vo.getKor() +"\t"); System.out.print(vo.getEng() +"\t"); System.out.print(vo.getMat() +"\t"); System.out.print(vo.getTot() +"\t"); System.out.print(vo.getAvg() +"\t"); System.out.print(vo.getGrade() +"\n"); } System.out.println("-".repeat(60)); System.out.println("\t\t\t\t\t총 인원수 : "+vos.size()+"명"); System.out.println("=".repeat(60)); } private void calculator(SungjukVO vo) { vo.setTot(vo.getKor()+vo.getEng()+vo.getMat()); vo.setAvg((vo.getTot()/3.0)); if(vo.getAvg()>=90) vo.setGrade('A'); else if(vo.getAvg()>=80) vo.setGrade('B'); else if(vo.getAvg()>=70) vo.setGrade('C'); else if(vo.getAvg()>=60) vo.setGrade('D'); else vo.setGrade('F'); } public void setSearch() { while(true) { System.out.print("\n조회할 성명을 입력하세요 => "); name=scanner.next(); vo=dao.getSearch(name); if(vo!=null) { calculator(vo); System.out.println("\n번호 : "+vo.getIdx()); System.out.println("성명 : "+vo.getName()); System.out.println("국어 : "+vo.getKor()); System.out.println("영어 : "+vo.getEng()); System.out.println("수학 : "+vo.getMat()); System.out.println("총점 : "+vo.getTot()); System.out.println("평균 : "+vo.getAvg()); System.out.println("학점 : "+vo.getGrade()); } else System.out.println("검색하신 "+name+" 님의 자료가 없습니다."); System.out.print("계속 검색하시겠습니까? (y/n) => "); ans=scanner.next(); if(ans.toUpperCase().equals("N"))break; } } public void setUpdate() { System.out.print("\n점수를 수정할 학생의 성명을 입력하세요 => "); name=scanner.next(); boolean run=true; while(run) { vo=dao.getSearch(name); if(vo.getName()==null) { System.out.println("\n"+name+"님은 학생이 아닙니다. . ."); run=false; } else { System.out.println("-".repeat(40)); System.out.println("이름 : " +vo.getName()); System.out.println("국어 : " +vo.getKor()); System.out.println("영어 : " +vo.getEng()); System.out.println("수학 : " +vo.getMat()); System.out.println("-".repeat(40)); } System.out.println("점수를 수정 할 과목을 선택하세요"); System.out.print("1>국어 2>영어 3>수학 4>나가기 => "); no=scanner.nextInt(); int kor=vo.getKor(),eng=vo.getEng(),mat=vo.getMat(); switch (no) { case 1: System.out.print("국어 점수 다시 입력 =>"); kor=scanner.nextInt(); break; case 2: System.out.print("영어 점수 다시 입력 =>"); eng=scanner.nextInt(); break; case 3: System.out.print("수학 점수 다시 입력 =>"); mat=scanner.nextInt(); break; default: run=false; } //점수수정메소드 불러오기 int res=dao.setUpdate(name,kor,eng,mat); if(res==0)System.out.println("점수 수정에 실패했습니다."); else System.out.println("작업이 완료되었습니다."); } } public void setDelete() { System.out.print("자료를 삭제할 학생의 이름을 입력하세요 =>"); name=scanner.next(); //이름있는지 검색 vo=dao.getSearch(name); if(vo.getName()==null) { System.out.println("\n"+name+"님은 학생이 아닙니다. . ."); } else { //있는지 확인 후 삭제 System.out.print("학생명 "+name+"님의 자료를 정말 삭제하시겠습니까? (y/n)"); String yn=scanner.next(); if(yn.toUpperCase().equals("Y")) { System.out.println(name+" 님의 자료가 삭제되었습니다."); dao.setDelete(name); }else { System.out.println("자료를 삭제 하지않고 작업 완료. . ."); } } } } | cs |
DAO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | package T8_sungjuk; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; public class SungjukDAO { //////////////////////////////////////// /////////데이터베이스 이용할때 기본필드////////// //////////////////////////////////////// Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; SungjukVO vo = null; String sql=""; //////////////////////////////////////// public SungjukDAO() { String url="jdbc:mysql://localhost:3306/javaProject"; String user="atom"; String password="1234"; //1.드라이버 검색 try { Class.forName("com.mysql.jdbc.Driver"); //2.데이터베이스 검색(연결/연동) conn=DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { System.out.println("드라이버 검색 오류 "+e.getMessage()); } catch (SQLException e) { System.out.println("데이터베이스 연결 오류 "+e.getMessage()); } } //////////////////////////////////////////////////// //conn Close; public void connClose() { try { conn.close(); } catch (SQLException e) { } } //pstmt Close;; public void pstmtClose() { try { if(pstmt !=null)pstmt.close(); } catch (SQLException e) { // TODO: handle exception } } //rs close public void rsClose() { try { if(rs!=null)rs.close(); } catch (SQLException e) { pstmtClose(); // TODO: handle exception } } //성적자료 등록처리 public int setInput(SungjukVO vo) { int res = 0; try { sql="insert into sungjuk values (default,?,?,?,?)"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, vo.getName()); pstmt.setInt(2, vo.getKor()); pstmt.setInt(3, vo.getEng()); pstmt.setInt(4, vo.getMat()); res=pstmt.executeUpdate(); } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { pstmtClose(); } return res; } //전체 조회 처리 public ArrayList<SungjukVO> getList() { ArrayList<SungjukVO> vos = new ArrayList<SungjukVO>(); try { sql="select*from sungjuk order by idx desc"; pstmt = conn.prepareStatement(sql); rs=pstmt.executeQuery(); //rs에 들어간 내용 vo에 담아서 vos만들기 while(rs.next()) { vo=new SungjukVO(); vo.setIdx(rs.getInt("idx")); vo.setName(rs.getString("name")); vo.setKor(rs.getInt("kor")); vo.setEng(rs.getInt("eng")); vo.setMat(rs.getInt("mat")); vos.add(vo); } } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { rsClose(); } return vos; } //개별조회처리 public SungjukVO getSearch(String name) { SungjukVO vo = new SungjukVO(); try { sql="select*from sungjuk where name=?"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, name); rs=pstmt.executeQuery(); if(rs.next()) { vo.setIdx(rs.getInt("idx")); vo.setName(rs.getString("name")); vo.setKor(rs.getInt("kor")); vo.setEng(rs.getInt("eng")); vo.setMat(rs.getInt("mat")); } else vo=null; } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { rsClose(); } return vo; } public int setUpdate(String name, int kor, int eng, int mat) { int res=0; try { sql="update sungjuk set kor=?,eng=?,mat=? where name=?"; pstmt=conn.prepareStatement(sql); pstmt.setInt(1, kor); pstmt.setInt(2, eng); pstmt.setInt(3, mat); pstmt.setString(4, name); res=pstmt.executeUpdate(); } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { pstmtClose(); } return res; } public void setDelete(String name) { try { sql="delete from sungjuk where name=?"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, name); pstmt.executeUpdate(); } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { pstmtClose(); } } } | cs |
//////////////////////////////////////////////////////////////////////////////////2번////////////////////////////////////////////////////////////
DB
본봉VO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package T8_bonbong; public class BonbongVO { private String jikkub; private int bonbong; String getJikkub() { return jikkub; } void setJikkub(String jikkub) { this.jikkub = jikkub; } int getBonbong() { return bonbong; } void setBonbong(int bonbong) { this.bonbong = bonbong; } @Override public String toString() { return "bonbongVO [jikkub=" + jikkub + ", bonbong=" + bonbong + "]"; } } | cs |
사원VO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | package T8_bonbong; public class SawonVO { private int sabun; private String name; private String jikkub; private int night; private int bonbong; private int tax; private int salary; int getBonbong() { return bonbong; } void setBonbong(int bonbong) { this.bonbong = bonbong; } int getSabun() { return sabun; } void setSabun(int sabun) { this.sabun = sabun; } String getName() { return name; } void setName(String name) { this.name = name; } String getJikkub() { return jikkub; } void setJikkub(String jikkub) { this.jikkub = jikkub; } int getNight() { return night; } void setNight(int night) { this.night = night; } int getTax() { return tax; } void setTax(int tax) { this.tax = tax; } int getSalary() { return salary; } void setSalary(int salary) { this.salary = salary; } @Override public String toString() { return "SawonVO [sabun=" + sabun + ", name=" + name + ", jikkub=" + jikkub + ", night=" + night + ", bonbong=" + bonbong + ", tax=" + tax + ", salary=" + salary + "]"; } } | cs |
사원본봉Run
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | package T8_bonbong; import java.util.Scanner; /* * 2. 급여계산하기 ▶ 본봉테이블(bonbong)을 만든다. 필요한 필드로는, 직급(jikkub)필드와 본봉(bonbong)필드이다. - 본봉테이블에 직급과 본봉을 '입력/수정/전체조회/삭제'할수있도록 만들어준다. ▶ 사원테이블(sawon)을 만든다. 필요한 필드로는, 사번(sabun), 성명(name), 직급(jikkub), 야근시간(night) 필드이다. 사원테이블에 자료를 '입력/수정/삭제/전체조회/개별조회' 할 수 있도록 프로그래밍하시오. 자료 입력시는 직급코드를 '숫자 or 문자'로 받아서 DB에는 한글로 입력처리하시오.(예:S 는 '사원', D는 '대리', 'K'는 '과장', 'B'는 부장...등.... 직급은 더 넣어도 상관없음. 단 동일 직급은 있을수 없다. 또한 야근 시간을 입력받는다. : 야근수당은 야근시간당 25000원으로 한다. : 공제액 = (본봉 + 수당)의 10%로 한다. : 실수령액 = (본봉 + 수당 ) - 공제액 출력내용중, '전체조회/개별조회'시, 각 사원의 '수당'과 '공제액'과 '실수령액'을 함께 출력하시오. */ public class SawonBonbongRun { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); SBService service = new SBService(); boolean run=true; System.out.println("\n\t\t * * * 급 여 계 산 기 * * *"); while(run) { System.out.println("=".repeat(60)); System.out.print("1> 급여관리 \t\t2> 사원관리 \t\t3> 작업종료 => "); int no=scanner.nextInt(); switch (no) { case 1: service.BonbongService(); break; case 2: service.SawonService(); break; default: run=false; } } System.out.println("\n 작업을 종료합니다. . . "); scanner.close(); } } | cs |
사원본봉 service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 | package T8_bonbong; import java.util.ArrayList; import java.util.Scanner; /* ▶ 본봉테이블(bonbong)을 만든다. 필요한 필드로는, 직급(jikkub)필드와 본봉(bonbong)필드이다. - 본봉테이블에 직급과 본봉을 '입력/수정/전체조회/삭제'할수있도록 만들어준다. */ public class SBService { Scanner scanner =new Scanner(System.in); SBDAO dao = new SBDAO(); BonbongVO voB=null; SawonVO voS=null; int no; int res; String name=""; String ans="N"; String jikkub=""; public void BonbongService() { System.out.println("\n\t\t* * * 급 여 관 리 자 * * *"); System.out.println("=".repeat(60)); System.out.print("1> 직급정보입력 2> 직급정보수정 3> 직급전체조회 4> 정보삭제 0>나가기 => "); no=scanner.nextInt(); switch (no) { case 1: System.out.println("** 직급,급여 입력 처리 **"); //같은 직급 추가 불가처리 해야함 System.out.print("직급 (직급의 이니셜 1단어) : " ); jikkub=scanner.next().toUpperCase(); ///같은 이름의 직급있으면 걸러내기 voB=dao.getSearchB(jikkub); if(voB.getJikkub()!=null) { System.out.println("이미 존재하는 직급입니다. \n* * 등록 실패 * *"); return; } voB.setJikkub(jikkub); System.out.print("해당 직급( "+jikkub+" )의 급여 : "); voB.setBonbong(scanner.nextInt()); res=dao.setInputB(voB); if(res==0)System.out.println("등록에 실패했습니다."); else System.out.println("정상적으로 등록을 완료했습니다."); break; case 2: //수정하려면 먼저 찾아야함 System.out.print("수정하고자 하는 직급을 입력하세요 : "); jikkub=scanner.next().toUpperCase(); voB=dao.getSearchB(jikkub); if(voB.getJikkub()==null) { System.out.println("\n "+jikkub+" 는 잘못된 직급 입니다. . ."); break; } else { System.out.println("해당직급의 새 직급명 > "); String newJikkub=scanner.next(); System.out.println(newJikkub+" 의 본봉 입력 > "); int bonbong=scanner.nextInt(); res=dao.setUpdateB(jikkub,newJikkub,bonbong); if(res==0)System.out.println("직급의 수정에 실패했습니다."); else System.out.println("작업이 완료되었습니다."); } break; case 3: //직급표일람 ArrayList<BonbongVO> vos = dao.getListB(); System.out.println("\n\t\t * * 직 급 표 일 람 * * "); System.out.println("=".repeat(60)); System.out.println("\t직급명\t\t\t 본봉"); System.out.println("=".repeat(60)); for(int i=0; i<vos.size(); i++){ voB=vos.get(i); System.out.print("\t "+voB.getJikkub()+"\t"); System.out.print("\t\t "+voB.getBonbong()+"\n"); } System.out.println("-".repeat(60)); System.out.println("\t\t\t\t총 "+vos.size()+" 개의 직급이 있습니다.\n"); break; case 4: //삭제 System.out.println("삭제하고자 하는 직급을 입력하세요 : "); jikkub=scanner.next().toUpperCase(); voB=dao.getSearchB(jikkub); if(voB.getJikkub()==null) { System.out.println("\n "+jikkub+" 는 잘못된 직급 입니다. . ."); break; } else { res=dao.setDeleteB(jikkub); System.out.println("해당 직급을 삭제했습니다."); } break; default: //나가기 break; } } /* ▶ 사원테이블(sawon)을 만든다. 필요한 필드로는, 사번(sabun), 성명(name), 직급(jikkub), 야근시간(night) 필드이다. 사원테이블에 자료를 '입력/수정/삭제/전체조회/개별조회' 할 수 있도록 프로그래밍하시오. 자료 입력시는 직급코드를 '숫자 or 문자'로 받아서 DB에는 한글로 입력처리하시오.(예:S 는 '사원', D는 '대리', 'K'는 '과장', 'B'는 부장...등.... 직급은 더 넣어도 상관없음. 단 동일 직급은 있을수 없다. 또한 야근 시간을 입력받는다. : 야근수당은 야근시간당 25000원으로 한다. : 공제액 = (본봉 + 수당)의 10%로 한다. : 실수령액 = (본봉 + 수당 ) - 공제액 출력내용중, '전체조회/개별조회'시, 각 사원의 '수당'과 '공제액'과 '실수령액'을 함께 출력하시오. */ public void SawonService() { System.out.println("\n\t\t* * * 사 원 관 리 자 * * *"); System.out.println("=".repeat(60)); System.out.print("1>정보입력 2>정보수정 3>정보삭제 4>전체조회 5>개별조회 \t0>나가기 => "); no=scanner.nextInt(); switch (no) { case 1://입력 while(true) { System.out.println("\n\t* * 사원 정보 신규 입력 * *"); //***동명이인, 본봉테이블에 없는 직급은 입력 안받을것임*** System.out.print("성명 : "); name=scanner.next(); ////////////동명이인 비교(같은이름안받음)//////// voS=dao.getSearchS(name); if(voS.getName()!=null) { System.out.println("이미 같은 이름이 존재합니다.\n작업을 종료합니다."); return; }else voS.setName(name); //////////////이름입력끝//////////////// //////////직급비교(없는직급 안받음)////////////////////// System.out.print("직급 : "); jikkub=scanner.next(); voB=dao.getSearchB(jikkub); //본봉테이블에 있는 직급이랑 비교해야함// if(voB.getJikkub()==null) { System.out.println("존재하지 않는 직급입니다.\n작업을 종료합니다."); return; } voS.setJikkub(jikkub); ///////////////////직급입력끝//////////////// System.out.print("특근시간 : "); voS.setNight(scanner.nextInt()); //////////////////입력완료///////// int res=dao.setInputS(voS); if(res==0)System.out.println("정상 등록 실패"); else System.out.println("정상 등록 되었습니다."); System.out.print("계속 입력 하시겠습니까? (y/n) =>"); ans=scanner.next(); if(ans.toUpperCase().equals("N"))break; } break; case 2://수정 System.out.println("\n\t* * 사원 정보 수정 * *"); System.out.print("수정하고자 하는 사원의 이름을 입력하세요 =>"); name = scanner.next(); voS=dao.getSearchS(name); if(voS.getName()==null) { System.out.println(name+" 님은 사원이 아닙니다. . .\n작업을 종료합니다."); return; }else { System.out.println("-".repeat(60)); System.out.println("사 번\t: "+voS.getSabun()); System.out.println("이 름\t: "+voS.getName()); System.out.println("직 급\t: "+voS.getJikkub()); System.out.println("특근시간\t: "+voS.getNight()+" 시간"); } boolean run=true; String newName = voS.getName(); jikkub = voS.getJikkub(); int night = voS.getNight(); re:while(run) { System.out.println("-".repeat(60)); System.out.println("수정할 정보를 선택하세요"); System.out.print("1> 이름 2> 직급 3> 특근시간 0> 종료 => "); no=scanner.nextInt(); ///수정할때도 이름 중복 허용안할것임 ///직급도 없는 직급은 안받을것임!! switch (no) { case 1: System.out.print("\n이름 수정 => "); newName=scanner.next(); voS=dao.getSearchS(newName); if(voS.getName()!=null) { System.out.println("이미 같은 이름이 존재합니다.\n작업을 종료합니다."); continue re; } break; case 2: System.out.print("\n직급 수정 => "); jikkub=scanner.next(); voB=dao.getSearchB(jikkub); //본봉테이블에 있는 직급이랑 비교해야함// if(voB.getJikkub()==null) { System.out.println("존재하지 않는 직급입니다.\n작업을 종료합니다."); continue re; } break; case 3: System.out.print("\n특근시간 => "); night=scanner.nextInt(); break; default: run=false; } ////////정보 수정하는 메소드//////// int res=dao.setUpdateS(newName,jikkub,night,name); if(res==0)System.out.println("점수 수정에 실패했습니다. . ."); else System.out.println("작업 완료 . . ."); } break; case 3://삭제 System.out.println("자료를 삭제할 사원의 이름을 입력하세요 =>"); name = scanner.next(); voS=dao.getSearchS(name); if(voS.getName()==null) { System.out.println(name+" 님은 사원이 아닙니다. . .\n작업을 종료합니다."); return; }else { System.out.println(name+"님의 자료를 정말 삭제할까요? (y/n) =>"); ans=scanner.next(); if(ans.toUpperCase().equals("Y")) { System.out.println(name+"님의 자료를 삭제합니다."); dao.setDeleteS(name); }else System.out.println("자료의 삭제를 취소합니다. \n작업을 종료합니다."); } break; case 4://전체조회 ArrayList<SawonVO> vosS = dao.getListS(); ArrayList<BonbongVO> vosB =dao.getListB(); //사원직급<=>본봉직급 비교로 해당직급의 본봉을 출력 System.out.println("\n\t\t* * * 사 원 명 단 * * *"); System.out.println("=".repeat(60)); System.out.println("사번\t이름\t직급명\t특근\t 본봉\t 공제액\t 실수령액"); System.out.println("-".repeat(60)); for(int i=0; i<vosS.size(); i++){ voS=vosS.get(i); System.out.print(voS.getSabun()+"\t"); System.out.print(voS.getName()+"\t"); System.out.print(voS.getJikkub()+"\t"); System.out.print(voS.getNight()+" 시간\t"); /////사원의 직급과 비교하고 해당직급의 본봉 출력하기///////// for(int j=0; j<vosB.size(); j++) { voB=vosB.get(j); if(voS.getJikkub().equals(voB.getJikkub())) { calc(voS); //계산용.. System.out.print(voB.getBonbong()+"\t"); } } ////////////////////////////////////////////// System.out.print(voS.getTax()+"\t"); System.out.print(voS.getSalary()+"\n"); } System.out.println("-".repeat(60)); System.out.println("\t\t\t\t\t 총원 "+vosS.size()+" 명"); System.out.println("=".repeat(60)); break; case 5://개별조회 vosB=dao.getListB(); //사원 본봉 볼때마다 본봉리스트 불러와서 비교해야함... System.out.println("\n\t\t* * * 사 원 조 회 * * *"); while(true) { System.out.print("\n 조회하고자 하는 사원의 이름을 입력 하세요 =>"); name=scanner.next(); voS=dao.getSearchS(name); if(voS!=null) { System.out.println("사 번\t: "+voS.getSabun()); System.out.println("이 름\t: "+voS.getName()); System.out.println("직 급\t: "+voS.getJikkub()); System.out.println("특근시간\t: "+voS.getNight()+" 시간"); //////////본봉출력용;/////// for(int i=0; i<vosB.size(); i++) { voB=vosB.get(i); if(voS.getJikkub().equals(voB.getJikkub())) { calc(voS); //계산용.. System.out.print("본 봉\t:"+voB.getBonbong()); } } ///////////////////////////// System.out.println("공제액\t:"+voS.getTax()+"\t"); System.out.println("실수령액\t:"+voS.getSalary()+"\n"); } else System.out.println(name+"님의 자료가 없습니다. . ."); System.out.print("계속 검색 하시겠습니까? (y/n) =>"); ans=scanner.next(); if(ans.toUpperCase().equals("N"))break; } break; default: break; } } private void calc(SawonVO voS) { int sudang=(voS.getNight()*25000); voS.setBonbong(voB.getBonbong()); voS.setTax((int)( (voS.getBonbong()+sudang)*0.1) ); voS.setSalary(voS.getBonbong()+sudang-voS.getTax()); } } | cs |
사원본봉 DAO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 | package T8_bonbong; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; public class SBDAO { Connection conn =null; PreparedStatement pstmt =null; ResultSet rs=null; BonbongVO voB=null; SawonVO voS=null; String sql=""; public SBDAO() { String url="jdbc:mysql://localhost:3306/javaProject"; String user="atom"; String password="1234"; try { Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public void connClose() { try { conn.close(); } catch (SQLException e) {} } public void pstmtClose() { try { if(pstmt!=null)pstmt.close(); } catch (SQLException e) {} } public void rsClose() { try { if(rs!=null)rs.close(); } catch (Exception e) { pstmtClose(); } } //직급 검색용 조회 public BonbongVO getSearchB(String jikkub){ BonbongVO vo=new BonbongVO(); try { sql="select*from bonbong where jikkub=?"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, jikkub); rs=pstmt.executeQuery(); if(rs.next()) { vo.setJikkub(rs.getString("jikkub")); } } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { pstmtClose(); } return vo; } public int setInputB(BonbongVO voB) { int res=0; try { sql="insert into bonbong values (?,?)"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, voB.getJikkub()); pstmt.setInt(2, voB.getBonbong()); res=pstmt.executeUpdate(); } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { pstmtClose(); } return res; } public ArrayList<BonbongVO> getListB() { ArrayList<BonbongVO> vos = new ArrayList<BonbongVO>(); try { sql="select*from bonbong order by bonbong desc"; pstmt = conn.prepareStatement(sql); rs=pstmt.executeQuery(); while(rs.next()) { voB=new BonbongVO(); voB.setJikkub(rs.getString("jikkub")); voB.setBonbong(rs.getInt("bonbong")); vos.add(voB); } } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { rsClose(); } return vos; } public int setUpdateB(String jikkub, String newJikkub, int bonbong) { int res=0; try { sql="update bonbong set jikkub=?, bonbong=? where jikkub=?"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, newJikkub); pstmt.setInt(2, bonbong); pstmt.setString(3, jikkub); res=pstmt.executeUpdate(); } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { pstmtClose(); } return res; } public int setDeleteB(String jikkub) { int res=0; try { sql="delete from bonbong where jikkub=?"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, jikkub); res=pstmt.executeUpdate(); } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { pstmtClose(); } return res; } //////////////////////////여기서부터 사원관리자 출력용///////////////////////////// public ArrayList<SawonVO> getListS() { ArrayList<SawonVO> vos = new ArrayList<SawonVO>(); try { sql="select*from sawon"; pstmt=conn.prepareStatement(sql); rs=pstmt.executeQuery(); while(rs.next()) { voS=new SawonVO(); voS.setSabun(rs.getInt("sabun")); voS.setName(rs.getString("name")); voS.setJikkub(rs.getString("jikkub")); voS.setNight(rs.getInt("night")); vos.add(voS); } //직급 비교해서 두개가 같으면 본봉 출력하면 되지않을까 /* 이런식이니까 사원 VO출력 다 하고 사원직급<=>본봉직급 비교로 직급이 같은 본봉을 출력 (같은배열안에있을테니까) */ } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { rsClose(); } return vos; } //개별정보검색 public SawonVO getSearchS(String name) { SawonVO voS= new SawonVO(); try { sql="select*from sawon where name=?"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, name); rs=pstmt.executeQuery(); if(rs.next()) { voS.setSabun(rs.getInt("sabun")); voS.setName(rs.getString("name")); voS.setJikkub(rs.getString("jikkub")); voS.setNight(rs.getInt("night")); } } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { rsClose(); } return voS; } public int setInputS(SawonVO voS) { int res=0; try { sql="insert into sawon values (default,?,?,?)"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, voS.getName()); pstmt.setString(2, voS.getJikkub()); pstmt.setInt(3, voS.getNight()); res=pstmt.executeUpdate(); } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { pstmtClose(); } return res; } public int setUpdateS(String newName, String jikkub, int night, String name) { int res=0; try { sql="update sawon set name=?,jikkub=?,night=? where name=?"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, newName); pstmt.setString(2, jikkub); pstmt.setInt(3, night); pstmt.setString(4, name); res=pstmt.executeUpdate(); } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { pstmtClose(); } return res; } public void setDeleteS(String name) { try { sql="delete from sawon where name=?"; pstmt=conn.prepareStatement(sql); pstmt.setString(1, name); pstmt.execute(); } catch (SQLException e) { System.out.println("SQL오류 : "+e.getMessage()); } finally { pstmtClose(); } } } | cs |
첫댓글 내용이 많이 길어지고 있군요.
비즈니스로직이 들어가게 되면 사소한 내용들도 이곳에서 처리하느라 작은 작업들이 많이 생길듯 합니다.
수고하셨어요