学生成绩分析系统
设计一个对学生成绩进行分析的程序程序,实现一个班级的学生成绩进行排序、求平均分, 求最高分、最低分以及个分数段的人数进行统计等功能。并实现输出分析结果。
实现的功能:
1.实现学生成绩录入功能
2.实现成绩排序功能,显示排序结果
3.分别计算并显示最高分、最低分和平均分
4.显示各个分数段的人数信息
5.显示所有学生信息
6.清空所有学生信息
7.退出程序
使用说明:
在使用本程序时,根据菜单选项通过键盘输入对应的序号,每次操作完成按下回车返回菜单。在输入多个数据时,将每个数据用空格隔开,并且根据提示信息输入。如果用户输入数据错误,会将该信息设置未默认值,需要清空数据重新输入
废话不多说,直接放代码吧,后序更新代码讲解。(大家复制完代码记得点赞收藏哦,后序有时间会有C/C++和java等语言,数据结构和算法基础等方面的更新)
#include<iostream>
#include<string>
#include<Windows.h>
#include<vector>
#include<algorithm>
#include<map>
#include<utility>
using namespace std;
#define IF_STUDENT_IS_NULL if (class1.empty() == true){cout << T << "请先添加学生信息后在进行此操作!" << endl; Sleep(2000); return;}
#define T "\t\t\t\t\t\t"
#define ENT cout << T <<"请按任意键继续……" << endl; lj = getchar();
//学生成绩分析系统
class Student
{
private:
string id;//学号
string name;//姓名
int age;//年龄
double score;//成绩
public:
//构造器
Student(string id, string name, int age, double score)
{
setId(id);
setName(name);
setAge(age);
setScore(score);
}
//get
string getId()
{
return id;
}
string getName()
{
return name;
}
int getAge()
{
return age;
}
double getScore()
{
return score;
}
//set
void setId(string id)
{
this->id = id;
}
void setName(string name)
{
this->name = name;
}
void setAge(int age)
{
if (age >= 0 && age <= 100)
{
this->age = age;
}
}
void setScore(double score)
{
if (score >= 0 && score <= 100)
{
this->score = score;
}
}
};
//存储学生信息 - 班级1
vector<Student> class1;
//存储最高分和最低分
double maxScore = INT_MIN;
double minScore = INT_MAX;
//存储平均分
double averScore = -1;
//各个分数段人数统计
pair<string,int> statistics[5];
char lj;//为了不警告
//菜单
void menu()
{
cout << T << "\t菜单" << endl;
cout << T << "1.录入学生信息" << endl;
cout << T << "2.成绩排序" << endl;
cout << T << "3.获取最高分信息" << endl;
cout << T << "4.获取最低分信息" << endl;
cout << T << "5.获取平均分信息" << endl;
cout << T << "6.显示各个分数段的人数" << endl;
cout << T << "7.显示所有学生信息" << endl;
cout << T << "8.清空学生信息" << endl;
cout << T << "9.退出程序" << endl;
cout << T << "请输入你的选择:>";
}
void countTheNumberOfPeople(double score)
{
//优秀
if (score >= 90)
{
statistics[0].second++;
}
//良好
else if (score >= 80)
{
statistics[1].second++;
}
//及格
else if (score >= 60)
{
statistics[2].second++;
}
//不及格
else
{
statistics[3].second++;
}
}
//清空缓冲区
void ReCin()
{
char ch;
while ((ch = getchar()) != '\n' && ch != EOF);
}
void studentInit()
{
int n;
cout << T << "请输入需要添加几个学生:";
cin >> n;
cout << T << "学号\t姓名\t年龄\t成绩" << endl;
double sumScore = 0;
for (int i = 0; i < n; i++)
{
string id;
string name;
int age;
double score;
cout << T ;
cin >> id >> name >> age >> score;
Student newStudent = { id,name,age,score };
class1.push_back(newStudent);
sumScore += score;
//判定最高分和最低分
maxScore = max(maxScore, score);
minScore = min(minScore, score);
//统计各个分数段的人数
countTheNumberOfPeople(score);
}
//计算平均分
averScore = sumScore / class1.size();
//初始化分数段
statistics[0].first = "100~90";
statistics[1].first = "89~80";
statistics[2].first = "79~60";
statistics[3].first = "59~0";
//清除缓存区
ReCin();
}
bool cmp(Student& stu1, Student& stu2)
{
//根据成绩排序
return stu1.getScore() > stu2.getScore();
}
void sortStudentScore()
{
//判定是否添加学生
IF_STUDENT_IS_NULL;
//用sort函数实现按成绩排序
sort(class1.begin(), class1.end(), cmp);
}
void getMaxScore()
{
//判定是否添加学生
IF_STUDENT_IS_NULL;
//输出最高分
cout << T << "最高分是:" << maxScore << endl;
}
void getMinScore()
{
//判定是否添加学生
IF_STUDENT_IS_NULL;
//输出最高分
cout << T << "最低分是:" << minScore << endl;
}
void getAverageScore()
{
//判定是否添加学生
IF_STUDENT_IS_NULL;
cout << T << "平均分是:" << averScore << endl;
}
void getTheNumberOfPeopleInEachScoreSegment()
{
for (int i = 0;i < 4;i++)
{
cout << T << "分数段:" << statistics[i].first << "的人数:" << statistics[i].second << "人" << endl;
}
}
void printStudent()
{
cout << T << "学号\t姓名\t年龄\t成绩" << endl;
for (int i = 0; i < class1.size(); i++)
{
cout << T << class1[i].getId() << "\t" << class1[i].getName() << "\t" << class1[i].getAge() << "\t" << class1[i].getScore() << endl;
}
}
void test()
{
cout << T << "欢迎使用学生成绩分析系统!" << endl;
Sleep(2000);//延时
system("cls");//清屏
char flag;//存储选项
do
{
system("cls");
//显示菜单
menu();
//输入选择
cin >> flag;
//清除缓存区
ReCin();
switch (flag)
{
case '1':
//录入学生成绩
studentInit();
cout << T << "添加成功!" << endl;
ENT;
break;
case '2':
//学生成绩排序
sortStudentScore();
cout << T << "排序成功!" << endl;
printStudent();
ENT;
break;
case '3':
//获取最高分信息
getMaxScore();
ENT;
break;
case '4':
//获取最低分信息
getMinScore();
ENT;
break;
case '5':
//获取平均分信息
getAverageScore();
ENT;
break;
case '6':
//获取各个分数段人数统计
getTheNumberOfPeopleInEachScoreSegment();
ENT;
break;
case '7':
printStudent();
ENT;
break;
case '8':
//清空信息
class1.clear();
cout << T << "清空成功!" << endl;
ENT;
break;
case '9':
return;
default:
cout << T << "请输入正确的选项!" << endl;
ENT;
break;
}
} while (true);
}
int main()
{
test();
return 0;
}
这个代码是前段时间顺手写的,比较简陋,有什么不妥可以交流讨论。