자바29일차

달달한스위츠·2024년 3월 19일

자바배우기

목록 보기
29/43

이번 사이드 프로젝트 주제는 도서대여 프로그램
명세서부터 프로그램 동작까지(완성된 작업물)

도서 대여 명세서 0.6v

주제 : 도서를 대여할 수 있는 프로그램 구현

기능 :
- 로그인
- 로그아웃
- 회원가입
- 회원 수정(X)

- 관리자 페이지

- 도서 리스트 검색
- 도서 리스트 추가(X)
- 도서 리스트 수정(X)
- 도서 리스트 삭제(X)

- 도서 대여
- 도서 반납

- 전체 도서 정보 출력(X)
- 도서 대여 시간 기록
- 도서 반납 시간 기록

데이터 구조 - DB 테이블
테이블명: ADMIN
컬럼 : 
ADMIN_CODE(NUMBER) : 관리자 인덱스 - PK
ADMIN_ID(VARCHAR2) : 관리자 아이디 - PK
ADMIN_PASSWORD(VARCHAR2) : 관리자 비밀번호 - PK

테이블명 : USERS
컬럼 :
USER_CODE(NUMBER) : 유저 인덱스 - PK
USER_ID(VARCHAR2)  : 유저 아이디 - NOT NULL
USER_NAME(VARCHAR2)  : 유저 이름 - NOT NULL
USER_PASSWORD(VARCHAR2)  : 유저 비밀번호 - NOT NULL
USER_PHONE(VARCHAR2)  : 유저 전화번호
USER_EMAIL(VARCHAR2)  : 유저 이메일
USER_GENDER(VARCHAR2)  : 유저 성별
USER_BIRTH_DATE(VARCHAR2) : 유저 생년월일

테이블명 : BOOKLIST
컬럼 :
BOOK_ID(NUMBER) : 도서 인덱스 - PK
BOOK_NAME(VARCHAR2)  : 도서 이름 - NOT NULL
BOOK_CATEGORY_ID(NUMBER)  : 도서 카테고리 id - PK

테이블 : BOOKCATEGORY
컬럼 :
BOOK_CATEGORY_ID(NUMBER)  : 도서 카테고리 id - PK
BOOK_CATEGORY(VARCHAR2)  : 도서 카테고리 - UNIQUE

테이블명 : BOOKSERVICE
컬럼 :
USER_CODE(NUMBER) : 유저 인덱스 - PK
BOOK_SERVICE_INOUT(NUMBER) : 도서 대여상태 - NOT NULL
BOOK_SERVICE_OUTTIME(DATETIME) : 도서 대여시간 - PK
BOOK_SERVICE_INTIME(DATETIME) : 도서 반납시간 - PK


데이터 구조 - AdminVO
admincode(int) : 관리자 인덱스
adminId(String) : 관리자 아이디
adminpassword(String) : 관리자 비밀번호

UserVO
usercode(int) : 유저 인덱스
userId(String) : 유저 아이디
userpassword(String) : 유저 비밀번호
username(String) : 유저 이름
userphone(String) : 유저 전화번호
useremail(String) : 유저 이메일
usergenser(String) : 유저 성별
userbirthdate(String) : 유저 생년월일

BookListVO
BookId(int) : 도서 인덱스
BookName(String) : 도서 이름
BookCategory(int) : 도서 카테고리

bookcategroyVO
BookCategory(int) : 도서 카테고리

bookserviceVO
usercode(int) : 유저 인덱스
BookServiceInout(int) : 도서 대여상태
BookServiceOuttime(String) : 도서 대여시간
BookServiceIntime(String) : 도서 반납시간



클래스 명세서
BooklistDAO.java : DAO Interface. 도서 검색 기능 메서드 정의
BooklistDAOImple.java
: DAO Implement 클래스. 도서 검색 기능 메서드 구현
 DB에 접근하여 데이터 검색 수행

AdminDAO.java : DAO Interface. 관리자 기능 메서드 정의
AdminDAOImple.java
: DAO Implement 클래스. 유저 관리 기능 메서드 구현
 DB에 접근하여 데이터 등록/검색/수정/삭제 수행

UserDAO.java : DAO Interface. 유저 관리 기능 메서드 정의
UserDAOImple.java
: DAO Implement 클래스. 유저 관리 기능 메서드 구현
 DB에 접근하여 데이터 등록/검색/수정/삭제 수행

BookserviceDAO.java : DAO Interface. 도서 대여/관리 기능 메서드 정의
BookserviceDAO.java
: DAO Implement 클래스. 도서 대여/관리 기능 메서드 구현
 DB에 접근하여 데이터 등록/검색/수정/삭제 수행

BooklistVO.java : Model 클래스. 데이터 송수신 클래스

AdminVO.java : Model 클래스. 데이터 송수신 클래스

UserVO.java : Model 클래스. 데이터 송수신 클래스

BookserviceVO.java : Model 클래스. 데이터 송수신 클래스(카테고리도 같이)

OracleQuery.java : Oracle DB 정보 인터페이스. DB 연결을 위한 상수. 사용자 정보
테이블 및 컬럼 정보. 쿼리 작성

BooklistMain.java : Bookslist UI 클래스. GUI로 화면 구현

LoginPanel.java : LoginPanel UI 클래스. GUI로 화면 구현

새롭게 창을 열 클래스
AdminFrame.java : Admin UI 클래스. GUI로 화면 구현
UserFrame.java : User UI 클래스. GUI로 화면 구현
LoginFrame.java : Login UI 클래스. GUI로 화면 구현
BookserviceFrame.java : Bookservice UI 클래스. GUI로 화면 구현

시작지점 (Bookslistmain.java)

package edu.java.booklist;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JLabel;

import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.SwingConstants;

public class BookslistMain { 

	private JFrame frame;

	
	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					BookslistMain window = new BookslistMain();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public BookslistMain() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	
	private void initialize() { 
		frame = new JFrame();
		frame.setBounds(850, 500, 263, 167);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);

		JButton btnLogin = new JButton("로그인");
		btnLogin.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// 일반적으로 새로운 프레임이나, 다이얼로그를 생성할 때는
				// 각 클래스들을 상속받는 자식 클래스를 만들어서 사용하는 것이
				// 편의성 면에서 더 좋음
				LoginFrame loginframe = new LoginFrame(frame); // Myframe작업이 다끝나고 출력
				loginframe.setVisible(true);
//				frame.setVisible(false); // 메인 프레임을 안보이게
				
			}
		});
		btnLogin.setBounds(138, 82, 97, 23);
		frame.getContentPane().add(btnLogin);
		
		JButton btnmembership = new JButton("회원가입");
		btnmembership.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				MembershipFrame membershipframe = new MembershipFrame();
				membershipframe.setVisible(true);
				
			}
		});
		
		btnmembership.setBounds(24, 82, 97, 23);
		frame.getContentPane().add(btnmembership);
		
		JLabel lblNewLabel = new JLabel("도서 대여 프로그램 0.1V");
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setBounds(51, 10, 151, 62);
		frame.getContentPane().add(lblNewLabel);
		        
	}
}

이외는 깃으로 대체 전부 올리기에는 너무 많음
https://github.com/paranfox/JavaStudy/tree/master/Java00_Booklist

0개의 댓글