帮忙把C++程序改改
我想把主函数的v传给file函数来做个选择。帮忙一下!谢谢了!#include<iostream>
#include<fstream>
#include<string.h>
#include<stdlib.h>
using namespace std;
class student
{
public:
char Id[10];
float ps;
float qz;
float qm;
float all;
char grade;
}stu[20];
fstream fs;
int num=0;
char str1[100],str2[100],str3[100],str4[100];
char str5[100]="学生学号(9位)";
char str6[100]="总评成绩";
char str7[100]="成绩等级";
void file(int o)
{
switch(o)
{
case 1:
fs.open("d:\\9班C++.txt",ios::in|ios::out);
break;
case 2:
fs.open("d:\\9班高数.txt",ios::in|ios::out);
break;
case 3:
fs.open("d:\\10班C++.txt",ios::in|ios::out);
break;
case 4:
fs.open("d:\\10班高数.txt",ios::in|ios::out);
break;
case 5:
fs.open("d:\\11班C++.txt",ios::in|ios::out);
break;
case 6:
fs.open("d:\\11班高数.txt",ios::in|ios::out);
break;
}
fs>>num;
for(int i=0;i<num;i++)
{
fs.read(stu[i].Id,10);
fs>>stu[i].ps>>stu[i].qz>>stu[i].qm;
}
for(int j=0;j<num;j++)
{
stu[j].all=stu[j].ps*0.3+stu[j].qz*0.3+stu[j].qm*0.4;
if((stu[j].all<=100)&&(stu[j].all>=90))
stu[j].grade='A';
if((stu[j].all<90)&&(stu[j].all>=80))
stu[j].grade='B';
if((stu[j].all<80)&&(stu[j].all>=70))
stu[j].grade='C';
if((stu[j].all<70)&&(stu[j].all>=60))
stu[j].grade='D';
if((stu[j].all<60)&&(stu[j].all>=0))
stu[j].grade='E';
}
}
void readfile()
{
file(int v);
cout<<num<<endl;
cout<<"学号(9位)"<<" "<<"平时成绩"<<" 期中成绩"<<" 期末成绩"<<endl;
for(int i=0;i<num;i++)
{
cout<<stu[i].Id<<"\t"<<stu[i].ps<<"\t"<<stu[i].qz<<"\t"<<stu[i].qm<<endl;
}
cout<<endl;
}
void readall()
{
file(int v);
int i;
ofstream fout("d:\\out.txt");
if(!fout)
{
cout<<"Cannot open the file!"<<endl;
}
fout<<str5<<"\t"<<str6<<"\t"<<str7<<endl;
cout<<str5<<"\t"<<str6<<"\t"<<endl;
for(i=0;i<num;i++)
{
fout<<stu[i].Id<<"\t"<<stu[i].all<<"\t"<<stu[i].grade<<endl;
cout<<stu[i].Id<<"\t"<<stu[i].all<<endl;
}
cout<<"本课程的总平均成绩:";
float a[20],p;
for(i=0;i<num;i++)
{
a[i]=stu[i].all;
}
for(i=1;i<num;i++)
{
a[i]=a[i]+a[i-1];
}
p=a[num-1]/num;
cout<<p<<endl<<endl;
}
void readgrade()
{ int i;
int j=0;
int k=0;
int x=0;
int y=0;
int z=0;
file(int v);
cout<<str5<<"\t"<<str7<<"\t"<<endl;
for(i=0;i<num;i++)
{
cout<<stu[i].Id<<"\t"<<stu[i].grade<<endl;
}
for(i=0;i<num;i++)
{
if(stu[i].grade==65)
j++;
if(stu[i].grade==66)
k++;
if(stu[i].grade==67)
x++;
if(stu[i].grade==68)
y++;
if(stu[i].grade==69)
z++;
}
float n;
cout<<"成绩为优的学生百分比:";
n=float(j)/num;
cout<<n<<endl;
cout<<"成绩为良的学生百分比:";
n=float(k)/num;
cout<<n<<endl;
cout<<"成绩为中等的学生百分比:";
n=float(x)/num;
cout<<n<<endl;
cout<<"成绩为及格的学生百分比:";
n=float(y)/num;
cout<<n<<endl;
cout<<"成绩为不及格的学生百分比:";
n=float(z)/num;
cout<<n<<endl<<endl;
}
void readABCDE()
{
char m[10];
cout<<"请输入你需要查询学生的成绩等级:";
cin>>m;
if((m[0]!=65)&&(m[0]!=66)&&(m[0]!=67)&&(m[0]!=68)&&(m[0]!=69))
cout<<"Input error!!!!"<<endl<<endl;
if(m[0]==65)
{
cout<<str5<<"\t"<<str6<<endl;
for(int i=0;i<num;i++)
{
if(stu[i].grade=='A')
cout<<stu[i].Id<<"\t"<<stu[i].all<<endl;
}
}
if(m[0]==66)
{ cout<<str5<<"\t"<<str6<<endl;
for(int i=0;i<num;i++)
{ if(stu[i].grade=='B')
cout<<stu[i].Id<<"\t"<<stu[i].all<<endl;
}
}
if(m[0]==67)
{ cout<<str5<<"\t"<<str6<<endl;
for(int i=0;i<num;i++)
{ if(stu[i].grade=='C')
cout<<stu[i].Id<<"\t"<<stu[i].all<<endl;
}
}
if(m[0]==68)
{ cout<<str5<<"\t"<<str6<<endl;
for(int i=0;i<num;i++)
{ if(stu[i].grade=='D')
cout<<stu[i].Id<<"\t"<<stu[i].all<<endl;
}
}
if(m[0]==69)
{ cout<<str5<<"\t"<<str6<<endl;
for(int i=0;i<num;i++)
{ if(stu[i].grade=='E')
cout<<stu[i].Id<<"\t"<<stu[i].all<<endl;
}
}
cout<<endl;
}
int main()
{ int m=1;
int n;
int v;
int q;
char s[10];
cout<<"请选择你要查询的班级(9班到11班)"<<endl;
cin>>q;
cout<<"请选择你要查询的科目(A为C++,B为高数)"<<endl;
cin>>s;
if(q==9&&s=="A") v=1;
if(q==9&&s=="B") v=2;
if(q==10&&s=="A") v=3;
if(q==10&&s=="B") v=4;
if(q==11&&s=="A") v=5;
if(q==11&&s=="B") v=6;
file(v);
do{
cout<<"*******************1.显示学生成绩**********************************************"<<endl;
cout<<"*******************2.显示学生的总评成绩及该班级本课程的总平均成绩**************"<<endl;
cout<<"*******************3.显示学生的成绩等级及占总人数的百分比**********************"<<endl;
cout<<"*******************4.显示成绩在优,良,中等,及格和不及格各区间的学生学号,成绩"<<endl;
cout<<"*******************5.退出******************************************************"<<endl;
cout<<" 请选择:";
cin>>n;
switch(n){
case 1:
readfile();
break;
case 2:
readall();
break;
case 3:
readgrade();
break;
case 4:
readABCDE();
break;
case 5:
exit(0);
break;
default:
cout<<"Input error!!!!"<<endl<<endl;
}
}while(m==1);
return 0;
}