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

这一系列有用的话记得一键三连!!!!

// 2020.03.24 
//2020.03.24 

#include <stdio.h>
#include<stdlib.h>
#include<string.h> 
#define N 30
int count = 0;
int Menu(void);
void Input(long IDscore[N][4],char name[N][10],int n);
void Caculate(long IDscore[N][4],char name[N][10],int cal[2][3],int n);
void Caculate2(long IDscore[N][4],char name[N][10],int cal2[N][2],int n);
void Sorthl(long IDscore[N][4],char name[N][10],int cal2[N][2],int n);
void Sortnumlh(long IDscore[N][4],char name[N][10],int n);
void Sorthl2(long IDscore[N][4],char name[N][10],int cal2[N][2],int n);
void SortName(long IDscore[N][4],char name[N][10],int n);
void Select(long IDscore[N][4],char name[N][10],int cal2[N][2],int n);
void SelectName(long IDscore[N][4],char name[N][10],int cal2[N][2],int n);
void Statistics(long IDscore[N][4],char name[N][10],int n);
void Printf(long IDscore[N][4],char name[N][10],int cal2[N][2],int cal[2][3],int n);

int main()
{
	char itemSelected;
	char name[N][10];
	long IDscore[N][4];
	int cal[2][3],cal2[N][2];
	int 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(IDscore,name,n);
            break;
            case 2:
            Caculate(IDscore,name,cal,n);
            break;
            case 3:
            Caculate2(IDscore,name,cal2,n);
            break;
            case 4:
            Sorthl(IDscore,name,cal2,n);
            break;
            case 5:
            Sortnumlh(IDscore,name,n);
            break;
            case 6:  
            SortName(IDscore,name,n);
            break;
            case 7:
            Select(IDscore,name,cal2,n);
            break;
            case 8:
            SelectName(IDscore,name,cal2,n);
            break;
            case 9:
            Statistics(IDscore,name,n);
            break;
            case 10:
            Printf(IDscore,name,cal2,cal,n); 
            break;
            case 0:
            printf("Exit procedure................!\n");
            return 0;
            default:printf("Input error!\n");
        }
	 } 
 return 0;
}
 



//1.1菜单 
int Menu(void)
{
	int k;
	printf("------------学生成绩管理系统V4.0---------------\n");
	printf("|1.Input record                                |\n");
	printf("|2.Caculate total and average score of course  |\n");
	printf("|3.Calculate the total and average score       |\n");
	printf("|4.Sort in descending order by total scores    |\n");
	printf("|5.Sort in ascending order by number           |\n");
	printf("|6.Sort by dictionary                          |\n");
	printf("|7.Search by number                            |\n");
	printf("|8.Search by name                              |\n");
	printf("|9.Statistic analysis                          |\n");	
	printf("|10.list record                                |\n");	
	printf("|0.Exit                                        |\n");
	printf("-----------------------------------------------\n");
	do{
        printf("Please enter your choice:");
        scanf("%d",&k);
    }while(k<0||k>10);
    return k;
 } 
 
//2.计算功能 
void Caculate(long IDscore[N][4],char name[N][10],int cal[2][3],int n)
{
    int sum,i,j;
    if(count!=1)Input(IDscore,name,n);
    for(j = 1;j < 4;j++)
    {
    	sum = 0;
    	for(i = 0;i < n;i++)
    	{
    		sum = sum + IDscore[i][j];
		}
		cal[0][j-1] = sum;
		cal[1][j-1] = sum/n; 
    }
}
//3.附属计算功能参照前几个系列 
void Caculate2(long IDscore[N][4],char name[N][10],int cal2[N][2],int n)
{
	if(count!=1)Input(IDscore,name,n);
	int i,j,sum;
	for(i = 0;i < n;i++)
	{
		sum = 0;
		for(j = 1;j < 4;j++)
		{
			sum += IDscore[i][j];
		}
		cal2[i][0] = sum;
		cal2[i][1] = sum/3;
	}
	
}
//4.从高到低排序 
void Sorthl(long IDscore[N][4],char name[N][10],int cal2[N][2],int n)
{
    Sorthl2(IDscore,name,cal2,n); 
    printf("Ranking from high to low by total score\n");
    for(int i = 0;i < n;i++)
    {
        printf("Name:%s Score:%d\n",name[i],cal2[i][0]);
    } 
}
//4.1从高到底排序附属功能 
void Sorthl2(long IDscore[N][4],char name[N][10],int cal2[N][2],int n)
{
    int i,j,k,temp1;
    long temp2;
    char temp3[N][10];
    Caculate2(IDscore,name,cal2,n);
    for(i=0;i<n;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
        {
            if(cal2[j][0]>cal2[k][0]) k=j;
        }
       
        temp1=cal2[k][0];
        cal2[k][0]=cal2[i][0];
        cal2[i][0]=temp1; 
        
		strcpy(temp3[k],name[k]);
		strcpy(name[k],name[i]);
		strcpy(name[i],temp3[k]);
		
     }
} 
//4.从低到高排序 
void Sortnumlh(long IDscore[N][4],char name[N][10],int n)
{
    int i,j,k,m;
    long temp2,temp1;
    char temp3[N][10];
    if(count!=1)Input(IDscore,name,n);
    for(i=0;i<n;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
		{
            if(IDscore[j][0]<IDscore[k][0])k=j;
        }
        if(k!=j)
        {
            for(m = 0;m < 4; m++)
            {
            	temp1 = IDscore[k][m];
                IDscore[k][m] = IDscore[i][m];
                IDscore[i][m]= temp1; 
			}
			strcpy(temp3[k],name[k]);
		    strcpy(name[k],name[i]);
		    strcpy(name[i],temp3[k]);
	    	//锟斤拷锟斤拷 
        }
    }
    printf("Ranking from low to high by num is\n");
    for(i=0;i<n;i++)
    {
        printf("ID:%ld  Name:%s  project1:%3ld  project2:%3ld  project3:%3ld",IDscore[i][0],name[i],IDscore[i][1],IDscore[i][2],IDscore[i][3]);
    }
}
//5.按照姓名排序 
void SortName(long IDscore[N][4],char name[N][10],int n)
{
	int i,j,k,m;
    long temp2,temp1;
    char temp3[N][10];
    if(count!=1)Input(IDscore,name,n);
    for(i=0;i<n;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
		{
            if(strcmp(name[j],name[k])<0)k=j;
        }
        if(k!=j)
        {
		    strcpy(temp3[k],name[k]);
		    strcpy(name[k],name[i]);
		    strcpy(name[i],temp3[k]);
	    	//简单的交换 
           for(m = 0;m < 4; m++)
            {
            	temp1 = IDscore[k][m];
                IDscore[k][m] = IDscore[i][m];
                IDscore[i][m] = temp1; 
			}
        }
    }
    printf("Ranking from low to high by name\n");
    for(i=0;i<n;i++)
    {
        printf("Name:%s  ID:%ld  project1:%3ld  project2:%3ld  project3:%3ld",name[i],IDscore[i][0],IDscore[i][1],IDscore[i][2],IDscore[i][3]);
    }
}
//6.查询功能 
void Select(long IDscore[N][4],char name[N][10],int cal2[N][2],int n)
{
    long num1;
    int i;
    Sorthl2(IDscore,name,cal2,n); 
    printf("Please input the student's ID:");
    scanf("%ld",&num1);
    for(i=0;i<n;i++)
    {
        if(num1==IDscore[i][0])
        printf("ID:%ld  Name:%s  Ranking:%d  TotalScore:%d \n",IDscore[i][0],name[i],i+1,cal2[i][0]);
    }
}
//7.按照名字查询 
void SelectName(long IDscore[N][4],char name[N][10],int cal2[N][2],int n)
{
	char name1[10];
	Sorthl2(IDscore,name,cal2,n); 
	printf("Please input the student's name:");
	scanf("%s",name1);
	for(int i=0;i<n;i++)
    {
        if(strcmp(name1,name[i])==0)//锟斤拷锟斤拷锟斤拷址锟斤拷锟斤拷卸锟斤拷锟斤拷锟絪trcmp锟侥凤拷锟斤拷值锟叫讹拷锟角凤拷锟斤拷锟?
        printf("ID:%ld  Name:%s  Ranking:%d  TotalScore:%d \n",IDscore[i][0],name[i],i+1,cal2[i][0]);
    }
}
//8.统计
void Statistics(long IDscore[N][4],char name[N][10],int n)
{
	if(count!=1)Input(IDscore,name,n);
    int excellent,good,medium,pass,fail;
    int i,j;
    for(j = 1;j < 4; j++)
    {
    	excellent = good = medium = pass = fail = 0;
    	for(i=0;i<n;i++)
        {
            if(IDscore[i][j]>=90&&IDscore[i][j]<=100)excellent++;
            if(IDscore[i][j]>=80&&IDscore[i][j]<=89)good++;
            if(IDscore[i][j]>=70&&IDscore[i][j]<=79)medium++;
            if(IDscore[i][j]>=60&&IDscore[i][j]<=69)pass++;
            if(IDscore[i][j]>=0&& IDscore[i][j]<=59)fail++;
        }
        printf("Project%d:\n",j);
        printf("Excellent %d  excellent total %4.1d%% people\n",excellent,(excellent*100)/n);
        printf("Good      %d  good      total %4.1d%% people\n",good,(good*100)/n);
        printf("Mediun    %d  medium    total %4.1d%% people\n",medium,(medium*100)/n);
        printf("Pass      %d  pass      total %4.1d%% people\n",pass,(pass*100)/n);
        printf("Fail      %d  fail      total %4.1d%% people\n",fail,(fail*100)/n);
	}
}
//9.打印 
void Printf(long IDscore[N][4],char name[N][10],int cal2[N][2],int cal[2][3],int n)
{
    Caculate(IDscore,name,cal,n);
	Caculate2(IDscore,name,cal2,n);
    
    int i;
    for(i=0;i<n;i++)
    {
        printf("Name:%s  ID:%ld  project1:%3ld  project2:%3ld  project3:%3ld\n",name[i],IDscore[i][0],IDscore[i][1],IDscore[i][2],IDscore[i][3]);
        printf("TotalScore:%d  Average:%d\n",cal2[i][0],cal2[i][1]);
    }
    printf("Total points for each course:\n");
    printf("P1:%3ld  P2:%3ld  P2:%3ld\n",cal[0][0],cal[0][1],cal[0][2]);
    printf("Average points for each course:\n");
    printf("P1:%3ld  P2:%3ld  P2:%3ld\n",cal[1][0],cal[1][1],cal[1][2]);
 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值