Daily coding
Java Basic : day 9 - Example : 회원관리DAO (회원정보 입출력 / 파일저장,읽기) 본문
Language/Java_basic
Java Basic : day 9 - Example : 회원관리DAO (회원정보 입출력 / 파일저장,읽기)
sunnnkim 2019. 11. 29. 18:05package day9.example01;
import java.util.Scanner;
public class mainClass {
public static void main(String[] args) {
// 메뉴는 여기서 사용하거나 DAO 클래스에 작성 하기
DAO test = new DAO();
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("1. 회원정보 입력");
System.out.println("2. 회원정보 삭제");
System.out.println("3. 회원정보 검색");
System.out.println("4. 회원정보 수정");
System.out.println("5. 회원 목록 보기");
System.out.println("6. 파일로 저장하기");
System.out.println("7. 회원정보 파일 불러오기");
System.out.println("0. 종료");
System.out.print(">> ");
int choice;
try {
choice = sc.nextInt();
} catch (Exception e) {
choice = -1;
}
if (choice == 1) {
test.userInsert();
} else if (choice == 2) {
test.userDelete();
} else if (choice == 3) {
test.userSelect();
} else if (choice == 4) {
test.userUpdate();
} else if (choice == 5) {
test.printAll();
} else if (choice == 6) {
try {
test.dataSave();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else if (choice == 7) {
test.dataLoad();
} else if (choice == 0) {
System.out.println("종료합니다.");
sc.close();
System.exit(0);
} else {
System.out.println("잘못 선택했습니다.");
}
}
}
}
package day9.example01;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Scanner;
public class FileClass {
private File file;
private String dir;
private String fileName;
public FileClass() {
file = new File("d:\\");
}
public FileClass(String dir,String fileName) {
file = new File("d:\\" + dir + "\\" + fileName+".txt");
this.dir = "d:\\" + dir;
this.fileName = fileName +".txt";
}
// 파일명이 있는지 확인하기
public boolean check(File file) {
if(file.exists()) {
return true;
}
return false;
}
// creat
public void create() throws Exception{
boolean exist = check(file);
if(exist) {
file.delete();
file.createNewFile();
}
else {
file = new File(dir);
file.mkdirs();
file = new File(dir+"\\" + fileName);
file.createNewFile();
}
}
// read
public void read() throws Exception{
boolean exist = check(file);
if(exist) {
FileReader fr = new FileReader(file);
BufferedReader bw = new BufferedReader(fr);
String str;
while((str = bw.readLine()) != null ){
System.out.println(str);
}
bw.close();
}else {
System.out.println("읽을 파일이 없습니다.");
}
}
// write
public void write(String str) throws Exception{
FileWriter fw = new FileWriter(file);
PrintWriter pw = new PrintWriter(fw);
pw.println(str);
fw.close();
}
}
// memberDAO 랑 연결해서 사용하기
// 만들 메소드
// creatfile
// read
// write
package day9.example01;
import java.util.Scanner;
// Data Access Object : 데이터에 접근하는 객체 (CRUD)0.2
/*
Database의 data에 접근을 위한 객체
Database에 접근을 하기위한 로직과 비즈니스 로직을 분리하기 위해서 사용
*/
public class DAO {
//TODO: Member Variables
Scanner sc = new Scanner(System.in);
private MemberDTO mList[]= new MemberDTO[10];
private FileClass file = new FileClass("sun","memberInfo");
private int listSize;
// 생성자 constructor
public DAO() {
for (int i = 0; i < mList.length; i++) {
mList[i] = new MemberDTO();
}
// 테스트용 데이터
mList[0].setId(0);
mList[0].setName("test1");
mList[0].setAge(11);
mList[0].setAddress("서울");
listSize++;
mList[1].setId(1);
mList[1].setName("test2");
mList[1].setAge(22);
mList[1].setAddress("부산");
listSize++;
mList[2].setId(2);
mList[2].setName("test3");
mList[2].setAge(33);
mList[2].setAddress("대구");
listSize++;
}
// numberId name age address
// TODO: CRUD
// insert
private void insert(MemberDTO m) {
// 데이터 추가
mList[listSize] = m;
listSize++;
}
// delete
private void delete(int index) {
mList[index] = null;
}
// select
private MemberDTO select(int index) {
return mList[index];
}
// update
private void update(int index, MemberDTO m) {
mList[index] = m;
}
// printAll
public void printAll() {
System.out.println("< 전체 회원목록 >");
int index = 1;
for (int i = 0; i < mList.length; i++) {
try {
if(mList[i].getName() != null) {
System.out.println("< "+ index +". "+mList[i].getName() + " 회원 >");
System.out.println("회원번호 : " + mList[i].getId());
System.out.println("나이: " + mList[i].getAge());
System.out.println("주소: " + mList[i].getAge());
index++;
}
}catch(Exception e) {
continue;
}
}
}
// 인덱스 찾기 : 키 - 이름
private int findIndex() {
System.out.print("회원이름을 입력하시오 : ");
String name = sc.next();
for (int i = 0; i < mList.length; i++) {
try {
if(mList[i].getName().equals(name)) {
return i;
}
} catch (Exception e) {
return -1;
}
}
return -1;
}
//user메소드 : 사용자의 입력값있음.
// user Insert
public void userInsert() {
if(listSize < 10) {
MemberDTO m = new MemberDTO();
System.out.println("< 회원 정보입력 >");
System.out.print("회원번호 : ");
int id = sc.nextInt();
System.out.print("이름 : ");
String name = sc.next();
System.out.print("나이 : ");
int age = sc.nextInt();
System.out.print("주소 : ");
String ad = sc.next();
m.setId(id);
m.setAge(age);
m.setName(name);
m.setAddress(ad);
insert(m);
}else {
System.out.println("저장할 공간이 꽉 찼습니다.");
}
}
//user Delete
public void userDelete() {
int index = findIndex();
if(index != -1) {
delete(index);
System.out.println("회원을 삭제했습니다.");
}else {
// 이름이 없는 경우
System.out.println("해당 회원이 없습니다.");
}
}
// userSelect 멤버 값 리턴하기
public void userSelect() {
int index = findIndex();
if(index != -1) { // 인덱스 있는 경우
MemberDTO m = select(index);
int id = m.getId();
int age = m.getAge();
String name = m.getName();
String address = m.getAddress();
System.out.println("< "+name + " 의 회원정보 >");
System.out.println(" - 회원번호 : " + id);
System.out.println(" - 이름 : " + name);
System.out.println(" - 나이 : " + age);
System.out.println(" - 주소 : " + address);
}
else {
System.out.println("회원이 없습니다.");
}
}
//user Update
public void userUpdate() {
int index = findIndex();
if(index != -1) {
// 이름 있는 경우
MemberDTO m = new MemberDTO();
m.setId(mList[index].getId());
System.out.println("< "+ mList[index].getName() + " 회원 정보수정 >");
System.out.println("회원번호 : " + m.getId() );
System.out.print("이름 : ");
m.setName(sc.next());
System.out.print("나이 : ");
m.setAge(sc.nextInt());
System.out.print("주소 : ");
m.setAddress(sc.next());
update(index, m);
System.out.println("수정되었습니다.");
}else {
// 이름이 없는 경우
System.out.println("해당 회원이 없습니다.");
}
}
// File method
public void dataSave() throws Exception{
file.create();
String str = " 번호\t 이름\t 나이\t 주소\n"
+ "-------------------------------------\n";
for (int i = 0; i < mList.length; i++) {
try {
if(mList[i].getName()!= null) {
str += mList[i].toString()+"\n";
}
file.write(str);
} catch (Exception e) {
System.out.println(str);
System.out.println("에러");
continue;
}
}
System.out.println("데이터를 저장했습니다.");
}
public void dataLoad() {
try {
file.read();
} catch (Exception e) {
System.out.println("읽을 파일이 없습니다.");
}
}
}
package day9.example01;
public class MemberDTO {
/*
DTO : Data Transfer Objecct
일반적인 DTO는 로직을 갖고 있지 않는 순수한 데이터 객체이며
속성과 그 속성에 접근하기 위한 getter, setter 메소드만 가진 클래스를 말합니다
*/
//번호 이름 나이 주소
private int id;
private String name;
private int age;
private String address;
// 기본생성자
public MemberDTO() {
}
//getter, setter
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
// toString
public String toString () {
return " "+ id + "\t" + name + "\t" + age+"\t"+ address;
}
}
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 10 - Collections Framwork : List - ArrayList (0) | 2019.11.29 |
---|---|
Java Basic : day 10 - 제네릭 Generic (0) | 2019.11.29 |
Java Basic : day 9 - Final (0) | 2019.11.29 |
Java Basic : day 9 - Inheritance 상속 4 : 예시 (0) | 2019.11.29 |
Java Basic : day 9 - Inheritance 상속 3 - Overriding 오버라이딩 (0) | 2019.11.29 |