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

📄 manage.cpp

📁 我的一个课程设计
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	cout<<"|0、返回主菜单。                                                             |"<<endl;
	cout<<"|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|"<<endl;
	cout<<"请输入所需选择:";
	int flag;
	cin>>flag;
	if(flag==1)
	{NumStat();
	StatStudent();
	}
	if(flag==2)
	{AverageStat();
	}
	if(flag==3)
	{FailStat();
	StatStudent();
	}
	if(flag==0)
	{main();
	}
	if(flag!=0&&flag!=1&&flag!=2&&flag!=3)
	{cout<<"输入错误,请重新选择:"<<endl;
	StatStudent();
	}
}
/////////////////////////////////////按学号升序显示全部学生的信息//////////////////////////////
void NumStat()
{
	Student stu[100];
	ifstream infile("d:\\data.txt",ios::in);
	if(! infile)
	{cerr<<"open error!"<<endl;
	exit(1);
	}
	int i=0;
	while(!infile.eof())
	{infile>>stu[i].num;
	infile>>stu[i].name;
	infile>>stu[i].sex;
	infile>>stu[i].age;
	infile>>stu[i].Chinese;
	infile>>stu[i].English;
	infile>>stu[i].Match;
	infile>>stu[i].C;
	infile>>stu[i].Physics;
	infile>>stu[i].average;
	i++;
	}
	for(int k=i-2;k>0;k--)               //共进行i-2次比较。
	{for(int j=0;j<k;j++)                //在每趟中要进行k次两两比较。
		if(stu[j+1].num<stu[j].num)       //如果前面的数小于后面的数,进行下列交换。
		{int num,a,ch,e,m,c,p,ag;
		num=stu[j].num;
		stu[j].num=stu[j+1].num;
		stu[j+1].num=num;
		a=stu[j].age;
		stu[j].age=stu[j+1].age;
		stu[j+1].age=a;
		ch=stu[j].Chinese;
		stu[j].Chinese=stu[j+1].Chinese;
		stu[j+1].Chinese=ch;
        e=stu[j].English;
		stu[j].English=stu[j+1].English;
		stu[j+1].English=e;
		m=stu[j].Match;
		stu[j].Match=stu[j+1].Match;
		stu[j+1].Match=m;
		c=stu[j].C;
		stu[j].C=stu[j+1].C;
		stu[j+1].C=c;
		p=stu[j].Physics;
		stu[j].Physics=stu[j+1].Physics;
		stu[j+1].Physics=p;
		ag=stu[j].average;
		stu[j].average=stu[j+1].average;
		stu[j+1].average=ag;
        char na[10],s[3];
		strcpy(na,stu[j].name);
		strcpy(stu[j].name,stu[j+1].name);
		strcpy(stu[j+1].name,na);
		strcpy(s,stu[j].sex);
		strcpy(stu[j].sex,stu[j+1].sex);
		strcpy(stu[j+1].sex,s);
		}
	}
	cout<<"|学号   |姓名   |性别   |年龄   |语文   |英语   |数学   |C语言   |物理   |平均分"<<endl;
    for(int b=0;b<i-1;b++)
	{cout<<setiosflags(ios::left);
	cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
	    <<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
		<<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
		<<stu[b].Physics<<"|"<<stu[b].average;
    cout<<endl;
	}
}
//////////////////////按平均分降序显示全部学生的信息,并保存到磁盘文件".txt"//////////////////
void AverageStat()
{
	Student stu[100];
	ifstream infile("d:\\data.txt",ios::in);
	if(! infile)
	{cerr<<"open error!"<<endl;
	exit(1);
	}
	int i=0;
	while(!infile.eof())
	{infile>>stu[i].num;
	infile>>stu[i].name;
	infile>>stu[i].sex;
	infile>>stu[i].age;
	infile>>stu[i].Chinese;
	infile>>stu[i].English;
	infile>>stu[i].Match;
	infile>>stu[i].C;
	infile>>stu[i].Physics;
	infile>>stu[i].average;
	i++;
	}
	for(int k=i-2;k>0;k--)              //共进行i-2次比较。
	{for(int j=k-1;j>=0;j--)            //在每趟中要进行k次两两比较。
		if(stu[j+1].average>stu[j].average)     //如果前面的数大于后面的数,进行下列交换。
		{int num,a,ch,e,m,c,p,ag;
		ag=stu[j].average;
		stu[j].average=stu[j+1].average;
		stu[j+1].average=ag;
		num=stu[j].num;
		stu[j].num=stu[j+1].num;
		stu[j+1].num=num;
		a=stu[j].age;
		stu[j].age=stu[j+1].age;
		stu[j+1].age=a;
		ch=stu[j].Chinese;
		stu[j].Chinese=stu[j+1].Chinese;
		stu[j+1].Chinese=ch;
        e=stu[j].English;
		stu[j].English=stu[j+1].English;
		stu[j+1].English=e;
		m=stu[j].Match;
		stu[j].Match=stu[j+1].Match;
		stu[j+1].Match=m;
		c=stu[j].C;
		stu[j].C=stu[j+1].C;
		stu[j+1].C=c;
		p=stu[j].Physics;
		stu[j].Physics=stu[j+1].Physics;
		stu[j+1].Physics=p;
        char na[10],s[3];
		strcpy(na,stu[j].name);
		strcpy(stu[j].name,stu[j+1].name);
		strcpy(stu[j+1].name,na);
		strcpy(s,stu[j].sex);
		strcpy(stu[j].sex,stu[j+1].sex);
		strcpy(stu[j+1].sex,s);
		}
	}
	cout<<"|学号   |姓名   |性别   |年龄   |语文   |英语   |数学   |C语言   |物理   |平均分"<<endl;
    for(int b=0;b<i-1;b++)
	{cout<<setiosflags(ios::left);
	cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
	    <<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
		<<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
		<<stu[b].Physics<<"|"<<stu[b].average;
    cout<<endl;
	}
	cout<<"是否保存这些学生信息?Y/N"<<endl;
   getchar();
	if(getchar()==78) StatStudent();
		else 
		{ofstream outfile("d:\\AverageStat.txt",ios::out);   //把平均分降序后的信息,保存文件"d:\\AverageStat.txt"。
		 if(! outfile)
		 {cout<<"open error!"<<endl;
		 exit(1);
		 }
		 for(int a=0;a<i-1;a++)
		 {outfile<<setw(7)<<stu[a].num<<setw(7)<<stu[a].name<<setw(7)<<stu[a].sex<<setw(7)
			 <<stu[a].age<<setw(7)<<stu[a].Chinese<<setw(7)<<stu[a].English<<setw(7)
			 <<stu[a].Match<<setw(7)<<stu[a].C<<setw(7)<<stu[a].Physics<<setw(4)
			 <<stu[a].average;
		  outfile<<endl;
		 }
		 cout<<"已保存在\"d:\\AverageStat.txt\"文件当中!"<<endl;
		 StatStudent();
		}
}
///////////////////////////////////统计不及格课程学生的信息////////////////////////////////
void FailStat()
{
	Student stu[100];
	ifstream infile("d:\\data.txt",ios::in);
	if(! infile)
	{cerr<<"open error!"<<endl;
	exit(1);
	}
	int i=0;
	while(!infile.eof())
	{infile>>stu[i].num;
	infile>>stu[i].name;
	infile>>stu[i].sex;
	infile>>stu[i].age;
	infile>>stu[i].Chinese;
	infile>>stu[i].English;
	infile>>stu[i].Match;
	infile>>stu[i].C;
	infile>>stu[i].Physics;
	infile>>stu[i].average;
	i++;
	}
	int b;
	cout<<"请选择所要统计的科目:1、语文  2、英语  3、数学  4、C语言  5、物理"<<endl;
	int flag;
	cin>>flag;
	if(flag==1)
	{cout<<"|学号   |姓名   |性别   |年龄   |语文   |英语   |数学   |C语言   |物理   |平均分"<<endl;
	int r=0;
	for(b=0;b<i-1;b++)
		if(stu[b].Chinese<60)         //筛选不及格信息。
		{cout<<setiosflags(ios::left);
	     cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
	         <<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
		     <<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
		     <<stu[b].Physics<<"|"<<stu[b].average;
         cout<<endl;
		 r++;
		}
		cout<<"共有"<<r<<"人语文不及格。"<<endl;
	}
	if(flag==2)
	{cout<<"|学号   |姓名   |性别   |年龄   |语文   |英语   |数学   |C语言   |物理   |平均分"<<endl;
	int r=0;
	for(b=0;b<i-1;b++)
		if(stu[b].English<60)
		{cout<<setiosflags(ios::left);
	     cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
	         <<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
		     <<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
		     <<stu[b].Physics<<"|"<<stu[b].average;
         cout<<endl;
		 r++;
		}
        cout<<"共有"<<r<<"人英语不及格。"<<endl;
	}
	if(flag==3)
	{cout<<"|学号   |姓名   |性别   |年龄   |语文   |英语   |数学   |C语言   |物理   |平均分"<<endl;
	int r=0;
	for(b=0;b<i-1;b++)
		if(stu[b].Match<60)
		{cout<<setiosflags(ios::left);
	     cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
	         <<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
		     <<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
		     <<stu[b].Physics<<"|"<<stu[b].average;
         cout<<endl;
		 r++;
		}
		cout<<"共有"<<r<<"人数学不及格。"<<endl;
	}
	if(flag==4)
	{cout<<"|学号   |姓名   |性别   |年龄   |语文   |英语   |数学   |C语言   |物理   |平均分"<<endl;
	int r=0;
	for(b=0;b<i-1;b++)
		if(stu[b].C<60)
		{cout<<setiosflags(ios::left);
	     cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
	         <<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
		     <<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
		     <<stu[b].Physics<<"|"<<stu[b].average;
         cout<<endl;
		 r++;
		}
		cout<<"共有"<<r<<"人C语言不及格。"<<endl;
	}
	if(flag==5)
	{cout<<"|学号   |姓名   |性别   |年龄   |语文   |英语   |数学   |C语言   |物理   |平均分"<<endl;
	int r=0;
	for(b=0;b<i-1;b++)
		if(stu[b].Physics<60)
		{cout<<setiosflags(ios::left);
	     cout<<"|"<<setw(7)<<stu[b].num<<"|"<<setw(7)<<stu[b].name<<"|"<<setw(7)<<stu[b].sex
	         <<"|"<<setw(7)<<stu[b].age<<"|"<<setw(7)<<stu[b].Chinese<<"|"<<setw(7)
		     <<stu[b].English<<"|"<<setw(7)<<stu[b].Match<<"|"<<setw(8)<<stu[b].C<<"|"<<setw(7)
		     <<stu[b].Physics<<"|"<<stu[b].average;
         cout<<endl;
		 r++;
		}
        cout<<"共有"<<r<<"人物理不及格。"<<endl;
	}
}

⌨️ 快捷键说明

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