當前位置:編程學習大全網 - 編程語言 - 使用STL模板編寫程序管理壹個班級學生的面向對象的課程成績,要求能夠實現以下功能:

使用STL模板編寫程序管理壹個班級學生的面向對象的課程成績,要求能夠實現以下功能:

#include <vector>

#include <iterator>

#include <iostream>

#include <algorithm>

#include <string>

#include <limits>

class Student

{

public:

Student(int id,int score)

:m_id(id)

,m_score(score)

{

}

bool operator <(const Student& other)

{

return m_score<other.m_score;

}

bool operator ==(const Student& other)

{

return m_id==other.m_id;

}

int m_id,m_score;

};

std::ostream& operator<<(std::ostream& o,const Student& s)

{

o<<"id: "<<s.m_id<<" score: "<<s.m_score;

return o;

}

int main(int argc, char *argv[])

{

std::cout<<"a [id] [score] to add\n"

"d [id] to delete\n"

"f [id] to find\n"

"s to sort\n"

"p to print\n"

"q to quit\n"<<std::endl;

char status;

int id=0,score=0;

std::vector<Student> students;

bool done=false,errorFlag=false;

do{

std::cin>>status;

switch(status){

case 'q':

done=true;

break;

case 'a':

std::cin>>id>>score;

students.push_back(Student(id,score));

std::cout<<id<<" added.";

break;

case 'd':

{

std::cin>>id;

Student s(id,-1);

std::vector<Student>::iterator itr=std::find(students.begin(),students.end(),s);

if(itr!=students.end()){

students.erase(itr);

std::cout<<id<<" deleted.";

}

else

std::cout<<"student ["<<id<<"] do not exists!";

}

break;

case 'f':

{

std::cin>>id;

Student s(id,-1);

std::vector<Student>::iterator itr=std::find(students.begin(),students.end(),s);

if(itr==students.end())

std::cout<<"student ["<<id<<"] do not exists!";

else

std::cout<<*itr<<" finded.";

}

break;

case 's':

std::sort(students.begin(),students.end());

std::cout<<"sort end!";

break;

case 'p':

std::copy(students.begin(),students.end(),std::ostream_iterator<Student>(std::cout,"\n"));

std::cout<<"print end!";

break;

default:

errorFlag=true;

}

if(errorFlag||std::cin.fail()){

errorFlag=false;

std::cin.clear();

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

std::cout<<"error when input.";

}

std::cout<<std::endl;

}while(!done);

std::cout<<"bye!"<<std::endl;

}

  • 上一篇:數控屬於什麽專業啊
  • 下一篇:人教版2011——2012五年級上冊語文期中卷子有嗎?
  • copyright 2024編程學習大全網