| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#include <stdio.h> 
#include <stdlib.h> 
#define N 30 
int Menu(void); 
void ReadScore(long num[],float score[],int n); 
void Average(float score[],int n); 
void PrintScore(long num[],float score[],int n); 
void DataSort(float score[],int n); 
void StuID(long num[],float score[],int n); 
void BinSearch(long num[],float score[],int n); 
void FenJi(float score[],int n); 
main() 
{ 
        int n; 
        char op; 
        printf("Welcome to student achievement management system 1.0!\n"); 
        printf("please input how many students(n<%d):",N); 
        scanf("%d",&n); 
        printf("\n"); 
        long num[N]; 
        float score[N]; 
        while(1) 
        {          
                 op=Menu(); 
                   switch(op) 
                   { 
                           case 1: 
                           ReadScore(num,score,n); 
                           printf("\n"); 
                           break; 
                        case 2: 
                                Average(score,n); 
                                printf("\n"); 
                                break; 
                        case 3:  
                                DataSort(score,n); 
                                PrintScore(num,score,n); 
                                printf("\n"); 
                                break; 
                        case 4:         
                                StuID(num,score,n); 
                                PrintScore(num,score,n); 
                                printf("\n"); 
                                break; 
                        case 5: 
                                BinSearch(num,score,n); 
                                printf("\n"); 
                                break; 
                        case 6: 
                                FenJi(score,n); 
                                printf("\n"); 
                                break; 
                        case 7: 
                                Average(score,n); 
                                PrintScore(num,score,n); 
                        case 0: 
                                printf("End of program!\n"); 
                                exit(0); 
                        default:printf("input error!\n"); 
                                         
                } 
        } 
        return 0; 
} 
int Menu(void) 
{ 
        int m; 
        printf("1.Input record and stuid:\n"); 
        printf("2.Caculate total and average score of course:\n"); 
        printf("3.Sort in descending order by score:\n"); 
        printf("4.Sort in ascending order by number:\n"); 
        printf("5.Search by number:\n"); 
        printf("6.Statistic analysis:\n"); 
        printf("7.List records:\n"); 
        printf("0.Exit\n"); 
        printf("\n"); 
        printf("please enter your choice:"); 
        scanf("%d",&m); 
        return m; 
} 
    
/*函数功能:录入学生学号和成绩*/ 
void ReadScore(long num[],float score[],int n) 
{ 
        int j; 
        printf("input student's ID and score:\n"); 
        for(j=0;j<n;j++) 
        { 
                scanf("%ld %f",&num[j],&score[j]); 
        }         
} 
 
/*函数功能:按成绩高低排出成绩表*/  
void DataSort(float score[],int n) 
{ 
        int i,j; 
        float temp; 
        for(i=0;i<n-1;i++) 
        { 
                for(j=i+1;j<n;j++) 
                { 
                        if(score[j]>score[i]) 
                        { 
                                temp=score[j]; 
                                score[j]=score[i]; 
                                score[i]=temp;         
                        }  
                } 
        }         
}  
 
/*函数功能:按学号由小到大排出成绩表*/ 
void StuID(long num[],float score[],int n) 
{ 
        int i,j; 
        long temp1; 
        float temp2; 
        for(i=0;i<n-1;i++) 
        { 
                for(j=i+1;j<n;j++) 
                { 
                        if(num[j]<num[i]) 
                        { 
                                temp1=num[j]; 
                                num[j]=num[i]; 
                                num[i]=temp1; 
                                temp2=score[j]; 
                                score[j]=score[i]; 
                                score[i]=temp2; 
                        } 
                } 
        } 
}  
 
/*按学号查询学生排名和成绩*/ 
void BinSearch(long num[],float score[],int n)  
{ 
        int i; 
        long j; 
        printf("please input the number you want to watch:"); 
        scanf("%ld",&j); 
        for(i=0;i<n;i++) 
        { 
                if(num[i]==j) 
                { 
                        printf("the student's ranging and score are %d\t%f\n",j,score[j]);         
                }         
        }         
        printf("Not found!\n"); 
} 
 
/*函数功能:按成绩进行分级*/  
void FenJi(float score[],int n) 
{ 
        int i,YX=0,LH=0,ZD=0,JG=0,BJG=0; 
        for(i=0;i<n;i++) 
        { 
                if(score[i]>=90&&score[i]<=100) 
                { 
                        YX++;                         
                } 
                if(score[i]>=80&&score[i]<90) 
                { 
                        LH++;                         
                } 
                if(score[i]>=70&&score[i]<80) 
                { 
                        ZD++;                         
                } 
                if(score[i]>=60&&score[i]<70) 
                { 
                        JG++;                         
                } 
                if(score[i]>=0&&score[i]<60) 
                { 
                        BJG++;                         
                } 
        } 
        printf("优秀(90-100)人数为%d\n",YX); 
        printf("优秀率为%.1d%%\n",(100*YX)/n); 
        printf("良好(80-89)人数为%d\n",LH); 
        printf("良好率为%.1d%%\n",(100*LH)/n); 
        printf("中等(70-79)人数为%d\n",ZD); 
        printf("中等率为%.1d%%\n",(100*ZD)/n); 
        printf("及格(60-69)人数为%d\n",JG); 
        printf("及格率为%.1d%%\n",(100*JG)/n); 
        printf("不及格(0-59)人数为%d\n",BJG); 
        printf("不及格率为%.1d%%\n",(100*BJG)/n); 
} 
/*函数功能:计算课程总分和平均分*/ 
void Average(float score[],int n) 
{ 
        int j; 
        float aver,SUM=0; 
        for(j=0;j<n;j++) 
        { 
                SUM+=score[j];         
        } 
        aver=SUM/n;         
        printf("%f %f\n",SUM,aver); 
} 
 
/*函数功能:输出学生的学号和成绩*/ 
void PrintScore(long num[],float score[],int n) 
{ 
        int j; 
        for(j=0;j<n;j++) 
        { 
                printf("%10ld\t%.1f\n",num[j],score[j]); 
        }         
} 
这个成绩管理系统只有第六个按成绩分级能用,其它的选项都有问题(我感觉学号的录入出了问题)o(╥﹏╥)o 
  
ps:第一次发帖,有什么弄得不好的地方还请指正!
 |   
 
 
 
 |