본문 바로가기
JDBC

JDBC(영어 단어장, 학생 성적 관리 프로그램 )

by code2772 2022. 10. 19.

[ 목차 ]

    728x90
    반응형

    영어 단어장

    import java.sql.SQLException;
    import java.util.Scanner;
    
    public class VocaMain {
        public static void main(String[] args) {
    
            Scanner sc = new Scanner(System.in);
            VocaDAO vocaDAO = new VocaDAO();
    
            while(true){
                System.out.println("        📚📚📚📚📚 단어장 📚📚📚📚📚");
                System.out.println("원하는 메뉴를 선택하세요");
                System.out.println("1. 등록 2. 리스트 3. 검색 4. 수정 5 삭제 6. 종류");
                int input  = sc.nextInt();
                if(input == 6){
                    System.out.println("프로그램을 종료합니다.");
                    break;
                }
                try {
                    switch (input) {
                        case 1:
                            vocaDAO.insert();
                            break;
                        case 2:
                            vocaDAO.list();
                            break;
                        case 3:
                            vocaDAO.search();
                            break;
                        case 4:
                            vocaDAO.edit();
                            break;
                        case 5:
                            vocaDAO.delete();
                            break;
                    }
                }catch (ClassNotFoundException e){
                    e.printStackTrace();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
        }
    }
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Scanner;
    
    public class VocaDAO {
        public void insert() throws ClassNotFoundException, SQLException {// 메소드를 호출한 곳에서 책임전가 -> 메인 트라이 캐치
            Scanner sc = new Scanner(System.in);
            System.out.println("🧶단어를 입력하세요 : ");
            String eng = sc.next();
            System.out.println("🧶뜻 입력하세요 : ");
            String kor = sc.next();
            System.out.println("🧶레벨을 입력하세요 : ");
            int level = sc.nextInt();
    
            Connection conn = Dbconn.getConnection();
            StringBuilder sql = new StringBuilder();
            sql.append("insert into tb_word(eng,kor,lev)")
                    .append("values(?,?,?)");
            PreparedStatement pstmt = conn.prepareStatement(sql.toString());
            pstmt.setString(1, eng);
            pstmt.setString(2, kor);
            pstmt.setInt(3, level);
            int result = pstmt.executeUpdate();
            if (result >= 1) System.out.println("단어등록 성공! ");
            else System.out.println("단어등록 실패! ");
    
        }
    
        public void list() throws ClassNotFoundException, SQLException {
            Connection conn = Dbconn.getConnection();
            StringBuilder sql = new StringBuilder();
            sql.append("select eng, kor, lev, rdate from tb_word order by eng");
            PreparedStatement pstmt = conn.prepareStatement(sql.toString());
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                String eng = rs.getString("eng");
                String kor = rs.getString("kor");
                int lev = rs.getInt("lev");
                String rdate = rs.getString("rdate");
                System.out.println(eng + ": " + kor + "(" + lev + ", " + rdate + ")");
            }
        }
    
        public void search()throws  ClassNotFoundException, SQLException{
            Scanner sc = new Scanner(System.in);
            System.out.println("🧶검색할 단어를 입력하세요 : ");
            String word = sc.next();
    
            boolean isFind = false;
            Connection conn = Dbconn.getConnection();
            StringBuilder sql = new StringBuilder();
            sql.append("select eng, kor, lev, rdate from tb_word where eng like ?");
            PreparedStatement pstmt = conn.prepareStatement(sql.toString());
            pstmt.setString(1,"%"+word+"%");
            ResultSet rs = pstmt.executeQuery();
    
            while (rs.next()){ // 있어야 돈다 rs.next()
                isFind = true;
                String eng = rs.getString("eng");
                String kor = rs.getString("kor");
                int lev = rs.getInt("lev");
                String rdate = rs.getString("rdate");
                System.out.println(eng + ": " + kor + "(" + lev + ", " + rdate + ")");
            }
            if(!isFind) System.out.println("찾는 단어가 없습니다.😢😢😢");
        }
        public void edit() throws ClassNotFoundException, SQLException {
            // 수정할 단어를 입력하세요 : apple
            // 단어의 뜻을 입력하세요 : 사과
            // 레벨을 입력하세요 : 2
            Scanner sc = new Scanner(System.in);
            System.out.println("수정할 단어를 입력하세요");
            String eng = sc.next();
            System.out.println("단어의 뜻을 입력하세요");
            String kor = sc.next();
            System.out.println("레벨을 입력하세요");
            int lev = sc.nextInt();
    
            Connection conn = Dbconn.getConnection();
            StringBuilder sql = new StringBuilder();
            sql.append("update tb_word set kor =?, lev =? where eng =?");
    
            PreparedStatement pstmt = conn.prepareStatement(sql.toString());
    
            pstmt.setString(1, kor);
            pstmt.setInt(2, lev);
            pstmt.setString(3, eng);
            int result = pstmt.executeUpdate();
            if (result >= 1) System.out.println("단어장 성공");
            else System.out.println("찾는 단어가 없습니다.");
        }
        public void delete() throws ClassNotFoundException, SQLException {
            // 삭제할 단어를 입력하세요
            Scanner sc = new Scanner(System.in);
            System.out.println("삭제할 단어를 입력하세요");
            String eng = sc.next();
            boolean isFind = false;
            Connection conn = Dbconn.getConnection();
            StringBuilder sql = new StringBuilder();
            sql.append("delete  from tb_word where eng = ?");
            PreparedStatement pstmt = conn.prepareStatement(sql.toString());
            pstmt.setString(1,eng);
            int result = pstmt.executeUpdate();
            if (result >= 1) System.out.println("단어삭제 성공");
            else System.out.println("단어삭제 실패");
    
        }
    
    }
    
    
    
    
    
    
    
    
    
    
    
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class Dbconn {
        private static Connection conn; // 주요하게 생각하는것을 컨넥션 객체를 사용할 수 있게
        //스테틱이 있으면 클래스만 불러도 된다 메소드 호출시
        public static Connection getConnection() throws SQLException, ClassNotFoundException {// 리턴타입은 Connection
            String url = "jdbc:mysql://127.0.0.1/aidev?useSSL=false";
            String uid = "root";
            String upw = "1234";
    
            Class.forName("com.mysql.cj.jdbc.Driver");
             conn = DriverManager.getConnection(url, uid, upw);
            return conn;
        }
    }
    

    학생 성적 관리 프로그램

    과제.
    테이블 생성
    학생 테이블
    학번, 이름, 연락처, 성별, 주소, 등록날짜
    - 학번은 primary key 등록
    성적 테이블
    학번, 국어점수, 수학점수, 등록날짜
    - 학번은 외래키로 등록
    
    *********** 메뉴 **********
    1. 학생 등록
    2. 학생 리스트
    3. 학생 수정
    4. 학생 삭제
    5. 성적 등록
        성적을 등록할 학번을 입력하세요. 00000001
        국어점수를 입력하세요
        수학점수를 입력하세요
        영어점수를 입력하세요
    6. 성적 보기 - 조인이 되어야 볼 수 있음
        학번 이름 국어점수 수학점수 영어점수 총점 평균
    7. 프로그램 종료

     

    import java.sql.SQLException;
    import java.util.Scanner;
    
    public class ScoreMain {
        public static void main(String[] args) {
    
            Scanner sc = new Scanner(System.in);
            ScoreDAO scoreDAO = new ScoreDAO();
    
            while(true) {
                System.out.println("        📚📚📚📚📚 메뉴 📚📚📚📚📚");
                System.out.println("원하는 메뉴를 선택하세요");
                System.out.println("1. 등록 2. 리스트 3. 수정 4. 삭제 5 성적등록 6. 성적보기 7. 종료");
                int input = sc.nextInt();
                if (input == 7) {
                    System.out.println("프로그램을 종료합니다.");
                    break;
                }
                try {
                    switch (input) {
                        case 1:
                            scoreDAO.insert();
                            break;
                        case 2:
                            scoreDAO.list();
                            break;
                        case 3:
                            scoreDAO.edit();
                            break;
                        case 4:
                            scoreDAO.delete();
                            break;
                        case 5:
                            scoreDAO.score();
                            break;
                        case 6:
                            scoreDAO.scoreList();
                            break;
    
                    }
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

     

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Scanner;
    
    public class ScoreDAO {
        public void insert() throws ClassNotFoundException, SQLException {// 메소드를 호출한 곳에서 책임전가 -> 메인 트라이 캐치
            Scanner sc = new Scanner(System.in);
            System.out.println("🧶학번을 입력하세요 : ");
            String st_id = sc.next();
            System.out.println("🧶이름을 입력하세요 : ");
            String st_name = sc.next();
            System.out.println("🧶연락처를 입력하세요 : ");
            String st_hp = sc.next();
            System.out.println("🧶성별을 입력하세요 : ");
            String st_gender = sc.next();
            System.out.println("🧶주소를 입력하세요 : ");
            String st_address = sc.next();
    
    
            Connection conn = Dbconn.getConnection();
            StringBuilder sql = new StringBuilder();
            sql.append("insert into tb_student(st_id,st_name,st_hp,st_gender,st_address)")
                    .append("values(?,?,?,?,?)");
            PreparedStatement pstmt = conn.prepareStatement(sql.toString());
            pstmt.setString(1, st_id);
            pstmt.setString(2, st_name);
            pstmt.setString(3, st_hp);
            pstmt.setString(4, st_gender);
            pstmt.setString(5, st_address);
            int result = pstmt.executeUpdate();
            if (result >= 1) System.out.println("단어등록 성공! ");
            else System.out.println("단어등록 실패! ");
    
        }
    
    
        public void list() throws ClassNotFoundException, SQLException {
            Connection conn = Dbconn.getConnection();
            StringBuilder sql = new StringBuilder();
            sql.append("select st_id, st_name, st_hp, st_gender, st_address,st_rdate from tb_student order by st_id");
            PreparedStatement pstmt = conn.prepareStatement(sql.toString());
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                String st_id = rs.getString("st_id");
                String st_name = rs.getString("st_name");
                String st_hp = rs.getString("st_hp");
                String st_gender = rs.getString("st_gender");
                String st_address = rs.getString("st_address");
                String st_rdate = rs.getString("st_rdate");
                System.out.println(st_id + ": " + st_name +  ": " + st_hp +
                        ": " + st_gender +  ": "+st_address+": "+st_rdate);
            }
        }
    
    
        public void edit() throws ClassNotFoundException, SQLException {
    
            Scanner sc = new Scanner(System.in);
            System.out.println("수정할 학번을 입력하세요");
            String st_id = sc.next();
            System.out.println("변경 연락처 입력하세요");
            String st_hp = sc.next();
            System.out.println("변경 주소 입력하세요");
            String st_address = sc.next();
    
            Connection conn = Dbconn.getConnection();
            StringBuilder sql = new StringBuilder();
            sql.append("update tb_student set st_hp =?, st_address =? where st_id =?");
    
            PreparedStatement pstmt = conn.prepareStatement(sql.toString());
    
            pstmt.setString(1, st_hp);
            pstmt.setString(2, st_address);
            pstmt.setString(3, st_id);
            int result = pstmt.executeUpdate();
            if (result >= 1) System.out.println("학생 변경 성공");
            else System.out.println("해당 학생이 없습니다.");
        }
    
        public void delete() throws ClassNotFoundException, SQLException {
            // 삭제할 단어를 입력하세요
            Scanner sc = new Scanner(System.in);
            System.out.println("삭제할 학번을 입력하세요");
            String st_id = sc.next();
            boolean isFind = false;
            Connection conn = Dbconn.getConnection();
            StringBuilder sql = new StringBuilder();
            sql.append("delete  from tb_student where st_id = ?");
            PreparedStatement pstmt = conn.prepareStatement(sql.toString());
            pstmt.setString(1,st_id);
            int result = pstmt.executeUpdate();
            if (result >= 1) System.out.println("단어삭제 성공");
            else System.out.println("단어삭제 실패");
    
        }
        public void score() throws ClassNotFoundException, SQLException{
            Scanner sc = new Scanner(System.in);
            System.out.println("성적을 등록할 학번을 입력하세요 : ");
            String sc_id = sc.next();
            System.out.println("국어점수를 입력하세요");
            int sc_kor = sc.nextInt();
            System.out.println("수학점수를 입력하세요");
            int sc_math = sc.nextInt();
            System.out.println("영어점수를 입력하세요");
            int sc_eng = sc.nextInt();
    
            int sc_sum = sc_kor +sc_eng+sc_math;
            int sc_avg = (sc_kor +sc_eng+sc_math)/3;
    
            Connection conn = Dbconn.getConnection();
            StringBuilder sql = new StringBuilder();
            sql.append("insert into tb_score(sc_id,sc_kor,sc_math,sc_eng,sc_sum,sc_avg)")
                    .append("values(?,?,?,?,?,?)");
            PreparedStatement pstmt = conn.prepareStatement(sql.toString());
    
            pstmt.setString(1, sc_id);
            pstmt.setInt(2, sc_kor);
            pstmt.setInt(3, sc_math);
            pstmt.setInt(4, sc_eng);
            pstmt.setInt(5, sc_sum);
            pstmt.setInt(6, sc_avg);
            int result = pstmt.executeUpdate();
            if (result >= 1) System.out.println("점수등록 성공! ");
            else System.out.println("점수등록 실패! ");
    
        }
    
        public void scoreList() throws ClassNotFoundException, SQLException{
            Connection conn = Dbconn.getConnection();
            StringBuilder sql = new StringBuilder();
            System.out.println("성적보기");
            sql.append("select st_id, st_name, sc_kor,sc_math,sc_eng,sc_avg,sc_sum  \n" +
                    " from tb_student left join tb_score on tb_student.st_id = tb_score.sc_id;");
            PreparedStatement pstmt = conn.prepareStatement(sql.toString());
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                String st_id = rs.getString("st_id");
                String st_name = rs.getString("st_name");
                int sc_kor = rs.getInt("sc_kor");
                int sc_math = rs.getInt("sc_math");
                int sc_eng = rs.getInt("sc_eng");
                int sc_avg = rs.getInt("sc_avg");
                int sc_sum = rs.getInt("sc_sum");
                System.out.println(" 아이디 : "+st_id + " 이름 : " + st_name +  " 국어 : " + sc_kor +
                        "수학 : " + sc_math +  "영어 : "+sc_eng+" 평균 : "+sc_avg+" 합계: "+sc_sum);
            }
        }
    
    }
    

    학생 테이블

    #mysql
    create table tb_student(
       st_id varchar(50) primary key,
        st_name varchar(50) unique not null,
        st_hp varchar(50) not null,
        st_gender varchar(50),
        st_address varchar(50),
        st_rdate datetime default now()
    );
    create table tb_score(
        sc_id varchar(50) not null,
       sc_kor int ,
        sc_math int ,
        sc_eng int,
        sc_rdate datetime default now(),
        sc_sum int,
        sc_avg int,
        foreign key(sc_id) references tb_student(st_id)
    );
    반응형