学生管理

利用函数指针数组实现菜单选择

 

将下面的程序改写成使用菜单驱动界面。程序提供5个选项如下所示(应在屏幕上显示):

Enter a choice:  

0 Print the array of grades  

1 Find the minimum grade  

2 Find the maximum grade  

3 Print the average on all tests for each student  

4 End program

当用户按下选择后,得到相应的输出。

 

#include<iostream>
using namespace std;

//定义学生数组
char student1[]={'A','m','b','e','r'};
char student2[]={'S','u','l','l','i'};
char student3[]={'K','r','y','s','t','a','l'};
char student4[]={'L','u','n','a'};

//定义成绩数组
int grade[4][5]={{8,100,96,96,80},
                {89,79,87,68,86},
                {79,67,66,89,90},
                {97,86,79,60,88}}; 

//打印成绩数组
void printArray(char student1[5],char student2[5],char student3[7],char student4[4],int grade[4][5])
{
     //打印第一位同学的成绩 
     for(int i=0;i<4;i++)
     {
         cout<<student1[i];
     }
     cout<<"'s grades are:";
     for(int i=0;i<=4;i++)
     {
         cout<<grade[0][i]<<" ";             
     }
     cout<<endl;
     
     //打印第二位同学的成绩 
     for(int i=0;i<4;i++)
     {
         cout<<student2[i];
     }
     cout<<"'s grades are:";
     for(int i=0;i<=4;i++)
     {
         cout<<grade[1][i]<<" ";             
     }
     cout<<endl;
     
     //打印第三位同学的成绩 
     for(int i=0;i<6;i++)
     {
         cout<<student3[i];
     }
     cout<<"'s grades are:";
     for(int i=0;i<=4;i++)
     {
         cout<<grade[2][i]<<" ";             
     }
     cout<<endl;
     
     //打印第四位同学的成绩 
     for(int i=0;i<3;i++)
     {
         cout<<student4[i];
     }
     cout<<"'s grades are:";
     for(int i=0;i<=4;i++)
     {
         cout<<grade[3][i]<<" ";             
     }
     cout<<endl;
} 

//找到最低成绩
void findMinimun(char student1[5],char student2[5],char student3[7],char student4[4],int grade[4][5])
{
     //打印第一位同学的最低成绩
     int min1=grade[0][0];
     for(int i=1;i<5;i++)
     {
         if(grade[0][i]<min1)
         {
            min1=grade[0][i];                           
         }
               
     }
     for(int i=0;i<4;i++)
     {
         cout<<student1[i];
     }
     cout<<"的最低成绩是:"<<min1<<endl; 
     
     //打印第二位同学的最低成绩
     int min2=grade[1][0];
     for(int i=1;i<5;i++) 
     {
         if(grade[1][i]<min2)
         {
            min2=grade[1][i];                 
         }        
     }
     for(int i=0;i<4;i++)
     {
         cout<<student2[i];
     }
     cout<<"的最低成绩是:"<<min2<<endl;
     
     //打印第三位同学的最低成绩
     int min3=grade[2][0];
     for(int i=1;i<5;i++) 
     {
         if(grade[2][i]<min3)
         {
            min3=grade[2][i];                 
         }        
     }
     for(int i=0;i<6;i++)
     {
         cout<<student3[i];
     }
     cout<<"的最低成绩是:"<<min3<<endl;
     
     //打印第四位同学的最低成绩
     int min4=grade[3][0];
     for(int i=1;i<5;i++) 
     {
         if(grade[3][i]<min4)
         {
            min4=grade[3][i];                 
         }        
     }
     for(int i=0;i<3;i++)
     {
         cout<<student4[i];
     }
     cout<<"的最低成绩是:"<<min4<<endl;
     
     int min[4]={min1,min2,min3,min4};
     int minimum=min1;
     for(int i=1;i<4;i++)
     {
         if(min[i]<minimum)
         {
            minimum=min[i];
         }
     }
     cout<<"最低成绩是:"<<minimum<<endl;
}

//找到最高成绩
void findMaximun(char student1[5],char student2[5],char student3[7],char student4[4],int grade[4][5])
{
     //打印第一位同学的最高成绩
     int max1=grade[0][0];
     for(int i=1;i<5;i++)
     {
         if(grade[0][i]>max1)
         {
            max1=grade[0][i];                           
         }
               
     }
     for(int i=0;i<4;i++)
     {
         cout<<student1[i];
     }
     cout<<"的最高成绩是:"<<max1<<endl; 
     
     //打印第二位同学的最高成绩
     int max2=grade[1][0];
     for(int i=1;i<5;i++) 
     {
         if(grade[1][i]>max2)
         {
            max2=grade[1][i];                 
         }        
     }
     for(int i=0;i<4;i++)
     {
         cout<<student2[i];
     }
     cout<<"的最高成绩是:"<<max2<<endl;
     
     //打印第三位同学的最高成绩
     int max3=grade[2][0];
     for(int i=1;i<5;i++) 
     {
         if(grade[2][i]>max3)
         {
            max3=grade[2][i];                 
         }        
     }
     for(int i=0;i<6;i++)
     {
         cout<<student3[i];
     }
     cout<<"的最高成绩是:"<<max3<<endl;
     
     //打印第四位同学的最高成绩
     int max4=grade[3][0];
     for(int i=1;i<5;i++) 
     {
         if(grade[3][i]>max4)
         {
            max4=grade[3][i];                 
         }        
     }
     for(int i=0;i<3;i++)
     {
         cout<<student3[i];
     }
     cout<<"的最高成绩是:"<<max4<<endl;
     
     int max[4]={max1,max2,max3,max4};
     int maximum=max1;
     for(int i=1;i<4;i++)
     {
         if(max[i]<maximum)
         {
            maximum=max[i];
         }
     }
     cout<<"最高成绩是:"<<maximum<<endl;
}

//打印每位同学的平均成绩
void printAverage(int grade[][5])
{
     //定义总成绩变量
     double sum=0.0;
     //定义平均成绩
     double ave=0.0;
     
     //求第一位同学的总成绩
     for(int i=0;i<5;i++)
     {
         sum+=grade[0][i];
     }
     //求第一位同学的平均成绩
     ave=sum/5;
     cout<<"第一位同学的平均成绩是:"<<ave<<endl;
     
     sum=0.0;
     ave=0.0;
     
     //求第二位同学的总成绩
     for(int i=0;i<5;i++)
     {
         sum+=grade[1][i];
     }
     //求第二位同学的平均成绩
     ave=sum/5;
     cout<<"第二位同学的平均成绩是:"<<ave<<endl;
     
     sum=0.0;
     ave=0.0;
     
     //求第三位同学的总成绩
     for(int i=0;i<5;i++)
     {
         sum+=grade[2][i];
     }
     //求第三位同学的平均成绩
     ave=sum/5;
     cout<<"第三位同学的平均成绩是:"<<ave<<endl;
     
     sum=0.0;
     ave=0.0;
     
     //求第四位同学的总成绩
     for(int i=0;i<5;i++)
     {
         sum+=grade[3][i];
     }
     //求第四位同学的平均成绩
     ave=sum/5;
     cout<<"第四位同学的平均成绩是:"<<ave<<endl;
}

int main()
{
    //定义查询变量 
    int number;
    //cout<<"请输入一个0~4之间的整数:"<<endl; 
    cout<<"Enter a choice:"<<endl;
    cout<<"0 Print the array of grades"<<endl;
    cout<<"1 Find the minimum grade"<<endl;
    cout<<"2 Find the maximum grade"<<endl;
    cout<<"3 Print the average on all tests for each student"<<endl;
    cout<<"4 End program"<<endl;
    cin>>number;
    
    //判断number的值
    if(number<0||number>4)
    {
       cout<<"您输入的内容不在查询范围内!"<<endl;
       cout<<"请重新输入"<<endl;   
       cout<<"请输入一个0~4之间的整数:"<<endl;                 
    } 
    
    if(number==0)
    {
       printArray(student1,student2,student3,student4,grade);
    }
                 
    else if(number==1)
    {
       findMinimun(student1,student2,student3,student4,grade);
    }
    
    else if(number==2)
    {
       findMaximun(student1,student2,student3,student4,grade);
    }
    
    else if(number==3)
    {
       printAverage(grade);  
    }
    
    else if(number==4)
    {
       return 0;     
    }
    system("PAUSE");
    return 0;   
}

 

注意:1.调用函数传入数组参数时,只需写数组名即可,数组名即为数组首地址

         2.else if语句块中,return 后一定要有一整数值

         3.C++中的system为小写

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值