#include<iostream>
#include<deque>
#include<algorithm>
#include<vector>
#include<fstream>
using namespace std;
//打分系统,输入同学的人数,分别输入同学的姓名的姓名和分数,统计所有人的平均分(去除异常的分数),将不同同学的分数输出到txt中,并且最后附上班级的(正常)平均分
class Student
{
public:
string name=" ";
int score=0;
Student(string a,int b)
{
this->name = a;
this->score = b;
}
Student()
{
}
};
void output(deque<Student>& d)
{
deque<Student>::iterator it = d.begin();
deque<Student>::iterator ite = d.end();
for (deque<Student>::iterator it = d.begin(); it != d.end(); it++)
{
cout << "学生的姓名是:" << (*it).name << " \t学生的分数为:" << (*it).score << endl;
}
}
void deque_sort(deque<Student>& d)
{
deque<Student>::iterator it = d.begin();
deque<Student>::iterator ite = d.end();
int deque_size = d.size();
for (int i = 0; i < deque_size - 1; i++)
{
for (int j = 0; j < deque_size - i - 1; j++)
{
if (d[j].score > d[j + 1].score)
{
Student temp;
temp.name = d[j].name;
temp.score = d[j].score;
d[j].name = d[j + 1].name;
d[j].score = d[j + 1].score;
d[j + 1].name = temp.name;
d[j + 1].score = temp.score;
}
}
}
}
float cal(deque<Student> d)
{
d.pop_back();
d.pop_front();
deque<Student>::iterator it = d.begin();
deque<Student>::iterator ite = d.end();
float times = 0;
float total = 0;
for (; it != ite; it++)
{
total += (*it).score;
times++;
}
return total / times;
}
void output_toyexy(deque<Student>& d)
{
fstream ofs;
ofs.open("C:/Users/涂小康/Desktop/C++STL/1.txt");
deque<Student>::iterator it = d.begin();
deque<Student>::iterator ite = d.end();
for (it; it != ite; it++)
{
ofs << "同学的姓名:" << (*it).name << "\t同学的成绩:" << (*it).score << endl;
}
ofs<< "所有学生的平均成绩是" << cal(d) << endl;
ofs.close();
}
void input_from_keyboard(deque<Student>& d)
{
int tag = 1;
string sub_name;
int sub_score;
int i = 0;
while (tag)
{
cout << "----------------开始成绩录入---------------" << endl;
Student sub[10];
cout << "请输入同学的姓名:" << endl;
cin >> sub_name;
sub[i].name = sub_name;
cout << "请输入同学的成绩:" << endl;
cin >> sub_score;
sub[i].score = sub_score;
cout << "是否结束录入?是(不再录入)输入0,否(继续录入)输入1" << endl;
cin >> tag;
d.push_back(sub[i]);
i++;
}
cout << "----------------成绩录入结束---------------" << endl;
}
int main()
{
//Student s1("David",100);
//Student s2("Li",98);
//Student s3("Victor",99);
//Student s4("Linda",95);
deque<Student> list;
//list.push_back(s1);
//list.push_back(s2);
//list.push_back(s3);
//list.push_back(s4);
input_from_keyboard(list);
deque_sort(list);
output(list);
cout << "所有学生的平均成绩是" << cal(list) << endl;
output_toyexy(list);
return 0;
}