c++성적관리프로그램

조회수 724회

1.void InputData(Student *pSt, int StudentNum); // pSt : 수정할 학생정보 포인터 매개변수 // StudentNum : 전체 학생 수 • 2명의 학생과 3개의 교과목을 일률적으로 입력받던 프로그램을 동적으로 학생 수와 과목 수를 입력받 을 수 있도록 수정

float CalcAveGPA(subject *, int) 구조체를 이렇게 바꿔야합니다. struct Student {// 학생 정보 char StdName[30]; // 학생 이름 int Hakbun; // 학번 Subject *Sub; // 과목 int SubNum; // 과목 수 float AveGPA; // 교과목 평균 평점 이 3가지를 만족해야합니다... 아래의 코드를 수정하여..

include include include using namespace std;

const int Student_Num = 2;

const int Subject_Num = 3;

struct Subject { // 과목정보 char SubName[30]; // 과목명 int Hakjum; // 과목학점 char Grade[10]; // 과목등급 float GPA; // 과목평점 };

struct Student { // 학생정보 char StdName[30]; // 학생이름 int Hakbun; // 학번 Subject Sub[Subject_Num]; // 과목 float AveGPA; // 과목 평균 평점 };

void CalcGPA(Subject &Sub); float CalcAveGPA(Subject *Sub); void PrintAllData(const Student *pSt, int StudentNum); void PrintOneData(const Student &rSt); Student *StdSearch(Student *pSt, int StudentNum);

inline void PrintMenu(); inline void InputValue(char *str); inline void InputValue(int &i); void PrintAllStdList(const Student *pSt, int StudentNum); void ModifyStdInfo(Student *pSt);

void CalcGPA(Subject &Sub) { // 과목등급 점수 저장할 변수 선언 float Sub_score = 0;

// 과목등급을 확인후 변수값 변경 switch(Sub.Grade[0]) { case 'A': Sub_score += 1; case 'B': Sub_score += 1; case 'C': Sub_score += 1; case 'D': Sub_score += 1; }

if(Sub.Grade[1]=='+') Sub_score += 0.5;

// 과목평점 저장 Sub.GPA = Sub_score*Sub.Hakjum; }

float CalcAveGPA(Subject *Sub) { float AveGPA = 0;

for(int i=0; i<Subject_Num; i++) { AveGPA += Sub[i].GPA; }

return AveGPA/Subject_Num; }

void PrintAllData(const Student *pSt, int StudentNum) { cout << setw(37) << "전체 학생 성적 보기" << endl; cout << setw(56) << setfill('=') << ' ' << setfill(' ') << endl;

for(int i=0; i<StudentNum; i++) { PrintOneData(pSt[i]); } }

void PrintOneData(const Student &rSt) { cout << "이름 : " << rSt.StdName << " 학번 : " << rSt.Hakbun << endl; cout << setw(56) << setfill('=') << ' ' << setfill(' ') << endl; cout << setw(12) << "과목명" << setw(12) << "과목학점" << setw(12) << "과목등급" << setw(12) << "과목평점" << endl; cout << setw(56) << setfill('=') << ' ' << setfill(' ') << endl; cout.precision(2); cout << fixed;

for(int i=0; i<Subject_Num; i++) { cout << setw(12) << rSt.Sub[i].SubName << setw(12) << rSt.Sub[i].Hakjum << setw(12) << rSt.Sub[i].Grade << setw(12) << rSt.Sub[i].GPA << endl; }

cout << setw(56) << setfill('=') << ' ' << setfill(' ') << endl; cout << setw(36) << "평균평점" << setw(12) << rSt.AveGPA << endl << endl; }

Student *StdSearch(Student *pSt, int StudentNum) { // 검색할 이름 저장용 번수 선언 char SearchName[30];

cout << "검색 할 학생 이름 : "; InputValue(SearchName);

for(int i=0; i<StudentNum; i++) { for(int j=0; j<strlen(SearchName) && pSt[i].StdName[j]==SearchName[j] && strlen(SearchName)==strlen(pSt[i].StdName); j++) { if(j==strlen(SearchName)-1) return &pSt[i]; } }

// 없으면 NULL을 반환 return NULL; }

inline void PrintMenu() { cout << "===== 메뉴 =====" << endl; cout << "1. 학생 성적 입력" << endl; cout << "2. 전체 학생 성적 보기" << endl; cout << "3. 학생 이름 검색" << endl; cout << "4. 전체 학생 목록 보기" << endl; cout << "5. 학생 정보 수정" << endl; cout << "6. 프로그램 종료" << endl << endl; cout << "원하는 기능을 입력하세요 : "; }

inline void InputValue(char *str) { cin >> str; }

inline void InputValue(int &i) { cin >> i; }

void PrintAllStdList(const Student *pSt, int StudentNum=2) { cout << setw(32) << setfill('=') << ' ' << setfill(' ') << endl; cout << setw(12) << "학번" << setw(12) << "이름" << endl; cout << setw(32) << setfill('=') << ' ' << setfill(' ') << endl; for(int i=0; i<StudentNum; i++) { cout << setw(12) << pSt[i].Hakbun << setw(12) << pSt[i].StdName << endl; } cout << setw(32) << setfill('=') << ' ' << setfill(' ') << endl << endl; }

// 실습 4 요구사항(이름으로 검색, 수정) void ModifyStdInfo(Student pSt) { // 검색 Student *SearchStd; SearchStd = StdSearch(pSt, Student_Num); if(SearchStd!=NULL) { // 수정 cout << " (" << SearchStd[0].StdName << ", " << SearchStd[0].Hakbun << ")의 정보를 수정하세요" << endl; cout << "이름 : "; InputValue(SearchStd[0].StdName); cout << "학번 : "; InputValue(SearchStd[0].Hakbun); } }

int main() { // 학생 구조체 선언 Student St[Student_Num];

// 메뉴 선택한 값 저장할 변수 선언 int selected_menu = 0;

while(selected_menu!=6) { // 메뉴 출력 및 입력 PrintMenu(); InputValue(selected_menu); cout << endl;

switch(selected_menu) {
    case 1:

        // 학생 정보 입력 
        for(int i=0; i<Student_Num; i++) {
            cout << "* " << i+1 << " 번째 학생 이름과 학번을 입력하세요." << endl;
            cout << "이름 : ";
            InputValue(St[i].StdName);
            cout << "학번 : ";
            InputValue(St[i].Hakbun);
            cout << endl << endl << endl << endl;
            cout << "* 수강한 과목" << Subject_Num << "개와 각 교과목명, 과목등급을 입력하세요." << endl;

            for(int j=0; j<Subject_Num; j++) {
                cout << "교과목명 : ";
                InputValue(St[i].Sub[j].SubName);
                cout << "과목학점수 : ";
                InputValue(St[i].Sub[j].Hakjum);
                cout << "과목등급(A+ ~ F) : ";
                InputValue(St[i].Sub[j].Grade);
                cout << endl;
                CalcGPA(St[i].Sub[j]);
            }
            cout << endl << endl << endl;
            St[i].AveGPA = CalcAveGPA(St[i].Sub);
        }
        break;
    case 2:

        // 전체 학생 정보 출력 
        PrintAllData(St, Student_Num);
        break;
    case 3:

        // 학생 이름 검색 후 출력
        Student *SearchStd;
        SearchStd = StdSearch(St, Student_Num);
        if(SearchStd!=NULL) PrintOneData(*SearchStd);
        break;
    case 4:

        // 전체 학생 목록 출력
        PrintAllStdList(St);
        break;
    case 5:

        // 학생 정보 검색, 수정
        ModifyStdInfo(St);
        break;
}

}

return 0; }

여기서 1번 inputData 코드 아시는분 알려주세요

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)