포트폴리오/[IoT 기반 피지컬 AI 교육일지]

[ 14일차 기록 ] 조립 PC 재고 관리 프로그램 개발기 #5 (출고·매출 시스템 완성)

개발자혜콩 2026. 2. 25. 14:44

1. 오늘 한 내용

① 출고 시스템 고도화

  • 단품 / 커스텀 / 프리셋 세트 출고 구조 정리
  • 입고 메뉴와 UI 흐름을 대칭 구조로 통일
  • 사용자 입장에서 메뉴 흐름 일관성 확보

② 커스텀 세트 삭제 기능 구현

  • 연결 리스트 노드 삭제 로직 완성
  • 삭제 후 custom_sets.txt 파일 동기화
  • 메모리 해제 및 파일 갱신까지 일관 처리

③ 자동 매출 장부 시스템 구축

  • 출고 발생 시 순이익 계산
  • sales.txt에 실시간 기록
  • 단품/세트 출고 모두 장부 기록되도록 통합

순이익 계산식:

NetProfit = (SellPrice - CostPrice) × Quantity


④ 매출 내역 조회 기능 추가

  • 터미널에서 전체 거래 내역 확인 가능
  • 파일 읽기 기반 조회 로직 구현
  • 누적 매출 흐름 확인 가능


2. 직면했던 에러 및 해결 과정

① curr undeclared

  • 원인
    반복문에서 시작 노드 초기화 없이 사용
  • 해결
    CustomSet* curr = customHead; 선언 후 사용

② 함수 인자 개수 불일치

  • 원인
    processSetRelease 정의와 호출 시 매개변수 개수 다름
  • 해결
    수량(qty) 매개변수 추가
    헤더 파일과 함수 정의 동기화

③ 재고가 차감되지 않음 (1)

  • 원인
    for문의 인덱스 변수 초기화 누락
  • 해결
    for (int i = 0; i < size; i++)
    0 초기화 확인

④ 재고가 차감되지 않음 (2)

  • 원인
    수량 입력 전에 함수 호출
  • 해결
    입력 → 함수 호출 순서로 실행 흐름 교정

⑤ 괄호 오타로 컴파일 실패

  • 원인
    } 대신 { 입력
  • 해결
    블록 구조 재검토
    괄호 짝 전체 점검

⑥ 장부 기록 누락

  • 원인
    세트 출고에만 logSale() 적용
    단품 출고에는 누락
  • 해결
    단품 출고 로직 하단에 logSale() 추가

 


3. 오늘 배운 핵심 개념

① 파일 모드의 차이

  • "w"
    기존 내용 삭제 후 새로 작성
    → 커스텀 세트 갱신 시 사용
  • "a"
    기존 내용 유지 후 뒤에 추가
    → 매출 장부 누적 기록 시 사용

② 연결 리스트 삭제의 핵심

  • prev와 curr 동시 추적
  • 노드 연결 재구성 후 메모리 해제
  • 삭제 후 파일 동기화까지 고려해야 완전한 삭제

③ 함수 스코프와 지역 변수

  • 같은 이름의 변수라도
  • 함수가 다르면 서로 간섭하지 않음
  • 지역 변수의 독립성 이해

④ 실행 순서의 중요성

입력 → 검증 → 처리
이 순서가 무너지면 로직이 정상 동작하지 않음

 


4. 현재 프로그램 진행도

F01 입고 F01-1. 신규단품입고
F01-2. 기존단품입고
F01-3. 신규 커스텀 세트 입고
F01-4. 기존 커스텀 세트 입고
F01-5. 프리셋 세트 입고
F02 수정 수량,원가,출고가 수정 ✅            
F03 삭제 F03-1. 단품 삭제 ✅ 
F03-2. 커스텀 세트 삭제 ✅    
F04 출고 F04-1. 단품 출고  ✅    
F04-2. 커스텀 세트 출고 ✅    
F04-3. 프리셋 세트 출고  ✅    
F05 조회 전체 재고 조회
F06 장부 출고 품목 및 매출 조회

(기능 기준으로는 핵심 시스템 100% 구현 상태)


5. 다음 목표

  1. 예외 처리 강화
    • 잘못된 입력 방어 로직
    • 존재하지 않는 ID 처리
  2. 코드 리팩토링 
    • 반복 코드 함수화
    • inventory.c 구조 정리
  3. 매출 통계 기능 추가 
    • 총매출 계산
    • 베스트 아이템 순위 출력
  4. 프로젝트 발표 준비
    • 프로젝트 ppt 최종준비
    • 포트폴리오 작성