c语言学生成绩系统课程设计

K37SKONE 2023-05-24 16:14:26

啊啊啊啊要死,有没有大佬来帮帮我,我的课程设计有好多小问题,一直都达不到要求,真的不会写啊

哪位大佬可以帮我改一下!拜托了

 

#include <stdio.h>
#include <stdlib.h>
#define N 30
struct student
{
    int num;  //学号
    char name[20];//姓名 
    float chinese; //语文                                
    float math; //数学
    float english; //外语
    float sum; //平均成绩
}stu[N];
 
//函数声明
int  input(int n); 
void display(int n);
void sort(int n);
void modify(int n);
void statis(int n);
void save(int n);


int main()//主菜单 
{
    int a,b=1;
	while(b)
	{
		printf("\n-----------------------学生成绩管理系统-----------------------\n");
		printf("请选择你需要的功能:\n");
		printf(" 1.录入     2.显示    3.排序     4.修改     5.统计     6.退出\n");
		scanf("%d",&a);
		switch(a)
		{
		    case 1:printf("\n-----------------------学生成绩录入功能-----------------------\n");input(1);break; 
			case 2:printf("\n-----------------------学生成绩显示功能-----------------------\n");display(2);break;
			case 3:printf("\n-----------------------学生成绩排序功能-----------------------\n");sort(3);break; 
			case 4:printf("\n-----------------------学生成绩修改功能-----------------------\n");modify(4);break; 
			case 5:printf("\n-----------------------学生成绩统计功能-----------------------\n");statis(5);break; 
			case 6:b = 0; break; 
			default:printf("输入有误!请重新输入!\n");
		}	
	}
	printf("\n-----------------------已退出成绩管理系统-----------------------\n"); 
	return 0;
}


int input(int n)    //输入成绩
{
    //student p;
    printf("请输入学生人数:\n");
	scanf("%d", &n);
    for(int i=1;i<=n;i++)
	{
		
		printf("请输入学生学号:\n");
		scanf("%d",&stu[i].num);
		
		printf("请输入学生姓名:\n");
		scanf("%s",stu[i].name);
		
		printf("请输入学生语文成绩:\n");
		scanf("%f",&stu[i].chinese);
		
		printf("请输入学生数学成绩:\n");
		scanf("%f",&stu[i].math);
		
		printf("请输入学生英语成绩:\n");
		scanf("%f",&stu[i].english);
		
        stu[i].sum=stu[i].chinese+stu[i].math+stu[i].english;		
	}
	printf("\n-----------------------学生成绩完成录入-----------------------\n");
} 


void display(int n)  //显示成绩
{
	
	printf("\n-----------------------学生成绩信息显示-----------------------\n");
	printf("学号\t 姓名\t 语文\t 数学\t 英语\t 总分\n"); 
    int j;
	for(j=0;j<n;j++)
	{
	printf(" %d\t %s%12f %6f %6f %6f\n",stu[j].num,stu[j].name,stu[j].chinese,stu[j].math,stu[j].english,stu[j].sum);
	} 
	printf("\n-----------------------学生成绩完成显示-----------------------\n");
}



void sort(int n)  //根据总分成绩排序
{
	int t,q,p;
	for(q=1; q<n; q++)
	{
		for(p=0; p<n-q-1; p++)
		{
			if(stu[p].sum<stu[p+1].sum)
			{
				stu[t]=stu[p];
			    stu[p]=stu[p+1];
				stu[p+1]=stu[t];
			}
		}
	}
	printf("学号\t 姓名\t 总分\n"); 
	for(q=1; q<n; q++)
	printf(" %d\t %s %12f\n",stu[q].num,stu[q].name,stu[q].sum); 
	printf("\n-----------------------学生成绩完成排序-----------------------\n");
}


void statis(int n)  //统计成绩
{
//找出语文最高的分数 
	int i1,j1,max1;
    max1=stu[0].chinese;
    for(i1=0;i1<n;i1++)
    {
        if(max1<stu[i1].chinese)
        {
            max1=stu[i1].chinese;
            j1=i1;
        }
    }
    printf("语文成绩最高学生信息:\n"); 
    printf("学号:%d      姓名:%s       语文成绩:%f\n",stu[j1].num,stu[j1].name,stu[j1].chinese);

//找出数学最高的分数 
	int i2,j2,max2;
    max2=stu[0].math;
    for(i2=0;i2<n;i2++)
    {
        if(max2<stu[i2].math)
        {
            max2=stu[i2].math;
            j2=i2;
        }
    }
    printf("数学成绩最高学生信息:\n"); 
    printf("学号:%d      姓名:%s       数学成绩:%f\n",stu[j2].num,stu[j2].name,stu[j2].math);
 
//找出英语最高的分数 
	int i3,j3,max3;
    max3=stu[0].english;
    for(i3=0;i3<n;i3++)
    {
        if(max3<stu[i3].english)
        {
            max3=stu[i3].english;
            j3=i3;
        }
    }
    printf("英语成绩最高学生信息:\n"); 
    printf("学号:%d      姓名:%s       英语成绩:%f\n",stu[j3].num,stu[j3].name,stu[j3].english);
    printf("\n*******************每门课程最高成绩学生信息完成显示*******************\n");



//求语文平均成绩
    printf("\n*********************语文平均成绩显示*********************\n");
    float avg;
    avg=0.00;
    for(int i=0;i<n;i++)
    {
        avg=avg+stu[i].chinese;
    }
    avg=avg/N;
    printf("语文平均成绩:%0.2f\n",avg);
    
    
    
//大于平均分学生信息成绩 
    printf("\n*********************超过语文平均成绩的学生显示*********************\n");
    int i;
    for(i=0;i<n;i++)
    {
        if(avg<stu[i].chinese)  
        {
            printf("学号:%d      姓名:%s       语文成绩:%f\n",stu[i].num,stu[i].name,stu[i].chinese);
        } 
    }
   printf("超过语文平均成绩的学生有:%d\n",i);   
}


void save(int n)  //保存文件 
{
	FILE *fp;
	fp=fopen("c:\\STUDENT.txt","wb");
	if(fp==NULL)
	{
		printf("error!");
		exit(1);
	}
	else
	{
		for(int j=0;j<n;j++)
		{
			fprintf(fp,"学号:%d  姓名:%s  语文:%f  数学:%f  英语:%f  总分:%f\n",stu[j].num,stu[j].name,stu[j].chinese,stu[j].math,stu[j].english,stu[j].sum);
		}
		printf("文件保存成功\n");
	}
	fclose(fp);
}



void modify(int n)  //修改成绩 
{
	int i;
	printf("请输入要修改的学号:");
	scanf("%d",&stu[i].num);
    if(stu[i].num!=n)
    {printf("学生不存在!\n");}
    else
    {
    	printf("请输入新姓名:");
	    scanf("%s",stu[i].name); 
	    printf("请输入新语文成绩:");
	    scanf("%f",&stu[i].chinese); 
	    printf("请输入新数学成绩:");
	    scanf("%f",&stu[i].math); 
    	printf("请输入新英语成绩:");
    	scanf("%f",&stu[i].english); 
	}
    	printf("学号:%4d 姓名:%6s 语文:%8f 数学:%8f 英语:%8f",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english);
        printf("\n-----------------------学生成绩完成修改-----------------------\n");
}

 

...全文
150 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
o18_99_1 2023-05-25
  • 打赏
  • 举报
回复

我也小白,
首先我感觉int n 完全没必要传参,
sort函数里t没有初始化

o18_99_1 2023-05-25
  • 举报
回复
@o18_99_1 174 应该定义一个指针,把满足条件的保存 char *p = (char*)malloc( N * sizeof(char)); 好吧我也不知道这能不能行
K37SKONE 2023-05-25
  • 举报
回复
@o18_99_1 感谢我去试试

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧