c++ 포토 폴리오

2024. 12. 3. 13:45카테고리 없음

반응형
- 1학년 2학기 C++ 과목을 통해서 객체지향언어의 기본적인 문법을 익혔습니다.
  C++11이후 바뀐 모던 C++의 특징에 대해서도 학습하였습니다.
- 클래스를 통해 캡슐화하는 방법, 다형성으로 함수 오버로딩, 상속과 overriding을 통해
  코드 재사용 등의 특징을 학습했습니다.
- 또한, template, STL, exception handing, 파일 입출력 등의 문법도 익혀서
  C++로 실무 프로젝트를 진행하는데 무리가 없도록 기본 문법을 확실히 이해하고 있습니다.
- 포트폴리오?
  구글링/AI : C++ stl file 성적처리
- 직접 만드는 것도 좋지만 좋은 소스를 많이 보고 만들기
- 블로그 관리(저작권, 복붙, 비공개, 꾸준, 습관)
단계별로 성적 처리 프로그램을 만들기



1단계: 필요한 헤더 파일 포함 및 네임스페이스 선언


#include <iostream>

#include <fstream>

#include <vector>

#include <string>

#include <algorithm>

#include <iomanip>



using namespace std;



2단계: 학생 구조체 정의

struct Student {

string name;

int id;

vector<int> scores;

};

```



3단계: 학생 정보 입력 함수 구현

Student inputStudent() {

Student s;

cout << "이름 입력: ";

cin >> s.name;

cout << "학번 입력: ";

cin >> s.id;

cout << "성적 입력 (3과목, 공백으로 구분): ";

for (int i = 0; i < 3; i++) {

int score;

cin >> score;

s.scores.push_back(score);

}

return s;

}

```



4단계: 파일에 학생 정보 저장 함수 구현

void saveToFile(const vector<Student>& students, const string& filename) {

ofstream file(filename);

for (const auto& s : students) {

file << s.name << " " << s.id;

for (int score : s.scores) {

file << " " << score;

}

file << endl;

}

file.close();

}

```



5단계: 파일에서 학생 정보 불러오기 함수 구현

vector<Student> loadFromFile(const string& filename) {

vector<Student> students;

ifstream file(filename);

string name;

int id;

while (file >> name >> id) {

Student s;

s.name = name;

s.id = id;

for (int i = 0; i < 3; i++) {

int score;

file >> score;

s.scores.push_back(score);

}

students.push_back(s);

}

file.close();

return students;

}

```



6단계: 학생 정보 출력 함수 구현



```cpp

void printStudent(const Student& s) {

cout << "이름: " << s.name << ", 학번: " << s.id << ", 성적: ";

for (int score : s.scores) {

cout << score << " ";

}

cout << endl;

}

```



7단계: 메인 함수 구현

int main() {

vector<Student> students;

string filename = "students.txt";

int choice;



do {

cout << "\n1. 학생 정보 입력\n2. 학생 정보 출력\n3. 파일에 저장\n4. 파일에서 불러오기\n5. 종료\n선택: ";

cin >> choice;



switch(choice) {

case 1:

students.push_back(inputStudent());

break;

case 2:

for (const auto& s : students) {

printStudent(s);

}

break;

case 3:

saveToFile(students, filename);

cout << "파일에 저장되었습니다." << endl;

break;

case 4:

students = loadFromFile(filename);

cout << "파일에서 불러왔습니다." << endl;

break;

case 5:

cout << "프로그램을 종료합니다." << endl;

break;

default:

cout << "잘못된 선택입니다." << endl;

}

} while (choice != 5);



return 0;

}

```



이 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다:



```

1. 학생 정보 입력

2. 학생 정보 출력

3. 파일에 저장

4. 파일에서 불러오기

5. 종료

선택: 1

이름 입력: 홍길동

학번 입력: 20230001

성적 입력 (3과목, 공백으로 구분): 90 85 95



1. 학생 정보 입력

2. 학생 정보 출력

3. 파일에 저장

4. 파일에서 불러오기

5. 종료

선택: 2

이름: 홍길동, 학번: 20230001, 성적: 90 85 95



1. 학생 정보 입력

2. 학생 정보 출력

3. 파일에 저장

4. 파일에서 불러오기

5. 종료

선택: 3

파일에 저장되었습니다.



1. 학생 정보 입력

2. 학생 정보 출력

3. 파일에 저장

4. 파일에서 불러오기

5. 종료

선택: 5

프로그램을 종료합니다.

```



이 프로그램은 학생 정보를 입력받고, 출력하며, 파일에 저장하고 불러올 수 있습니다.

STL의 vector를 사용하여 학생 정보를 관리하고, 파일 입출력을 통해 데이터를 영구적으로 저장할 수 있습니다.