프로젝트

[프로젝트A] 명함 관리 프로그램

ari0930 2024. 4. 14. 22:22

명함관리 프로그램

-네이버 부스트코스 

 

 

이러한 기능을 가지도록 프로그램을 만들면 되는 프로젝트이다.

 

1. MYSQL 데이터 베이스에서 사용자와 데이터베이스를 만들어준다.

create database card; 

CREATE USER carduser@'%' IDENTIFIED BY '~~~~~';

GRANT ALL PRIVILEGES ON card.* TO carduser@'%';
FLUSH PRIVILEGES;

데이터베이스를 만들고 사용자를 생성하고 난 후 권한을 주었다.

 

2. MYSQL 로 자료값을 들어갈 수 있는 테이블을 만들어준다 

주어진 maven프로젝트를 임폴트 해보면 BusinessCard라는 주어진 데이터를 객체화시켜주는 소스코드가 있다.

    public BusinessCard(String name, String phone, String companyName) {
        this.name = name;
        this.phone = phone;
        this.companyName = companyName;
        this.createDate = new Date();
    }

이름, 휴대폰번호, 회사이름, 그리고 날짜에 대한 어떤 타입인지 나와있다 이걸 보고 테이플 필드 타입을 성절 할 수 있다,

mysql로 들어가서

mysql> create table card
    -> (
    -> name VARCHAR(12) not null,
    -> phone VARCHAR(12),
    -> companyName VARCHAR(35),
    -> createDate DATETIME
    -> ,
    -> PRIMARY KEY(name)
    -> );

이렇게 테이블을 만들수 있다. 만들고 난 후 만들어졌는지 확인하기 위해 아래 코드를 입력하면 확인할 수 있다.

mysql> DESCRIBE card;

3.  BusinessCardManagerDao 를 수정하여 추가 기능과 검색 기능을 만들면 된다.

추가하는 부분을 구현한것이다.

 public BusinessCard addBusinessCard(BusinessCard businessCard){
	// 구현하세요.
    	//name, phone ,companyName,createDate
   
		Connection conn =null;
		PreparedStatement ps =null;
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			conn = DriverManager.getConnection(dbUrl, dbUser, dbpasswd);
			String sql = "INSERT INTO card (name,phone, companyName, createDate) VALUES (?,?,?,?)";//어떤명령 수행

			ps=conn.prepareStatement(sql);
			ps.setString(1, businessCard.getName()); //?된 부분의 값을 넣어주는 역할 
			ps.setString(2, businessCard.getPhone());
			ps.setString(3, businessCard.getCompanyName());//넣어주는 데이터 타입에 따라 setint,string 
	        java.util.Date utilDate = businessCard.getCreateDate();
	        java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
	        ps.setDate(4, sqlDate);
			ps.executeUpdate();

		}catch(Exception ex) {
			ex.printStackTrace();
		}finally {
			if(ps!=null) {
				try {
					ps.close();
				} catch(Exception ex) {}
			}
			
			if(conn!=null) {
				try {
					conn.close();

				} catch (Exception ex) {}

			}
		}
		
		return businessCard;
    	
    	
    }

 

검색하는 부분을 자바 코드이다.

 

    public List<BusinessCard> searchBusinessCard(String keyword){
    	List<BusinessCard> list = new ArrayList<>();
    	try {
    		Class.forName("com.mysql.cj.jdbc.Driver");
    		
    	}catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
    	
    	String sql ="SELECT * FROM card WHERE name =?";
	// 구현하세요.
    	try(Connection conn=DriverManager.getConnection(dbUrl, dbUser, dbpasswd);
    			PreparedStatement ps= conn.prepareStatement(sql)
    			
    			){
    		ps.setString(1, keyword);
    		try(ResultSet rs =ps.executeQuery()){
    			while(rs.next()) {
    				String rname =rs.getString(1);
    				String rphone =rs.getString(2);
    				String rcom =rs.getString(3);
    				Date rdate =rs.getDate(4);
    				BusinessCard cardp=new BusinessCard(rname,rphone,rcom);
    				cardp.setCreateDate(rdate);
    				list.add(cardp);
    				
    			}
    		} catch (Exception e) {
				e.printStackTrace();
			}
    	} catch (Exception e) {
			e.printStackTrace();
		}
    	return list;
    }

리스트로 반환명으로 잡혀있기에 while문을 사용하여 같은 이름을 모두 탐색하여 리스트에 저장하여 반환하도록 하였다.

 

결과

 

이렇게 예시로 주어진 프로젝트 개요처럼 잘 나오는 것을 확인할 수 있다.

반응형

'프로젝트' 카테고리의 다른 글

Tourify 프로젝트  (0) 2024.05.06
[리액트 프로젝트] 프로젝트명 Tourify 기획서  (0) 2024.05.02
[리액트 프로젝트] ArtKey  (0) 2024.04.03