티스토리 뷰

☆ 도움을 주신 분 ☆
★ http://tang1993.tistory.com 임태영블로그 ★
#pragma warning(disable:4996)
#include "stdafx.h"
#include<fstream>
#include<iostream>
#include<string>
using namespace std;
//이름 클래스
class Name{
string name;
public:
void setName(string name) { this->name = name; }
string getName() { return name; }
};
//과목 클래스
class Subject {
int subject;
public:
void setSub(int subject) { this->subject = subject; }
int getSub() { return subject; }
};
//성적 관리 클래스
class ScoMag{
Name nn;
Subject kor;
Subject eng;
Subject math;
ScoMag *next;
public:
ScoMag(){
next = NULL;
}
//이름 setter,getter 함수
void setName(string name) { nn.setName(name); }
string getName() { return nn.getName(); }
//수학 setter,getter 함수
void setMath(int score) { math.setSub(score); }
int getMath() { return math.getSub(); }
//영어 setter,getter 함수
void setEng(int score) { eng.setSub(score); }
int getEng() { return eng.getSub(); }
//국어 setter,getter 함수
void setKor(int score) { kor.setSub(score); }
int getKor() { return kor.getSub(); }
//총점,평균 getter함수
int getTotal() { return math.getSub() + kor.getSub() + eng.getSub(); }
float getAvg() { return (math.getSub() + kor.getSub() + eng.getSub()) / 3.f; }
//객체끼리 연결
void setLink(ScoMag *p){
next = p;
p = NULL;
}
ScoMag* getLink(){
return next;
}
};
void input(ScoMag *h, ScoMag *c, ScoMag *n, ofstream& fout);
void output(ScoMag *h, ScoMag *c, ScoMag *n, ifstream& fin);
void main(){
int num;
ScoMag *h, *c, *n; //h=head c=cur n=next
ifstream fin; //파일 읽기
ofstream fout; //파일 쓰기
h = NULL;
c = NULL;
n = NULL;
//더미생성
n = new ScoMag[1];
h = n;
c = n;
while (true){
cout << "1.입력 2.출력 3.종료" << endl;
cin >> num;
switch (num) {
case 1: //입력
input(h, c, n, fout);
break;
case 2: //출력
output(h, c, n, fin);
break;
case 3: //종료
exit(-1);
default:
cout << "잘못입력하셨습니다";
break;
}
}
}
void input(ScoMag *h, ScoMag *c, ScoMag *n, ofstream& fout){
string name;
int score;
n = new ScoMag[1];
//이름 입력
cout << "이름 : " << endl;
cin >> name;
n->setName(name);
//국어 입력
cout << "국어 : " << endl;
cin >> score;
n->setKor(score);
//수학 입력
cout << "수학 : " << endl;
cin >> score;
n->setMath(score);
//영어 입력
cout << "영어 : " << endl;
cin >> score;
n->setEng(score);
//std::ios_base::out | std::ios_base::app -> 파일 이어쓰기
//입력한 내용 파일에 입력
fout.open("성적.txt", std::ios_base::out | std::ios_base::app);
fout << "------------------" << endl;
fout << "이름 : " << n->getName() << endl;
fout << "국어 : " << n->getKor() << endl;
fout << "수학 : " << n->getMath() << endl;
fout << "영어 : " << n->getEng() << endl;
fout << "총점 : " << n->getKor() + n->getMath() + n->getEng() << endl;
fout << "평균 : " << (n->getKor() + n->getMath() + n->getEng()) / 3.f << endl;
fout.close();
while (c->getLink() != NULL){ //다음 객체로 커서 옮김
c = c->getLink();
}
c->setLink(n);
}
void output(ScoMag *h, ScoMag *c, ScoMag *n, ifstream& fin){
system("cls");
fin.open("성적.txt");
string s[100];
for (int i = 0; i < 6; i++) {
fin >> s[i];
if (s[i] == "") { //공백을 만나면 탈출
break;
}
}
fin.close();
for (int i = 0; i < 100; i++) {
cout << s[i];
if (s[i] == "") { //공백을 만나면 탈출
break;
}
}
}
'LANGUAGE > C++' 카테고리의 다른 글
[C++] 오버로딩 불가능 연산자 (0) | 2018.04.13 |
---|---|
[C++] FILE INPUT/OUTPUT (0) | 2018.03.16 |
[C++] TEMPLATE - 템플릿 (0) | 2018.03.16 |
[C++] STRING 직접 구현 (0) | 2018.03.15 |
[C++] OPERATOR FUNCTION - 연산자 함수 (0) | 2018.03.14 |
댓글