새로새록

[c++]6. 학사관리 본문

소프트웨어융합/경희대 c++ 과제

[c++]6. 학사관리

류지나 2020. 7. 16. 19:30

다음 학사관리 프로그램을 작성하라.
1)
C lass Student 를 생성하시오
이름 (string), 학번 int), 학과 string) 를 member data 로 생성하시오
학생이 들은 과목 vector string>) 과 성적 vector char>) 을 저장하는
member data 를 생성하시오
모든 Member data 는 p rivate 으로 설정하시오


2)
Class Student 의 함수들은 모두 public 으로 생성하시오 . 아래와 같이 두 가지 방식으로
main 함수에서 Student 객체를 생성할 수 있도록 Constructor 함수를 만드시오
Student harry(
harry(“Harry”, 2018101234, “
Student ron;
// 이 때 Initialization list) 를 이용하여 초기값 default ”, 0, “ 을 설정하시오


3
Student ron 과 같은 방식으로 객체를 생성한 경우 , 추후 이름 학번 학과를 세팅 할 수
있도록 setName, setID, setdept 함수를 각각 만드시오 Student 객체의 정보를 다음과
같이 한 줄에 출력 할 수 있도록 print 함수를 만드시오


4
학생의 성적을 입력하는 addGrade 함수를 구현하시오 이 함수는 과목 ( 하나와
해당 과목의 성적 char) 을 입력인수로 받아 과목 이름은 과목 vector 가장 마지막에 ,
성적은 성적 vect or 가장 마지막에 저장한다 과목과 성적 정보를 출력하는 printGrades
함수를 구현하시오 이 함수는 학생의 성적을 vec tor 에 저장된 만큼 다음 과 같이 한 줄에
한 과목씩 출력한다


5
 학생의 성적을 평균내어 평점을 구하는 getGPA 함수를 구현하시오 이 함수는 성적
vector 에 있는 A,B,C,D,F 를 4,3,2,1,0 으로 변환하여 모두 더해 평균을 내서 float 으로
반환하는 함수이다 **printGrades 함수 마지막 부분에 추가해서 과목이름과 성적출력
마지막에 평군 평점을 출력하도록 하라


6

학번을 보고 입력받는 해를 기준 몇학년 인지 출력하는 getYear 함수를 구현하시오 이
함수는 year(int) 정보를 받아 F reshmen(1 학년 )), Sophomore(2 학년 )), Junior(3 학년 )),
Senior(4 학년 )), About to graduate(5 학년 이상 중 하나를 출력한다
***
휴학 등을 제외하고 입력 받은 년도와 학번의 차이로 학년을 계산한다


main 함수는 다음과 같이 작성한다

#include <iostream>
#include <string>
#include <vector>
using namespace std;

class Student {
private:
	string name;
	int id;
	string major;
	vector<string> lecture;
	vector<char> grade;

public:
	Student(string _name, int _id, string _major) :
		name(_name), id(_id), major(_major) {}
	Student() :
		name("default"), id(0), major("depart") {}

	void setName(string _name) {
		name = _name;
	}
	void setID(int _id) {
		id = _id;
	}
	void setdept(string _major) {
		major = _major;
	}

	void print() {
		cout << name << ' ' << id << ' ' << major << endl;
	}

	void addGrade(string _lecture, char _grade) {
		lecture.push_back(_lecture);
		grade.push_back(_grade);
	}

	void printGrades() {
		int size = lecture.size();
		for (int i = 0; i < size; i++) {
			cout << lecture[i] << ' ' << grade[i] << endl;
		}
		getGPA();
	}

	void getGPA() {
		int size = grade.size();
		float sum = 0, gpa;
		for (int i = 0; i < size; i++) {
			if (grade[i]<69)
				sum += 69 - grade[i];
		}
		gpa = sum / size;
		cout << "GPA : " << gpa;
	}

	void getYear(int year) {
		int enroll = id / 1000000;
		int hang = year - enroll + 1;
		if (hang == 1)
			cout << "Freshmen(1학년)" << endl;
		else if (hang == 2)
			cout << "Sophomore(2학년)" << endl;
		else if (hang == 3)
			cout << "Junior(3학년)" << endl;
		else if (hang == 4)
			cout << "Senior(4학년)" << endl;
		else
			cout << "About to graduate" << '(' << hang << ')' << endl;
	}
};
int main() {
	Student Harry("Harry", 2017310973, "CS");
	Harry.print();
	Harry.getYear(2019);
	Harry.addGrade("programming", 'A');
	Harry.addGrade("Basic Circuit", 'B');
	Harry.printGrades();
	cout << "\n\n";

	Student ron;
	ron.print();
	cout << "\n";
	ron.setName("Ron");
	ron.setID(2014103959);
	ron.setdept("EE");
	ron.print();
	ron.getYear(2019);
	ron.addGrade("Computer Architecture", 'B');
	ron.addGrade("Macine Learning", 'B');
	ron.addGrade("Computer Vision", 'C');
	ron.printGrades();

	return 0;
}

좋아요공감

공유하기

통계

글 요소

저작자표시비영리