본문 바로가기

IT&코딩/자바 프로젝트

자바 프로젝트 2일차 - Java 복습2

728x90
반응형

■ member

 

□ Member.java

 

package member;

public class Member {
	
	private String name;
	private String tel;
	
	public Member(String name, String tel) {
		this.name = name;
		this.tel = tel;
	}
	
	public String getName() {
		return name;
	}
	
	public void setTel(String tel) {
		this.tel = tel;
	}
	
	public String getTel() {
		return tel;
	}
	
	public void disp() {
		System.out.println(name + "님의 전화번호는 " + tel + "번입니다.");
	}
}

 

□ MemberPro.java

 

package member;

public interface MemberPro {
	public void input();
	public void view();
	public void delete();
	public void edit();
	public void exit();
}

 

□ MemberProImpl.java

 

package member;

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

/* 1. 입력 2. 출력 3. 삭제 4. 수정 5. 종료
 * 입력시, 이름과 전화번호를 입력받아 저장
 * 출력시, 이름과 전화번호를 화면에 보여준다.
 * 삭제시, 이름을 입력받아 해당하는 사람을 지워준다. 단, 없으면 없다고 알려준다.
 * 수정시, 이름을 입력받아 해당하는 사람의 전화번호를 수정한다. 단 없으면 없다고 알려준다.
 * 종료시, 프로그램을 종료한다.
*/

public class MemberProImpl implements MemberPro {
	
	private List<Member> list = null;
	private Scanner in = null;
	
	public MemberProImpl() {
		list = new ArrayList<>();
		in = new Scanner(System.in);
	}
	
	
	@Override
	public void input() {
		System.out.print("이름을 입력하세요 : ");
		String name = in.next();
		System.out.print("전화번호를 입력하세요 : ");
		String tel = in.next();
		Member mb = new Member(name, tel);
		list.add(mb);
	}

	@Override
	public void view() {
		for(Member mb : list) {
			mb.disp();
		}
	}

	@Override
	public void delete() {
		System.out.print("삭제할 회원의 이름을 입력하세요 : ");
		String name = in.next();
		for(Member mb : list) {
			if(name.equals(mb.getName())) {
				System.out.println(name + "님을 삭제하겠습니다.");
				list.remove(mb);
				return;
			}
		}
		System.out.println(name + "님은 저회 회원이 아닙니다.");
	}

	@Override
	public void edit() {
		System.out.print("수정할 회원의 이름을 입력하세요 : ");
		String name = in.next();
		for(Member mb : list) {
			if(name.equals(mb.getName())) {
				System.out.println("현재 전화번호는" + mb.getTel() + "번입니다.");
				System.out.print("수정할 번호를 입력 : ");
				String tel = in.next();
				mb.setTel(tel);
				return;
			}
		}
		System.out.println(name + "님은 저희 회원이 아닙니다.");
	}

	@Override
	public void exit() {
		System.out.println("프로그램을 종료합니다.");
		System.exit(0);
	}
}

 

□ MemberMain.java

 

package member;

import java.util.Scanner;

public class MemberMain {

	public static void main(String[] args) {
		
		MemberPro pro = new MemberProImpl();
		Scanner in = new Scanner(System.in);
		
		while(true) {
			System.out.println("1. 입력 2. 출력 3. 삭제 4. 수정 5. 종료 : ");
			int select = in.nextInt();
			switch(select) {
			case 1: pro.input(); break;
			case 2: pro.view(); break;
			case 3: pro.delete(); break;
			case 4: pro.edit(); break;
			case 5: pro.exit(); break;
			default:
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}

	}

}

 


 

■ fileMemebr

 

□ Member.java

 

package fileMember;

public class Member {
	
	private String name;
	private String tel;
	
	public Member(String name, String tel) {
		this.name = name;
		this.tel = tel;
	}
	
	public String getName() {
		return name;
	}
	
	public void setTel(String tel) {
		this.tel = tel;
	}
	
	public String getTel() {
		return tel;
	}
	
	public void disp() {
		System.out.println(name + "님의 전화번호는 " + tel + "번입니다.");
	}
}

 

□ MemberPro.java

 

package fileMember;

public interface MemberPro {
	public void input();
	public void view();
	public void delete();
	public void edit();
	public void exit();
	public void save();
	public void load();
}

 

□ MemberProImpl.java

 

package fileMember;

import java.io.*;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Scanner;

public class MemberProImpl implements MemberPro {
	
	private Hashtable<String, Member> ht = null;
	private Scanner in = null;
	private File file = null; 
	
	public MemberProImpl() {
		ht = new Hashtable<>();
		in = new Scanner(System.in);
		File dir = new File("C:\\myProject\\myJAVA\\testJava");
		file = new File(dir, "data.txt");
	}
	
	@Override
	public void input() {
		System.out.print("이름을 입력하세요 : ");
		String name = in.next();
		System.out.print("전화번호를 입력하세요 : ");
		String tel = in.next();
		Member mb = new Member(name, tel);
		ht.put(name, mb); 
	}

	@Override
	public void view() {
		Enumeration<String> enu = ht.keys();
		while(enu.hasMoreElements()) {
			String key = enu.nextElement();
			Member mb = ht.get(key);
			mb.disp();
		}
	}

	@Override
	public void delete() {
		System.out.print("삭제할 회원의 이름을 입력하세요 : ");
		String name = in.next();
		
		if(ht.containsKey(name)) {
			ht.remove(name);
			System.out.println(name + "님을 삭제하였습니다.");	
		} else {
			System.out.println(name + "님은 저회 회원이 아닙니다.");	
		}
	}

	@Override
	public void edit() {
		System.out.print("수정할 회원의 이름을 입력하세요 : ");
		String name = in.next();
		
		if(ht.containsKey(name)) {
			Member mb = ht.get(name);
			System.out.println("현재 전화번호는" + mb.getTel() + "번입니다.");
			System.out.print("수정할 번호를 입력 : ");
			String tel = in.next();
			mb.setTel(tel);
		} else {
			System.out.println(name + "님은 저희 회원이 아닙니다.");
		}
	}

	@Override
	public void exit() {
		System.out.println("프로그램을 종료합니다.");
		System.exit(0);
	}

	@Override
	public void save() {
		
		// 1byte
		FileOutputStream fos = null;
		BufferedOutputStream bos = null;
		DataOutputStream dos = null;
		
		try {
			fos = new FileOutputStream(file, true);
			bos = new BufferedOutputStream(fos);
			dos = new DataOutputStream(bos);
			
			Enumeration<String> enu = ht.keys();
		
			while(enu.hasMoreElements()) {
				String key = enu.nextElement();
				Member mb = ht.get(key);
				String data = mb.getName() + "@" + mb.getTel();
				dos.writeUTF(data);
			}
			dos.close();
		} catch(IOException e) {
				System.out.println("파일 저장 중 오류 발생!");
				e.printStackTrace();
			}
	}
	@Override
	public void load() {
		FileInputStream fis = null;
		BufferedInputStream bis = null;
		DataInputStream dis = null;
		ht.clear();
		try {
			fis = new FileInputStream(file);
			bis = new BufferedInputStream(fis);
			dis = new DataInputStream(bis);
			while(true) { 
				String data = dis.readUTF();
				String[] data2 = data.split("@");
				Member mb = new Member(data2[0], data2[1]);
				ht.put(data2[0], mb);
			}
		
		} catch(EOFException e) { // 데이터가 없을 때 나타나는 Exception 
			System.out.println("파일업로드 끝");
		} catch(IOException e) {
			System.out.println("파일업로드시 문제 오류 발생!");
		}
	}
}

 

□ HashMemberMain.java

 

package fileMember;

import java.util.Scanner;

public class HashMemberMain {

	public static void main(String[] args) {
		
		MemberPro pro = new MemberProImpl();
		Scanner in = new Scanner(System.in);
		
		while(true) {
			System.out.println("1. 입력 2. 출력 3. 삭제 4. 수정 5. 저장 6. 로드 7. 종료 : ");
			int select = in.nextInt();
			switch(select) {
			case 1: pro.input(); break;
			case 2: pro.view(); break;
			case 3: pro.delete(); break;
			case 4: pro.edit(); break;
			case 5: pro.save(); break;
			case 6: pro.load(); break;
			case 7: pro.exit(); break;
			default:
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		} 
	}
}

 


 

■ fileMemebr2

 

□ Member.java

 

package fileMember2;

public class Member {
	
	private String name;
	private String tel;
	
	public Member(String name, String tel) {
		this.name = name;
		this.tel = tel;
	}
	
	public String getName() {
		return name;
	}
	
	public void setTel(String tel) {
		this.tel = tel;
	}
	
	public String getTel() {
		return tel;
	}
	
	public void disp() {
		System.out.println(name + "님의 전화번호는 " + tel + "번입니다.");
	}
}

 

 

□ MemberPro.java

 

package fileMember2;

public interface MemberPro {
	public void input();
	public void view();
	public void delete();
	public void edit();
	public void exit();
	public void save();
	public void load();
}

 

□ MemberProImpl.java

 

 

package fileMember2;

import java.io.*;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Scanner;

public class MemberProImpl implements MemberPro {
	
	private Hashtable<String, Member> ht = null;
	private Scanner in = null;
	private File file = null; 
	
	public MemberProImpl() {
		ht = new Hashtable<>();
		in = new Scanner(System.in);
		File dir = new File("C:\\myProject\\myJAVA\\testJava");
		file = new File(dir, "data.txt");
	}
	
	@Override
	public void input() {
		System.out.print("이름을 입력하세요 : ");
		String name = in.next();
		System.out.print("전화번호를 입력하세요 : ");
		String tel = in.next();
		Member mb = new Member(name, tel);
		ht.put(name, mb); 
	}

	@Override
	public void view() {
		Enumeration<String> enu = ht.keys();
		while(enu.hasMoreElements()) {
			String key = enu.nextElement();
			Member mb = ht.get(key);
			mb.disp();
		}
	}

	@Override
	public void delete() {
		System.out.print("삭제할 회원의 이름을 입력하세요 : ");
		String name = in.next();
		
		if(ht.containsKey(name)) {
			ht.remove(name);
			System.out.println(name + "님을 삭제하였습니다.");	
		} else {
			System.out.println(name + "님은 저회 회원이 아닙니다.");	
		}
	}

	@Override
	public void edit() {
		System.out.print("수정할 회원의 이름을 입력하세요 : ");
		String name = in.next();
		
		if(ht.containsKey(name)) {
			Member mb = ht.get(name);
			System.out.println("현재 전화번호는" + mb.getTel() + "번입니다.");
			System.out.print("수정할 번호를 입력 : ");
			String tel = in.next();
			mb.setTel(tel);
		} else {
			System.out.println(name + "님은 저희 회원이 아닙니다.");
		}
	}

	@Override
	public void exit() {
		System.out.println("프로그램을 종료합니다.");
		System.exit(0);
	}

	@Override
	public void save() {
		
		FileWriter fw = null;
		BufferedWriter bw = null;
		PrintWriter pw = null;
		
		try {
			
			fw = new FileWriter(file);
			bw = new BufferedWriter(fw);
			pw = new PrintWriter(bw);
			
			Enumeration<String> enu = ht.keys();
			
			while(enu.hasMoreElements()) {
				String key = enu.nextElement();
				Member mb = ht.get(key);
				pw.print(mb.getName() + "@" + mb.getTel());
				pw.flush();
			}
			pw.close();
			
		} catch(IOException e) {
				System.out.println("파일 저장 중 오류 발생!");
				e.printStackTrace();
			}
	}
	@Override
	public void load() {
		
		FileReader fr = null;
		BufferedReader br = null;
		ht.clear();
		try {
			fr = new FileReader(file);
			br = new BufferedReader(fr);
			
			while(true) {
				String data = br.readLine();
				if(data == null) break; // EOFException 필요없음.
				
				String[] data2 = data.split("@");
				Member mb = new Member(data2[0], data2[1]);
				ht.put(data2[0], mb);
			}
		
		} catch(IOException e) {
			System.out.println("파일업로드시 문제 오류 발생!");
		}
	}
}

 

□ HashMemberMain.java

 

package fileMember2;

import java.util.Scanner;

public class HashMemberMain {

	public static void main(String[] args) {
		
		MemberPro pro = new MemberProImpl();
		Scanner in = new Scanner(System.in);
		
		while(true) {
			System.out.println("1. 입력 2. 출력 3. 삭제 4. 수정 5. 저장 6. 로드 7. 종료 : ");
			int select = in.nextInt();
			switch(select) {
			case 1: pro.input(); break;
			case 2: pro.view(); break;
			case 3: pro.delete(); break;
			case 4: pro.edit(); break;
			case 5: pro.save(); break;
			case 6: pro.load(); break;
			case 7: pro.exit(); break;
			default:
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
	}
}

 


 

■ fileMemebr3

 

□ Member.java

 

package fileMember3;

import java.io.Serializable;

public class Member implements Serializable{
	
	private String name;
	private String tel;
	
	public Member(String name, String tel) {
		this.name = name;
		this.tel = tel;
	}
	
	public String getName() {
		return name;
	}
	
	public void setTel(String tel) {
		this.tel = tel;
	}
	
	public String getTel() {
		return tel;
	}
	
	public void disp() {
		System.out.println(name + "님의 전화번호는 " + tel + "번입니다.");
	}
}

 

□ MemberPro.java

 

package fileMember3;

public interface MemberPro {
	public void input();
	public void view();
	public void delete();
	public void edit();
	public void exit();
	public void save();
	public void load();
}

 

□ MemberProImpl.java

 

package fileMember3;

import java.io.*;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Scanner;

public class MemberProImpl implements MemberPro {
	
	private Hashtable<String, Member> ht = null;
	private Scanner in = null;
	private File file = null; 
	
	public MemberProImpl() {
		ht = new Hashtable<>();
		in = new Scanner(System.in);
		File dir = new File("C:\\myProject\\myJAVA\\testJava");
		file = new File(dir, "data.txt");
	}
	
	@Override
	public void input() {
		System.out.print("이름을 입력하세요 : ");
		String name = in.next();
		System.out.print("전화번호를 입력하세요 : ");
		String tel = in.next();
		Member mb = new Member(name, tel);
		ht.put(name, mb); 
	}

	@Override
	public void view() {
	
		Enumeration<String> enu = ht.keys();
		while(enu.hasMoreElements()) {
			String key = enu.nextElement();
			Member mb = ht.get(key);
			mb.disp();
		}
	}

	@Override
	public void delete() {
		System.out.print("삭제할 회원의 이름을 입력하세요 : ");
		String name = in.next();
		
		if(ht.containsKey(name)) {
			ht.remove(name);
			System.out.println(name + "님을 삭제하였습니다.");	
		} else {
			System.out.println(name + "님은 저회 회원이 아닙니다.");	
		}
	}

	@Override
	public void edit() {
		System.out.print("수정할 회원의 이름을 입력하세요 : ");
		String name = in.next();
		
		if(ht.containsKey(name)) {
			Member mb = ht.get(name);
			System.out.println("현재 전화번호는" + mb.getTel() + "번입니다.");
			System.out.print("수정할 번호를 입력 : ");
			String tel = in.next();
			mb.setTel(tel);
		} else {
			System.out.println(name + "님은 저희 회원이 아닙니다.");
		}
	}

	@Override
	public void exit() {
		System.out.println("프로그램을 종료합니다.");
		System.exit(0);
	}

	@Override
	public void save() {
		
		FileOutputStream fos = null;
		BufferedOutputStream bos = null;
		ObjectOutputStream oos = null;
		
		try {
			
			fos = new FileOutputStream(file);
			bos = new BufferedOutputStream(fos);
			oos = new ObjectOutputStream(bos);
			
			oos.writeObject(ht);
			oos.close();
			
		} catch(IOException e) {
				System.out.println("파일 저장 중 오류 발생!");
				e.printStackTrace();
			}
	}
	@Override
	public void load() {
		
		FileInputStream fis = null;
		BufferedInputStream bis = null;
		ObjectInputStream ois = null;
		
		try {
			fis = new FileInputStream(file);
			bis = new BufferedInputStream(fis);
			ois = new ObjectInputStream(bis);
			ht = (Hashtable)ois.readObject();
		} catch(ClassNotFoundException e) {
			System.out.println("해당 클래스가 존재하지 않습니다.");
		} catch(Exception e) {
			System.out.println("파일업로드시 문제 오류 발생!");
		}
	}
}

 

728x90
반응형