BASHA TECH

#연락처 프로그램 220724 본문

Assignments/#1

#연락처 프로그램 220724

Basha 2022. 7. 24. 18:11
728x90

기존에 만들어 둔 건 너무 보기 복잡시럽고 한눈에 파악이 안되서... 거의 싸그리 다 뜯어 고쳤다.. 클래스도 좀 줄이고... 일단 코딩하자 해놔서... 객체 설정 클래스에 다 때려넣은 함수들도 다시 다른 클래스에 재배치하고... 헤헤....

그래서 최종은  

lib > ContactsVO, MemeberEdit 클래스로

main> MainProgram만 돌아가게끔... 그렇게 했다..ㅎ

난관인 건... 번호를 받아서... 수정 삭제가 가능하게끔 했는데... 이걸 int가 아니라 string문자열로 입력 받아서.. 중복 이름이 나올 때 숫자를 부여하는 방식으로 코드를 짜야하는데... 그 부분이 막히고 있다.

일단 지금까지 짜놓은 코드는 돌아가긴 함.. 그거 수정해서 오늘 제출해야지..

>MainProgram.java

package main;

import java.util.Scanner;

import lib.ContactsVO;
import lib.MemberEdit;

public class MainProgram {
	
	private static Scanner scan = new Scanner(System.in);
	
	public static void main(String[] args) {
		MemberEdit edit = new MemberEdit();
		
		boolean menu = true;
		
		while(menu) {
			scan.reset();
			
			//main 메뉴가 무슨 선택을 실행하더라도 다시 보여져야 함
			System.out.println("===========================");
			System.out.println("다음 메뉴 중 하나를 선택하세요.");
			System.out.println("===========================");
			
			System.out.println("1. 회원 추가");
			System.out.println("2. 회원 목록 보기");
			System.out.println("3. 회원 정보 수정하기");
			System.out.println("4. 회원 삭제");
			System.out.println("5. 회원 종료");
			
			String menuNum = scan.next();
//	        		회원 추가
			 	if("1".equals(menuNum)) { 
	                edit.addInfo(makeInfo());
//	    	        회원 목록 보기
	            }else if("2".equals(menuNum)) {
	                edit.showInfo();
//	    	        회원 정보 수정하기
	            }else if("3".equals(menuNum)) {
	                System.out.println("수정할 정보의 고유 번호를 입력해 주세요.");
	                int person = scan.nextInt();
	                edit.updateInfo(makeInfo(), person);
//	    	        회원 삭제
	            }else if("4".equals(menuNum)) {
//	                System.out.println("삭제할 회원의 고유 번호를 입력해 주세요.");
	                System.out.println("삭제할 회원의 이름을 입력해 주세요.");
	                edit.delInfo(scan.nextInt());
//	    	        회원 종료
	            }else if("5".equals(menuNum)) {
	                menu = false;
	            }else {
	                System.out.println("해당 메뉴는 없는 메뉴입니다. 다시 선택 바랍니다.");
	                continue;    
	            }
	    }
	        scan.close();
	}
		
		public static ContactsVO makeInfo() {
			 scan.reset();
		        ContactsVO person = new ContactsVO();
		        
		        System.out.println("등록할 회원의 정보를 입력하세요.");
		        System.out.print("이름 : ");
		        person.setName(scan.next());
		        
		        System.out.println();
		 
		        System.out.print("전화번호  : ");
		        person.setTel(scan.next());
		 
		        System.out.println();
		 
		        System.out.print("종류 (ex.가족, 친구, 기타)  : ");
		        person.setRelationship(scan.next());
		        
		        System.out.println();    
		        
		        return person;
		}
}

ContactsVO.java

package lib;

public class ContactsVO {
//	  고유 번호
	private int person;
	
//    이름
    private String name;
        
//    전화 번호
    private String tel;
 
//    종류
    private String relationship;

//    각 멤버 변수 별 get set
    // 고유 번호 get set    
    public int getPerson() {
        return person;
    }
 
    public void setPerson(int person) {
        this.person = person;
    }
    // 이름 get set  
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
    // 전화 번호 get set  
    public String getTel() {
        return tel;
    }
 
    public void setTel(String tel) {
        this.tel = tel;
    }
    // 종류 get set  
    public String getRelationship() {
        return relationship;
    }
 
    public void setRelationship(String relationship) {
        this.relationship = relationship;
    }
     
    public void showInfo() {
        System.out.println("이름 : " + this.name);
        System.out.println("전화번호 : " + this.tel);
        System.out.println("종류 (ex.가족, 친구, 기타) : "+ this.relationship);
    }
}

MemberEdit.java

package lib;

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

public class MemberEdit {
	//개인정보 저장할 List
    private List<ContactsVO> ContactList = new ArrayList<ContactsVO>(); 
    //개인별 고유번호 
    private int person = 0;
 
    /**
     * 추가
     * @param ContactsVO
     * @return
     */
    public int addInfo(ContactsVO contact) {
        //성공여부 return 변수
        int ret = 0;
 
        try {
            //고유번호 지정
            contact.setPerson(++this.person);
            
            //List에 객체를 추가 해 준다.
            this.ContactList.add(contact);
            
        }catch(Exception e) {
            System.out.println("정보 추가 중 에러가 발생하였습니다." + "\n" + e.getMessage());
            //return값 변경(0 : 정상, 1 : 에러) 
            ret = 1;
        }
        
        return ret;
    }
    
    /**
     * 삭제
     * @param person
     * @return
     */
    public int delInfo(int person) {
        //성공여부 return 변수
        int ret = 0;
        
        try {
            //List개수만큼 for문
            for(int index=0; index < this.ContactList.size(); index++) {
                ContactsVO tempContactsVO = this.ContactList.get(index);
 
                if(person == tempContactsVO.getPerson()) {
                    //고유번호를 비교하여 같은 번호의 정보를 삭제한다.
                    this.ContactList.remove(index);
                    break;
                }
                
                if(index == this.ContactList.size()-1) {
                    ret = 2;
                }
            }
        }catch(Exception e) {
            System.out.println("정보 삭제 중 에러가 발생하였습니다." + "\n" + e.getMessage());
            //return값 변경(0 : 정상, 1 : 에러, 2 : 해당정보없음) 
            ret = 1;
        }
        
        return ret;
    }
    
    /**
     * 수정
     * @param person
     * @param contact
     * @return
     */
    public int updateInfo(ContactsVO ContactsVO, int person) {
        //성공여부 return 변수
        int ret = 0;
        
        try {
            //List개수만큼 for문
            for(int index=0; index < this.ContactList.size(); index++) {
                ContactsVO tempContactsVO = this.ContactList.get(index);
 
                if(person == tempContactsVO.getPerson()) {
                    ContactsVO.setPerson(person);
 
                    //고유 번호를 비교하여 같은 번호의 정보를 수정한다.
                    this.ContactList.remove(index);
                    this.ContactList.add(index, ContactsVO);
                    break;
                }
                
                if(index == this.ContactList.size()-1) {
                    ret = 2;
                }
            }
        }catch(Exception e) {
            System.out.println("정보 수정 중 에러가 발생하였습니다." + "\n" + e.getMessage());
            //return값 변경(0 : 정상, 1 : 에러, 2 : 해당정보없음) 
            ret = 1;
        }
        
        return ret;
    }
    
    
    public void showInfo() {
        for(int index=0; index < this.ContactList.size(); index++) {
    		System.out.println("===========================");
            System.out.println("고유번호 : " + this.ContactList.get(index).getPerson()
                                +"\n이름 : " + this.ContactList.get(index).getName()
                                +"\n전화번호 : " + this.ContactList.get(index).getTel()
                                +"\n종류 (ex.가족, 친구, 기타) : " + this.ContactList.get(index).getRelationship()
                                );
    		System.out.println("===========================");            
        }
    }
}
728x90
반응형

'Assignments > #1' 카테고리의 다른 글

#연락처 프로그램 220714  (0) 2022.07.15
Comments