Java 20221114-17

신래은·2022년 12월 18일

JAVA

목록 보기
19/22

DAY 20-23

ER Diagram

Code

service / BoardService

package service;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
import data.BoardData;

public class BoardService {
    public static Scanner s = new Scanner(System.in);
    public static final String BOARD_PATH = "files/board.dat";
    public static List<BoardData> boardList = new ArrayList<BoardData>();
    public static BoardData selectedpost = null;
    public static Integer num = 1;
    public static Integer view=0;

    // 게시글 작성
    public static void addBoard () {
        System.out.println("========== 게시글 작성 =========");
        System.out.println("작성자 : " + MemberService.loginMember.getId());
        String writer = MemberService.loginMember.getId();
        System.out.print("제목 : ");
        String title = s.nextLine();
        System.out.print("내용 : ");
        String content = s.nextLine();

        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date rDate = new Date();
        String reg_date = f.format(rDate);
        Date mDate = new Date();  
        String mod_date = f.format(mDate);
        Integer view = 0;
        Integer status = 0;

        // boardList에 새로운 게시글 작성
        BoardData b = new BoardData(num, writer, content, title, reg_date, mod_date, view, status);
        boardList.add(b);
        // boardnum 증가
        num++;
        System.out.println("게시글이 등록되었습니다.");

        // list의 정보를 저장하는 작업을 list의 길이만큼 수행
        List<BoardData> blist = new ArrayList<BoardData>();
        for (BoardData bData : boardList) {
            blist.add(bData);
        }
        // blist의 정보를 파일에 저장
        try {
            BoardService.BoardDataSave(BoardService.BOARD_PATH, blist);
            // BoardService.BoardDataLoad(BoardService.BOARD_PATH);
        }
        catch (Exception e) {e.printStackTrace();}
    }

    // 게시물 목록 출력
    public static void showBoardList () {
        System.out.println("==================게시판===================");
        if (boardList.size() == 0) {
            System.out.println("등록된 게시물이 없습니다.");
            return;
        }
        else {
           for (BoardData b : boardList) {
            // 게시글이 삭제되지 않았다면 출력
            if(b.getStatus() == 0) {
                System.out.println(b);
            }
           }
        }
    }

    // 게시물 데이터 초기화
    public static void BoardInfoInitialize() throws Exception {
        BufferedReader reader = null;
        try{
         reader = new BufferedReader(
            new InputStreamReader(
                new FileInputStream(
                    new File(BoardService.BOARD_PATH)
                ), "UTF-8"  
            )
        ); 
        while (true) {
            String line = reader.readLine();
            if(line == null) {break;}
            String[] split = line.split(",");
            Integer num =  Integer.parseInt(split[0]);
            String writer = split[1];
            String title = split[2];
            String content = split[3];
            String reg_date = split[4]; 
            String mod_date = split[5];
            Integer view = Integer.parseInt(split[6]);
            Integer status = Integer.parseInt(split[7]);

            BoardData b = new BoardData (num, writer, content, title, reg_date, mod_date, view, status);
            boardList.add(b);
        }
        // 만약 게시판에 글이 없다면, 게시글 번호는 1로 지정
        if(boardList.size() == 0) {num =1;}
        // 게시글이 있다면, 게시글 번호는
        // 마지막 게시글 (인덱스는 게시글 갯수-1)의 번호 +1 로 설정한다.
        else {num = boardList.get(boardList.size()-1).getNum() + 1;}
        }
        catch (Exception e) {
            e.printStackTrace(); // 예외 정보 표시
        }
    }

    // 게시판 데이터를 파일에 저장
    public static void BoardDataSave(String filepath, List<BoardData> BoardList) throws Exception{
        BufferedWriter writer = new BufferedWriter(
            new OutputStreamWriter(
                new FileOutputStream(
                    new File(filepath)
                ),"UTF-8"
            )
        );
        for (BoardData b :boardList) {
            writer.write(b.makeDataString());
        }
        writer.close();
    }

    // 파일에 저장된 데이터를 list에 로드
    public static List<String> BoardDataLoad (String filepath) throws Exception {
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(
                new FileInputStream(
                    new File(filepath)
                ) , "UTF-8"
            )
        );
        List<String> BoardDataList = new LinkedList<String>();
        while(true) {
            String line = reader.readLine();
            if(line == null)break;
            BoardDataList.add(line);
        }
         reader.close();
        return BoardDataList;
    }

    // 선택된 게시글 수정
    public static void updateBoard () throws Exception {
        // 수정할 게시글 선택
        BoardService.selectPost();
        // 만약 게시글 작성자와 로그인한 사람 아이디가 같다면
        if (selectedpost.getWriter().equals(MemberService.loginMember.getId())) {
        BoardService.detailBoardInfo();
        System.out.print("변경할 내용 : ");
        String update_content = s.nextLine();
        // 선택된 게시글의 내용을 수정
        selectedpost.setContent(update_content);
        // 선택된 게시글의 수정일자를 수정
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date mDate = new Date();  
        String mod_date = f.format(mDate);
        selectedpost.setMod_date(mod_date);

        List<BoardData> blist = new ArrayList<BoardData>();
        for (BoardData bData : boardList) {
            blist.add(bData);
        }
        // 게시판 데이터를 파일에 저장
        BoardService.BoardDataSave(BoardService.BOARD_PATH, boardList);
        }
        else {System.out.println("작성자만 글을 수정할 수 있습니다.");}
    }

    // 게시글 삭제
    public static void deleteBoard() throws Exception {
        // 삭제할 게시글 선택
        BoardService.selectPost();
        // 만약 게시글 작성자와 로그인한 사람의 아이디가 같다면
        if(selectedpost.getWriter().equals(MemberService.loginMember.getId())){
        if (selectedpost != null) { 
        System.out.print("해당 글을 삭제하시겠습니까? (y / n) : ");
        String confirm = s.nextLine();
        if(confirm.equalsIgnoreCase("y")) {
            // list에서 해당 글 삭제
            BoardService.selectedpost.setStatus(1); 
            System.out.println("해당글을 삭제했습니다.");
            
            List<BoardData> blist = new ArrayList<BoardData>();
            for (BoardData bData : boardList) {
                blist.add(bData);
            }
            BoardService.BoardDataSave(BoardService.BOARD_PATH, boardList);
            
        }
        else {System.out.println("해당글 삭제를 취소했습니다.");}}}
        else {System.out.println("작성자만 글을 삭제할 수 있습니다.");}
        return;
    }

    // id가 일치하는 게시글 출력
    public static void searchBoard () {
        // 로그인한 멤버의 아이디를 변수로 지정
        String id = MemberService.loginMember.getId();
        // 리스트에 있는 수많큼 실행
        for(BoardData b : boardList ) {
            // 리스트의 글에 writer와 id가 일치하면 출력
            // 게시글이 삭제되지 않은 상태일때
            if(b.writer.equals(id) && b.getStatus() == 0) {
                System.out.println(b);
            }
        }
        
        return;
    }

    // 게시글 선택하기
    public static void selectPost() {
        System.out.print("선택할 게시글 번호 : ");
        Integer post = s.nextInt();
        s.nextLine();
        // 게시글의 수만큼 실행
            for(BoardData b : boardList) {
                // 게시글의 숫자와 선택한 수가 같으면, selectedpost에 글정보 저장
                // 게시글이 삭제되지 않은 상태일때
                if (b.getNum() == post && b.getStatus() == 0){
                    selectedpost = b;
                    System.out.println(b.getTitle() + " 게시물이 선택되었습니다.");
                }
            }
            // 만약 게시글이 없다면 문장 출력
            if(selectedpost == null) {
                System.out.println("선택하신 게시글은 존재하지 않습니다.");
                // return;
            }
    }

    // 선택된 게시글 정보 출력
    public static BoardData getSelectedPost() {
        return selectedpost;
    }

    // 선택된 게시글 상세 정보 출력
    public static void detailBoardInfo () {
        // 선택한 게시글의 조회수 +1하기
        selectedpost.setView(selectedpost.getView()+1);
        System.out.println("제목 : "+selectedpost.title+" / 작성자 : "+selectedpost.writer+" / 등록일 : "+selectedpost.reg_date+" / 수정일 : "+selectedpost.mod_date +
        " / 조회수 : " + selectedpost.view);
        System.out.println("---------------------------- 내용 ---------------------------");
        System.out.println(selectedpost.content);
        System.out.println();
        // 글 번호와 일치하는 댓글 보여주기
        CommentService.showComment();
    }
}

service / CommentService


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Date;
import java.util.LinkedList;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import data.CommentData;

public class CommentService {
    public static List<CommentData> commentList = new ArrayList<CommentData>();
    public static Scanner s =  new Scanner(System.in);
    public static final String COMMENT_PATH = "files/comment.dat";
    public static Integer cNum;
    public static CommentData selectedComment = null;
    
      
    // 댓글 입력
    public static void addComment () {
        System.out.println("========== 댓글 =========");
        if(BoardService.selectedpost == null) {
            return;
        }
        System.out.println("작성자 :" + MemberService.loginMember.getId());
        String writer = MemberService.loginMember.getId();
        System.out.print("내용 : ");
        String content = s.nextLine();

        Integer numOfNotice = BoardService.selectedpost.getNum();

        SimpleDateFormat f = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
        Date rDate = new Date();
        String reg_date = f.format(rDate);
        Integer status = 0;

        // list에 새로운 comment추가
        CommentData c = new CommentData(cNum, numOfNotice , writer, content, reg_date, status);
        commentList.add(c);
        System.out.println("댓글이 저장되었습니다.");
        
        // list의 정보를 저장하는 작업을 수행
        List<CommentData> clist = new ArrayList<CommentData>();
        for (CommentData cData : commentList) {
            clist.add(cData);
        }
        // commentlist의 글을 파일에 저장
        try {
            CommentService.CommentDataSave(CommentService.COMMENT_PATH, clist);
        }
        catch (Exception e) {e.printStackTrace();}
        cNum++;
    }

    // 댓글 데이터 초기화
    public static void commentDataInitialize(){
        
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(
                new InputStreamReader(
                    new FileInputStream(
                        new File(CommentService.COMMENT_PATH)
                    ), "UTF-8"
                )
            );
            while (true) {
                String line = reader.readLine();
                if(line == null) {
                    break;
                }
                String[] split = line.split(",");
                Integer cNum = Integer.parseInt(split[0]);
                Integer numOfNotice = Integer.parseInt(split[1]);
                String writer = split[2];
                String content = split[3];
                String reg_date = split[4];
                Integer status = Integer.parseInt(split[5]);
                
                CommentData c = new CommentData(cNum, numOfNotice, writer, content, reg_date, status);
                commentList.add(c);
            }
            // 만약 게시판에 글이 없다면, 게시글 번호는 1로 지정
            if(commentList.size() == 0) {cNum =1;}
            // 게시글이 있다면, 게시글 번호는
            // 마지막 게시글 (인덱스는 게시글 갯수-1)의 번호 +1 로 설정한다.
            else {cNum = commentList.get(commentList.size()-1).getCNum() + 1;}
        }
        catch (Exception e) {
            e.printStackTrace(); // 예외 정보 표시
        }
    }
    
    // 글 번호와 일치하는 댓글 보여주기
    public static void showComment (){
        Integer num = BoardService.selectedpost.getNum();    
        // commentdata를 전부 돌려서 게시글번호와 일치하는 댓글 찾아서
        for (CommentData c :commentList) {
            // status가 0인 댓글만 출력
            if(c.getNumOfNotice() == num && c.getStatus()==0) {
                // 출력
                System.out.println(c);
            }
        }
    }
    
      // id가 일치하는 댓글 출력
    public static void searchComment () {
    // 로그인한 멤버의 아이디를 변수로 지정
        String id = MemberService.loginMember.getId();
    // 리스트에 있는 수많큼 실행
        for(CommentData c : commentList ) {
        // 리스트의 글에 writer와 id가 일치하면 출력
        // status가 0이면 출력
            if(c.writer.equals(id) && c.getStatus() == 0) {
            System.out.println(c);
            }
        }
        return;
    }
    
    // comment하나 선택
    public static void selectComment () {
        System.out.print("선택할 댓글 번호 : ");
        Integer comment = s.nextInt();
        s.nextLine();
        // 댓글의 수만큼 실행
            for(CommentData c : commentList) {
                // 댓글의 숫자와 선택한 수가 같으면, selectedpost에 글정보 저장
                if (c.getCNum() == comment){
                    selectedComment = c;
                    System.out.println( " 댓글이 선택되었습니다.");
                }
            }
            // 만약 게시글이 없다면 문장 출력
            if(selectedComment == null) {
                System.out.println("선택하신 댓글은 존재하지 않습니다.");
                return;
            }
    }

    // 선택한 댓글의 정보를 가져오는 메서드
    public static CommentData getselectedComment(){
        return selectedComment;
    }

    // 선택한 댓글을 삭제하는 메서드
    public static void deleteComment () throws Exception {
        CommentService.selectComment();
        // 만약 게시글 작성자와 로그인한 사람의 아이디가 같다면
        if (selectedComment.getWriter().equals(MemberService.loginMember.getId())) {
            // 선택된 댓글을 삭제
            if (selectedComment != null) { 
            System.out.print("해당 글을 삭제하시겠습니까? (y / n) : ");
            String confirm = s.nextLine();
            if(confirm.equalsIgnoreCase("y")) {
                // list에서 해당 댓글 삭제
                CommentService.selectedComment.setStatus(1);
                System.out.println("해당 댓글을 삭제했습니다.");
                List<CommentData> clist = new ArrayList<CommentData>();
                for (CommentData cData : commentList) {
                    clist.add(cData);
                }
                CommentService.CommentDataSave(CommentService.COMMENT_PATH, commentList);
            }
            else {System.out.println("해당글 삭제를 취소했습니다.");}}}
        else {System.out.println("작성자만 글을 삭제할 수 있습니다.");}
        return;
    }

    // 댓글 데이터 파일에 저장
    public static void CommentDataSave(String filepath, List<CommentData> commentList) throws Exception{
        BufferedWriter writer = new BufferedWriter(
            new OutputStreamWriter(
                new FileOutputStream(
                    new File(filepath)
                ),"UTF-8"
            )
        );
        for (CommentData c :commentList) {
            writer.write(c.makeDataString());
        }
        writer.close();
    }

    // 파일에 저장된 댓글 데이터 읽어오기
    public static List<String> CommentDataLoad (String filepath) throws Exception {
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(
                new FileInputStream(
                    new File(filepath)
                ) , "UTF-8"
            )
        );
        List<String> CommentDataList = new LinkedList<String>();
        while(true) {
            String line = reader.readLine();
            if(line == null)break;
            CommentDataList.add(line);
        }
         reader.close();
        return CommentDataList;
    }
}

service / MemberService

package service;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

import data.MemberData;
import util.AESAlgorithm;

public class MemberService {
    public static Scanner s = new Scanner(System.in);
    public static List<MemberData> memberList = new LinkedList<MemberData>();
    public static MemberData loginMember = null; // 로그인한 사람 정보 가져오기위해 초기화.
    public static final String MEMBER_PATH = "files/member.dat";

    // 회원가입
    public static void memberJoin() throws Exception {
       
        System.out.println("========== 회원 가입 =========");
       
        System.out.print("아이디 : ");
        String id  = s.nextLine();
        // 아이디 길이 유효성 체크
        if (id.length() < 6) {
            System.out.println("아이디는 6자 이상 입력하세요.");
            return;
        }
        // 아이디 중복확인
        if(isDuplicatedId(id)) {  // isDuplicatedId =  true 이면, 중복된 아이디가 있음.
            System.out.println(id + "은(는) 이미 가입된 아이디 입니다.");
            return;
        }
        // isDuplicatedId =  false 이면, 중복된 아이디가 없고, 다음과정으로 진행.
        System.out.print("비밀번호 : ");
        // 비밀번호 길이 유효성 체크
        String pwd = s.nextLine();
        if (pwd.length() < 6) {
            System.out.println("비밀번호는 6자 이상 입력하세요.");
            return;
        }
        String enc_pwd = AESAlgorithm.Encrypt(pwd);

        System.out.print("가입자 명 : ");
        String name = s.nextLine();
        // 이름 유효성 체크
        if (name.length() == 0 ) {
            System.out.println("이름을 다시 입력해주세요.");
            return;
        }

        System.out.print("생년월일(yyyy-MM-dd) : ");
        String date = s.nextLine();
        DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
        Date birth = (Date)f.parse(date);
        // 이름과 생년월일이 같은지 체크해서, 동인인물 체크
        if(isDuplicatedPerson(name, birth)) { // isDuplicatedPerson =  true 이면, 이미 가입된 사람임.
            System.out.println(name + "은(는) 이미 회원가입 되어 있습니다.");
            return;
        }
        // 상태는 기본적으로 0
        // isDuplicatedPerson =  false 이면, 가입한 이력이 없고, 다음과정으로 진행.
        Integer status = 0;
        // memberList에 새로운 데이터 저장
        MemberData m = new MemberData (id, enc_pwd, name, birth, status);
        memberList.add(m);

        // 새로운데이터가 저장된 리스트를 멤버 데이터...
        List<MemberData> mlist = new ArrayList<MemberData>();
        for (MemberData mData : memberList) {
            mlist.add(mData);
        }
        System.out.println("회원 등록이 완료되었습니다.");
        // 저장된 데이터를 파일에 저장
        MemberService.MemberDataSave(MemberService.MEMBER_PATH, mlist);
        MemberService.MemberDataLoad(MemberService.MEMBER_PATH);
        }
    
    // 멤버 데이터 초기화
    public static void memberDataInitialize() {
        BufferedReader reader = null;
        try{
         reader = new BufferedReader(
            new InputStreamReader(
                new FileInputStream(
                    new File(MemberService.MEMBER_PATH)
                ), "UTF-8"  
            )
        ); 
        while (true) {
            String line = reader.readLine();
            if(line == null) {break;}
            String[] split = line.split(",");
            String id =  split[0];
            String pwd = split[1];
            String name = split[2];
            DateFormat f= new SimpleDateFormat("yyyy-MM-dd");
            Date birth = (Date)f.parse(split[3]); 
            Integer status = Integer.parseInt(split[4]);
   
            MemberData m = new MemberData(id, pwd, name, birth, status);
            memberList.add(m);
        }
        }
        catch (Exception e) {}
    }
    
    // 로그인한 사람의 정보 가져오기
    public static MemberData getloginData () {
        return loginMember;
    } 

    // 로그인
    public static void login() throws Exception {
        System.out.println("========== 로그인 =========");
        System.out.print("아이디 : ");
        String id = s.nextLine();
        System.out.print("비밀번호 : ");
        String pwd = AESAlgorithm.Encrypt(s.nextLine());
        // 멤버 리스트에서 아이디와 비밀번호가 동시에 일치하는 사람이 있다면
            for(MemberData m : memberList) {
                if (m.getId().equals(id) && m.getPwd().equals(pwd)){
                    // 멤버 상태가 1이면 탈퇴
                    if (m.getStatus() == 1) { 
                    System.out.println("이미 탈퇴한 멤버입니다."); continue;}
                    // 로그인 멤버 변수에 그 데이터 저장
                    loginMember = m;
                    System.out.println(m.getId() + "님 로그인 되었습니다.");
                }
            }
            // 멤버 변수가 비어있다면 일치하는 데이터 없으므로,
            if(loginMember == null) {
                System.out.println("아이디 또는 비밀번호가 잘못되거나 없는 회원입니다.");
            }
            return;
    }

    // 로그아웃
    public static void logout(){
        // 로그인된 멤버 정보를 null값으로 지정
        loginMember = null;
        System.out.println("로그아웃 되었습니다.");
    }

    // 회원 탈퇴
    public static void deleteMember () throws Exception {
        if (loginMember != null) {
            for(MemberData m : memberList) {
                if (m.id.equals(loginMember.id) && m.pwd.equals(loginMember.pwd))  {
                loginMember = m;
                // 탈퇴를 confirm받고
                System.out.print(loginMember.id + "님 탈퇴하시겠습니까? (y / n) : ");
                String confirm = s.nextLine();
                if (confirm.equalsIgnoreCase("y")) {
                loginMember.setStatus(1);
                List<MemberData> mlist = new ArrayList<MemberData>();
                for (MemberData mbData : memberList) {
                    mlist.add(mbData);
                }
                System.out.println("탈퇴 완료 했습니다.");
                // 수정된 데이터를 파일에 다시 저장
                MemberService.MemberDataSave(MemberService.MEMBER_PATH, memberList);
                MemberService.logout();
                break;
                }
                else {System.out.println("회원 탈퇴를 취소했습니다.");}    
            }
            }
        }        
            if(loginMember == null) {
                System.out.println("아이디 또는 비밀번호가 잘못되거나 없는 회원입니다.");
            }
        }

    // 로그인한 멤버의 정보 출력
    public static void showLoginInfo(){
        if (loginMember != null) {
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println("아이디 :" + getloginData().id);
        System.out.println("비밀번호 :" + getloginData().pwd);
        System.out.println("이름 :" + getloginData().name);
        System.out.println("생년월일 :" + f.format(getloginData().birth));
        }
    }

    // 회원 정보 수정 (비밀번호)
    public static void changeMemberInfo () throws Exception{
        if (getloginData() != null) {
        System.out.println("========== 회원정보 수정 =========");
        System.out.print("변경할 비밀번호 : ");
        String mod_pwd = AESAlgorithm.Encrypt(s.nextLine());
        if (mod_pwd.length() < 6) {
             System.out.println("비밀번호는 6자 이상 입력하세요.");
             return;
        }
        loginMember.setPwd(mod_pwd);
        List<MemberData> mlist = new ArrayList<MemberData>();
        for (MemberData mbData : memberList) {
            mlist.add(mbData);
        }
        MemberService.MemberDataSave(MemberService.MEMBER_PATH, memberList);
        // MemberService.MemberDataLoad(MemberService.MEMBER_PATH);
    }
}  

    // 멤버데이터를 파일에 저장
    public static void MemberDataSave(String filepath, List<MemberData> MemberList) throws Exception{
        BufferedWriter writer = new BufferedWriter(
            new OutputStreamWriter(
                new FileOutputStream(
                    new File(filepath)
                ),"UTF-8"
            )
        );
        for (MemberData m :memberList) {
            writer.write(m.makeDataString());
        }
        writer.close();
    }

    // 파일에 저장된 멤버 데이터를 읽어오기
    public static List<String> MemberDataLoad (String filepath) throws Exception {
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(
                new FileInputStream(
                    new File(filepath)
                ) , "UTF-8"
            )
        );
        List<String> memberDataList = new LinkedList<String>();
        while(true) {
            String line = reader.readLine();
            if(line == null)break;
            memberDataList.add(line);
        }
         reader.close();
        return memberDataList;
    }

    // 회원 목록 출력
    public static void showMemberList (){
        if(memberList.size() == 0) {
            System.out.println("등록된 회원이 없습니다.");
            return;
        }
        else {
            for(MemberData m :memberList) {
                // status가 정상인 멤버들의 목록만 출력
                if(m.getStatus() ==0 ) {
                System.out.println(m);
                }
            }
        }
    }

    // 아이디 중복 검사
    public static Boolean isDuplicatedId (String id){
        for (MemberData m : memberList) {
            if(id.equals(m.id)) {
                return true;
            }
        }
        return false; // 중복아이디가 없으면 false
    }

    // 인물 중복 검사
    public static Boolean isDuplicatedPerson (String name, Date birth){       
        for (int i=0; i<memberList.size(); i++) {
            if((name.equals(memberList.get(i).name)) && (birth.equals(memberList.get(i).birth))) {
                return true; //이름과 생일이 동시에 같다면 true 
            }
        }
        return false; // 이름과 생일이 동시에 같지 않아서 false
    }
}

MainClass

import java.util.Scanner;
import service.BoardService;
import service.CommentService;
import service.MemberService;

public class Main {
    public static Scanner s = new Scanner(System.in);
    public static void main(String[] args) throws Exception {
        MemberService.memberDataInitialize();
        BoardService.BoardInfoInitialize();
        CommentService.commentDataInitialize();

        while (true) {
            System.out.print(" 1.게시판 / 2.로그인 / 3.회원가입 / 0.종료 : ");
            
            int sel = s.nextInt();
            s.nextLine();
            if(sel == 0) {
                break;           
            }           
            else if(sel ==1){
                BoardService.showBoardList();
                System.out.println("상세보기는 로그인 후 이용하실 수 있습니다.");
                System.out.println("");
            } 
            else if(sel == 2){
                MemberService.login(); 
                if (MemberService.getloginData() != null) {
                    LoginMode();
                }
            }
            else if (sel == 3) {
                try {MemberService.memberJoin();}
                catch (Exception e) {}
            }
            else {
                System.out.println("잘못된 메뉴번호입니다.");
            }
        }
    }

    public static void LoginMode() throws Exception {
        while (true) {
            System.out.print("1.게시판 / 2. 회원정보 / 0.로그아웃 : ");
            int sel2 = s.nextInt();
            s.nextLine();
            // 종료, 로그아웃
            if (sel2 == 0) {
                MemberService.logout();
                break;
            }
            // 게시글 관련
            else if (sel2 == 1) {
                while (true) {
                System.out.println("================================ 게시판 ================================");
                // 글 목록 보여주기
                BoardService.showBoardList();
                System.out.print("1.글 쓰기 / 2.글 상세보기 / 0.이전메뉴 : ");
                int sel_note = s.nextInt();
                s.nextLine();
                // 종료
                if(sel_note == 0) {
                    break;
                }
                // 글쓰기
                else if (sel_note == 1) {
                    try {BoardService.addBoard(); }
                    catch(Exception e) {}
                    break;
                }
                // 글 상세보기, 댓글 달기
                else if (sel_note == 2) {
                    // 상세히 볼 글 선택
                    BoardService.selectPost();
                    // 선택한 게시글의 상세정보(댓글 포함) 표시
                    BoardService.detailBoardInfo();
                    // 선택한 게시글에 댓글을 달 것인지 묻기
                    while(true) {
                        System.out.print("1.댓글 달기 / 0. 이전메뉴 : ");
                        int sel_com = s.nextInt();
                        s.nextLine();
                        if (sel_com == 0) {break;}
                        // 댓글 달기
                        else if(sel_com == 1) {
                            CommentService.addComment();
                        }
                        else {System.out.println("잘못된 메뉴 번호입니다.");}
                    }
                }
                // 잘못된 번호 입력 시 출력
                else {
                    System.out.println("잘못된 메뉴 번호입니다.");
                    break;
                }
            }
        }
          
            // 회원정보관련 메뉴
            else if(sel2 ==2){
                while (true) {
                System.out.println("===============================================================");
                System.out.print("1.회원 정보 수정 / 2.내가 쓴 글 관리 /  0.이전메뉴 : ");
                int sel_mem = s.nextInt();
                s.nextLine();
                // 종료
                if(sel_mem== 0) {
                    break;
                }
                // 회원 정보 수정
                else if (sel_mem == 1) {
                    // 로그인한 멤버가 있다면 (당연히 있음, 로그인 모드)
                    if (MemberService.getloginData() != null) {
                    // 메뉴명 출력
                    System.out.println("---------------- 회원정보 수정 ---------------");
                    // 로그인한 멤버의 정보 표시
                    MemberService.showLoginInfo();
                    // 메뉴 출력
                    System.out.print("1.비밀번호 수정 / 2.회원 탈퇴 / 0.이전메뉴 : ");
                    int sel_mem_mod = s.nextInt();
                    s.nextLine();
                    if (sel_mem_mod == 0) {break;}

                    // 로그인한 멤버의 비밀번호 수정
                    else if (sel_mem_mod == 1) {
                        MemberService.changeMemberInfo();
                    }
                    
                    // 로그인한 멤버의 status 1로 변경 -탈퇴
                    else if (sel_mem_mod == 2) {
                        MemberService.deleteMember();
                    }
                }
                    break;
                }
                // 내가 쓴 글 관리
                else if(sel_mem == 2) {
                    // 내가 쓴 게시글 보여주기
                    System.out.println("-------------------- 회원님의 게시글 -------------------");
                    BoardService.searchBoard();
                    // 내가 쓴 댓글 보여주기
                    System.out.println("-------------------- 회원님의 댓글 -------------------");
                    CommentService.searchComment();
                    // 메뉴 출력
                    System.out.print(" 1.내 게시글 수정 / 2.내 게시글 삭제 / 3.내 댓글 삭제 /  0.이전 메뉴 : ");
                    int mod_sel = s.nextInt();
                    s.nextLine();
                    // 종료
                    if (mod_sel == 0) {break;}
                    // 글 수정
                    if (mod_sel == 1) {
                        // 내가 쓴 글 목록 보여주고,
                        System.out.println("");
                        BoardService.searchBoard();
                        // 글 수정
                        BoardService.updateBoard();
                        break;
                    }
                    // 글 삭제
                    else if (mod_sel == 2) {
                        // 내가 쓴 글 목록 보여주고,
                        System.out.println("");
                        BoardService.searchBoard();
                        // 글 삭제
                        BoardService.deleteBoard();
                        break;
                    }
                    // 댓글 삭제
                    else if (mod_sel == 3) {
                        // 내가 쓴 댓글 목록 보여주고
                        System.out.println("");
                        CommentService.searchComment();
                        // 선택한 댓글 삭제
                        CommentService.deleteComment();
                    }
                    // 잘못된 번호 입력 시 출력
                    else {
                        System.out.println("잘못된 메뉴 번호입니다.");
                        break;
                    }
                }
                // 잘못된 메뉴 번호
                else {
                    System.out.println("잘못된 메뉴 번호입니다.");
                    break;
                }
            }
        }
        // 잘못된 메뉴번호
        else {
                    System.out.println("잘못된 메뉴번호입니다.");
            }
        }
    }
}

0개의 댓글