LikeLion🦁

사자가 된 감자 3주차

potatoo 2023. 5. 2. 20:03
728x90

이번주는 학생 관리 프로그램을 짜봤다암

시험 끝난날 과제를 하니까 기분이 좋군요호호

 

먼저 Studnet클래스와 Inter페이스으으

package manage;
public class Student {
        double point;
        String name;

        public Student(double point, String name) {
            this.point = point;
            this.name = name;
        }

        public double getPoint() {
            return point;
        }

        public void setPoint(double point) {
            this.point = point;
        }

        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
}
package manage;
public interface studentManager {
    void addStudent(Student student);

    void updateStudent(String name, double score);

    void deleteStudent(String name);

    void printAllStudent();
}

 

그 다음은 인터페이스를 정의한 deep클래스으

package manage;
import java.util.HashMap;
import java.util.Set;

public class deep implements studentManager {
    HashMap<String, Student> map = new HashMap<>();

    @Override
    public void addStudent(Student student) {
        map.put(student.getName(), student);
    }

    @Override
    public void updateStudent(String name, double score) {
        Student tmp = map.get(name);
        tmp.setPoint(score);
        map.put(name, tmp);
    }
    @Override
    public void deleteStudent(String name) {
        map.remove(name);
    }

    @Override
    public void printAllStudent() {
        Set<String> set = map.keySet();
        for (String s : set) {
            System.out.println(s + " 학생의 점수는 " + map.get(s).getPoint() + "점 입니다.");
        }
    }
}

시험이 끝난 감자에게는 이번 과제는 아주 쉬웠습니당 그래서 기부니가 좋아요!!

 

main은 생략하겠습니당.

과제의 의도는 SOLID원칙을 생각하여 인터페이스를 잘 사용해보라는 의도로 예상만 해봅니다!

 

그 다음은 회원가입 만들기

이 코드는 무지성으로 슈슉짰기 때문에 간단하게 설명하자면, 프로그램 시작 메서드와 로그인, 회원가입, 시스템 종료 메서드를 구현하였고,

member라는 객체를 데이터로 저장하는 HashMap을 사용하였다.

package login;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
public class Main {
        static HashMap<String, Member> repository = new HashMap<>();
        static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        public static void main(String[] args) throws IOException {

            while (true){
                try {
                    int order = start();
                    switch (order){
                        case 1:
                            if(login()){
                                continue;
                            };
                            break;
                        case 2:
                            memberShip();
                            break;
                        case 3:
                            SystemOff();
                            break;
                        default:
                            System.out.println("번호를 다시 확인해주세요.");
                    }
                }
                catch (NumberFormatException exception){
                    System.out.println("번호로 입력해주세요.");
                }
            }
        }

        static public int start() throws IOException {

            StringBuilder sb = new StringBuilder();

            sb.append("멋쟁이사자처럼 로그인 프로그램\n")
                    .append("\n")
                    .append("==================\n")
                    .append("1. 로그인\n")
                    .append("2. 회원가입\n")
                    .append("3. 종료\n")
                    .append("==================\n")
                    .append("어떤걸 진행하시겠습니까? :");

            System.out.print(sb);

            return Integer.parseInt(br.readLine());
        }
        static public boolean login() throws IOException {
            System.out.print("아이디를 입력하세요 : ");
            String id = br.readLine();
            System.out.print("비밀번호를 입력하세요 : ");
            String password = br.readLine();
            System.out.println();

            Member member = repository.get(id);//회원 정보 가져오기

            if(member!=null){
                if(id.equals(member.id) && password.equals(member.password)){
                    System.out.println(id+" 회원 성공적으로 로그인하였습니다.");
                    SystemOff();
                }
                else {
                    System.out.println("비밀번호가 틀렸습니다.");
                }
            }
            else {
                System.out.println("없는 회원입니다.\n");
            }
            return false;
        }

        static public void memberShip() throws IOException {
            while (true){

                System.out.print("아이디를 입력하세요 : ");
                String id = br.readLine();

                if(repository.get(id)!=null){
                    System.out.println("이미 있는 아이디입니다.");
                    System.out.println("다른 아이디로 회원가입을 계속 진행하시겠습니까? (y or n) :");
                    String order = br.readLine();
                    if(order.equals("y")){
                        continue;
                    }
                    else if (order.equals("n")) {
                        return;
                    }
                    else {
                        System.out.println("다시 입력해주세요.");
                    }
                }

                System.out.print("비밀번호를 입력하세요 : ");
                String password = br.readLine();
                System.out.println();

                Member member = new Member(id,password);
                repository.put(id,member);
                System.out.println("정상적으로 회원가입 되었습니다.");
                break;
            }
        }
        static public void SystemOff(){
            System.out.println("프로그램이 종료됩니다.");
            System.exit(0);
        }
    }
    class Member{
        String id;
        String password;
        public Member(String id, String password) {
            this.id = id;
            this.password = password;
        }

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

}
728x90