当前位置:编程学习 > C/C++ >>

帮忙把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;
 
 }

答案:#include<iostream>
#include<fstream>
#include<string.h>
#include<stdlib.h>
using namespace std;
int v=0;
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(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(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(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 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

上一个:C++编程: exception和string
下一个:C++学生选修课程系统

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,