파일 기반 데이터 처리 프로그램 구현
프로젝트 개요
이 실습에서는 학생 정보를 관리하는 파일 기반 데이터 처리 프로그램을 구현합니다.
이 프로그램을 통해 파일 입출력, 데이터 구조, 예외 처리 등 C++의 다양한 기능을 실제로 적용해볼 수 있습니다.
요구사항
- 학생 정보(이름, 학번, 성적) 입력 및 파일 저장
- 저장된 학생 정보 조회
- 특정 학생 정보 검색
- 학생 정보 수정 및 삭제
- 전체 학생의 평균 성적 계산
프로그램 구조
먼저 프로그램의 기본 구조를 설계합니다.
주요 함수 구현
생성자
학생 추가
파일에 데이터 저장
파일에서 데이터 로드
모든 학생 정보 표시
학생 검색
학생 정보 수정
학생 정보 삭제
평균 성적 계산
메인 프로그램
에러 처리
프로그램 전체에 걸쳐 try-catch 블록을 사용하여 예외를 처리합니다. 파일 입출력, 데이터 변환, 학생 검색 등에서 발생할 수 있는 예외를 고려해야 합니다.
성능 최적화
- 대용량 데이터 처리를 위해 버퍼링 기법을 적용할 수 있습니다.
- 파일 입출력 횟수를 최소화하기 위해 변경 사항을 메모리에 누적했다가 한 번에 저장할 수 있습니다.
- 학생 검색 성능 향상을 위해
std::map
이나std::unordered_map
을 사용할 수 있습니다.
확장 기능
- 정렬 기능 : 이름, 학번, 성적 기준으로 학생 목록을 정렬합니다.
- 통계 기능 : 최고/최저 성적, 표준편차 등을 계산합니다.
- 백업 및 복원 기능 : 데이터의 안전한 보관을 위한 기능을 추가합니다.
연습 문제
- 현재 프로그램을 확장하여 과목별 성적을 관리할 수 있도록 수정하세요.
- 간단한 명령줄 인터페이스를 구현하여 사용자가 대화식으로 프로그램을 조작할 수 있게 만드세요.
- 학생 정보의 유효성을 검사하는 기능을 추가하세요. (예 : 학번 중복 체크, 성적 범위 확인 등)
참고자료
- "Effective C++" by Scott Meyers (항목 23 : 멤버 함수보다는 비멤버 비프렌드 함수를 선호하자)
- "C++ Primer" by Stanley B. Lippman, Josée Lajoie, and Barbara E. Moo (Chapter 8 : The IO Library)
- C++ Reference - File I/O : File I/O in C++
- C++ Core Guidelines : C++ Core Guidelines
- "Design Patterns : Elements of Reusable Object-Oriented Software" by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides