2014-05-20 2 views
0

내가이 데이터 학생 정보 시스템 클래스 할당 벡터 검색

First Name Last Name  ID   Tuition GPA 
Alex   Robinson  02341  1400.50 3.45 
John   Brown   043261 1200.00 3.21 
Rachel   VanGorp  77239  600.00 4.00 
James   Smith   89167  1150.55 1.45 
Juan   Garcia   23165  1200.00 3.33 
Lindsey  McDonald  32501  1340.50 2.25 
Tom   Barry   78442  500.00 3.85 
Gwen   Poss   30029  1150.50 3.85 
Janice   Jones   44560  2200.50 2.45 
Jack   Price   99314  1850.55 3.12 

가 포함 된 텍스트 문서를 가지고 있고이 벡터에 항목의 목록을 가져 말할 수 있습니다, 여기 내 학생 클래스 내 classOfStudents 클래스입니다. 이 정보는 도움이 될 것입니다. 나는 길을 잃고 어디로 가야할지 모른다. 단지 참조와 올바른 방향의 포인트가 좋을 것입니다!

 class student 
     { 
    public: 
     student() 
     { 
      firstName = ""; 
      lastName = ""; 
      ID = ""; 
      tuitionBalance = 0.0; 
    GPA = 0.0; 
} 
student(string first, string last, string id, double tuition, double gpa) 
{ 
    first = firstName; 
    last = lastName; 
    id = ID; 
    tuition = tuitionBalance; 
    gpa = GPA; 
} 

void openIF() 
{ 
    inFile.open("students.txt"); 
} 
void setFirstName() 
{ 
    inFile >> temp; 
    firstName = temp; 
} 
void setLastName() 
{ 
    inFile >> temp; 
    lastName = temp; 
} 
void setID() 
{ 
    inFile >> temp; 
    ID = temp; 
} 
void setBalance() 
{ 
    inFile >> tuitionBalance; 
} 
void setGPA() 
{ 
    inFile >> GPA; 
} 
void closeIF() 
{ 
    inFile.close(); 
} 

string firstName, lastName, ID; 
double tuitionBalance, GPA; 
    private: 

ifstream inFile; 
char temp[128]; 
    } 

class classOfStudents 
{ 
public: 
    vector<student> students; 

    classOfStudents() 
    { 
     student Students = student(firstName, lastName, ID, tuitionBalance, GPA); 
     students.push_back(Students); 
    } 

    void findStudent() 
    { 
     int searchID; 
     cout << "Enter ID of student" << endl; 
     cin >> searchID; 
     find(students.begin(), students.end(), searchID); 
    } 

private: 
    string firstName, lastName, ID; 
    double tuitionBalance, GPA; 
} 

학생의 ID과 함께 나머지 정보는 어떻게 내 보냅니 까?

+1

'ID'를 키로하고 'student'를 값으로 사용하여'map'을 만들 수 있습니다. – CoryKramer

+1

가장 기본적인 해결책은 올바른 ID로 '학생'을 찾을 때까지 벡터를 반복하는 것입니다. 사이버 접근 방식은 데이터 구조 (조금)가 더 복잡해지기 시작합니다. – SJuan76

+0

@Cyber지도를 만들려고했을 때 Visual Studio에서 사이버가 제안하는 방식대로하려면 – user3658110

답변

0
using namespace std; 

#include <iostream> 
#include <map> 

class student 
{ 
public: 
string firstName, lastName; 
int ID; 
double tuitionBalance, GPA; 

student(){} 

student(string fName, string lName, int id, double tBalance, double gpa) 
{ 
    firstName = fName; 
    lastName = lName; 
    ID = id; 
    tuitionBalance = tBalance; 
    GPA = gpa; 
} 
}; 

class classOfStudents 
{ 
public: 

std::map <int, student> StudentMap; 

classOfStudents() 
{ 
    student Students = student("Firstname", "Lastname", 123, 0.00, 4.00); 
    StudentMap.insert(std::pair<int, student>(123, Students)); 
} 

void findStudent() 
{ 
    int searchID; 
    cout << "Enter ID of student" << endl; 
    cin >> searchID; 

    if (StudentMap.find(searchID) == StudentMap.end()) 
    { 
     printf("Student not found"); 
    } 
    else 
    { 
     printf("Name: %s %s ", StudentMap[searchID].firstName, StudentMap[searchID].lastName); 
    } 
} 
}; 
+0

업데이트 된 코드를 확인하십시오. 삽입 메소드를 사용하여 쌍을 삽입하고 [] 연산자를 사용하여 주어진 키의 값을 찾을 수 있습니다. – Sanzad