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

📄 s.cpp

📁 这是一个学生成绩管理系统
💻 CPP
字号:
#include<iostream>
#include<string>
#include<iomanip>
#include <fstream> 
#define n 3
using namespace std;
struct student
{
	int num;
    string name;
    int yuwen;
    int shuxue;
	int yingyu;
	int sum;
	float ave;
	int order;
}student[n],stu[n];
int total(int x,int y,int z)
{ 
     return x+y+z; 
} 
float aver(int x,int y,int z)
{ 
     return (float)(x+y+z)/3; 
} 
void sum_ave()
{
	int i;
	cout<<setw(22)<<"学号"<<setw(10)<<"姓名";;
	cout<<setw(10)<<"总分"<<setw(10)<<" 平均分"<<endl;
	for(i=0;i<n;i++)
	{

	    cout<<setw(22)<<student[i].num<<setw(10)<<student[i].name;
		cout<<setw(10)<<student[i].sum<<setw(10)<<student[i].ave<<endl;
	}
}
float total_ave()
{
   int i;float total_sum=0.0;
   for(i=0;i<n;i++)
       total_sum+=student[i].sum;
     return total_sum/n;
}
int xh(int x)
{
	if(x<1000||x>9999)
		return 1;
	else
		return 0;
}
int jc(int i) 
{ 
  int m=0; 
  for(m=0;m<i;m++)
	if(student[m].num==student[i].num)
			break;
  if(m<i)
	  return 1;
  else
	  return 0;	   				 		
} 
int fenshu(int x)
{
	if(x<0||x>100)
		return 1;
	else
		return 0;
}

void load()
{
	int i;float x,y,z,a;
	cout<<"********请首先输入学生的各项信息*******"<<endl;
     for(i=0;i<n;i++)
	 {   
         cout<<"第"<<i+1<<"位学生:"<<endl;
	     cout<<"学号:";
	     cin>>a;student[i].num=a;
         while(xh(a))
		 {
			 cout<<"学号输入错误!请输入一个四位数学号:";
			 cin>>a;
		 student[i].num=a;
		  while(jc(i))
		  {
			  cout<<"学号输入重复,请重新输入:";
			  cin>>a;
			  student[i].num=a;
		  }
		 }
		 while(jc(i))
		  {
			  cout<<"学号输入重复,请重新输入:";
			  cin>>a;
			  student[i].num=a;
			  while(xh(a))
			  {
			     cout<<"学号输入错误!请输入一个四位数学号:";
			     cin>>a;
		         student[i].num=a;
			  }
		  }
		 student[i].num=a;
         cout<<"姓名:";
		 cin>>student[i].name;
		 cout<<"语文:";
         cin>>x;
		 while(fenshu(x))
		 {
			 cout<<"分数输入错误!请重新输入:";
			 cin>>x;
		 }
		 student[i].yuwen=x;
		 cout<<"数学:";
		 cin>>y;
		 while(fenshu(y))
		 {
			 cout<<"分数输入错误!请重新输入:";
			 cin>>y;
		 }
		 student[i].shuxue=y;
		 cout<<"英语:";
		 cin>>z;
		 while(fenshu(z))
		 {
			 cout<<"分数输入错误!请重新输入:";
			 cin>>z;
		 }
		 student[i].yingyu=z;
		 student[i].sum=total(x,y,z);
		 student[i].ave=aver(x,y,z);
	 }
	 cout<<"***********您已经输入完毕!*************"<<endl;
}
void paixu()
{
	int i,j;
	for(i=0;i<n-1;i++)
	{
	  int max=i;
	   for(j=i+1;j<n;j++)
		   if(student[max].sum<=student[j].sum)
			   max=j;
               stu[i]=student[max];
               student[max]=student[i];
			   student[i]=stu[i];
	}
}
void set_order()
{
   cout<<setw(22)<<"学号"<<setw(10)<<"姓名";
   cout<<setw(10)<<"总分"<<setw(10)<<"名次" <<endl;
   paixu();
   for(int i=0;i<n;i++)
   {
       student[i].order=i+1;
       cout<<setw(22)<<student[i].num<<setw(10)<<student[i].name;
	   cout<<setw(10)<<student[i].sum<<setw(10)<<student[i].order<<endl;
   }
}
void print1()
{
	cout<<setw(14)<<"学号"<<setw(7)<<"姓名"<<setw(7)<<"语文";
	cout<<setw(7)<<"数学"<<setw(7)<<"英语";
	cout<<setw(7)<<"总分"<<setw(9)<<"平均分";
}
void print2(int i)
{
	cout<<setw(14)<<student[i].num<<setw(7)<<student[i].name;
	cout<<setw(7)<<student[i].yuwen<<setw(7)<<student[i].shuxue;
	cout<<setw(7)<<student[i].yingyu<<setw(7)<<student[i].sum;
	cout<<setw(9)<<student[i].ave;
}
void display()
{  
	float a=total_ave();
	print1();
	cout<<setw(5)<<"名次"<<endl<<endl;
	for(int i=0;i<n;i++)
		if(student[i].sum>a)
		{
			print2(i);
		    cout<<setw(5)<<student[i].order<<endl;
		}
}
void modi(int xh)
{ 
	int p=0,d;char a;float x,y,z;
	while(1)
	{
		for(d=0;d<n;d++)
		   if(student[d].num==xh)
		   {
			    p=1;
               break;
		   }
		   if(p==1)
			   break;
		   else 
		   {
			   cout<<"数据库中没有这个学生!请确认输入是否有误:";
		       cin>>xh;
		   }
	}
	cout<<setw(3)<<" ";
	print1();cout<<endl<<endl<<setw(3)<<" ";
	print2(d);cout<<endl;
	cout<<"确认要修改以上分数信息吗?y/n";
	cin>>a;
	if(a=='y')
	{
	     cout<<"语文:";
         cin>>x;
		 while(fenshu(x))
		 {
			 cout<<"分数输入错误!请重新输入:";
			 cin>>x;
		 }
		 student[d].yuwen=x;
		 cout<<"数学:";
		 cin>>y;
		 while(fenshu(y))
		 {
			 cout<<"分数输入错误!请重新输入:";
			 cin>>y;
		 }
		 student[d].shuxue=y;
		 cout<<"英语:";
		 cin>>z;
		 while(fenshu(z))
		 {
			 cout<<"分数输入错误!请重新输入:";
			 cin>>z;
		 }
		 student[d].yingyu=z;
		 student[d].sum=total(x,y,z);
		 student[d].ave=aver(x,y,z);
		 cout<<"修改完毕!  修改后的信息为:"<<endl;
		 cout<<setw(3)<<" ";
    	print1();cout<<endl<<endl<<setw(3)<<" ";
    	print2(d);cout<<endl;
		 paixu();
		 for(int i=0;i<n;i++)
			 student[i].order=i+1;
	}
	else cout<<"您已退出修改!"<<endl;
		 
}
void scan(int m)
{
	int k=0;
     print1();
	 cout<<setw(5)<<"名次"<<endl<<endl;
	 for(int i=0;i<n;i++)
	    if(student[i].num==m)
		{
			k=1;
			break;
		}
       if(k)
	   {
		  print2(i);
		  cout<<setw(5)<<student[i].order<<endl;
	   }
	   else
		 cout<<setw(40)<<"数据库中没有这个学生的任何记录!"<<endl;
}
int main()
{ 
	int m,a=0,x,p;char b;
	load();
	cout<<"进行相关操作?(y/n)";
	cin>>b;
	while(b=='y')
	{	system("cls");
	    cout<<endl<<endl;
		cout<<setw(64)<<"===================学生成绩管理系统======================"<<endl<<endl;
        cout<<"       *    1.统计显示每个学生的总分和平均分                   *"<<endl<<endl;
        cout<<"       *    2.按照总分由大到小排列名次                         *"<<endl<<endl;
	    cout<<"       *    3.打印出成绩在全班平均分以上的学生名单和数据信息   *"<<endl<<endl;
        cout<<"       *    4.由学号查找某学生的考试成绩                       *"<<endl<<endl;
		cout<<"       *    5.修改学生成绩                                     *"<<endl<<endl;
        cout<<"       *    6.退出                                             *"<<endl<<endl;
	    cout<<"       ========================================================="<<endl;
	    cout<<"       请输入您要选择的服务(从1~5中的数字中选择):";
		cin>>m;
		cout<<endl;
    	if(m==6)
			break;
	    switch(m)
		{
	      case 1:cout<<"       ====================学生总分平均分统计==================="<<endl;
		         sum_ave();
		         cout<<"       ========================================================="<<endl;
		         cout<<"是否继续(y/n)";
				 cin>>b;
		         if(b=='y')
					 break;
				 else
					 a=1;
				 break;
		  case 2:cout<<"这个班总分排名是:"<<endl;
			     cout<<"       =======================学生总分排名======================"<<endl;
		         set_order();
		         cout<<"       ========================================================="<<endl;
				 cout<<"是否继续(y/n)";
				 cin>>b;
		         if(b=='y')
					 break;
				 else
					 a=1;
				 break;
		  case 3:cout<<setw(25)<<"这个班的平均分是:"<<total_ave()<<endl;
			     cout<<setw(53)<<"成绩在全班平均分以上的学生名单和数据信息如下:"<<endl<<endl;
			     cout<<setw(64)<<"====================平均分以上的同学====================="<<endl;
                 display();
				 cout<<setw(64)<<"========================================================="<<endl;
					 cout<<"是否继续(y/n)";
					 cin>>b;
		         if(b=='y')
					 break;
				 else
					 a=1;
				 break;
		  case 4:cout<<"请输入一个学号:";
			     cin>>x;
			     cout<<"该学生的信息如下:"<<endl<<endl;
			     cout<<setw(64)<<"========================================================="<<endl;
	             scan(x);
				 cout<<setw(64)<<"========================================================="<<endl;
				 cout<<"是否继续(y/n)";
				 cin>>b;
		         if(b=='y')
					 break;
				 else
					 a=1;
				 break;
		  case 5:cout<<"请输入要修改成绩的学生学号:";
                  cin>>p;
				  modi(p);
				  cout<<"是否继续(y/n)";
				 cin>>b;
		         if(b=='y')
					 break;
				 else
					 a=1;
				 break;
		}
		if(a==1)
			break;	 
	}
 ofstream ofs("打印.txt");
	 for(int j=0;j<3;j++)
		 ofs<<student[j].name<<endl;
	 ofs.close();
	 return 0; 
}

⌨️ 快捷键说明

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