成绩管理系统

!!Step By Step!! 

       成绩管理作为计算机应用的一个分支,有着手工管理无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高对学生成绩进行管理的效率。因此,开发一套能够为用户提供充足的信息和快捷的查询手段的学生成绩管理系统,将是非常必要的。

       成绩管理系统需要满足来自教职工、和学生两方面人员的需求。教职工对学生成绩进行录入、保存、读取、修改和删除,同时还可通过学生的部分信息进行查询,以便了解更多信息;学生可以查询自己的各科成绩。

 1、功能界面

2、实现健壮性

3、运用不同的算法进行排序

 成绩管理系统,课程设计说明书含代码-C++文档类资源-CSDN文库

#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
#include <windows.h>
using namespace std;
#define MAX 50//最大人数
struct student
{
	int m_num;//学号
	string m_name;//姓名
	int m_score[5];//各科成绩
	double m_averagescore;//平均成绩
	int m_sum;//总成绩
};
//把班级定义成一个类
class classes
{
public:
	//班级人员数组
	struct student studentArray[MAX];
	//班级当前录入学生的个数
	int m_size;

//----------------------------------------------录入学生-----------------------------------------------
   
	void addstudent(classes *abs)//利用指针接收地址
	{
//add:
	    system("cls");
		cout<<"\t\t----------------------------------成绩录入----------------------------------"<<endl;
		if(abs->m_size==MAX)
		{
			cout<<"人员已满"<<endl;
			return;
		}
		else
		{
			int num;
			while(true)
			{
				cout<<"请输入学号(九位数字,前七位固定,模板2006112##)"<<endl;
				while(true)
				{
					cin>>num;
					cin.clear();//更改cin的状态标志符;
					cin.sync();//清除缓存区的数据流;
					if(num>200611200&&num<200611300)break;
					else cout<<"输入错误"<<endl;
				}
					int ret2=isExist(abs,num);//查找
					if(ret2!=-1)//找到学生
					{
						cout<<"该学生已存在"<<endl;						
					}
					else break;
			}
			abs->studentArray[abs->m_size].m_num=num;

			string name;
			cout<<"请输入姓名"<<endl;
			cin>>name;
			int i=0;
			while(name[i])
			{
				if(name[i]>>8==0)
				{
					cout<<"请输入姓名"<<endl;
					cin>>name;
					i=0;
					continue;
				}
				i++;
			}
			abs->studentArray[abs->m_size].m_name=name;

			int score[5];
            cout<<"请输入数学成绩(满分100):"<<endl;
			while(true)
			{
			    cin>>score[0];
				cin.clear();
				cin.sync();
				if(score[0]>=0&&score[0]<=100)break;
				else cout<<"输入错误"<<endl;
			}
			abs->studentArray[abs->m_size].m_score[0]=score[0];

			cout<<"请输入英语成绩(满分100):"<<endl;
	        while(true)
			{
			    cin>>score[1];
				cin.clear();
				cin.sync();
				if(score[1]>=0&&score[1]<=100)break;
				else cout<<"输入错误"<<endl;
			}
			abs->studentArray[abs->m_size].m_score[1]=score[1];

			cout<<"请输入C++成绩(满分100):"<<endl;
	        while(true)
			{
			    cin>>score[2];
				cin.clear();
				cin.sync();
				if(score[2]>=0&&score[2]<=100)break;
				else cout<<"输入错误"<<endl;
			}
			abs->studentArray[abs->m_size].m_score[2]=score[2];

			cout<<"请输入计算机成绩(满分100):"<<endl;
	        while(true)
			{
			    cin>>score[3];
				cin.clear();
				cin.sync();
				if(score[3]>=0&&score[3]<=100)break;
				else cout<<"输入错误"<<endl;
			}
			abs->studentArray[abs->m_size].m_score[3]=score[3];

			int sum;
			sum=abs->studentArray[abs->m_size].m_score[0]+abs->studentArray[abs->m_size].m_score[1]+abs->studentArray[abs->m_size].m_score[2]+abs->studentArray[abs->m_size].m_score[3];
			abs->studentArray[abs->m_size].m_sum=sum;

			double averagescore;
            averagescore=sum/4;
			abs->studentArray[abs->m_size].m_averagescore=averagescore;

			//更新学生人数
			abs->m_size++;
			cout<<"总分:"<<sum<<endl;
			cout<<"平均分:"<<averagescore<<endl;		
			cout<<"成功录入("<<abs->m_size<<")人"<<endl;			
		}
		while(true)
		{
			int i;
			cout<<"输入1或0(1表示继续录入,0表示返回主菜单)"<<endl;
			cin>>i;
			cin.clear();
			cin.sync();
			if(i==1)
			{
				classes a;
				addstudent(&a);
			//	goto add;
			}
			else if(i==0)break;
			else cout<<"请重新";
		}
	}
	
//---------------------------------------------------成绩显示----------------------------------------
 
    void showstudent(classes *abs)
	{
		system("cls");
		cout<<"\t\t----------------------------------成绩表----------------------------------"<<endl;
		//是否有学生的成绩已被录入
		if(abs->m_size==0)
		{
			cout<<"当前记录为空"<<endl;
		}
		else
		{
			for(int i=0;i<abs->m_size;i++)
			{
				cout<<"╔══════════════════════════════════════════════════════════════════════════════════════════════════╗"<<endl;
				cout<<setiosflags(ios::left);
				cout<<setw(3)<<"  学号:"<<setw(9)<<abs->studentArray[i].m_num<<"   ";
				cout<<setw(3)<<"姓名:"<<setw(4)<<abs->studentArray[i].m_name<<"   ";
				cout<<setw(3)<<"数学:"<<setw(4)<<abs->studentArray[i].m_score[0]<<"   ";
				cout<<setw(3)<<"英语:"<<setw(4)<<abs->studentArray[i].m_score[1]<<"   ";
				cout<<setw(3)<<"C++:"<<setw(4)<<abs->studentArray[i].m_score[2]<<"   ";
				cout<<setw(3)<<"计算机:"<<setw(4)<<abs->studentArray[i].m_score[3]<<"   ";
				cout<<setw(3)<<"总分"<<abs->studentArray[i].m_sum<<"   ";
				cout<<"平均分:"<<abs->studentArray[i].m_averagescore<<endl;
				cout<<"╚══════════════════════════════════════════════════════════════════════════════════════════════════╝"<<endl;
			}
		}
		cout<<"按任意键返回主菜单"<<endl;
		system("pause");
		system("cls");//清屏
	}

//----------------------------------------------------成绩保存-----------------------------------------
    
    void keepstudent(classes *abs)
	{ 
//keep:
	    system("cls");
		cout<<"\t\t----------------------------------成绩保存----------------------------------"<<endl;
	    
		//1、包含头文件  fstream
		//2、创建流对象
		ofstream ofs;

		//3、指定打开方式
		ofs.open("test.txt",ios::out|ios::app);

		//4、写内容
		int num;
		while(true)
		{
			cout<<"请输入学号(九位数字,前七位固定,模板2006112##)"<<endl;
			while(true)
			{
				cin>>num;
				cin.clear();
				cin.sync();
				if(num>200611200&&num<200611300)break;
				else cout<<"输入错误"<<endl;
			}
				int ret2=isExist(abs,num);//查找
				if(ret2!=-1)//找到学生
				{
					cout<<"该学生已存在"<<endl;
				}
				else break;
		}
		abs->studentArray[abs->m_size].m_num=num;
		string ch="学号:";
		ofs<<setw(3)<<ch<<setw(9)<<num<<" ";

		string name;
		cout<<"请输入姓名"<<endl;
		cin>>name;
		int i=0;
		while(name[i])
		{
			if(name[i]>>8==0)
			{
				cout<<"请输入姓名"<<endl;
				cin>>name;
				i=0;
				continue;
			}
			i++;
		}
		abs->studentArray[abs->m_size].m_name=name;
		ch="姓名:";
		ofs<<setw(3)<<ch<<setw(4)<<name<<" ";

		int score[5];	
		cout<<"请输入数学成绩"<<endl;
	    while(true)
		{
			cin>>score[0];
			cin.clear();
			cin.sync();
			if(score[0]>=0&&score[0]<=100)break;
			else cout<<"输入错误"<<endl;
		}
		abs->studentArray[abs->m_size].m_score[0]=score[0];
		ch="数学:";
		ofs<<setw(3)<<ch<<setw(4)<<score[0]<<" ";

		cout<<"请输入英语成绩"<<endl;
        while(true)
		{
		    cin>>score[1];
	    	cin.clear();
			cin.sync();
			if(score[1]>=0&&score[1]<=100)break;
			else cout<<"输入错误"<<endl;
		}
		abs->studentArray[abs->m_size].m_score[1]=score[1];
		ch="英语:";
		ofs<<setw(3)<<ch<<setw(4)<<score[1]<<" ";

		cout<<"请输入C++成绩:"<<endl;
        while(true)
		{
		    cin>>score[2];
			cin.clear();
			cin.sync();
			if(score[2]>=0&&score[2]<=100)break;
			else cout<<"输入错误"<<endl;
		}	
		abs->studentArray[abs->m_size].m_score[2]=score[2];
		ch="C++:";
		ofs<<setw(3)<<ch<<setw(4)<<score[2]<<" ";

		cout<<"请输入计算机成绩:"<<endl;
        while(true)
		{
			cin>>score[3];
			cin.clear();
			cin.sync();
			if(score[3]>=0&&score[3]<=100)break;
			else cout<<"输入错误"<<endl;
		}
		abs->studentArray[abs->m_size].m_score[3]=score[3];
		ch="计算机:";
		ofs<<setw(3)<<ch<<setw(4)<<score[3]<<endl;

		int sum;
		sum=abs->studentArray[abs->m_size].m_score[0]+abs->studentArray[abs->m_size].m_score[1]+abs->studentArray[abs->m_size].m_score[2]+abs->studentArray[abs->m_size].m_score[3];
		abs->studentArray[abs->m_size].m_sum=sum;
		ch="总分:";
		ofs<<setw(3)<<ch<<setw(4)<<sum<<endl;

		double averagescore;
        averagescore=sum/4;
		abs->studentArray[abs->m_size].m_averagescore=averagescore;
		ch="平均分:";
		ofs<<setw(3)<<ch<<setw(4)<<averagescore<<endl;


		//更新学生人数
		abs->m_size++;
		cout<<"总分:"<<sum<<endl;
		cout<<"平均分:"<<averagescore<<endl;		
		cout<<"成功录入("<<abs->m_size<<")人"<<endl;		

		//更新学生人数

		cout<<"成功保存"<<endl;
		//5、关闭文件
		ofs.close();
		while(true)
		{
			int i;
			cout<<"输入1或0(1表示继续保存,0表示返回主菜单)"<<endl;
			cin>>i;
			cin.clear();
			cin.sync();
			if(i==1)
			{
				classes b;
                keepstudent(&b);
				//goto keep;
			}
			else if(i==0)break;
			else cout<<"请重新";
		}
	}
	    //文本文件 读文件
		//包含头文件
		//创建流对象
	void resultstudent(classes *abs)
	{
		system("cls");
		cout<<"\t\t----------------------------------已保存信息----------------------------------"<<endl;
		ifstream ifs;
		//打开文件 并且判断是否打开成功
		ifs.open("test.txt",ios::in);
		if(!ifs.is_open())
		{
			cout<<"文件打开失败"<<endl;
			return;
		}
		//读数据
		//第一种
		char buf[1024]={0};//把全部的文件数据放入一个字符数组中
		while(ifs>>buf) 
		{
			cout<<buf<<endl;
		}
		//5、关闭文件
		ifs.close();
		abs->m_size++;
	}

//-------------------------------------------------------成绩排序-------------------------------------------------------

    void sortstudent(classes *abs)
	{
		system("cls");
		cout<<"\t\t----------------------------------成绩表----------------------------------"<<endl;
		//是否有学生的成绩已被录入
		if(abs->m_size==0)
		{
			cout<<"当前记录为空"<<endl;
		}
		else
		{
			int temp1,temp2,temp3,temp4,temp5,temp6,temp7;
			string temp8;
			for(int i=0;i<abs->m_size-1;i++)
			{
                  for(int j=0;j<abs->m_size-i;j++)
					  if(abs->studentArray[j].m_sum<abs->studentArray[j+1].m_sum)//如果前1个字符串小于后1个字符串
					  {
						//交换
						temp1=abs->studentArray[j].m_num;
						abs->studentArray[j].m_num=abs->studentArray[j+1].m_num;
						abs->studentArray[j+1].m_num=temp1;
						//交换
						temp2=abs->studentArray[j].m_score[0];
						abs->studentArray[j].m_score[0]=abs->studentArray[j+1].m_score[0];
						abs->studentArray[j+1].m_score[0]=temp2;
						//交换
						temp3=abs->studentArray[j].m_score[1];
						abs->studentArray[j].m_score[1]=abs->studentArray[j+1].m_score[1];
						abs->studentArray[j+1].m_score[1]=temp3;
						//交换
						temp4=abs->studentArray[j].m_score[2];
						abs->studentArray[j].m_score[2]=abs->studentArray[j+1].m_score[2];
						abs->studentArray[j+1].m_score[2]=temp4;
						//交换
						temp5=abs->studentArray[j].m_score[3];
						abs->studentArray[j].m_score[3]=abs->studentArray[j+1].m_score[3];
						abs->studentArray[j+1].m_score[3]=temp5;						
						//交换
						temp6=abs->studentArray[j].m_sum;
						abs->studentArray[j].m_sum=abs->studentArray[j+1].m_sum;
						abs->studentArray[j+1].m_sum=temp6;
						//交换
						temp7=abs->studentArray[j].m_averagescore;
						abs->studentArray[j].m_averagescore=abs->studentArray[j+1].m_averagescore;
						abs->studentArray[j+1].m_averagescore=temp7;
						//交换
						temp8=abs->studentArray[j].m_name;
						abs->studentArray[j].m_name=abs->studentArray[j+1].m_name;
						abs->studentArray[j+1].m_name=temp8;
			 		  }
			 }      
			          for(i=0;i<abs->m_size;i++)
					  {
							cout<<setiosflags(ios::left);
							cout<<"  第"<<i+1<<"名    ";
				            cout<<setw(3)<<"学号:"<<setw(9)<<abs->studentArray[i].m_num<<"   ";
			             	cout<<setw(3)<<"姓名:"<<setw(4)<<abs->studentArray[i].m_name<<"   ";
			            	cout<<setw(3)<<"数学:"<<setw(4)<<abs->studentArray[i].m_score[0]<<"   ";
			            	cout<<setw(3)<<"英语:"<<setw(4)<<abs->studentArray[i].m_score[1]<<"   ";
				            cout<<setw(3)<<"C++:"<<setw(4)<<abs->studentArray[i].m_score[2]<<"   ";
			                cout<<setw(3)<<"计算机:"<<setw(4)<<abs->studentArray[i].m_score[3]<<"   ";
			            	cout<<setw(3)<<"总分"<<setw(4)<<abs->studentArray[i].m_sum<<"   ";
			                cout<<setw(3)<<"平均分:"<<setw(4)<<abs->studentArray[i].m_sum/4<<endl;
					  }
					
		}
		system("pause");
		system("cls");//清屏
	}

//------------------------------------------------成绩修改------------------------------------------------
/*	int isExist(classes *abs,string name)
	{
		for(int i=0;i<abs->m_size;i++)
		{
			if(abs->studentArray[i].m_name==name)
			{
				return i;
			}
		}
		return -1;
	}*/
	int isExist(classes *abs,int num)
	{
		for(int i=0;i<abs->m_size;i++)
		{
			if(abs->studentArray[i].m_num==num)
			{
				return i;
			}
		}
		return -1;
	}
    //(1)修改信息
    void modifystudent(classes *abs)
	{
//modify:		
    	cout<<"请输入学号(九位数字,前七位固定,模板2006112##)"<<endl;
		int num;
		while(true)
		{
			cin>>num;
			cin.clear();
			cin.sync();
			if(num>200611200&&num<200611300)break;
			else cout<<"输入错误"<<endl;
		}
		int ret3=isExist(abs,num);

		if(ret3!=-1)//找到指定学生
		{
			int num;
			cout<<"请输入学号"<<endl;
			cin>>num;
			abs->studentArray[ret3].m_num=num;
		
			string name;
			cout<<"请输入姓名"<<endl;
			cin>>name;
			int i=0;
			while(name[i])
			{
				if(name[i]>>8==0)
				{
					cout<<"请输入姓名"<<endl;
					cin>>name;
					i=0;
					 continue;
				}
				i++;
			}
			abs->studentArray[ret3].m_name=name;

			int score[5];
			cout<<"请输入数学成绩"<<endl;
	        while(true)
			{
			    cin>>score[0];
				cin.clear();
				cin.sync();
				if(score[0]>=0&&score[0]<=100)break;
				else cout<<"输入错误"<<endl;
			}
			abs->studentArray[ret3].m_score[0]=score[0];

			cout<<"请输入英语成绩"<<endl;
	        while(true)
			{
			    cin>>score[1];
				cin.clear();
				cin.sync();
				if(score[1]>=0&&score[1]<=100)break;
				else cout<<"输入错误"<<endl;
			}
			abs->studentArray[ret3].m_score[1]=score[1];

			cout<<"请输入C++成绩"<<endl;
	        while(true)
			{
			    cin>>score[2];
				cin.clear();
				cin.sync();
				if(score[2]>=0&&score[2]<=100)break;
				else cout<<"输入错误"<<endl;
			}
			abs->studentArray[ret3].m_score[2]=score[2];

			cout<<"请输入计算机成绩"<<endl;
	        while(true)
			{
			    cin>>score[3];
				cin.clear();
				cin.sync();
				if(score[3]>=0&&score[3]<=100)break;
				else cout<<"输入错误"<<endl;
			}
			abs->studentArray[ret3].m_score[3]=score[3];
			cout<<"修改成功"<<endl;
		}
		else
		{
			cout<<"查无此人"<<endl;
		}
		while(true)
		{
			int i;
			cout<<"输入1或0(1表示继续修改,0表示返回主菜单)"<<endl;
			cin>>i;
			cin.clear();
			cin.sync();
			if(i==1)
			{
				classes c;
                modifystudent(&c);
				//goto modify;
			}
			else if(i==0)break;
			else cout<<"请重新";
		}
		system("cls");
	}

	//(2)删除信息
	void deletestudent(classes *abs)
	{
//deletestu:
		cout<<"请输入学号(九位数字,前七位固定,模板2006112##)"<<endl;
		int num;
		while(true)
		{
			cin>>num;
			cin.clear();
			cin.sync();
			if(num>200611200&&num<200611300)break;
			else cout<<"输入错误"<<endl;
		}
		int ret4=isExist(abs,num);

		//ret==-1 未查到
		//ret!=-1 查到了
		if(ret4!=-1)
		{

			for(int i=ret4;i<abs->m_size;i++)
			{
				//数据迁移
				abs->studentArray[i]=abs->studentArray[i+1];
			}
			abs->m_size--;//更新列表中的学生数
			cout<<"删除成功"<<endl;
		}
		else
		{
			cout<<"查无此人"<<endl;
		}   
	    while(true)
		{
			int i;
			cout<<"输入1或0(1表示继续删除,0表示返回主菜单)"<<endl;
			cin>>i;
			cin.clear();
			cin.sync();
			if(i==1)
			{
				classes d;
                deletestudent(&d);
				//goto deletestu;
			}
			else if(i==0)break;
			else cout<<"请重新";
		}
		system("cls");
	}

//-----------------------------------------------成绩统计------------------------------------------------------

	//1.显示每门课程成绩最高的学生的基本信息 
	void MAXstudent(classes *abs)
	{

		int i,a=0,b=0,c=0,d=0;
		int	max1=0;
		int	max2=0;
		int	max3=0;
		int	max4=0;
		if(abs->m_size==0)
		{
			cout<<"当前记录为空"<<endl;
		}
		else
		{
			for(i=0;i<abs->m_size;i++)
			{
				if(abs->studentArray[i].m_score[0]>abs->studentArray[max1].m_score[0])
				{		
					max1=i;
				}
				a=max1;
			}

	    	for(i=0;i<abs->m_size;i++)
			{
			    if(abs->studentArray[i].m_score[1]>=abs->studentArray[max2].m_score[1])
				{
					max2=i;
				}
				b=max2;
			}

			for(i=0;i<abs->m_size;i++)
			{
				if(abs->studentArray[i].m_score[2]>=abs->studentArray[max3].m_score[2])
				{
					max3=i;
				}
				c=max3;
			}
			for(i=0;i<abs->m_size;i++)
			{
				if(abs->studentArray[i].m_score[0]>=abs->studentArray[max4].m_score[0])
				{
					max4=i;	
				}
				d=max4;			
			}
			cout<<setiosflags(ios::left);
			cout<<setw(5)<<"数学最高分:"<<setw(4)<<abs->studentArray[a].m_score[0]<<endl;
			cout<<setw(3)<<"学号:"<<setw(4)<<abs->studentArray[a].m_num<<" ";
			cout<<setw(3)<<"姓名:"<<setw(4)<<abs->studentArray[a].m_name<<" ";
			cout<<setw(3)<<"数学:"<<setw(4)<<abs->studentArray[a].m_score[0]<<" ";
			cout<<setw(3)<<"英语:"<<setw(4)<<abs->studentArray[a].m_score[1]<<" ";
			cout<<setw(3)<<"C++:"<<setw(4)<<abs->studentArray[a].m_score[2]<<" ";
			cout<<setw(3)<<"计算机:"<<setw(4)<<abs->studentArray[a].m_score[3]<<" ";
			cout<<setw(3)<<"总分:"<<setw(4)<<abs->studentArray[a].m_sum<<" ";
			cout<<setw(3)<<"平均分:"<<setw(4)<<abs->studentArray[a].m_averagescore<<endl;
			cout<<endl;

			cout<<setw(5)<<"英语最高分:"<<setw(4)<<abs->studentArray[b].m_score[1]<<endl;
			cout<<setw(3)<<"学号:"<<setw(4)<<abs->studentArray[b].m_num<<" ";
			cout<<setw(3)<<"姓名:"<<setw(4)<<abs->studentArray[b].m_name<<" ";
			cout<<setw(3)<<"数学:"<<setw(4)<<abs->studentArray[b].m_score[0]<<" ";
			cout<<setw(3)<<"英语:"<<setw(4)<<abs->studentArray[b].m_score[1]<<" ";
			cout<<setw(3)<<"C++:"<<setw(4)<<abs->studentArray[b].m_score[2]<<" ";
			cout<<setw(3)<<"计算机:"<<setw(4)<<abs->studentArray[b].m_score[3]<<" ";
			cout<<setw(3)<<"总分:"<<setw(4)<<abs->studentArray[b].m_sum<<" ";
			cout<<setw(3)<<"平均分:"<<setw(4)<<abs->studentArray[b].m_averagescore<<endl;
			cout<<endl;

			cout<<setw(5)<<"C++最高分:"<<abs->studentArray[c].m_score[2]<<endl;
			cout<<setw(3)<<"学号:"<<abs->studentArray[c].m_num<<" ";
			cout<<setw(3)<<"姓名:"<<abs->studentArray[c].m_name<<" ";
			cout<<setw(3)<<"数学:"<<abs->studentArray[c].m_score[0]<<" ";
			cout<<setw(3)<<"英语:"<<abs->studentArray[c].m_score[1]<<" ";
			cout<<setw(3)<<"C++:"<<abs->studentArray[c].m_score[2]<<" ";
			cout<<setw(3)<<"计算机:"<<abs->studentArray[c].m_score[3]<<" ";
			cout<<setw(3)<<"总分:"<<abs->studentArray[c].m_sum<<" ";
			cout<<setw(3)<<"平均分:"<<abs->studentArray[c].m_averagescore<<endl;
			cout<<endl;

			cout<<setw(5)<<"计算机最高分:"<<abs->studentArray[d].m_score[3]<<endl;
			cout<<setw(3)<<"学号:"<<abs->studentArray[d].m_num<<" ";
			cout<<setw(3)<<"姓名:"<<abs->studentArray[d].m_name<<" ";
			cout<<setw(3)<<"数学:"<<abs->studentArray[d].m_score[0]<<" ";
			cout<<setw(3)<<"英语:"<<abs->studentArray[d].m_score[1]<<" ";
			cout<<setw(3)<<"C++:"<<abs->studentArray[d].m_score[2]<<" ";
			cout<<setw(3)<<"计算机:"<<abs->studentArray[d].m_score[3]<<" ";
			cout<<setw(3)<<"总分:"<<abs->studentArray[d].m_sum<<" ";
			cout<<setw(3)<<"平均分:"<<abs->studentArray[d].m_averagescore<<endl;
		}
		system("pause");
		system("cls");
	}
  
	
	//(2)显示每门课程的平均成绩
	void averagestudent(classes *abs)
	{
     	system("cls");
		cout<<"\t\t----------------------------------平均成绩----------------------------------"<<endl;
		//是否有学生的成绩已被录入
		int sum1=0;
		int	sum2=0;
		int sum3=0;
		int sum4=0;
		if(abs->m_size==0)
		{
			cout<<"当前记录为空"<<endl;
		}
		else
		{
			for(int i=0;i<abs->m_size;i++)
			{				
				sum1=sum1+abs->studentArray[i].m_score[1];
				sum2=sum2+abs->studentArray[i].m_score[1];
			    sum3=sum3+abs->studentArray[i].m_score[2];
			    sum4=sum4+abs->studentArray[i].m_score[3]; 
			}
			 
				cout<<"本班数学平均分:"<<sum1/(abs->m_size)<<endl;
				cout<<"本班英语平均分:"<<sum2/(abs->m_size)<<endl;			 
				cout<<"本班C++平均分:"<<sum3/(abs->m_size)<<endl;
				cout<<"本班计算机平均分:"<<sum4/(abs->m_size)<<endl;		
		}
		system("pause");
		system("cls");//清屏
	}

   //(3)显示超过某门课程平均成绩的学生人数
    void passstudent(classes *abs)
	{
        system("cls");
		cout<<"\t\t\t----------------------------------成绩表----------------------------------"<<endl;
		//是否有学生的成绩已被录入
		int sum1=0,sum2=0,sum3=0,sum4=0;
		int size1=-1,size2=-1,size3=-1,size4=-1;
		if(abs->m_size==0)
		{
			cout<<"当前记录为空"<<endl;
		}
		else
		{
			for(int i=1;i<abs->m_size;i++)
			{				
				sum1+=abs->studentArray[i].m_score[0];									
				sum2+=abs->studentArray[i].m_score[1];
			    sum3+=abs->studentArray[i].m_score[2];
			    sum4+=abs->studentArray[i].m_score[3];
			}
			for(i=0;i<abs->m_size;i++)
			{
				if(abs->studentArray[i].m_score[0]>sum1/abs->m_size)
				{
					size1+=1;
				}
				else 
				{
				   	size1+=0;
				}
				if(abs->studentArray[i].m_score[1]>sum2/abs->m_size)
				{
					size2+=1;
				}
				else 
				{
				   	size2+=0;
				}
				if(abs->studentArray[i].m_score[2]>sum3/abs->m_size)
				{
					size3+=1;
				}
				else 
				{
				   	size3+=0;
				}
				if(abs->studentArray[i].m_score[3]>sum4/abs->m_size)
				{
					size4+=1;
				}
				else 
				{
				   	size4+=0;
				}
			}
			cout<<"超过数学平均成绩有"<<size1<<"人"<<endl;
			cout<<"超过英语平均成绩有"<<size2<<"人"<<endl;
			cout<<"超过计算机平均成绩有"<<size3<<"人"<<endl;
			cout<<"超过数学平均成绩有"<<size4<<"人"<<endl;
		}
		system("pause");
	}
 
//------------------------------------------------查询成绩-----------------------------------------------------

	void findstudent(classes *abs)
	{
findstu:
		cout<<"请输入学号(九位数字,前七位固定,模板2006112##)"<<endl;
		int num;
		while(true)
		{
			cin>>num;
			cin.clear();
			cin.sync();
			if(num>200611200&&num<200611300)break;
			else cout<<"输入错误"<<endl;
		}
		
		//判断是否有学生录入
		int ret5=isExist(abs,num);//(已定义)
		if(ret5!=-1)//找到学生
		{	
			cout<<setiosflags(ios::left);
			cout<<setw(3)<<"学号:"<<setw(4)<<abs->studentArray[ret5].m_num<<" ";
			cout<<setw(3)<<"姓名:"<<setw(4)<<abs->studentArray[ret5].m_name<<" ";
			cout<<setw(3)<<"数学:"<<setw(4)<<abs->studentArray[ret5].m_score[0]<<" ";
			cout<<setw(3)<<"英语:"<<setw(4)<<abs->studentArray[ret5].m_score[1]<<" ";
			cout<<setw(3)<<"C++:"<<setw(4)<<abs->studentArray[ret5].m_score[2]<<" ";
			cout<<setw(3)<<"计算机:"<<setw(4)<<abs->studentArray[ret5].m_score[3]<<" ";
			cout<<setw(3)<<"总分:"<<setw(4)<<abs->studentArray[ret5].m_sum<<" ";
			cout<<setw(3)<<"平均分:"<<setw(4)<<abs->studentArray[ret5].m_averagescore<<endl;
		}
		else//未找到
		{
			cout<<"查无此人"<<endl;
		}
		while(true)
		{
			int i;
			cout<<"输入1或0(1表示继续查找,0表示返回主菜单)"<<endl;
			cin>>i;
			cin.clear();
			cin.sync();
			if(i==1)
			{
				classes e;
                findstudent(&e);
				//goto findstu;
			}
			else if(i==0)break;
			else cout<<"请重新";
		}
		    system("cls");		
	}
};

//----------------------------------------------调用界面-------------------------------------------------    

	void showMenu()
	{        
		cout<<"\t\t\t\t\t*****************成绩管理系统*****************"<<endl;   
		cout<<"\t\t\t\t\t               ☆1、成绩录入☆                "<<endl;
	 	cout<<"\t\t\t\t\t               ☆2、成绩显示☆                "<<endl;
		cout<<"\t\t\t\t\t               ☆3、成绩保存☆                "<<endl;
		cout<<"\t\t\t\t\t               ☆4、成绩排序☆                "<<endl;
		cout<<"\t\t\t\t\t               ☆5、成绩修改☆                "<<endl;
		cout<<"\t\t\t\t\t               ☆6、成绩统计☆                "<<endl;
		cout<<"\t\t\t\t\t               ☆7、成绩查询☆                "<<endl;
		cout<<"\t\t\t\t\t               ☆0、退出系统☆                "<<endl;
		cout<<"\t\t\t\t\t                                              "<<endl;
		cout<<"请输入功能项[0-7]:";
	}

	void kevinMenu1()
	{
		system("cls");
		cout<<"\t\t\t\t\t-----------------成绩管理系统-----------------"<<endl;
		cout<<"\t\t\t\t\t               选择要进行的操作:              "<<endl;
		cout<<"\t\t\t\t\t                 1.保存信息                   "<<endl;
		cout<<"\t\t\t\t\t                 2.查看已保存的信息           "<<endl;
		cout<<"\t\t\t\t\t                 0.返回上一级                 "<<endl;
		cout<<"请输入功能项[0-2]:";
	}

	void kevinMenu2()
	{
		system("cls");
		cout<<"\t\t\t\t\t-----------------成绩管理系统-----------------"<<endl;
		cout<<"\t\t\t\t\t               选择要进行的操作:              "<<endl;
		cout<<"\t\t\t\t\t                 1.修改信息                   "<<endl;
		cout<<"\t\t\t\t\t                 2.删除信息                   "<<endl;
		cout<<"\t\t\t\t\t                 0.返回上一级                 "<<endl;
		cout<<"请输入功能项[0-2]:";
	}

	void kevinMenu3()
	{
		system("cls");
		cout<<"\t\t\t\t\t-----------------成绩管理系统-----------------"<<endl;
		cout<<"\t\t\t\t\t               选择要进行的操作:              "<<endl;
		cout<<"\t\t\t\t\t     1.显示每门课程成绩最高的学生的基本信息   "<<endl;
		cout<<"\t\t\t\t\t     2.显示每门课程的平均成绩                 "<<endl;
		cout<<"\t\t\t\t\t     3.显示超过某门课程平均成绩的学生人数     "<<endl;                                                     
		cout<<"\t\t\t\t\t     0.返回上一级                             "<<endl;
		cout<<"请输入功能项[0-3]:";
	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颜回.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值