1. 오늘 한 내용 (Day 3 개발 기록)
① 세트 출고 기능 구현 중 이슈 해결
- 문제
- 세트 출고 시 여러 개의 데이터를 한 번에 처리해야 함
- 파일에서 데이터가 정상적으로 불러와지지 않음
- 원인
- scanf()로 읽는 개수와
실제 비교하는 값(==)의 개수가 일치하지 않음
- 해결
- scanf() 반환값과 기대 필드 수 일치하도록 수정
- 파일 파싱 로직 점검
👉 교훈: scanf는 “읽은 개수”를 반환한다는 점을 항상 체크
2. 오늘 추가 및 개선한 기능 (Update)
① 카테고리별 자동 정렬 (Sorted Insertion)
- 변경 내용
- 단순 ID 순 삽입 → 카테고리 기준 삽입 정렬
- Add / Load 시 제자리 삽입
- 사용 방식
- 연결 리스트 + 삽입 정렬 로직
- 노드 위치 탐색 후 중간 삽입
- 효과
- CPU → 쿨러 → 메인보드 … 순 자동 정렬
- 어떤 순서로 입력해도 가독성 향상
- 조회 기능의 완성도 상승
② 화면 출력용 순번(No.) 도입
- 변경 내용
- 내부 ID는 유지
- 출력 시 1번부터 순차 번호 부여
- 효과
- 사용자 경험(UX) 향상
- 직관적인 선택 가능
- 내부 관리 ID와 사용자 인터페이스 분리
👉 “내부 로직” 과 “사용자 화면” 을 분리하는 설계 경험
③ 보이는 대로 제어 (Index-based Control)
- 변경 내용
- Update / Delete / 단일 Release 시
- ID 대신 화면의 No. 기준 처리
- 구현 방식
- head부터 n번째 노드까지 while문으로 이동
while (current != NULL && count < targetIndex) {
current = current->next;
count++;
}
- 효과
- ID를 외울 필요 없음
- 화면 중심 조작 가능
- UX 대폭 개선
3. 직면했던 에러 및 해결 과정
① 정렬로 인한 ID – No. 불일치 문제
- 문제
- 카테고리 정렬 후
- ID와 화면 순번이 일치하지 않음
- 해결
- ID 직접 비교 방식 제거
- n번째 노드 탐색 방식으로 변경
👉 “ID 기반 제어” → “위치(No) 기반 제어”로 사고 전환
② 출고 기능의 이원화 필요성
- 문제
- 단일 출고는 No. 기반이 편함
- 세트 출고는 미리 정의된 ID 배열 필요
> 로직 충돌 가능성 발생
- 해결
- 출고 메뉴 분리
- F04-1: 단일 출고 → No. 기반
- F04-2: 세트 출고 → ID 기반
👉 두 방식의 장점을 모두 유지
③ 데이터 손실 방지 (원자성 고민)
- 문제
- 수정/출고 도중 프로그램 종료 시 데이터 손상 가능
- 해결
- 모든 변경 직후 saveToFile() 즉시 호출
- 파일 실시간 반영
👉 “안전성”을 고려한 설계로 발전
4. 오늘 배운 핵심 개념
- 삽입 정렬 기반 연결 리스트 재배치
- 사용자 인터페이스와 내부 데이터 분리
- 위치 기반 노드 탐색
- scanf 반환값 검증
- 데이터 원자성(Atomicity) 개념
5. 오늘 헷갈렸던 것
- 정렬된 리스트에서 ID 관리 방법
- 세트 출고와 단일 출고 로직 통합 문제
- 파일 저장 타이밍 설계
6. 현재 프로그램 진행도
| F01 등록 | ✅ |
| F02 수정 | ✅ |
| F03 삭제 | ✅ |
| F04-1 단일 출고 | ✅ |
| F05 정렬 조회 | ✅ |
| F04-2 세트 출고 | ⏳ 진행 예정 |
7. 다음 목표
- 세트 출고 일괄 처리 로직 완성
- 재고 부족 예외 처리 강화
- 출고 로그 기록 기능 추가 고려
- 메모리 해제 로직 최종 점검
'포트폴리오 > [IoT 기반 피지컬 AI 교육일지]' 카테고리의 다른 글
| [ 13일차 기록 ] 조립 PC 재고 관리 프로그램 개발기 #4 (기능 확장) (0) | 2026.02.25 |
|---|---|
| [ 12일차 기록 ] 조립 PC 재고 관리 프로그램 개발기 #3 (대규모 데이터셋 구축 및 세트 출고 시스템 완성) (0) | 2026.02.23 |
| [ 10일차 기록 ] 조립 PC 재고 관리 프로그램 개발기 #1 (기초 설계 및 CRUD 구현) (0) | 2026.02.19 |
| [ 9일차 기록 ] C언어 프로젝트 발표 Q&A 정리 & 재고관리 프로그램 개발 시작 (0) | 2026.02.19 |
| [ 8일차 복습 ] 트리(Tree) 개념 정리 & 개인 프로젝트 개발계획서 작성 (0) | 2026.02.13 |