注册 登录
编程论坛 C++教室

这个程序怎么设计一个查找学生成绩

湘妃竹 发布于 2016-04-23 22:11, 4558 次点击
#include<iostream>
#include<string>
using namespace std;
 class Student
{  private:
       int num;
       char name[10];
       char sex[4];
       string kemu[10];
       float score[10];
       float aver;
    public:
        void  show(int );
        void  input();
        void  fenshu(int);
        void  chazhao();
        void  xiugai();
        void  avery(int);

 };
 void Student::input ()
 {  
    cout<<"输入姓名:"<<"\t";
    cin>>name;
    cout<<"输入学号:"<<"\t";
    cin>>num;
    cout<<"输入性别:"<<"\t";
    cin>>sex;   
 }
 void  Student::show (int k)
 {     int j;
    cout<<"姓名"<<" "<<name<<"\t";
    cout<<"学号"<<" "<<num<<"\t";
    cout<<"性别"<<" "<<sex<<"\t";
    cout<<"成绩"<<"\t";
    for(j=0;j<k;j++)
    {
    cout<<kemu[j]<<"\t"<<score[j]<<"\t";
    }
    cout<<"平均成绩"<<aver<<"\t";
    cout<<endl;
   
 }
 
 void Student::fenshu (int k)
 {
    cout<<"输入科目及分数:"<<endl;
     cin>>kemu[k];
     cin>>score[k];   
 }
    void Student::avery (int k)
   {   int j,
      float a=0;
      for(j=0;j<k;j++)
      {
        a=score[j]+a;
      
     }
      aver=a/k;
  }   

 int m,n;
int main()
{  int i,j;
long int nu;
  Student stud[100];
  Student A;
    cout<<"输入学生人数:";
    cin>>n;
    cout<<"输入学科数:";
    cin>>m;
for(i=0;i<n;i++)
{
  stud[i].input ();
for(j=0;j<m;j++)
    {
      stud[i].fenshu (j);
    }
     stud[i].avery (m);
}
   for(i=0;i<n;i++)
   {
   stud[i].show (m);   
   }
   
return 0;
}
6 回复
#2
c9742884322016-04-24 11:39
#include<iostream>
#include<string>
using namespace std;
 class Student
{  private:
       int num;
       char name[10];
       char sex[4];
       string kemu[10];
       float score[10];
       float aver;
    public:
        void  show(int );
        void  input( );
        void  fenshu(int);
        int  chazhao(char a[10]){ if(name==a);return 1;};
        void  xiugai();
        void  avery(int);

 };
 void Student::input ()
 {  
    cout<<"输入姓名:"<<"\t";
    cin>>name;
    cout<<"输入学号:"<<"\t";
    cin>>num;
    cout<<"输入性别:"<<"\t";
    cin>>sex;   
 }
 void  Student::show (int k)
 {     int j;
    cout<<"姓名"<<" "<<name<<"\t";
    cout<<"学号"<<" "<<num<<"\t";
    cout<<"性别"<<" "<<sex<<"\t";
    cout<<"成绩"<<"\t";
    for(j=0;j<k;j++)
    {
    cout<<kemu[j]<<"\t"<<score[j]<<"\t";
    }
    cout<<"平均成绩"<<aver<<"\t";
    cout<<endl;
   
 }
 
 void Student::fenshu (int k)
 {
    cout<<"输入科目及分数:"<<endl;
     cin>>kemu[k];
     cin>>score[k];   
 }
    void Student::avery (int k)
   {   int j,
      float a=0.0;
      for(j=0;j<k;j++)
      {
        a=score[j]+a;
      
     }
      aver=a/k;
  }   

   
int m,n;
int main()
{  int i,j,way;
   char c_name[10];
long int nu;
  Student stud[100];
  Student A;
    cout<<"输入学生人数:";
    cin>>n;
    cout<<"输入学科数:";
    cin>>m;
for(i=0;i<n;i++)
{
  stud[i].input ();
for(j=0;j<m;j++)
    {
      stud[i].fenshu (j);
    }
     stud[i].avery (m);
}

for(i=0;i<n;i++)
   {
   stud[i].show (m);   
   }

while(1)
{cout<<"0:退出  1: 查找"<<endl;
 
 cout<<"选择:";
 cin>>way;

 switch(way)
 {
 case 0:   return 0;                        
 case 1:  cin>>c_name;for(i=0;i<n;i++) {if(stud[i].chazhao(c_name)) {stud[i].show(m);break;}}   break;
 default:                           break;
 }
}
return 0;
}
#3
yangfrancis2016-04-24 15:39
回复 楼主 湘妃竹
一个类对象是一个学生还是一群学生。私有成员里面有一个姓名,一个科目,一个分数。感觉像一个学生的节奏:科目只有一门,具体哪一门待定。而公有函数里面怎么会跑出来一个查找?类里面要查分数就是一群学生,私有成员就不该有姓名了。
#4
c9742884322016-04-24 17:17
#include<iostream>
#include<string.h>
#include<string>
using namespace std;
 class Student
{  private:
       int num;
       char name[10];
       char sex[4];
       string kemu[10];
       float score[10];
       float aver;
    public:
        void  show(int );
        void  input( );
        void  fenshu(int);
        void  chazhao(char a[10],int s_m){
            if(strncmp(name,a,10)==0 )
                show(s_m);}
        void  xiugai();
        void  avery(int);

 };
 void Student::input ()
 {  
    cout<<"输入姓名:"<<"\t";
    cin>>name;
    cout<<"输入学号:"<<"\t";
    cin>>num;
    cout<<"输入性别:"<<"\t";
    cin>>sex;   
 }
 void  Student::show (int k)
 {     int j;
    cout<<"姓名"<<" "<<name<<"\t";
    cout<<"学号"<<" "<<num<<"\t";
    cout<<"性别"<<" "<<sex<<"\t";
    cout<<"成绩"<<"\t";
    for(j=0;j<k;j++)
    {
    cout<<kemu[j]<<"\t"<<score[j]<<"\t";
    }
    cout<<"平均成绩"<<aver<<"\t";
    cout<<endl;
   
 }
 
 void Student::fenshu (int k)
 {
    cout<<"输入科目及分数:"<<endl;
     cin>>kemu[k];
     cin>>score[k];   
 }
    void Student::avery (int k)
   {   int j,
      float a=0.0;
      for(j=0;j<k;j++)
      {
        a=score[j]+a;
      
     }
      aver=a/k;
  }   

   
int m,n;
int main()
{  int i,j,way;
   char c_name[10];
long int nu;
  Student stud[100];
  Student A;
    cout<<"输入学生人数:";
    cin>>n;
    cout<<"输入学科数:";
    cin>>m;
for(i=0;i<n;i++)
{
  stud[i].input ();
for(j=0;j<m;j++)
    {
      stud[i].fenshu (j);
    }
     stud[i].avery (m);
}

for(i=0;i<n;i++)
   {
   stud[i].show (m);   
   }

while(1)
{cout<<"0:退出  1: 查找"<<endl;
 
 cout<<"选择:";
 cin>>way;

 switch(way)
 {
 case 0:   return 0;                        
 case 1: { cin>>c_name;
     for(i=0;i<n;i++)
      stud[i].chazhao(c_name,m)  ;
     
         }  
     break;
 default:                           break;
 }
}
return 0;
}
#5
湘妃竹2016-04-24 19:08
回复 2楼 c974288432
这个类是一群学生,查找的话,应该可以啊。哥哥您回复我的这个程序好像不管输入姓名为啥,都会输出低一个学生的信息
#6
湘妃竹2016-04-24 19:10
回复 3楼 yangfrancis
可不可以在增加一个对学生成绩的比较
#7
c9742884322016-04-24 20:53
回复 5楼 湘妃竹
4L     可以不   
1