Python - PySide6
8. 구현 - 회원 관리 페이지
8. 구현 - 회원 관리 페이지
2025.12.221. 목표더보기 BasePage(공통 템플릿)를 상속하여 MemberManagerPage를 확장한다.회원 CRUD 중 최소 기능(등록/조회/검색/삭제)을 구현한다.DatabaseManager를 통해 MySQL 테이블 members에 대해 INSERT/SELECT/DELETE를 수행한다.조회/검색 결과 및 처리 상태를 status 라벨에 표시한다 2. 전체 로직더보기(1) 이전 단계에서 구현한 파일에 이어 작업합니다.libraryManagementSystem/├─ db/│ ├─ config.py│ └─ database_manager.py├─ pages/│ ├─ base_page.py│ ├─ member_manager_page.py│ ├─ book_manager_page.py│ └─ circul..
7. 구현 - 공통 페이지
7. 구현 - 공통 페이지
2025.12.221. 목표더보기3개 페이지가 공통으로 사용하는 "페이지 템플릿(BasePage)"를 만든다.UI 일관성 확보페이지 구현 난이도 하향공통 템플릿에 다음 UI 패턴을 표준화한다.상단 제목(title)상태 표시(status)공통 버튼 영역(예: "새로고침", "삭제")공통 테이블(QTableWidget) 설정(Stretch, 행 선택 등)다음 단계(7~9단계)에서 Member/Book/Circulation 페이지를 만들 때 "페이지를 만드는 표준 템플릿"을 그대로 재사용할 수 있도록 기반을 만든다.모든 페이지가 공유하는 UI 구성 패턴(레이아웃 → 입력 → 테이블 → 버튼) 구현.Page에서 DB 처리 로직을 공통 흐름(입력값 → SQL 생성 → db 호출 → 테이블 갱신) 구현2. 전체 로직더보기(1) 이전..
6. 구현 - 메인 UI 프레임
6. 구현 - 메인 UI 프레임
2025.12.221. 목표더보기 이번 단계는 프로그램의 GUI 전체적인 외관(뼈대)을 만듭니다.이전 단계에서 구축한 DB/CRUD 로직을 연결하지 않습니다. 프로그램은 사용자가 메뉴를 선택할 수 있는 왼쪽 사이드바와 실제 기능 화면이 표시될 오른쪽 콘텐츠 영역을 나누고,왼쪽 사이드바 메뉴 버튼 클릭 시 화면이 전환되는 기본 구조를 완성합니다. QMainWindow 기반의 메인 창을 만든다.2열 레이아웃으로 구성한다.좌측 "사이드바(내비게이션)"우측 "페이지 영역"QHBoxLayout(container)로 좌(사이드바) / 우(페이지 영역) 분할하는 레이아웃 전략을 익힙니다.QStackedWidget으로 여러 페이지를 "쌓아두고", 버튼 클릭으로 setCurrentIndex()로 여러 페이지를 전환하는 네비게이션 기능을 ..
5. 구현 - 데이터 접근 영역(DB)
5. 구현 - 데이터 접근 영역(DB)
2025.12.221. 목표더보기 도서관리 프로그램과 MySQL(DB)간에 통신하기 위한 "DatabaseManager" 클래스를 구현합니다. DatabaseManager 클래스 구현 목적은UI와 DB 사이에 "중간 계층(DatabaseManager)"을 두고, 모든 SQL 실행/조회 흐름을 표준화 하고*UI 코드에서 DB 코드를 분리(SRP) 합니다. 그리고 다음 3가지를 안정적으로 제공합니다.DB 연결(connect)데이터 변경 쿼리 실행(execute_query: INSERT/UPDATE/DELETE)데이터 조회(fetch_data: SELECT)구현 후에는 DB 연결, 실행, 조회를 하나의 공통 클래스(DatabaseManager)로 분리하여 "재사용" 관점에서 이해합니다.또한 UI(PySide6)가 없어도 Dat..
4. 환경 설정 및 주의사항
4. 환경 설정 및 주의사항
2025.12.221. 개발 실행 환경더보기구분 항목 내용 운영체제OSWindows 권장 (Malgun Gothic 기본 폰트 사용)Linux / macOS 가능 (폰트 변경 필요)개발 언어LanguagePython 3.11 이상 권장GUI 프레임워크GUIPySide6 (Qt for Python)데이터베이스DBMSMySQL Server (Local) or AWS RDS(MySQL 8.x)DB 연결 방식Drivermysql-connector-python 2. 필수 설치 항목더보기2.1 Python 가상환경 구성(venv) 파이참에서 프로젝트 생성하기1. 일반 프로젝트 생성하기더보기 2. 새 프로젝트 시작하기더보기Case A. 새 프로젝트 생성 Case B. 새 프로젝트 생성 Case C. 새 프로젝트 생성 3. 커스텀 가상..
3. 분석과 설계 - 데이터
3. 분석과 설계 - 데이터
2025.12.221. 목표더보기테이블 3개(books, members, issues)의 역할 이해members: 회원 마스터books: 도서 마스터 + 상태(is_available)issues: 대여 업무 기록(대여/반납/연장 흐름의 중심)테이블 관계(FK)와 JOIN 필요성 이해issues는 books, members를 참조하는 구조(FK)대여 목록에서 title을 표시하려면 issues + books JOIN이 필요기능별 SQL 흐름을 "업무"와 연결해서 이해회원 등록 = members INSERT도서 등록 = books INSERT대여 = issues INSERT + books UPDATE(FALSE)반납 = issues DELETE + books UPDATE(TRUE)연장 = issues UPDATE(renew_..
2. 분석과 설계 - 시스템
2. 분석과 설계 - 시스템
2025.12.221. 시스템 구조 분석: 분석 - 시스템이 어떤 구성요소로 이루어져 있고, 각 요소가 어떤 역할을 하며, 어떻게 동작하는가더보기이 프로그램은 크게 4개의 영역으로 나뉜다. (1) 전역 설정 영역프로그램 전체에서 “공통으로 쓰는 값”을 모아둔 영역현재 코드에서는 DB_CONFIG데이터베이스 접속 정보인 제한적 정보 사용(2) 데이터 접근 영역(DB)DB와 통신하는 “중간 계층”현재 코드에서는 DatabaseManager + 전역 DB 객체 (3) 메인 UI 프레임(프로그램 껍데기)사이드바/페이지 영역 배치페이지 전환 제어현재 코드에서는 LibrarySystem(QMainWindow)(4) 기능별 페이지(UI + 로직)실제 기능(회원/도서/대여)을 수행하는 화면 단위 클래스현재 코드에서는 Circulatio..
1. 프로젝트 계획서 산출물 가이드
1. 프로젝트 계획서 산출물 가이드
2025.12.22프로젝트 산출물 AI Tool 사용 요약더보기번호산출물 명칭목적 / 사용 용도사용 기술 · 도구제작 방식 및 특징0일반 이미지 Nano Banana 1요구사항 명세서기능·비기능 요구사항 정의모든 AI 가능 (ChatGPT 등)표(Table) 기반, 기능/비기능 요구사항 및 추적성 매핑2순서도기능 흐름 시각화eraser.io (https://app.eraser.io/)AI 기반 순서도 생성3화면 구성도메뉴 구조, 화면 관계 정의eraser.io 또는 일반 이미지 AI구조 시각화, 시스템 전체 구조 이해 목적4목업 (UI 프로토 타입)실제 구현 전 UI 구조 검증1단계: AI 기반 SVG 생성2단계: Figma (https://www.figma.com/)1단계: SVG 이미지 생성(빠른 초안)2단계: Fig..
파이썬 압축파일로 관리 /w requirements.txt
파이썬 압축파일로 관리 /w requirements.txt
2025.12.22목표더보기핵심 목표requirements.txt 사용방법 파이썬 프로젝트 공유 대상 구분 실습 과정기존 PyCharm 프로젝트(도서관리 시스템)를 안전하게 압축해서 전달/보관 가능하게 만들기새 폴더로 이동해서 압축을 풀고 PyCharm에서 “새 프로젝트”처럼 열기새 venv를 만들고 패키지를 재설치하여 “다른 PC에서도 바로 실행”되게 만들기실행 확인 1. 압축 더보기(1) 압축 파일 제외할 것 가상환경 폴더(venv, .venv)이유: 용량이 크고 OS/PC마다 다르며, 압축으로 옮기면 거의 항상 문제가 납니다.PyCharm 설정 폴더(.idea)이유: 사용자 PC별 경로/인터프리터/캐시 설정이 포함되어 충돌할 수 있습니다.다만 교육용으로 “동일 환경”을 강제해야 하면 포함하는 경우도 있으나, 일반적으..
파이썬 네이밍 컨벤션
파이썬 네이밍 컨벤션
2025.12.191. 목표더보기 2. 파일명 (.py)더보기기본 규칙모두 소문자단어 구분은 underscore("_")동사보다는 역할 또는 개념 중심한 파일 = 한 책임(SRP 원칙) 권장 형식lowercase_with_underscores.py 예시용도 파일명 메인 실행 파일main.pyDB 관리database_manager.py회원 관리member_manager.py회원 페이지(UI)member_page.py설정 파일config.py유틸리티string_utils.py 3. 클래스명더보기기본 규칙PascalCase (CapWords)명사 또는 명사구역할이 명확히 드러나도록 작성 권장 형식class DatabaseManager: passclass Member: passclass MemberManagerPa..
포폴용 프로젝트 산출물 가이드
포폴용 프로젝트 산출물 가이드
2025.12.160. SW 개발 표준 산출물 가이드더보기 개발자가 하는 일은, 코딩이 아닙니다.컴퓨터로 문제를 해결하는 방법입니다. 0 기획 의도, 문제 파악더보기 1 요구사항 명세서더보기 한글 양식워드 양식2 순서도더보기방법 1. Draw.io 에서 수동으로 직접 작성 draw.io 활용법 방법 2. 플로우차트 만들기 - 무료 순서도 그리기 | Canva(캔바) 방법 3. Eraser Eraser – AI co-pilot for technical designDeliver accurate, consistent designs faster.app.eraser.io 코드 기반 Flow Chart 생성 사용 순서1) 요구사항 분석2) GPT 에 요구사항 기반으로 eraser.io 사이트의 Flow Ch..
8. 로그인
8. 로그인
2025.12.151. 목표더보기이 단계의 학습 목표기존 1~6단계 통합 예제에 로그인 확인 기능을 자연스럽게 확장해서 붙이기QLineEdit 비밀번호 모드와 QPushButton을 활용해 로그인 UI 만들기SELECT ... WHERE 조건문으로 사용자 아이디/비밀번호를 검사하는 로직 구현로그인 성공/실패를 QLabel, QMessageBox로 사용자에게 명확하게 피드백하기이미 구현한 MySQL 연결 예외 처리, 로그 기록 함수(handle_mysql_error, write_log_with_qt)를 재사용해 일관된 구조 유지이제 최종 통합 GUI는 다음 기능을 한 창에서 모두 처리합니다.1단계: MySQL 서버 연결 테스트2단계: 데이터베이스 생성3단계: users 테이블 생성4단계: 사용자 추가(INSERT)5단계: ..