관리 메뉴

LIFE & IT

JAVA 학사관리 프로그램 Student_Takecourse.java 본문

Self Study/JAVA

JAVA 학사관리 프로그램 Student_Takecourse.java

프린이! 2019. 8. 31. 04:47

Student_Takecourse.java
0.01MB

좀 더 논리 정연하고 효율적인 방법 구상중

 

리스트 배열 선언

ArrayList<String> addList = new ArrayList<String>();
ArrayList<String> crsNum = new ArrayList<String>();
ArrayList<String> crsName = new ArrayList<String>();

 

ActionListener 내용

 

1.  추가 버튼 ( add ) 로직 내용

 

  1)  추가 버튼을 누르게 되면 user 가 선택한 과목이 리스트 테이블에 추가 된다.

 

  2)  user 가 가장 마지막으로 추가한 선택된 과목이 이미 테이블에 추가된 과목과 같다면 중복이 되기

      때문에 가장 마지막으로 추가한 선택된 과목을 Table에 추가한 후 중복 제거 로직으로 제거 한다.

 

  3)  user 가 연속적으로 동일한 과목을 선택 추가 시도 하려 한다면, "이벤트 메세지"를 발생한다.

   

if(e.getSource() == add){ // -- [ 추가 ] button 
	
    model = (DefaultTableModel) table.getModel();
	
    arr[0] =  course_box.getSelectedItem().toString(); // 과목명
    arr[1] = crsCredit_tf.getText();  // 시수/학점
    arr[2] = crsProName_tf.getText();  // 교수
						
		model.addRow(arr);
									
	// 추가 된 값 전역 list 에 추가
	addList.add(arr[0]);
	addList.add(dto_takecourse.get_crsNum());
    
    if(model.getRowCount()>1) {
    
    	for(int i = 0 ; i <= model.getRowCount()-2 ; i++) {
        	
          if(course_box.getSelectedItem().toString().equals(model.getValueAt(i, 0))){
             	 
               model.removeRow(model.getRowCount()-1);
                 
               //list 에서 중복되는 최신 값을 제거 하기 위한 로직. 
               //size()-index 1 부터 시작
               addList.remove(addList.size()-2);												
               addList.remove(addList.size()-2);
               } // - if-END
           }// - for -END
        } // -if(model.getRowCount()>1) -END
												
	}else if(course_box.getSelectedItem().equals(model.getValueAt(model.getRowCount(), 0))){
    JOptionPane.showMessageDialog(null, "동일한 과목을 선택하셨습니다!");

 

2. 등록( = commit ) 버튼 내용

 

  1) 유저가 선택한 최종 table 의 리스트 값을 2 개의 List 배열로 과목이름(crsName), 과목번호(crsNum)로

      나누어 담는다.

     - 앞 서 추가 버튼의 로직에서 List 에 담겨진 값들은 과목이름, 과목번호가 나열되어 있기 때문이다.

 

  2) 두 개의 List 배열을 for문을 이용하여 각각 DML 에 필요한 parameter 로 넘겨준다.

 

if(e.getSource() == commit ){ // -- [ 등록 ] button
			
		// addList 의 값을 홀수, 짝수 으로 나누어 crsName, crsNum 의 List 에 나누어 담는다.
        for(int i = 0 ; i < addList.size() ; i = i+2) {
        
             crsName.add(addList.get(i));
             
             }
             
        for(int i = 1 ; i < addList.size() ; i = i+2) {
        
             crsNum.add(addList.get(i));
             
             }
             
            // 두개의 List 배열을 각각 맞는 param 에 넣어준다.
            for(int i = 0 ; i < crsName.size() ; i++) {
           
            //Data 에 저장 로직           학번    과목 번호      과목 이름
            dao_std.insert_course_add( stdNum, crsNum.get(i), crsName.get(i)); 
                
			}
			
			JOptionPane.showMessageDialog(null, "등록 완료 되었습니다.!");

			
		}// [ 등록 ] button END --

 

도저히 코드 내용 정렬을 할 수가 없어서 원본 파일 을 첨부.