헬린코린이
solo project 본문
많이 부족하지만 열심히 해보았다.
package class01;
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
Member[] mdatas =new Member[3];
int mIndex=0;
Board[] bdatas = new Board[3];
int bIndex=0;
int NUM=101; //★ PK는 특수한 경우를 제외하고서는,
//중복을 혀용하지 않기에(유일하기에) 프로그램에서 자동으로 부여하는 것이 일반적이다.
// ex)특수한 경우 : ID
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("----------");
System.out.println("1. 회원가입");
System.out.println("2. 로그인");
System.out.println("3. 프로그램 종료");
System.out.println("----------");
System.out.print("입력) ");
int act=sc.nextInt();
if(act==1) {
// //1. id입력받음
// //단, ID가 중복되지않아야한다.
// // PW,NAME 중복되어도 ㄱㅊ
// System.out.print("아아디를 입력해주세요 : ");
// String num = sc.next();
// System.out.print("비민번호를 입력해주세요: ");
// String num1 = sc.next();
// System.out.print("이름을 입력해주세요");
// String name = sc.next();
// mdatas[mIndex]= new Member(num, num1, name);
// if(mdatas[mIndex].equals(mdatas[mIndex-1]))
// System.out.println("");
// //2. 회원생성-> 배열 추가
if(mIndex==mdatas.length) { //mdatas에 계속 추가하다가 mIndex가 mdatas.length즉 3개와 같아지면 실행
System.out.println(" 더이상 회원가입 불가능");
continue;
}
String id;
while(true) {
System.out.print("ID 입력) ");
id = sc.next();
boolean flag = true; //플래그 변수
for(int i=0; i<mIndex; i++ ) {//확인과정중에 ID 중복이 발견된다면,
if(mdatas[i].equals(id))
flag=false;
}
if(flag) {//중복되지 않으면
break;
}
System.out.println("ID 중복으로 회원가입 불가능\n다시 회원가입 부탁드립니다.");
}
System.out.print("PW 입력) ");
String pw = sc.next();
// 일반벅으로 비밀번호 등은 더블체크 ☆
System.out.print("NAME 입력) ");
String name = sc.next();
System.out.println(name+"회원가입완료!"); //다 통과 되면 회원가입 완료
mdatas[mIndex]=new Member(id, pw, name); //완료하면 id값과 pw값과 name값을 mIndex값에 맞게 저장.
mIndex++;//+1
}else if(act==2) {
if(mIndex==0) {
System.out.println("정보가 없습니다. 회원가입 부탁드립니다.");
continue; //정보가 없으면 처음으로 돌아간다.
}
// System.out.println("ID) ");
// String idi = sc.next();
// System.out.println("PW) ");
// String pwi = sc.next();
//
// for(int i=0; i< mdatas.length; i++) {
// if(mdatas[i].getId().equals(idi)) {
// if(mdatas[i].getpw().equals(pwi)) {
// System.out.println("통과!");
// break;
// }
// System.out.println("비밀번호가 틀립니다.");
// break;
// }
// }
System.out.print("ID 입력) ");
String id = sc.next();
System.out.print("PW 입력) ");
String pw = sc.next();
//이퀄스는 매개변수를 하나로 받기 때문에 2개의 값을 하나로 바꿔준다.
Member member = new Member(id, pw); //데이터를 2개이상 전달하고 싶은데, 메서드의 인자가 1개라서 제작한 객체
// 인스턴스화 시켜 2개의 매개변수를 가지고 있는 생성자를 클래스에 생성시키고
// 여기서 이퀄스로 원래 기본 저장되어있는 값과 새로 인스턴스화되서 원래 기본값하고 비교를 한다.
// flag변수 사용하고
// 클래스 오버라이딩 메서드에 member인스턴스와 비교할 수 있는 이퀄스를 else if로 새로 작성한다.
// 여기 메서드는 간단하게 여기에 추가할 거면 클래스에 더 추가하자.
int i=0; //아래 모든 곳에서 사용 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
boolean flag = true; //스위치 온 오프 체크용 //아이디 비밀번호 확인용
for(i=0; i<mIndex; i++) { //3이니까 3번 반복하지
if(mdatas[i].equals(member)) { //이퀄스 오버라이딩해서 확인 아이디와 비밀번호 확인 맞다면 i는 0만 추가되고 아래에서 i를 공통으로 사용 가능
// 여기서 부터 확인
// 로그인 완료 후 게시글 마이페이지 선택
//한번만 나오게 하려면 여기서 작성해야함
System.out.println("-------------");
System.out.println("1. 마이페이지");
System.out.println("2. 게시글 관리");
System.out.println("3. 이전페이지");
System.out.println("-------------");
System.out.print("입력) ");
int loafter = sc.nextInt();
if(loafter==1) {//마이페이지 비밀번호 변경
System.out.println("-------------");
System.out.println("1. 비밀번호 변경");
System.out.println("2. 회원 탈퇴");
System.out.println("3. 초기화면으로");
System.out.println("-------------");
int mypage = sc.nextInt();
if(mypage==1) {
System.out.println("바꾸실 비밀번호를 적어주세요");
System.out.print("입력) ");
String setpw = sc.next();
mdatas[i].setPw(setpw); //셋터 메서드 호출해서 pw변경
System.out.println("변경되었습니다.");
}else if(mypage==2) {
System.out.println("탈퇴하시면 30일동안 가입 불가능합니다. [Y/N]"); //재차확인
String withdrawal = sc.next();
if(withdrawal.equals("Y") || withdrawal.equals("y")) {// 비밀번호 한번 더 입력하면 그러면 회원 탈퇴 성공적
System.out.print("비밀번호를 입력해주세요) ");
String withdrawal_ = sc.next();
if(mdatas[i].getpw().equals(withdrawal_)) {
mdatas[i]=null; //삭제~
System.out.println("회원 탈퇴 되었습니다.");
mIndex--;//위에서 1이 추가된 상태로 돌아다니니까 회원 탈퇴했으면 mIndex값을 0으로 바꿈.
}
}
}else if(mypage==3) {
//초기화면으로 돌아감 아무것도 작성되어 있지 않아서.
}
}else if(loafter==2) { //게시글 관리
while(true) {
System.out.println("-------------");
System.out.println("1. 게시글 작성");
System.out.println("2. 게시글 출력");
System.out.println("3. 게시글 변경");
System.out.println("4. 게시글 삭제");
System.out.println("5. 로그아웃");
System.out.println("-------------");
System.out.print("입력) ");
int blletin = sc.nextInt();
if(blletin==1) { //게시글 작성
//mdatas[0]=new Member("kim", "1234", "김효경");
//mdatas[1]=new Member("hong", "1234", "홍길동");
// 현재 회원은 2명이 존재하는 상황
//로그인 성공에서 바로 시작해야하는데 뎁스가 깊어질까봐 꺼내서 작성
//System.out.println(mdatas[1]);
//현재 hong이 로그인한 상태라고 가정,
System.out.println("작성할 글 제목 입력) ");
String title = sc.next();
System.out.println("작성할 글 내용 입력) ");
String content = sc.next();
//String writer = mdatas[i].getname(); //겟터 메서드 호출해서 회원가입 할때 입력했던 name 값을writer변수에 저장하고
bdatas[bIndex]=new Board(NUM,title,content,mdatas[i].getname()); //로그인한 사람이 누군지 어떻게 알아보지?
// 글과 내용을 입력하면 Board에 NUM,제목,내용, name값을 저장한다. 보드에
NUM++;
bIndex++;
}else if(blletin==2) {
for(int e=0; e<bIndex; e++) {
System.out.println(bdatas[e]); //toString오버라이딩해서 출력하게 만듦
}
System.out.println();
bIndex--;
}else if(blletin==3) {
System.out.println("1. 글 제목 변경");
String titleset = sc.next();
System.out.println("2. 글 내용 변경");
String contentset = sc.next();
bdatas[i].setTitle(titleset); //제목 변경
bdatas[i].setContent(contentset); //내용 변경
}else if(blletin==4) {
System.out.println("게시글을 삭제하시겠습니까? [Y/N]"); //재차확인
String withdrawal = sc.next();
if(withdrawal.equals("Y") || withdrawal.equals("y")) {// 비밀번호 한번 더 입력하면 그러면 게시글 삭제.
System.out.print("비밀번호를 입력해주세요) ");
String withdrawal_ = sc.next();
if(mdatas[i].getpw().equals(withdrawal_)) {
bdatas[i]=null; //삭제~
System.out.println("게시글이 삭제 되었습니다.");
}
}
}
else if(blletin==5) { //게시글관리 종료
break;
}
}
}
if(act==3) {
//초기화면
}
//flag=false; //아이디와 비밀번호가 맞지 않다면 플래그변수를 false로 변경
//break;
}
}//for문 끝.
if(flag) {//로그인 실패 하면 처음으로 돌아가는 것이 아닌 로그인했던 상태로 돌아감
//System.out.println("로그인 실패");
continue;
}
}else {
System.out.println(" 프로그램 종료");
break;
}
}
}
}
class Member{
private String id; //PK
private String pw; //패스워드
private String name; //이름
@Override
public String toString() {
return this.id+"님은 "+this.name+"입니다. ["+this.pw+"]"; //비밀번호 찾는 toStirng정의
}
public String getId() {
return id;
}
public void setId(String id) {
this.id=id;
}
public String getpw() {
return pw;
}
public void setPw(String pw) {
this.pw=pw;
}
public String getname() {
return name;
}
public void setName(String name) {
this.name=name;
}
Member(String id, String pw){
this(id, pw, "로그인용 객체");
}
Member(String id, String pw, String name){
this.id=id;
this.pw=pw;
this.name=name;
}
@Override
public boolean equals(Object obj) { //메인에서 처리하지 않고 클래스에서 처리하는게 이퀄스에 목적
if(obj instanceof String) {
String id = (String)obj;
if(this.id.equals(id)) {
return true;
}
return false;
}
else if(obj instanceof Member) { //아이디 비밀번호 가지고 와서 비교
Member member = (Member)obj;
if(this.id.equals(member.id)) {
if(this.pw.equals(member.pw)) {
System.out.println("로그인 성공");
return true;
}
System.out.println("비밀번호가 다릅니다.");
return false;
}
System.out.println("1111");
return false;
}
return false;
}
}
class Board{
private int num; //Pk
private String title; //제목
private String content; //내용
private String writer; //member의 id //작성자
public int getnum() {
return num;
}
public void setNum(int num) {
this.num=num;
}
public String gettitle() {
return title;
}
public void setTitle(String title) {
this.title=title;
}
public String getcontent() {
return content;
}
public void setContent(String content) {
this.content=content;
}
public String getwriter() {
return writer;
}
public void setWriter(String writer) {
this.writer=writer;
}
@Override
public String toString() {
return this.num+" 번호\n제목 "+this.title+"\n내용 "+this.content+"\n작성자 "+this.writer; //게시글 오버라이딩
}
Board(int NUM, String title, String content, String writer){
this.num=NUM;
this.title=title;
this.content=content;
this.writer=writer;
}
}
Comments