case 7 : 성적 삭제에 대한 프로그램이다. 다른방법도 작성한다.

case "7":
						System.out.print("학번>"); sno=scan.nextLine();
						svo = sdao.read(sno);
						if(svo.getName()==null) { 
							System.out.println("학생이 없습니다.");
						
						}else { 
							System.out.println("성명>" + svo.getName());
							ArrayList<Score> scores =cdao.list(sno);
							if(scores.size()==0) {
								System.out.println("등록된 성적이 없습니다.");
							}else {
								for(Score c:score s) {
									System.out.printf("%s\t%d\t%d\t%d\t%d\t%.2f\t%s\n",
											c.getDate(),c.getKor(),c.getEng(),
											c.getMath(),c.getTot(),c.getAvg(),c.getGrade());
								}
							}	
						}
						System.out.print("\n삭제할날짜>"); String date = scan.nextLine();
						System.out.print(date + " 데이터를 삭제하실래요? (Y/N) >");
						String sel =scan.nextLine();
						if(sel.equals("y") || sel.equals("Y") ) {
							boolean find = cdao.delete(sno, date);
							if (find ==true) {
								System.out.println("삭제완료!");
							}else {
								System.out.println("해당 날짜에 시험이 없습니다.");
							}
						}

앞부분은 똑같고 boolean 을 사용한다는 점이 다르다.

ScoreDAO class

public boolean delete(String no, String date) {
		boolean find = false;
		try {
			BufferedReader reader = new BufferedReader(new FileReader(file));
			String line = "";
			String newFile ="";
			while((line=reader.readLine()) != null) {   //라인단위로 읽어온 데이터가  null 이 아닌동안에
				String[] item = line.split(",");
					if(no.equals(item[0]) && date.equals(item[1])) {
						find =true;
					}else {
						Score vo = new Score();
						vo.setNo(item[0]);
						vo.setDate(item[1]);
						vo.setKor(Integer.parseInt(item[2]));
						vo.setEng(Integer.parseInt(item[3]));
						vo.setMath(Integer.parseInt(item[4]));
						vo.setTot(); vo.setAvg(); vo.setGrade(); 
						newFile=newFile + vo.toString();
					}
			}
			//삭제할 데이터를 제외하고 저장
					FileWriter writer = new FileWriter(file, false);
					writer.write(newFile);
					writer.flush();
					writer.close();	
					
		}catch(Exception e) {
			System.out.println("오류:" + e.toString());
		}		
		
		return find;
	}
}

불린으로 학번과 날짜를 입력받아서 find 값을 return 해준다.

boolean find = cdao.delete(sno, date); if (find ==true) { System.out.println(“삭제완료!”); }else { System.out.println(“해당 날짜에 시험이 없습니다.”); }

scoredao 에서 스캔으로 입력한 값 sno, date 를 입력받아서 find == true 이면 삭제가되고 아니면 해당날짜가 시험이 없다고 출력된다 .!


내가짠 소스는 read 메서드를 추가했어야했기때문에 중복이되고 복잡한거에 비해 불린을써서 간단하게 출력할수있었다. 항상 더 간단하게 만들수있도록 생각해보자.

댓글남기기