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");
}

 

...全文
63 3 打赏 收藏 转发到动态 举报
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
o18_99_1 3天前
  • 打赏
  • 举报
回复

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

o18_99_1 3天前
  • 举报
回复
@o18_99_1 174 应该定义一个指针,把满足条件的保存 char *p = (char*)malloc( N * sizeof(char)); 好吧我也不知道这能不能行
K37SKONE 3天前
  • 举报
回复
@o18_99_1 感谢我去试试
相关推荐
学生成绩信息管理系统涉及到学生、教师、系统管理员、班级、学生成绩、课程。设置一个系统管理员对系统进行管理。所有用户需输入账号、密码登录进入系统;管理员进入系统后可对学生、老师、班级、课程进行增删改查操作;学生进入系统,查看成绩、查看和修改自己的信息;老师进入系统后,对自己这门课程的学生设置课程成绩、查看和修改自己的信息,查看学生的信息和成绩、以及统计分析学生的成绩; 管理员为班级设置年级,为年级设置课程,为班级的每门课程设置老师,为学生设置班级。一个年级有多门课程(语文、数学、外语等等),班级的每门课程只能有一名老师,一个老师可以有多门课程;老师选择自己这门课程为该课程的学生登记成绩。老师可以查看其他老师的信息(可以当成是老师的通讯录),查看本课程学生的信息和成绩;学生可以查看班级其他同学的信息(可以看成是班级的同学录)。 考试分为两种,一种是年级统考,一种是平时考试。年级统考需要管理员事先添加一次年级统考,考试成绩出来后,老师进入系统选择该次考试为学生登记成绩。平时考试则是班级平时的考试,老师添加考试信息,登记成绩。成绩统计分析则是针对年级统考进行分析,主要涉及各学科分数名次,总分名次。 技术实现 系统环境:Windows开发工具:IDEAJava版本:JDK 1.8服务器:Tomcat 1.8数据库:MySQL 5.X系统采用技术:Servlet+Jsp+Jdbc+H-ui+EasyUI+jQuery+Html+Css+Ajax 系统功能系统主要分为三种用户角色,分别是管理员、老师以及学生,其具体功能如下: - 管理员   学生信息管理、教师信息管理、年级信息管理、班级信息管理、课程信息管理、考试信息管理,系统参数设置 - 老师   教学管理、教师个人信息维护、教师通讯录管理 - 学生考试成绩查询、学生通讯录、学生个人信息维护 运行截图 登录界面: 管理员界面: 考试列表:  成绩统计: 学生信息管理: 教师信息管理: 年级、班级信息管理:  系统设置: 教师界面:  成绩登记:  教师通讯录: 个人信息:  学生界面: 学生成绩查询: 班级通讯录: 学生个人信息:              

68,372

社区成员

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