学生成绩管理系统V4.0

某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入)。参考学生成绩管理系统V3.0,用二维数组作函数参数编程实现如下菜单驱动的学生成绩管理系统:

1)录入每个学生的学号、姓名和各科考试成绩;

2)计算每门课程的总分和平均分;

3)计算每个学生的总分和平均分;

4)按每个学生的总分由高到低排出名次表;

5)按每个学生的总分由低到高排出名次表;

6)按学号由小到大排出成绩表;

7)按姓名的字典顺序排出成绩表;

8)按学号查询学生排名及其各科考试成绩;

9)按姓名查询学生排名及其各科考试成绩;

10)按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~595个类别,对每门课程分别统计每个类别的人数以及所占的百分比;

11)输出每个学生的学号、姓名、各科考试成绩、总分、平均分,以及每门课程的总分和平均分

代码如下:代码中还有许多问题有待改进,但基本算法就这样了。

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
void input(int xvehao[], int course[][7],string name[], int n);
void caculate_score(int xvehao[], int course[][7], string name[], int n);
void caculate_student(int xvehao[], int course[][7], string name[], int n);
void sort_in_descending_order_by_score(int xvehao[], int course[][7], string name[], int n);
void sort_in_ascending_order_by_score(int xvehao[], int course[][7], string name[], int n);
void sort_in_ascending_order_by_number(int xvehao[], int course[][7], string name[], int n);
void sort_in_dictionary_order_by_name(int xvehao[], int course[][7], string name[], int n);
void search_by_number(int xvehao[], int course[][7], string name[], int n);
void search_by_name(int xvehao[], int course[][7], string name[], int n);
void statistic(int xvehao[], int course[][7], string name[], int n);
int main()
{
	int n;
	cout << "Input student number(n<30):";
	cin >> n;
	int choice;
	int course[30][7] = { 0 };
	int xvehao[30];
	string name[30];
	while (1)
	{
		cout << endl;
		cout << "Management for Students' scores" << endl;
		cout << "1.Input record" << endl;
		cout << "2.Caculate total and average score of every course" << endl;
		cout << "3.Caculate total and average score of every student" << endl;
		cout << "4.Sort in descending order by score" << endl;
		cout << "5.Sort in ascending order by score" << endl;
		cout << "6.Sort in ascending order by number" << endl;
		cout << "7.Sort in dictionary order by name" << endl;
		cout << "8.Search by number" << endl;
		cout << "9.Search by name" << endl;
		cout << "10.Statistic analysis" << endl;
		cout << "11.List record" << endl;
		cout << "0.Exit" << endl;
		cout << "Please Input your choice:";
		cin >> choice;

		if (choice == 1)input(xvehao,course ,name,n);
		else if (choice == 2)caculate_score(xvehao, course, name, n);
		else if (choice == 3)caculate_student(xvehao, course, name, n);
		else if (choice == 4)sort_in_descending_order_by_score(xvehao, course, name, n);
		else if (choice == 5)sort_in_ascending_order_by_score(xvehao, course, name, n);
		else if (choice == 6)sort_in_ascending_order_by_number(xvehao, course, name, n);
		else if (choice == 7)sort_in_dictionary_order_by_name(xvehao, course, name, n);
		else if (choice == 8)search_by_number(xvehao, course, name, n);
		else if (choice == 9)search_by_name(xvehao, course, name, n);
		else if (choice == 10)statistic(xvehao, course, name, n);
		else if (choice == 11)sort_in_ascending_order_by_number(xvehao, course, name, n);
		else if (choice == 0) 
		{
			cout << "End of program!";
			break;
		}
		else
		{
			cout << "Input error!" << endl;
			cout << "Please input any number from 0 to 11!"<<endl; continue;
		}
	}
	return 0;
}

void input(int xvehao[], int course[][7], string name[], int n)
{
	int subject;
	cout << "Input course number(m<=6):";
	cin >> subject;
	int i,j;
	cout << "Input student's ID, name and score:" << endl;
	for (i = 1; i <= n; i++)
	{
		cin >> xvehao[i];
		cin >> name[i];
		for (j = 1; j <= subject; j++)
		{
			cin >> course[i][j];
		}
	}
}

void caculate_score(int xvehao[], int course[][7], string name[], int n)
{
	float sum,aver;
	int i,j;
	for (i = 1; i <= 6; i++)
	{
		if (course[1][i] != 0)
		{
			sum = 0; aver = 0;
			for (j = 1; j <= n; j++)
			{
				sum += course[j][i];
			}
			aver = sum / n;
			cout << "course " << i << ":sum=" << sum << ",aver=" <<fixed<<setprecision(0)<< aver;
			cout << endl;
		}
		else break;
	}
}

void caculate_student(int xvehao[], int course[][7], string name[], int n)
{
	float sum, aver;
	int i, j;
	for (i = 1; i <= n; i++)
	{
		sum = 0; aver = 0;
		for (j = 1; j <= 6; j++)
		{
			if (course[i][j] != 0)
			{
				sum += course[i][j];
			}
			else break;
		}
		aver = sum / (j - 1);
		cout << "student " << i << ":sum=" << sum << ",aver=" << fixed << setprecision(0) << aver;
		cout << endl;
	}
}

void sort_in_descending_order_by_score(int xvehao[], int course[][7], string name[], int n)
{
	int sum;
	int SUM[30] = { 0 };
	int i, j,k,change1;
	string change2;
	for (i = 1; i <= n; i++)
	{
		sum = 0;
		for (j = 1; j <= 6; j++)
		{
			if (course[i][j] != 0)
			{
				sum += course[i][j];
			}
			else break;
		}
		SUM[i] = sum;
	}
	for (i = 1; i <= n; i++)
	{
		k = i;
		for (j = i + 1; j <= n; j++)
		{
			if (SUM[k] < SUM[j])k = j;
		}
		change1 = xvehao[i];
		xvehao[i] = xvehao[k];
		xvehao[k] = change1;
		change2 = name[i];
		name[i] = name[k];
		name[k] = change2;
		for (int t = 1; t <= 6; t++)
		{
			change1 = course[i][t];
			course[i][t] = course[k][t];
			course[k][t] = change1;
		}
		change1 = SUM[i];
		SUM[i] = SUM[k];
		SUM[k] = change1;
	}
	for (i = 1; i <= n; i++)
	{
		cout << xvehao[i] << " " << name[i] << " ";
		for (j = 1; j <= 6; j++)
		{
			if (course[i][j] != 0)
				cout << course[i][j] << " ";
			else break;
		}
		cout << endl;
	}
}

void sort_in_ascending_order_by_score(int xvehao[], int course[][7], string name[], int n)
{
	int sum;
	int SUM[30] = { 0 };
	int i, j, k, change1;
	string change2;
	for (i = 1; i <= n; i++)
	{
		sum = 0;
		for (j = 1; j <= 6; j++)
		{
			if (course[i][j] != 0)
			{
				sum += course[i][j];
			}
			else break;
		}
		SUM[i] = sum;
	}
	for (i = 1; i <= n; i++)
	{
		k = i;
		for (j = i + 1; j <= n; j++)
		{
			if (SUM[k] > SUM[j])k = j;
		}
		change1 = xvehao[i];
		xvehao[i] = xvehao[k];
		xvehao[k] = change1;
		change2 = name[i];
		name[i] = name[k];
		name[k] = change2;
		for (int t = 1; t <= 6; t++)
		{
			change1 = course[i][t];
			course[i][t] = course[k][t];
			course[k][t] = change1;
		}
		change1 = SUM[i];
		SUM[i] = SUM[k];
		SUM[k] = change1;
	}
	for (i = 1; i <= n; i++)
	{
		cout << xvehao[i] << " " << name[i] << " ";
		for (j = 1; j <= 6; j++)
		{
			if (course[i][j] != 0)
				cout << course[i][j] << " ";
			else break;
		}
		cout << endl;
	}
}

void sort_in_ascending_order_by_number(int xvehao[], int course[][7], string name[], int n)
{
	int i, j, k;
	int change1;
	string change2;
	for (i = 1; i <= n; i++)
	{
		k = i;
		for (j = i + 1; j <= n; j++)
		{
			if (xvehao[k] > xvehao[j])k = j;
		}
		change1 = xvehao[i];
		xvehao[i] = xvehao[k];
		xvehao[k] = change1;
		change2 = name[i];
		name[i] = name[k];
		name[k] = change2;
		for (int t = 1; t <= 6; t++)
		{
			change1 = course[i][t];
			course[i][t] = course[k][t];
			course[k][t] = change1;
		}
	}
	for (i = 1; i <= n; i++)
	{
		cout << xvehao[i] << " " << name[i] << " ";
		for (j = 1; j <= 6; j++)
		{
			if (course[i][j] != 0)
				cout << course[i][j] << " ";
			else break;
		}
		cout << endl;
	}
}

void sort_in_dictionary_order_by_name(int xvehao[], int course[][7], string name[], int n)
{
	int i, j, k,t;
	int change1;
	string change2;
	for (i = 1; i <= n; i++)
	{
		k = i;
		for (j = i + 1; j <= n; j++)
		{
			for (t = 0; t < name[i].size(); t++)
			{
				if (name[k][t] > name[j][t])
				{
					k = j; break;
				}
				else if (name[k][t] == name[j][t])continue;
				else break;
			}
		}
		change1 = xvehao[i];
		xvehao[i] = xvehao[k];
		xvehao[k] = change1;
		change2 = name[i];
		name[i] = name[k];
		name[k] = change2;
		for (t = 1; t <= 6; t++)
		{
			change1 = course[i][t];
			course[i][t] = course[k][t];
			course[k][t] = change1;
		}
	}
	for (i = 1; i <= n; i++)
	{
		cout << xvehao[i] << " " << name[i] << " ";
		for (j = 1; j <= 6; j++)
		{
			if (course[i][j] != 0)
				cout << course[i][j] << " ";
			else break;
		}
		cout << endl;
	}
}

void search_by_number(int xvehao[], int course[][7], string name[], int n)
{	
	int i,j,k;
	int number;
	cin>> number;
	for (i = 1; i <= n; i++)
	{
		if (xvehao[i] == number)
		{
			cout << xvehao[i] << " " << name[i] << " ";
			for (j = 1; j <= 6; j++)
			{
				if (course[i][j] != 0)
					cout << course[i][j] << " ";
				else break;
			}
			cout << endl;
			k = 1;
			break;
		}
		else k = 0;
	}
	if (k == 0)cout << "Not found!" << endl;
}
void search_by_name(int xvehao[], int course[][7], string name[], int n)
{
	string Name;
	cin >> Name;
	int i,j,k;
	for (i = 1; i <= n; i++)
	{
		for (j = 0; j < Name.size(); j++)
		{
			if (name[i][j] == Name[j])k = 1;
			else { k = 0; break; }
		}
		if (k==1)
		{
			cout << xvehao[i] << " " << name[i] << " ";
			for (j = 1; j <= 6; j++)
			{
				if (course[i][j] != 0)
					cout << course[i][j] << " ";
				else break;
			}
			cout << endl;
			break;
		}
	}
	if (k == 0)cout << "Not found!" << endl;
}

void statistic(int xvehao[], int course[][7], string name[], int n)
{
	int i, j;
	int A, B, C, D, E, F;
	for (i = 1; i <= 6; i++)
	{
		A = 0, B = 0, C = 0, D = 0, E = 0, F = 0;
		if (course[1][i] != 0)
		{
			for (j = 1; j <= n; j++)
			{
				if (course[j][i] == 100)A++;
				else if (course[j][i] >= 90 && course[j][i] <= 99)B++;
				else if (course[j][i] >= 80 && course[j][i] <= 89)C++;
				else if (course[j][i] >= 70 && course[j][i] <= 79)D++;
				else if (course[j][i] >= 60 && course[j][i] <= 69)E++;
				else F++;
			}
		}
		else break;
		cout << "For course " << i << endl;
		cout << "<60  " << F <<"  "<< fixed<<setprecision(2)<<((float)F / n) * 100 << "%"<<endl;
		cout << "60-69  " << E << "  " << fixed << setprecision(2) << ((float)E / n) * 100 << "%"<<endl;
		cout << "70-79  " << D << "  " << fixed << setprecision(2) << ((float)D / n) * 100 << "%"<<endl;
		cout << "80-89  " << C << "  " << fixed << setprecision(2) << ((float)C / n) * 100 << "%" << endl;
		cout << "90-99  " << B << "  " << fixed << setprecision(2) << ((float)B / n) * 100 << "%" << endl;
		cout << "100  " << A << "  " << fixed << setprecision(2) << ((float)A / n) * 100 << "%" << endl;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值