
model인 UserDTO 만들기
package model;
public class UserDTO {
private int id;
private String username;
private String password;
private String nickname;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public boolean equals(Object o){
if (o instanceof UserDTO){
UserDTO u = (UserDTO) o;
return id == u.id;
}
return false;
}
public UserDTO(UserDTO origin){
id = origin.id;
username = origin.username;
password = origin.password;
nickname = origin.nickname;
}
public UserDTO(){
}
}
UserController 만들기

package Controller;
import model.UserDTO;
import java.util.ArrayList;
public class UserController {
private ArrayList<UserDTO> list;
// ArrayLis<제네릭> : ArrayList 가 어떤것을 모아두었는지 적는 것
private int nextId;
public UserController(){
list = new ArrayList<>();
nextId = 1;
}
// CRUD
public void insert(UserDTO userDTO){
userDTO.setId(nextId++);
list.add(userDTO);
}
public UserDTO selectById(int id){
for (UserDTO u : list){
if (u.getId() == id){
return new UserDTO(u);
}
}
return null;
}
public void update(UserDTO userDTO){
list.set(list.indexOf(userDTO), userDTO);
}
public void delete(int id){
UserDTO u = new UserDTO();
u.setId(id);
list.remove(u);
}
public boolean validateUsername(String username){
if (username.equalsIgnoreCase("X")){
return false;
}
for(UserDTO u : list){
if(username.equalsIgnoreCase(u.getUsername())){
return false;
}
}
return true;
}
public UserDTO auth(String username, String password){
for (UserDTO u : list){
if (username.equalsIgnoreCase(u.getUsername()) && password.equals(u.getPassword())){
return new UserDTO(u);
}
}
return null;
}
}
UserViewer 만들기

package View;
import Controller.UserController;
import model.UserDTO;
import util.ScannerUtil;
import java.util.Scanner;
public class UserViewer {
private final Scanner SCANNER;
private UserController userController;
private UserDTO logIn = null;
public UserViewer(){
SCANNER = new Scanner(System.in);
userController = new UserController();
}
public void showIndex(){
String message = "1. 로그인 2. 회원가입 3. 종료";
while (true){
int userChoice = ScannerUtil.nextInt(SCANNER, message);
if (userChoice == 1){
auth();
if (logIn != null){
showMenu();
}
} else if (userChoice == 2){
register();
} else if (userChoice == 3) {
System.out.println("사용해주셔서 감사합니다.");
break;
}
}
}
private void register(){
String message;
message = "사용하실 아이디를 입력해주세요.";
String username = ScannerUtil.nextLine(SCANNER, message);
while (!userController.validateUsername(username)){
System.out.println("해당 아이디는 사용하실 수 없습니다.");
message = "사용하실 아이디나 뒤로 가실려면 \"X\"를 입력해주세요.";
username = ScannerUtil.nextLine(SCANNER, message);
if (username.equalsIgnoreCase("X")){
break;
}
}
if (!username.equalsIgnoreCase("X")){
UserDTO u = new UserDTO();
u.setUsername(username);
message = "사용하실 비밀번호를 입력해주세요.";
u.setPassword(ScannerUtil.nextLine(SCANNER,message));
message = "사용하실 닉네임을 입력해주세요.";
u.setNickname(ScannerUtil.nextLine(SCANNER, message));
userController.insert(u);
}
}
private void auth(){
String message;
message = "아이디를 입력해주세요.";
String username = ScannerUtil.nextLine(SCANNER, message);
message = "비밀번호를 입력해주세요.";
String password = ScannerUtil.nextLine(SCANNER, message);
logIn = userController.auth(username, password);
if (logIn == null){
System.out.println("로그인 정보가 정확하지 않습니다.");
}
}
private void showMenu(){
String message = "1. 게시판으로 2. 회원 정보관리 3. 로그아웃";
while (logIn != null){
int userChoice = ScannerUtil.nextInt(SCANNER,message);
if (userChoice == 1){
boardViewer.showMenu();
} else if (userChoice == 2){
printOne();
} else if (userChoice == 3){
logIn = null;
System.out.println("정상적으로 로그아웃되었습니다.");
}
}
}
private void printOne(){
System.out.println("회원 번호 : " + logIn.getId());
System.out.println("회원 닉네임 : " + logIn.getNickname());
System.out.println("--------------------------------------------");
String message = "1. 수정 2. 탈퇴 3. 뒤로가기";
int userChoice = ScannerUtil.nextInt(SCANNER,message);
if (userChoice == 1){
update();
} else if (userChoice == 2){
delete();
}
}
private void update(){
String message = "새로운 비밀번호를 입력해주세요.";
String newPassword = ScannerUtil.nextLine(SCANNER, message);
message = "새로운 닉네임을 입력해주세요.";
String newNickname = ScannerUtil.nextLine(SCANNER,message);
message = "기존 비밀번호를 입력해주세요.";
String oldPassword = ScannerUtil.nextLine(SCANNER,message);
if (logIn.getPassword().equals(oldPassword)){
logIn.setNickname(newNickname);
logIn.setPassword(newPassword);
userController.update(logIn);
} else {
System.out.println("회원 정보 변경에 실패하였습니다.");
}
}
private void delete(){
String message = "정말로 삭제하시겠습니까? Y/N";
String yesNo = ScannerUtil.nextLine(SCANNER, message);
if (yesNo.equalsIgnoreCase("Y")){
message = "비밀번호를 입력해주세요.";
String password = ScannerUtil.nextLine(SCANNER, message);
if(password.equals(logIn.getPassword())){
userController.delete(logIn.getId());
logIn = null;
}
}
}
}
User 클래스에서 실행하기
package day0112;
import View.UserViewer;
public class Ex02User {
public static void main(String[] args) {
UserViewer userViewer = new UserViewer();
userViewer.showIndex();
}
}
'JX405기_비트 > Java' 카테고리의 다른 글
| Day04-4 로그인과 게시판 의존성DI 주입하기 (0) | 2023.01.16 |
|---|---|
| Day04-3 MVC 패턴을 활용하여 게시판 프로그램 만들기 (0) | 2023.01.16 |
| Day04-1 3일차에 숙제 문제 정답 공유 (0) | 2023.01.16 |
| Day03-3 배열에 도움되는 메소드 모은 ArrayUtil로 Lotto 추첨기 만들기 (0) | 2023.01.15 |
| Day03-2 Board 클래스에 생성자와 메소드 선언하여 게시판관리 프로그램 만들기 (0) | 2023.01.15 |