首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求解答整行排序有关问题

2012-07-26 
求解答整行排序问题405505108胡小玲898493266305505035陈龙887887253405505021陈军838591259305505066崔建

求解答整行排序问题
405505108胡小玲898493266
305505035陈龙887887253
405505021陈军838591259
305505066崔建基977090257
系统功能实现到:如上,输出个人的信息(其中总分已放进数组里),现要求按总分大小从高分到低分排序,求大神们帮忙想想怎样做?最好有代码参考了

[解决办法]
参考下面的代码中的“按总分排名”

C/C++ code
#include <map>#include <string>#include <iostream>#include <vector>#include <algorithm>using namespace std;// 学生类class Student{private:    int id;                    // 学号    string name;            // 姓名    double chinese;            // 语文成绩    double english;            // 英语成绩    double math;            // 数学成绩    double computer;        // 计算机成绩public:    Student()    {        id = -1;        name = "";        chinese = 0.0;        english = 0.0;        math = 0.0;        computer = 0.0;    }    Student(int id, string name, double chinese, double english, double math, double computer)    {        this->id = id;        this->name = name;        this->chinese = chinese;        this->english = english;        this->math = math;        this->computer = computer;    }    int get_id() const    {        return id;    }    string get_name() const    {        return name;    }    void set_name(string name)    {        this->name = name;    }    double get_chinese() const    {        return chinese;    }    void set_chinese(double chinese)    {        this->chinese = chinese;    }    double get_english() const    {        return english;    }    void set_english(double english)    {        this->english = english;    }    double get_math() const    {        return math;    }    void set_math(double math)    {        this->math = math;    }    double get_computer() const    {        return computer;    }    void set_computer(double computer)    {        this->computer = computer;    }    // 获取总分    double get_sum() const    {        return (chinese + english + math + computer);    }    void show_info()    {        cout << id << "\t" << name << "\t" << chinese << "\t" << english << "\t" << math << "\t" << computer << "\t" << get_sum() << endl;    }};// 按语文分数排序bool compare_chinese(const Student& stu1, const Student& stu2){    return (stu1.get_chinese() < stu2.get_chinese());}// 按英语分数排序bool compare_english(const Student& stu1, const Student& stu2){    return (stu1.get_english() < stu2.get_english());}// 按数学分数排序bool compare_math(const Student& stu1, const Student& stu2){    return (stu1.get_math() < stu2.get_math());}// 按计算机分数排序bool compare_computer(const Student& stu1, const Student& stu2){    return (stu1.get_computer() < stu2.get_computer());}// 按总分排序bool compare_sum(const Student& stu1, const Student& stu2){    return (stu1.get_sum() < stu2.get_sum());}// 数据库类。包含增、删、改、查等操作class Database{private:    // 模拟数据库。学号作为主键    map<int, Student> students;public:    // 增加一个学生    void add_student(Student student)    {        students.insert(pair<int, Student>(student.get_id(), student));    }    // 删除一个学生    void delete_student(int id)    {        map<int, Student>::iterator iter;        iter = students.find(id);        students.erase(iter);    }    // 更改一个学生    void update_student(Student student)    {        map<int, Student>::iterator iter;        iter = students.find(student.get_id());        if(iter != students.end())        {            iter->second.set_name(student.get_name());            iter->second.set_chinese(student.get_chinese());            iter->second.set_english(student.get_english());            iter->second.set_math(student.get_math());            iter->second.set_computer(student.get_computer());        }        else        {            cout << "This student does not exist in database, update failed." << endl;        }    }    // 根据学号查询学生    Student select_student(int id)    {        map<int, Student>::iterator iter;        iter = students.find(id);        return Student(iter->second.get_id(), iter->second.get_name(),                        iter->second.get_chinese(), iter->second.get_english(),                       iter->second.get_math(), iter->second.get_computer());    }    // 计算某门课程的平均成绩    double average(string course)    {        double sum = 0.0;        for(map<int, Student>::iterator iter = students.begin(); iter != students.end(); ++iter)        {            if(course == "chinese")            {                sum += iter->second.get_chinese();            }            if(course == "english")            {                sum += iter->second.get_english();            }            if(course == "math")            {                sum += iter->second.get_math();            }            if(course == "computer")            {                sum += iter->second.get_computer();            }        }        return sum / students.size();    }    vector<Student> sortBy(string course)    {        vector<Student> vec;        for(map<int, Student>::iterator iter = students.begin(); iter != students.end(); ++iter)        {            vec.push_back(iter->second);        }        if(course == "chinese")            sort(vec.begin(), vec.end(), compare_chinese);        if(course == "english")            sort(vec.begin(), vec.end(), compare_english);        if(course == "math")            sort(vec.begin(), vec.end(), compare_math);        if(course == "computer")            sort(vec.begin(), vec.end(), compare_computer);        return vec;    }    // 获取数据库中的所有学生    vector<Student> select_all()    {        vector<Student> vec;        map<int, Student>::iterator iter;        for(iter = students.begin(); iter != students.end(); ++iter)        {            vec.push_back(iter->second);        }        return vec;    }};int main(int argc, char* argv[]){    Student student1(1, "Andy", 100.0, 100.0, 100.0, 100.0);    Student student2(2, "Bob", 99.0, 99.0, 99.0, 99.0);    Student student3(3, "Chris", 98.0, 98.0, 98.0, 98.0);    Database db;    // 增加数据    db.add_student(student1);    db.add_student(student2);    db.add_student(student3);    // 显示增加数据后,数据库中的所有数据记录    vector<Student> vec = db.select_all();    for(vector<Student>::iterator iter = vec.begin(); iter != vec.end(); ++iter)    {        iter->show_info();    }    cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;    // 删除student2    db.delete_student(student2.get_id());    // 显示删除数据后,数据库中的所有数据记录    vec = db.select_all();    for(vector<Student>::iterator iter = vec.begin(); iter != vec.end(); ++iter)    {        iter->show_info();    }    cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;    // 更改数据    Student update_student(1, "Andrew", 120.0, 120.0, 120.0, 120.0);    db.update_student(update_student);    // 显示更改数据后,数据库中的所有数据记录    vec = db.select_all();    for(vector<Student>::iterator iter = vec.begin(); iter != vec.end(); ++iter)    {        iter->show_info();    }    cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;    // 查询数据    Student student = db.select_student(1);    // 显示查询结果    student.show_info();    cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;    // 平均成绩    cout << "average of chinese:\t" << db.average("chinese") << endl;    // 语文    cout << "average of english:\t" << db.average("english") << endl;    // 英语    cout << "average of maths:\t" << db.average("math") << endl;        // 数学    cout << "average of computer:\t" << db.average("computer") << endl;    // 计算机    cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;    // 俺总分排名    vector<Student> sorted_vec = db.sortBy("");    for(vector<Student>::iterator iter = sorted_vec.begin(); iter != sorted_vec.end(); ++iter)    {        iter->show_info();    }    return 0;} 


[解决办法]
你高估他了,连这程序都写不出来的,你写成这样,坑人啊

你让人家怎么给老师解释程序。。。。。


既然有代码,把代码贴出来,那地方不懂。
[解决办法]
LZ贴的代码好难看,插入源代码啊,像一楼一样多漂亮,看着都舒服些

热点排行