⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xsglxt.cpp

📁 vC++下的学生成绩管理系统。可以保存学生数据》
💻 CPP
字号:
 #include<iostream.h>
 #include<string.h>
 #include<fstream.h>
 class person
{
 public:
	person(){}
	person(char na[20],char sx[10],int ag){strcpy(name,na);strcpy(sex,sx);age=ag;}
 protected:
	char name[20],sex[10];int age;
 };
 class student:public person
 {
 private:
	long stu_num;
	double english,math,cjj,aver,sum;
 public:
	student(){};
	student(long st_num,char na[20],char sx[10],int ag,double mat,double eng,double cj):person(na,sx,ag)
	{
		stu_num=st_num;math=mat;english=eng;cjj=cj;
	}
	double getsum()
	{
		sum=english+cjj+math;
	    return sum;
	}
	double getaver()
	{
		aver=sum/3;
	    return aver;
	}
	friend void main();
};
 void main()
{ 
	cout<<"欢迎进入学生管理系统\n";
    cout<<"请选取所要进行的操作\n";
    cout<<"学生数据输入请按0\n";
	cout<<"添加人员请按键1\n";
    cout<<"删除人员请按键2\n";
	cout<<"修改人员请按键3\n";
	cout<<"查询:\n";
    cout<<"按姓名查询按键4\n";
    cout<<"输出各科平时成绩,各等级人数,及比例请按5\n";
    cout<<"排名:\n";
    cout<<"按总成绩排名请按6\n";
    cout<<"按C++排名请按7\n";
	cout<<"输出所有学生得数据按键8\n";
	student *stu[40];
	char t;
	int i=0;
	int j=0;
	char v;
    ofstream *file[40];
    bool flag2=0;
	do
	{
		do
		{
         	cin>>t;
        	if(t>='0'&&t<='8')
                flag2=1;
        	else
	        	cout<<"指令错误,请从新输入:"<<endl;
		}while(flag2=0);
       switch(t)
	   {
          case '0':
			{  
	        	char c;
	         	char name[20],sex[10];
				long stu_num;int age;
				double math,english,cjj;
	            do
				{
					cout<<"输入学号:\n";
					cin>>stu_num;
                    cout<<"输入姓名:\n";
                    cin>>name;
					cout<<"输入性别:\n";
					cin>>sex;
					cout<<"输入年龄:\n";
					cin>>age;
					cout<<"输入英语成绩:.\n";
                    cin>>english;
                    cout<<"输入数学成绩:.\n";
                    cin>>math;
                    cout<<"输入C++成绩:.\n";
                    cin>>cjj;
	             	file[j]=new ofstream("d:\\document",ios::ate);
	            	*file[j]<<"姓名"<<name<<"数学成绩"<<math<<"英语成绩"<<english<<"C++成绩"<<cjj<<endl;
					j++;
	            	stu[i]=new student(stu_num,name,sex,age,math,english,cjj);
					i++;
                    cout<<"数据录入成功,想再录入吗(y\n)"<<endl;
					cin>>c;
					flag2=0;
					do
					{
						if(c!='y'&&c!='n')
						{
							flag2=0;
							cout<<"指令错误,重新输入!\n";
							cin>>c;
						}
						else 
							flag2=1;
					}while(flag2==0);
				}while(c=='y');
	           break;
			}
         case '4':
		  {
            	char na[20];
            	char c;
            	bool flag1=0;
              	do
				{
    	         	cout<<"请输入所要查询学生的姓名:"<<endl;
    	        	cin>>na;
    	         	for(int f=0;f<i;f++)
					{
		            	if(strcmp(na,(*stu[f]).name)==0)
						{
		            		flag1=1;
		             		cout<<"您要查询学生是:"<<(*stu[f]).name<<endl;
							{
				 	        	cout<<"学号"<<(*stu[f]).stu_num<<"性别"<<(*stu[f]).sex<<"年龄"<<(*stu[f]).age
				        		<<"他的平均成绩:"<<(*stu[f]).getaver()<<"总成绩:"<<(*stu[f]).getsum()<<"数学成绩:"
				     		<<(*stu[f]).math<<"英语成绩:"<<(*stu[f]).english<<"C++成绩:"<<(*stu[f]).cjj<<endl;
							}
						}
					}
		   	       if(flag1==0)
				   { 
			            cout<<"对不起您要查询学生不存在."<<endl;
				        cout<<"还要继续查询吗(y/n)"<<endl;
			          	cin>>c;
			    	    if(c!='y'&&c!='n')
						{
					        cout<<"指令错误,请从新输入"<<endl;
				        	cin>>c;
						}
				   }
				}while(c=='y');
			break;
		  }


     case '7':
		 {
	          int t;
	 	      student li;
	          cout<<"所有学生按C++成绩排名如下:"<<endl;
	          for(int x=0;x<i-1;x++)
			  { 
		        	t=x;
		        	for(int y=x+1;y<i;y++)
					{
			          	if(stu[t]->cjj<stu[y+1]->cjj)
				  		t=y;
				    	if(t!=x)
						{
					        li=*stu[t];
				            *stu[t]=*stu[x];
				            *stu[x]=li;
						}
					}
			  }
	     	if(i==0)
			  cout<<"管理系统里没有录入者或者录入者已被删除";
	     	for(int k=0;k<i;k++)
			{
		    	cout<<k+1<<"学号"<<stu[k]->stu_num<<"姓名"<<stu[k]->name<<"性别"<<stu[k]->sex
		    	<<"年龄"<<stu[k]->age<<"平均成绩"<<stu[k]->aver<<"英语:"<<stu[k]->english<<"C++:"
		    	<<stu[k]->cjj<<"数学:"<<stu[k]->math<<"总成绩:"<<stu[k]->sum<<endl;
			}
    	   break;
		 }
    case '6':
		{
	     	int t;
	       	student ligui;
	        cout<<"所有学生成绩排名如下:"<<endl;
	        for(int x=0;x<i-1;x++)
			{ 
		    	t=x;
		    	for(int y=x+1;y<i;y++)
				{
			    	if(stu[t]->getsum()<stu[y+1]->getsum())
						t=y;
					if(t!=x)
					{
					    ligui=*stu[t];
				        *stu[t]=*stu[x];
				        *stu[x]=ligui;
					}
				}
			}
	    	if(i==0)
		    	cout<<"管理系统里没有录入者或者录入者已被删除";
	     	for(int k=0;k<i;k++)
			{
		    	cout<<k+1<<"学号"<<stu[k]->stu_num<<"姓名"<<stu[k]->name<<"性别"<<stu[k]->sex
		    	<<"年龄"<<stu[k]->age<<"平均成绩"<<stu[k]->aver<<"英语:"<<stu[k]->english<<"C++:"
		    	<<stu[k]->cjj<<"数学:"<<stu[k]->math<<"总成绩:"<<stu[k]->sum<<endl;
			}
        	break;
		}
	case '3':
	{
		char na[20],sx[10];
		int ag;
		long st_num;
		double mat,eng,cj;
		char c;
		bool flag7=0;
		do
		{
			cout<<"请输入您要修改学生的姓名:";
			cin>>na;
			for(int h=0;h<i;h++)
			{
				if(strcmp(na,stu[h]->name)==0)
				{
					flag7=1;
					cout<<"请输入新的学号"<<endl;
					cin>>st_num;
					cout<<"请输入新的性别"<<endl;
					cin>>sx;
					cout<<"请输入新的年龄"<<endl;
					cin>>ag;
					cout<<"请输入新的英语成绩:"<<endl;
					cin>>eng;
					cout<<"请输入新的数学成绩"<<endl;
					cin>>mat;
					cout<<"请输入新的C++成绩"<<endl;
					cin>>cj;
					stu[h]->stu_num=st_num;
					strcpy(stu[h]->sex,sx);
					stu[h]->age=ag;
					stu[h]->english=eng;
					stu[h]->math=mat;
					stu[h]->cjj=cj;
					cout<<"数据修改成功";
				}
			}
			if(flag7==0)
				cout<<"你要修改的学生不存在,请检查从新输入"<<endl;
			cout<<"想继续修改(y/n)"<<endl;
			cin>>c;
			if(c!='y'&&c!='n')
			{
				cout<<"指令错误,请从新输入"<<endl;
				cin>>c;
			}
		}while(c=='y');
		break;
	}
    case '5':
		{	
		    double esum(0),msum(0),csum(0),e_aver,m_aver,c_aver;
		    int eA(0),eB(0),eC(0),eD(0);
	    	int cA(0),cB(0),cC(0),cD(0);
	     	int mA(0),mB(0),mC(0),mD(0);
	        for(int k7=0;k7<i;k7++)
	    		esum+=stu[k7]->english;
	      	e_aver=esum/i;
	    	for(int k6=0;k6<i;k6++)
			{
			    if(stu[k6]->english>=85)
			        eA++;
			    else if(stu[k6]->english>=75)
			       	eB++;
		    	else if(stu[k6]->english>=60)
		    		eC++;
		    	else
		     		eD++;
				{
			    	cout<<"英语平均成绩:"<<e_aver<<"优秀人数及比例:"<<eA<<' '<<eA/i<<"良好人数及比例:"<<eB<<' '<<eB/i
			    		<<"中等人数及比例:"<<eC<<' '<<eC/i<<"不及格人数及比例:"<<eD<<' '<<eD/i<<endl;
				}
			}
	    	for(int k1=0;k1<i;k1++)
	  	    	msum+=stu[k1]->math;
	    	m_aver=msum/i;
	    	for(int k2=0;k2<i;k2++)
			{
		    	if(stu[k2]->math>=85)
			        mA++;
		       	else if(stu[k2]->math>=75)
			    	mB++;
			    else if(stu[k2]->math>=60)
		       		mC++;
			    else
			    	mD++;
				{
			    	cout<<"数学平均成绩:"<<m_aver<<"优秀人数及比例:"<<mA<<' '<<mA/i<<"良好人数及比例:"<<mB<<' '<<mB/i
			    		<<"中等人数及比例:"<<mC<<' '<<mC/i<<"不及格人数及比例:"<<mD<<' '<<mD/i<<endl;
				}
			} 
	     	for(int k3=0;k3<i;k3++)
		    	csum+=stu[k3]->cjj;
	    	c_aver=csum/i;
	    	for(int k4=0;k4<i;k4++)
			{
		    	if(stu[k4]->cjj>=85)
			        cA++;
		      	else if(stu[k4]->cjj>=75)
			    	cB++;
		    	else if(stu[k4]->english>=60)
			    	cC++;
		    	else
			    	cD++;
				{
			    	cout<<"c++平均成绩:"<<c_aver<<"优秀人数及比例:"<<cA<<' '<<cA/i<<"良好人数及比例:"<<cB<<' '<<cB/i
					<<"中等人数及比例:"<<cC<<' '<<cC/i<<"不及格人数及比例:"<<cD<<' '<<cD/i<<endl;
				}
			}
		
	    	break;
		}
    case '1':
		{
	        char name[8],sex[2];
	    	long stu_num;int age;
	    	double math,english,cjj;
		    char c;
		    do 
			{
		    	cout<<"请输入你要添加学生的学号\n";
		    	cin>>stu_num;
		    	cout<<"请输入你所要添加学生的姓名:"<<endl;
		    	cin>>name;
		    	cout<<"请输入你要添加学生的性别\n";
		    	cin>>sex;
				cout<<"请输入年龄\n";
				cin>>age;
				cout<<"英语成绩:"<<endl;
		    	cin>>english;
		    	cout<<"数学成绩:"<<endl;
		    	cin>>math;
		    	cout<<"C++成绩:"<<endl;
		    	cin>>cjj;
		    	file[j]=new ofstream("d:\\document",ios::ate);
		    	*file[j]<<"学号"<<stu_num<<"姓名"<<name<<"性别"<<sex<<"年龄"<<age<<"英语成绩"<<english<<"数学成绩"<<math<<"C++成绩"<<cjj<<endl;
		    	j++;
		    	stu[i]=new student(stu_num,name,sex,age,math,english,cjj);
		    	i++;
		    	cout<<"数据录入成功,想输入数据吗(y/n)"<<endl;
		        cin>>c;
		    	if(c!='y'&&c!='n')
				{
		    		cout<<"指令错误,请从新输入"<<endl;
		 	    	cin>>c;
				}
			}while(c=='y');
	    	break;
		}
     case '2':
		{
	    	char name[10];bool flag3=0;
		    char c;
	    	do
			{
	     		cout<<"请输入您要删除学生的姓名:"<<endl;
	     		cin>>name;
	     		for(int h=0;h<i;h++)
				{
	     			if(strcmp(name,stu[h]->name)==0)
					{
		     			flag3=1;
			    		i--;
				    	do{
						stu[h]=stu[h+1];
						h++;
						}while(h<=i);
					}
				}
			  if(flag3==0)
				cout<<"您要删除对象不存在,请检查"<<endl;
		      cout<<"要继续删除吗(y/n)"<<endl;
	          cin>>c;
	          if(c!='y'&&c!='n')
			  {
		          cout<<"指令错误,请从新输入"<<endl;
		    	  cin>>c;
			  }
			}while(c=='y');
	        break;
		}
	 case '8':
		 {
			 cout<<"本系统所有学生数据如下:"<<endl;
			 if(i==0)
				 cout<<"管理系统中没有录入数据或数据已被删除!"<<endl;
			 for(int k=0;k<i;k++)
			 {
				 cout<<k+1<<" "<<"学号"<<" "<<stu[k]->stu_num<<" "<<"姓名"<<" "<<stu[k]->name<<" "<<"年龄"<<" "<<stu[k]->age
					 <<" "<<"英语成绩"<<" "<<stu[k]->english<<" "<<"数学成绩"<<" "<<stu[k]->math
					 <<" "<<"c++成绩"<<" "<<stu[k]->cjj<<endl;
			 }
		     break;
		 }
	  }
    	cout<<"你想在进行其他的操作吗?(y/n)\n";
    	bool flag5=0;
    	do
		{
    		cin>>v;
    		if(v!='y'&&v!='n')
	    		cout<<"指令错误!重新输入!\n";
	    	else
	    		flag5=1;
		}while(flag5==0);
	   if(v=='y')
	   {   
		    cout<<"                      请选择你要进行的操作\n";
	        cout<<"                          学生数据输入0\n";
			cout<<"                            添加人员1\n";
			cout<<"                            删除人员2\n";
    		cout<<"                            修改人员3\n";
			cout<<"                           按姓名查询4\n";
			cout<<"               输出各科平时成绩,各等级人数,及比例请按5\n";
	    	cout<<"                          按总成绩排名6\n";
			cout<<"                         按C++排名请按7\n";
			cout<<"                       输出所有学生的数据8\n";
	       
	   }
   }while(v=='y');
   for(int x=0;x<i;x++)
   {
	   delete stu[x];
	   cout<<"删除所有数据!"<<endl;
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -