쌍용교육(JAVA)/JAVA
쌍용교육 -JAVA 수업 14일차 실습(Member,MemberMain)
구 승
2024. 4. 11. 22:43
package kr.s27.collection;
public class Member {
private String name;//이름
private int age;//나이
private String job;//직업
private String address;//주소
private String phone;//전화번호
public Member() {}
public Member(String name, int age, String job,
String address, String phone) {
this.name =name;
this.age =age;
this.job = job;
this.address = address;
this.phone = phone;
}
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 getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
package kr.s27.collection;
import java.util.ArrayList;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class MemberMain {
/*
* [실습]
* 메뉴:1.회원정보 입력, 2.회원정보 출력, 3.종료
* 메서드명 : 메뉴 callMenu()
* 회원정보 입력 register()
* 회원정보 출력 printUserInfo()
* 입력시 조건 체크 : 나이는 1살이상 입력 가능
*/
ArrayList<Member> list; //여기다가 멤버변수 선언하면서 같이 해도되고 아래처럼 생성자 안에 따로 해도 상관없음.
BufferedReader br;
public MemberMain() {
list = new ArrayList<Member>();
try {
br = new BufferedReader(new InputStreamReader(System.in) );
callMenu();
}catch(Exception e) {
e.printStackTrace();//예외 발생 시 스택 트레이스를 출력하는 메서드
}finally {
if(br !=null)//입력 스트림이 생성되지 않았거나 이미 닫혔을 경우 null이 될 수 있습니다.
try {br.close();
}catch(IOException e) {
}
}
}
//메뉴
public void callMenu() throws IOException{
while(true) {
System.out.println("메뉴:1.회원정보 입력, 2.회원정보 출력, 3.종료");
System.out.print("숫자 입력:");
try {
int num = Integer.parseInt(br.readLine());//입력 숫자를 받는 것
if(num ==1) {//회원정보 입력
register();
}else if(num == 2) {//회원정보 출력
printUserInfo();
}else if(num == 3) {//종료
System.out.println("프로그램 종료");
break;
}else {
System.out.println("잘못 입력했습니다.");
}
}catch(NumberFormatException e) {
System.out.println("숫자만 입력하세요!");
}
}
}
//회원정보 입력
public void register() throws IOException{
Member m = new Member();
System.out.print("이름 : ");
m.setName(br.readLine());
m.setAge(parseIntData("나이 : "));
System.out.print("직업 : ");
m.setJob(br.readLine());
System.out.print("주소 : ");
m.setAddress(br.readLine());
System.out.print("전화번호 : ");
m.setPhone(br.readLine());
//Member 객체를 ArrayList에 저장
list.add(m);
System.out.println("회원정보를 1건 추가했습니다.");
}
//나이 조건 체크
public int parseIntData(String item) throws IOException{//readLine을 쓰기위해선 IOException을 넣어줘야됨. 오류를 적기위해
while(true) {
System.out.print(item);//위에 register의 나이: 를 받아옴
try {
int age = Integer.parseInt(br.readLine());
if(age <=0) {
System.out.println("나이는 1살이상 입력 가능");
continue; //잘못 입력한 것이기 때문에 빠져나가지 못하도록 continue;
}
return age; //정상입력인 1살이상 입력시 탈출 하고 리턴하도록함.
}catch(NumberFormatException e) {
System.out.println("숫자만 입력 가능");//잘못입력하면 계속 돌도록 while 안에 넣은것
}
}
}
//회원정보 출력
public void printUserInfo() throws IOException{
System.out.println("회원목록 : 총 회원수 (" +list.size() + ")");
System.out.println("------------------------------------");
System.out.println("이름\\t나이\\t직업\\t주소\\t전화번호");
System.out.println("------------------------------------");
for(Member m : list) {
System.out.printf("%s\\t",m.getName());
System.out.printf("%d\\t",m.getAge());
System.out.printf("%s원\\t",m.getJob());
System.out.printf("%s\\t",m.getAddress());
System.out.printf("%s%n",m.getPhone());
}
}
public static void main(String[] args) {
new MemberMain();//MemberMain()(20번줄)생성자를 호출하는 객체를 생성
}
}
메뉴:1.회원정보 입력, 2.회원정보 출력, 3.종료
숫자 입력:1
이름 : 구승호히
나이 : 25
직업 : 개발자
주소 : 수원시
전화번호 : 01012345678
회원정보를 1건 추가했습니다.
메뉴:1.회원정보 입력, 2.회원정보 출력, 3.종료
숫자 입력:2
회원목록 : 총 회원수 (1)
------------------------------------
이름 나이 직업 주소 전화번호
------------------------------------
구승호히 25 개발자원 수원시 01012345678
메뉴:1.회원정보 입력, 2.회원정보 출력, 3.종료
숫자 입력:3
프로그램 종료