C语言学生成绩管理系统系列-------(1)

屯了两年的平常练习的代码,分享一下
学生成绩管理系统V2.0

1.学生成绩管理系统V2.0某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组和指针作为函数参数,编程实现如下菜单驱动的学生成绩管理系统:
(1)录入每个学生的学号和考试成绩;
(2)计算课程的总分和平均分
(3)按成绩由高到低排出名次表;
(4)按学号由小到大排出成绩表;
(5)按学号查询学生排名及其考试成绩;
(6)按优秀(90-100)、良好(80-89)、中等(70-79)、及格(60-69)、不及格(0-59)5个类别,统计每个类别的人数以及所占的百分比;(7)输出每个学生的学号、考试成绩,以及课程总分和平均分。

// 2020.2.29 
//2020.3.01
//——>修改1.将菜单放入函数中
//——>修改2.在switch语句外加while语句 
#include <stdio.h>
#include<stdlib.h>
#define N 30
int Menu(void);
void Input(int score[],long num[],int n);
void Caculate(int score[],long num[],int n);
void Sorthl(int score[],long num[],int n);
void Sortnumlh(int score[],long num[],int n);
void Sorthl2(int score[],long num[],int n);
void Select(int score[],long num[],int n);
void Statistics(int score[],long num[],int n);
void Printf(int score[],long num[],int n);

int main()
{
	char itemSelected;
	int score[N],n;
    long num[N];
	do{
 		printf("Please input the number of students:");
        scanf("%d",&n);
    }while(n<0||n>30);
	while(1)
	{
	    itemSelected = Menu();
	    switch(itemSelected)
        {
            case 1:
            Input(score,num,n);
            break;
            case 2:
            Caculate(score,num,n);
            break;
            case 3:
            Sorthl(score,num,n);
            break;
            case 4:
            Sortnumlh(score,num,n);
            break;
            case 5:  
            Select(score,num,n);
            break;
            case 6:
            Statistics(score,num,n);
            break;
            case 7:
            Printf(score,num,n);
            break;
            case 0:
            printf("Exit procedure................!\n");
            default:printf("Input error!\n");
        }
	 } 
 return 0;
}
 
//1.函数功能:录入学生成绩和学号
void Input(int score[],long num[],int n)
{
	
    int i;
    printf("\n");
    for(i=0;i<n;i++)
    {
        printf("Please input the student's ID and score:");
        scanf("%ld%d",&num[i],&score[i]);
    }
    printf("\n");
}
//1.1函数功能:菜单
int Menu(void)
{
	int k;
	printf("\n");
	printf("------学生成绩管理系统V2.0------\n");
	printf("1.Input record/n");
	printf("2.Caculate total and average score of course\n");
	printf("3.Sort in descending order by scores\n");
	printf("4.Sort in ascending order by number\n");
	printf("5.Search by number\n");
	printf("6.Statistic analysis\n");	
	printf("7.list record\n");	
	printf("0.Exit\n");
	do{
        printf("Please enter your choice:");
        scanf("%d",&k);
    }while(k<0||k>7);
    return k;
 } 
 
//2.函数功能:输出学生得分总分以及平均分
void Caculate(int score[],long num[],int n)
{
    int sum=0,i;
    Input(score,num,n);
    for(i=0;i<n;i++)
    {
        sum=sum+score[i];
    }
    printf("The sum of all the students is:%d\n",sum);
    printf("The average of all the students is:%d\n",sum/n);
}
//3.函数功能:对学生得分进行从高到低排序并且输出排序
void Sorthl(int score[],long num[],int n)
{
    int i,j,k,temp1;
    long temp2;
    Input(score,num,n);
    for(i=0;i<n;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
        {
            if(score[j]>score[k]) k=j;
        }
        //找出最大下标 
        temp1=score[k];
        score[k]=score[i];
        score[i]=temp1; 
        
        temp2=num[k];
        num[k]=num[i];
        num[i]=temp2;
     }
    printf("Ranking from high to low by achievement is\n");
    for(i=0;i<n;i++)
    {
        printf("%d   %ld  %d\n",i+1,num[i],score[i]);
    }
}
//3.1函数功能:对学生得分进行从高到低排序
void Sorthl2(int score[],long num[],int n)
{
    int i,j,k,temp1;
    long temp2;
    Input(score,num,n);
    for(i=0;i<n;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
        {
            if(score[j]>score[k]) k=j;
        }
        //找出最大下标 
        temp1=score[k];
        score[k]=score[i];
        score[i]=temp1; 
        
        temp2=num[k];
        num[k]=num[i];
        num[i]=temp2;//交换分数//
     }
} 
//4.函数功能:对学生的学号从低到高排序并输出排序//
void Sortnumlh(int score[],long num[],int n)
{
    int i,j,k,temp1;
    long temp2;
    Input(score,num,n);
    for(i=0;i<n;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
		{
            if(num[j]<num[k])k=j;
        }
        if(k!=j)
        {
            temp1=score[k];
            score[k]=score[i];
            score[i]=temp1; 
            temp2=num[k];
            num[k]=num[i];
            num[i]=temp2;
        }
    }
    printf("Ranking from low to high by num is\n");
    for(i=0;i<n;i++)
    {
        printf("%d   %ld  %d\n",i+1,num[i],score[i]);
    }
}
//5.函数功能:用户输入学号进行查找并输出学号 排名 得分//
void Select(int score[],long num[],int n)
{
    long num1;
    int i;
    Sorthl2(score,num,n);
    printf("Please input the student's ID:");
    scanf("%ld",&num1);
    for(i=0;i<n;i++)
    {
        if(num1==num[i])
        printf("%ld score is %d,ranking is %d\n",num[i],score[i],i+1);
    }
}
//6.函数功能:统计五个类别的人数以及所占百分比//
void Statistics(int score[],long num[],int n)
{
    int excellent=0,good=0,medium=0,pass=0,fail=0;
    Input(score,num,n);
    int i;
    for(i=0;i<n;i++)
    {
        if(score[i]>=90&&score[i]<=100)excellent++;
        if(score[i]>=80&&score[i]<=89)good++;
        if(score[i]>=70&&score[i]<=79)medium++;
        if(score[i]>=60&&score[i]<=69)pass++;
        if(score[i]>=0&&score[i]<=59)fail++;
    }
    printf("Excellent %d  excellent total %d%% people\n",excellent,(excellent*100)/n);
    printf("Good      %d  good      total %d%% people\n",good,(good*100)/n);
    printf("Mediun    %d  medium    total %d%% people\n",medium,(medium*100)/n);
    printf("Pass      %d  pass      total %d%% people\n",pass,(pass*100)/n);
    printf("Fail      %d  fail      total %d%% people\n",fail,(fail*100)/n);
}
//7.函数功能:输出成绩单 
void Printf(int score[],long num[],int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("%ld score is %d\n",num[i],score[i]);
    }
    Caculate(score,num,n);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值