연락처 관리 프로그램 [ver.5.0]
연락처 관리 프로그램 ver.5.0
DAO 인터페이스, DAOImple 클래스, Main 클래스, VO 클래스로 구성됨.
- 데이터 모델 : name, phone, email
- 기능 : 연락처 등록, 전체검색, 상세검색, 연락처 수정, 연락처 삭제
- UI 구조 :
- 업그레이드 내용 : 콘솔창이 아닌 GUI 제공
private void contactInsert() {
String name=txtName.getText();
String phone=txtPhone.getText();
String email=txtEmail.getText();
if(name.equals("")||phone.equals("") || email.equals("")) {
txtAreaLog.setText(">>저장할 연락처 정보를 입력하세요.");
return; //contactInsert() 종료
}
ContactVO vo=new ContactVO(name, phone, email);
int result=dao.insert(vo);
if(result==1) {
txtAreaLog.setText(">>연락처를 등록했습니다.");
clearTextFields();
}else {
txtAreaLog.setText(">>등록에 실패했습니다.");
}
}//end contactInsert()
null값이 입력되어도 list에 저장되던 것을 if문으로 막아줍니다. if문 안에서 return만 쓰면 if문을 담고있는 해당함수가 종료돼요
private void contactSelectAll() {
model.setRowCount(0);//table 초기화
ArrayList<ContactVO> list=dao.select();
int count=list.size();
StringBuffer buffer=new StringBuffer();
//문자열을 연결하기 위해 StringBuffer를 써서 append()를 씀.
for(int i=0;i<count;i++) {
buffer.append(i+"번>>"+list.get(i)+"\n");
records[0]=i; //NO
records[1]=list.get(i).getName();
records[2]=list.get(i).getPhone();
records[3]=list.get(i).getEmail();
model.addRow(records);
}
txtAreaInfo.setText(">>전체 연락처 ("+count+")"+"\n"+buffer.toString());
}//end contactSelectAll()
전체검색이 추가된 설정이 좀 많은데요. 정보제공뿐만 아니라 table도 구성해서 데이터의 추가/변경을 직관적으로 보여주려고 합니다.
먼저 list를 한줄씩 읽어서 전체 결과를 보여줘야 하는데 for문에서 setText()를 쓰면 텍스트가 덮어씌워져서 결국 맨 마지막 반복의 텍스트만 출력됩니다.
for문에서 문자열을 연결하려면 StringBuffer
를 사용해야해요.
전체 list table 사용하기
private String[] header= {"NO","이름","전화번호","이메일"}; private Object[] records = new Object[header.length]; private DefaultTableModel model; //테이블 형태를 만들 변수
- header와 데이터를 담을 record 변수 선언
recoreds의 인덱스 0번이 'NO'가 되는 것.model=new DefaultTableModel(HEADER,0); table = new JTable(model); table.setEnabled(false); scrollPane_2.setViewportView(table);
- 테이블을 구성하는 model과 table 초기화
- 테이블의 row값은 갱신해도 뒤에 연결되기때문에 전체검색을 누를때마다
setRowCount(0)
로 테이블을 초기화해줘야함
private void contactSelectByIndex() {
try {
int index=Integer.parseInt(txtIndex.getText());
int count=dao.select().size();
if(index>=0 && index<count) {
ContactVO vo=dao.select(index);
txtAreaInfo.setText(index+"번>>"+vo.toString());
}else {
txtAreaLog.setText(">>0부터 "+(count-1)+"까지만 입력하세요.");
}
} catch (NumberFormatException|IndexOutOfBoundsException e) {
txtAreaLog.setText(">>0 이상의 정수를 입력하세요.");
}
}//end contactSelectByIndex()
private void contactUpdate() {
try {
int index=Integer.parseInt(txtIndex.getText());
int count=dao.select().size();
if(index>=0 && index<count) {
String name=txtName.getText();
String phone=txtPhone.getText();
String email=txtEmail.getText();
if(name.equals("")||phone.equals("")||email.equals("")) {
txtAreaLog.setText(">>수정할 연락처 정보를 입력하세요.");
return; //contactUpdate() 종료
}
ContactVO vo = new ContactVO();
vo.setName(name);
vo.setPhone(phone);
vo.setEmail(email);
int result=dao.update(index, vo);
if(result==1) {
txtAreaLog.setText(">>연락처를 수정했습니다.");
clearTextFields();
}else {
txtAreaLog.setText(">>수정에 실패했습니다.");
}
}else {
txtAreaLog.setText(">>0부터 "+(count-1)+"까지만 입력하세요.");
}
} catch (NumberFormatException|IndexOutOfBoundsException e) {
txtAreaLog.setText(">>0 이상의 정수를 입력하세요.");
}
}//end contactUpdate()
private void contactDelete() {
try {
int index=Integer.parseInt(txtIndex.getText());
int count=dao.select().size();
if(index>=0 && index<count) {
int result=dao.delete(index);
if(result==1) {
txtAreaLog.setText(">>연락처를 삭제했습니다.");
}else {
txtAreaLog.setText(">>삭제에 실패했습니다.");
}
}else {
txtAreaLog.setText(">>0부터 "+(count-1)+"까지만 입력하세요.");
}
} catch (NumberFormatException|IndexOutOfBoundsException e) {
txtAreaLog.setText(">>0 이상의 정수를 입력하세요.");
}
}//end contactDelete()
향후 업데이트
- 저장할때마다 기존의 데이터를 덮어씌우는 file 저장 방식에서 데이터를 추가하는 DB 저장 방식 사용하기.
Author And Source
이 문제에 관하여(연락처 관리 프로그램 [ver.5.0]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yeddoen/연락처-관리-프로그램-ver.5.0저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)