Daily coding

Java Basic : day 10 - Example01: 회원관리 ArrayList로 작성 본문

Language/Java_basic

Java Basic : day 10 - Example01: 회원관리 ArrayList로 작성

sunnnkim 2019. 11. 29. 18:26
package day10.example;

import java.util.ArrayList;
import java.util.Scanner;


public class DAO {

	//TODO: Member Variables
	Scanner sc = new Scanner(System.in);
	
	private ArrayList<MemberDTO> mlist;	
	private FileClass file = new FileClass("sun","memberInfo");
	
	
	// 생성자 constructor
	public DAO() {
		
		mlist = new ArrayList<MemberDTO>();	
		// 테스트용 데이터
		MemberDTO m1= new MemberDTO(0,"test1",11,"서울"); 
		MemberDTO m2= new MemberDTO(1,"test2",22,"대전"); 
		MemberDTO m3= new MemberDTO(2,"test3",33,"대구"); 
		MemberDTO m4= new MemberDTO(3,"test4",44,"부산"); 
		mlist.add(m1);
		mlist.add(m2);
		mlist.add(m3);
		mlist.add(m4);
		
	}
	
	
	// 	numberId name age address
	// TODO: CRUD
	// insert
	private void insert(MemberDTO m) {
		// 데이터 추가
		mlist.add(m);
//		listSize++;
		
	}
	// delete
	private void delete(int index) {
		mlist.remove(index);
	}
	
	// select 
	private MemberDTO select(int index) {	
		return mlist.get(index);
	}
	
	// update
	private void update(int index, MemberDTO m) {
		mlist.set(index,m);
	}
	
	// printAll
	public void printAll() {
		System.out.println("< 전체 회원목록 >");
		int index = 1;
		for (int i = 0; i < mlist.size(); i++) {
					System.out.println("< "+ index +". "+mlist.get(i).getName() + " 회원 >");
					System.out.println("회원번호 : " + mlist.get(i).getId());
					System.out.println("나이: " + mlist.get(i).getAge());
					System.out.println("주소: " + mlist.get(i).getAddress());
					index++;
		}
	}
	
	
	// 인덱스 찾기 : 키 - 이름 
	private int findIndex() {
		System.out.print("회원이름을 입력하시오 : ");
		String name = sc.next();
		for (int i = 0; i < mlist.size(); i++) {
				if(mlist.get(i).getName().equals(name)) {
					return i;
				}
		}
		return -1;
		
	}

	
	
	//user메소드 : 사용자의 입력값있음.
	
	// user Insert
	public void userInsert() {
			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);
	}
	
	//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.get(index).getId());
			m.setName(mlist.get(index).getName());
			System.out.println("< "+ m.getName() + " 회원 정보수정 >");
			System.out.println("회원번호 : " + m.getId() );
			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.size(); i++) {
			str += mlist.get(i).toString()+"\n";
		}
		System.out.println("데이터를 저장했습니다.");
		file.write(str);

		
	}
	
	public void dataLoad() {
		try {
			file.read();
		} catch (Exception e) {
			System.out.println("읽을 파일이 없습니다.");
		}
	}
	
	
	
}
​
package day10.example;

import java.util.Scanner;


public class mainClass {
public static void main(String[] args) {
	

		// TODO Auto-generated constructor stub
		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 day10.example;

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 day10.example;

public class MemberDTO {
	
	//번호 이름 나이 주소
	private int id;
	private String name;
	private int age;
	private String address;
	
	// 기본생성자
	public MemberDTO() {
		
	}
	public MemberDTO(int id, String name, int age, String address) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.address = address;
	}
	
	//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;
	}
	
	
	
}