관리 메뉴

moozi

9/11 haksa 본문

TIS_2018/응용sw2018_2기

9/11 haksa

moozi 2018. 9. 11. 10:26

import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

public class Haksa extends JFrame{
 JTextField idTxt=null;//학번
 JTextField nameTxt=null;//이름
 JTextField departmentTxt=null;//학과
 JTextField addressTxt=null;//주소
 JTextArea listTA=null;//목록
 
 JButton selectBtn=null;//목록버튼
 JButton insertBtn=null;//등록버튼
 JButton updateBtn=null;//수정버튼
 JButton deleteBtn=null;//삭제버튼
 JButton searchBtn=null;//검색버튼
 
 DefaultTableModel model=null;//테이블모델
 JTable table=null;//테이블
 
 Connection conn=null;//연결객체
 

 public Haksa() {
  this.setTitle("학사관리시스템");
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  //connection객체 생성
  try {
   Class.forName("com.mysql.jdbc.Driver");
   conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/sampledb?useSSL=false", "root", "1234");
  }catch(Exception e) {
   e.printStackTrace();
  }
  
  //윈도우 종료시 connection close
  this.addWindowListener(new WindowAdapter() {
   public void windowClosing(WindowEvent e){
     try {
      if(conn!=null){
       conn.close();
      }
     } catch (SQLException e1) {       
      e1.printStackTrace();
     }
    }
  });
  
  
  
  Container c=this.getContentPane();
  c.setLayout(new FlowLayout());
  
  c.add(new JLabel("학번"));
  idTxt=new JTextField(14);
  c.add(idTxt);
  
  searchBtn=new JButton("검색");
  searchBtn.addActionListener(new ActionListener() {

   @Override
   public void actionPerformed(ActionEvent arg0) {
    try {
     
     Statement stmt=conn.createStatement();
          
     ResultSet rs=stmt.executeQuery("select * from student where id='"+idTxt.getText()+"'");
     
     
     
     //목록초기화
//     listTA.setText("");
//     
//     listTA.append("학번\t");
//     listTA.append("이름\t");
//     listTA.append("학과\n");
//     listTA.append("===================================\n");
     model.setRowCount(0);
     if(rs.next()) {
      //System.out.print(rs.getString("id")+"\t");
      //System.out.print(rs.getString("name")+"\t");
      //System.out.print(rs.getString("dept")+"\n");
      
      idTxt.setText(rs.getString("id"));
      nameTxt.setText(rs.getString("name"));
      departmentTxt.setText(rs.getString("dept"));
      
//      listTA.append(rs.getString("id")+"\t");
//      listTA.append(rs.getString("name")+"\t");
//      listTA.append(rs.getString("dept")+"\n");
      
      String[] row=new String[3];
      row[0]=rs.getString("id");
      row[1]=rs.getString("name");
      row[2]=rs.getString("dept");
      model.addRow(row); 
     }
     rs.close();
     
    }catch(Exception e) {
     e.printStackTrace();
    }
    
   }});
  c.add(searchBtn);
  
  c.add(new JLabel("이름"));
  nameTxt=new JTextField(20);
  c.add(nameTxt);
  
  c.add(new JLabel("학과"));
  departmentTxt=new JTextField(20);
  c.add(departmentTxt);
  
  c.add(new JLabel("주소"));
  addressTxt=new JTextField(20);
  c.add(addressTxt);
  
  //listTA=new JTextArea(15,23);
  //c.add(new JScrollPane(listTA));
  
  String[] colName= {"학번","이름","학과"};
  model=new DefaultTableModel(colName,0);
  table=new JTable(model);
  table.setPreferredScrollableViewportSize(new Dimension(250,200));
  c.add(new JScrollPane(table));
  
  //테이블의 특정행을 선택할 때 textfield에 값 출력하기
  table.addMouseListener(new MouseListener() {

   @Override
   public void mouseClicked(MouseEvent arg0) {
    table=(JTable)arg0.getComponent();
    model=(DefaultTableModel)table.getModel();
    String id=(String)model.getValueAt(table.getSelectedRow(),0);
    String name=(String)model.getValueAt(table.getSelectedRow(),1);
    String dept=(String)model.getValueAt(table.getSelectedRow(),2);
    
    idTxt.setText(id);
    nameTxt.setText(name);
    departmentTxt.setText(dept);
   }

   @Override
   public void mouseEntered(MouseEvent arg0) {}
   @Override
   public void mouseExited(MouseEvent arg0) {}
   @Override
   public void mousePressed(MouseEvent arg0) {}
   @Override
   public void mouseReleased(MouseEvent arg0) {}
   });
  
  
  selectBtn=new JButton("목록");
  selectBtn.addActionListener(new ActionListener() {

   @Override
   public void actionPerformed(ActionEvent arg0) {
    showList();//목록출력
    
   }});
  c.add(selectBtn);
  insertBtn=new JButton("등록");
  insertBtn.addActionListener(new ActionListener() {

   @Override
   public void actionPerformed(ActionEvent arg0) {
    //필수입력항목 체크
    if(idTxt.getText().equals("")) {
     JOptionPane.showMessageDialog(null, "학번을 입력하세요", "알림", JOptionPane.INFORMATION_MESSAGE);
     return; //메서드종료
    }
    if(nameTxt.getText().equals("")) {
     JOptionPane.showMessageDialog(null, "이름을 입력하세요", "알림", JOptionPane.INFORMATION_MESSAGE);
     return; //메서드종료
    }
    if(departmentTxt.getText().equals("")) {
     JOptionPane.showMessageDialog(null, "학과를 입력하세요", "알림", JOptionPane.INFORMATION_MESSAGE);
     return; //메서드종료
    }
    
    
    try {
     Statement stmt=conn.createStatement();
     stmt.executeUpdate("insert into student values('"+idTxt.getText()+"','"+nameTxt.getText()+"','"+departmentTxt.getText()+"')");  
    }catch(Exception e) {
     //e.printStackTrace();
     JOptionPane.showMessageDialog(null, "등록실패", "알림", JOptionPane.ERROR_MESSAGE);
    }
    
    showList();//목록출력
    
   }});
  c.add(insertBtn);
  updateBtn=new JButton("수정");
  updateBtn.addActionListener(new ActionListener() {

   @Override
   public void actionPerformed(ActionEvent arg0) {
    try {
     
     Statement stmt=conn.createStatement();
     String sql="update student set "
       + " name='"+nameTxt.getText()+"',"
       + " dept='"+departmentTxt.getText()+"'"
       + " where id='"+idTxt.getText()+"'";
     stmt.executeUpdate(sql);
    }catch(Exception e) {
     e.printStackTrace();
    }
    
    showList();//목록출력
    
   }});
  
  
  c.add(updateBtn);
  deleteBtn=new JButton("삭제");
  deleteBtn.addActionListener(new ActionListener() {
   @Override
   public void actionPerformed(ActionEvent arg0) {
    //학번입력여부 확인
    if(idTxt.getText().equals("")) {
     JOptionPane.showMessageDialog(null, "학번을 입력하세요", "알림", JOptionPane.INFORMATION_MESSAGE);
     return; //메서드종료
    }
    //삭제여부 confirm
    int result=JOptionPane.showConfirmDialog(null, "삭제하시겠습니까?", "알림", JOptionPane.YES_NO_OPTION);
    if(result==JOptionPane.YES_OPTION) {
     //삭제처리
     try {
      Statement stmt=conn.createStatement();
      String sql="delete from student "       
        + " where id='"+idTxt.getText()+"'";
      stmt.executeUpdate(sql);     
     }catch(Exception e) {
      e.printStackTrace();
     }
     
     showList();//목록출력
    }
    
    //입력항목초기화
    idTxt.setText("");
    nameTxt.setText("");
    departmentTxt.setText("");
    
    
   }});
  c.add(deleteBtn);
  
  this.setSize(300, 500);
  this.setVisible(true);
 }
 
 public static void main(String[] args) {
  new Haksa();

 }
 
 //전체목록
 public void showList() {
  try {
   
   Statement stmt=conn.createStatement();
   ResultSet rs=stmt.executeQuery("select * from student");
   
   //목록초기화
//   listTA.setText("");
//   
//   listTA.append("학번\t");
//   listTA.append("이름\t");
//   listTA.append("학과\n");
//   listTA.append("===================================\n");
   
   //테이블 목록 초기화
   model.setRowCount(0);
   while(rs.next()) {
    //System.out.print(rs.getString("id")+"\t");
    //System.out.print(rs.getString("name")+"\t");
    //System.out.print(rs.getString("dept")+"\n");
    
//    listTA.append(rs.getString("id")+"\t");
//    listTA.append(rs.getString("name")+"\t");
//    listTA.append(rs.getString("dept")+"\n");
    
    String[] row=new String[3];
    row[0]=rs.getString("id");
    row[1]=rs.getString("name");
    row[2]=rs.getString("dept");
    model.addRow(row);      
   }
   rs.close();
   
  }catch(Exception e) {
   e.printStackTrace();
  }
 }

}

'TIS_2018 > 응용sw2018_2기' 카테고리의 다른 글

bookRent  (0) 2018.09.12
자바연습문제18  (0) 2018.09.11
9/10 haksa  (0) 2018.09.10
9/10 mysql  (0) 2018.09.10
자바연습문제17  (0) 2018.09.10
Comments