C语言课程设计-学生成绩管理系统

这篇具有很好参考价值的文章主要介绍了C语言课程设计-学生成绩管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求分析:

1.设计题目:学生成绩管理系统

2.系统功能需求分析:实现对学生各科成绩总分及平均分的排序,和成绩的查找

概要设计

1.功能模块图

C语言课程设计-学生成绩管理系统

详细设计

1.流程图

C语言课程设计-学生成绩管理系统

测试结果:列出所有功能的运行界面,并作文字说明。

1.录入成绩:录入3个人的学号和各科成绩

C语言课程设计-学生成绩管理系统

2.每门课程的总分平均分;计算各科的平均分

C语言课程设计-学生成绩管理系统

3.学生总分:计算3个学生的总分

C语言课程设计-学生成绩管理系统

4.学生总分的排序由高到低:对3个学生成绩进行排序

C语言课程设计-学生成绩管理系统

5.按学号由小到大排出成绩表;按学号排成绩

C语言课程设计-学生成绩管理系统

6.按姓名的字典顺序排出成绩表:按姓名顺序排成绩

C语言课程设计-学生成绩管理系统

7.学号查询学生排名和考试成绩:通过学生学号查找排名和各科成绩

C语言课程设计-学生成绩管理系统

8.按姓名查询学生排名及其考试成绩;通过输入姓名查找排名和成绩

C语言课程设计-学生成绩管理系统

9.每门课程分别统计每个类别的人数以及所占百分比;看各科评级人数和所占百分比

C语言课程设计-学生成绩管理系统

10.输出学生的学号,姓名考试成绩,总分和平均分;输出学生各项数据 

C语言课程设计-学生成绩管理系统

11.将数据存入文件:保存数据

C语言课程设计-学生成绩管理系统文章来源地址https://www.toymoban.com/news/detail-512101.html

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3         //定义学生人数 
typedef struct
{
	float mat;//高数 
	float eng;//英语 
	float com;//计算机                    无名结构体的变量定义 
	float phy;//大物 
	float ele;//电路 
}SUB; //科目 
typedef struct Student{
	char xuehao[100];//学号 
	char name[100];//姓名 
	char sex[100];//性别                  无名结构体的变量定义
	SUB score;//科目分数 
	float num;// 总分 
	float ave;//平均分 
	
}AA;//信息 
void save(AA *p){  //文件存入
    int i;
    FILE *fp;//定义一个指针变量 
    fp=fopen("student.txt","w"); //打开以上创建的”student" 文件,"w"表示“只写” 
    if((fp=fopen("student.txt","w"))==NULL)//检查文件是否正确打开,即:判断 fopen()的函数值 是否为空指针NULL 
	{
        printf("cannot open file\n");//打开文件的操作出现错误, fopen()函数的返回值为空指针NULL,即:该文件打开失败 
        exit(0);                            //关闭所有打开的文件,终止正在执行的程序 
    }
    for(i=0;i<N;i++)//控制循环3次 
	{
        fprintf(fp,"%s\t",p[i].xuehao);//输出学号 
        fprintf(fp,"%s\t",p[i].name);//姓名 
        fprintf(fp,"%s\t",p[i].sex);//性别 
        fprintf(fp,"%.2f\t",p[i].score.mat);//高数
        fprintf(fp,"%.2f\t",p[i].score.eng);//英语 
        fprintf(fp,"%.2f\t",p[i].score.com);//计算机 
        fprintf(fp,"%.2f\t",p[i].score.phy);//大物 
        fprintf(fp,"%.2f\t",p[i].score.ele);//电路 
        fprintf(fp,"%.2f\t",p[i].num);//总分 
        fprintf(fp,"%.2f\t",p[i].ave);//均分 
        fprintf(fp,"\n");
    }
    fclose(fp);//关闭文件 
}
void menu(int *n)//主菜单 
{
	printf("\t\t\t\t*************************************************\n");
	printf("\t\t\t\t\t1.手动录入数据\n");//手动录入数据 
	printf("\t\t\t\t\t2.计算每门课程的总分和平均分 \n");//计算每门课程的总分和平均分 
	printf("\t\t\t\t\t3.计算每个学生的总分和平均分 \n");//计算每个学生的总分和平均分 
	printf("\t\t\t\t\t4.按学生的总分由高到低排出名次表\n");//按学生的总分由高到低排出名次表 
	printf("\t\t\t\t\t5.按学号由小到大排出成绩表\n");//按学号由小到大排出成绩表 
	printf("\t\t\t\t\t6.按姓名的字典顺序排出成绩表 \n");//按姓名的字典顺序排出成绩表 
	printf("\t\t\t\t\t7.按学号查询学生排名及其考试成绩\n");//按学号查询学生排名及其考试成绩 
	printf("\t\t\t\t\t8.按姓名查询学生排名及其考试成绩 \n");//按姓名查询学生排名及其考试成绩 
	printf("\t\t\t\t\t9.对每门课程分别统计每个类别的人数以及所占百分比\n");/*对每门课程分别统计每个类别的人数以及所占百分比*/ 
	printf("\t\t\t\t\t10.输出每个学生的学号,姓名,各科考试成绩,总分和平均分 \n");//输出每个学生的学号,姓名,各科考试成绩,总分和平均分 
	printf("\t\t\t\t\t11.将数据存入文件\n");//将数据存入文件 
	printf("\t\t\t\t\t0.退出程序 \n");//退出程序 
	printf("\t\t\t\t*************************************************\n");
	printf("Please input your choice:");
	scanf("%d",n);	
}
void scanfstudent(AA*p)//信息录入 
{
	int i;
	for(i=0;i<N;i++)//控制人数为3 
	{
		printf("请输入第%d学生的信息:\n",i+1);
		printf("学号:");
		scanf("%s",p[i].xuehao);
		printf("姓名:");
		scanf("%s",p[i].name);
		printf("性别:");
		scanf("%s",p[i].sex);
		printf("高数得分:");
		scanf("%f",&p[i].score.mat);
		printf("英语得分:");
		scanf("%f",&p[i].score.eng);
		printf("计算机得分:");
		scanf("%f",&p[i].score.com);
		printf("大物得分:");
		scanf("%f",&p[i].score.phy);
		printf("电路得分:");
		scanf("%f",&p[i].score.ele);
		p[i].num=(p[i].score.mat+p[i].score.eng+p[i].score.com+p[i].score.phy+p[i].score.ele);		//计算总成绩 
		printf("总成绩:%.2f",p[i].num);
		p[i].ave=(p[i].score.mat+p[i].score.eng+p[i].score.com+p[i].score.phy+p[i].score.ele)/5.0; //计算总平均分	
		printf("平均分:%.2f",p[i].ave);
		}
	
}
void studentave(AA *p)//计算并输出总分、平均分 
{
	int i;
	for(i=0;i<N;i++)
	{
		p[i].num=(p[i].score.mat+p[i].score.eng+p[i].score.com+p[i].score.phy+p[i].score.ele);	//计算个人总分 
		p[i].ave=(p[i].score.mat+p[i].score.eng+p[i].score.com+p[i].score.phy+p[i].score.ele)/5.0;//计算个人平均分 
		printf("第%d个学生的总分:%.2f\t\t平均分:%.2f",i+1,p[i].num,p[i].ave);//输出 
		printf("\n");
	}
}
void printfstudent(AA*p)//汇总个人成绩 
{
	int i;
	printf("学号\t\t姓名\t性别\t高数\t英语\t计算机\t大物\t电路\t总分\t平均分\n\n");//
	for (i=0;i<N;i++)
	{
		printf("%s\t",p[i].xuehao);
		printf("%s\t",p[i].name);
		printf("%s\t",p[i].sex);
		printf("%.2f\t",p[i].score.mat);
		printf("%.2f\t",p[i].score.eng);
		printf("%.2f\t",p[i].score.com);
		printf("%.2f\t",p[i].score.phy);
		printf("%.2f\t",p[i].score.ele);
		p[i].num=(p[i].score.mat+p[i].score.eng+p[i].score.com+p[i].score.phy+p[i].score.ele);	
		printf("%.2f\t",p[i].num);
		p[i].ave=(p[i].score.mat+p[i].score.eng+p[i].score.com+p[i].score.phy+p[i].score.ele)/5.0;
		printf("%.2f\t",p[i].ave);
		printf("\n");		
	}
}
void pxnum(AA *p)                                               //?????????????????????? 
{
	AA st;
	int i,j;
	for(i=0;i<N;i++)
	{
		for(j=0;j<N-1;j++)
		if(p[i].num>p[j].num)
		{
			st=p[i];
			p[i]=p[j];
			p[j]=st;	
		}	
	}
	printfstudent(p);	
}
void px1(AA*p)                                        //????????????????????????????? 
{
	AA st;
	int i,j;
	for(i=0;i<N-1;i++)
	{
		for(j=i+1;j<N;j++)
		if(p[i].xuehao>p[j].xuehao)
		{
			st=p[i];
			p[i]=p[j];
			p[j]=st;			
		}		
	}
	printfstudent(p);	
}
void px2(AA *p)                                                //   ????????????????? 
{
	char tem[30]={0};
	int i,j;
	for(i=0;i<N-1;i++)
	{																													
		for(j=i+1;j<N;j++)
		if(strcmp(p[i].name,p[j].name)>0)
		{
		strcpy(tem,p[i].name);
		strcpy(p[i].name,p[j].name);
		strcpy(p[j].name,tem);	
		}
	}
	printfstudent(p);	
}
void chazhaoxuehao(AA *p)//查找学号 
{
	int j;
	int flat = 0;
	char num[100];
	printf("请输入要查找的学号:");
	scanf("%s",num);
	for(j=0;j<N;j++)
	{
		if(strcmp(p[j].xuehao,num)==0)
		{
			flat++;
			break;		
		}
	}
	if(!flat)
	{
		printf("学号输入有误!\n");
	}
	else{
		printf("学号:%s,姓名:%s,性别:%s,高数:%.2f,英语:%.2f,计算机:%.2f,大物:%.2f电路:%.2f\n",p[j].xuehao,p[j].name,
		p[j].sex,p[j].score.mat,p[j].score.eng,p[j].score.com,p[j].score.phy,p[j].score.ele);	
	}
}	
void chazhaoname(AA *p)//查找姓名 
{
	int j;
	int flat = 0; 
	char name1[100];	
	printf("请输入要查找的姓名:");
	scanf("%s",name1);
	for(j=0;j<N;j++){
		if(strcmp(p[j].name,name1)==0)
		{
			flat++;
			printf("学号:%s,姓名:%s,性别:%s,高数:%.2f,英语:%.2f,计算机:%.2f,大物:%.2f电路:%.2f\n",p[j].xuehao,p[j].name,
			p[j].sex,p[j].score.mat,p[j].score.eng,p[j].score.com,p[j].score.phy,p[j].score.ele);
			break;		
			}	
		}
		if(!flat){
			printf("姓名输入有误!\n");	
	}	
}
void courseave(AA *p)
{
	int i;
	float sum1=0;
	float sum2=0;
	float sum3=0;
	float sum4=0;
	float sum5=0;
	float ave1=0,ave2=0,ave3=0,ave4=0,ave5=0; 
	for(i=0;i<N;i++)
	{
		sum1+=p[i].score.mat;ave1=sum1/N;
		sum2+=p[i].score.eng;ave2=sum2/N;
		sum3+=p[i].score.com;ave3=sum3/N;
		sum4+=p[i].score.phy;ave4=sum4/N;
		sum5+=p[i].score.ele;ave5=sum5/N;	
	}
	printf("高数总分:%.2f\t英语总分:%.2f\t计算机总分:%.2f\t大物总分:%.2f\t电路总分:%.2f\n\n",sum1,sum2,sum3,sum4,sum5);
	printf("高数平均分:%.2f\t英语平均分:%.2f\t计算机平均分:%.2f\t大物平均分:%.2f\t电路平均分:%.2f\n",ave1,ave2,ave3,ave4,ave5);
}
void kandscore(AA *p)//成绩等级 
{
	int i;
	int b1=0,b2=0,b3=0,b4=0,b5=0;
	int c1=0,c2=0,c3=0,c4=0,c5=0;
	int d1=0,d2=0,d3=0,d4=0,d5=0;
	int e1=0,e2=0,e3=0,e4=0,e5=0;
	int f1=0,f2=0,f3=0,f4=0,f5=0;
	for(i=0;i<N;i++)
	{
		if(p[i].score.mat>=90)b1++;
		if(p[i].score.mat<90&&p[i].score.mat>=80)b2++;
		if(p[i].score.mat<80&&p[i].score.mat>=70)b3++;
		if(p[i].score.mat>=60&&p[i].score.mat<70)b4++;
		if(p[i].score.mat<60)b5++;	
		
		if(p[i].score.eng>=90)c1++;
		if(p[i].score.eng<90&&p[i].score.eng>=80)c2++;
		if(p[i].score.eng<80&&p[i].score.eng>=70)c3++;
		if(p[i].score.eng>=60&&p[i].score.eng<70)c4++;
		if(p[i].score.eng<60)c5++;	
		
		if(p[i].score.com>=90)d1++;
		if(p[i].score.com<90&&p[i].score.com>=80)d2++;
		if(p[i].score.com<80&&p[i].score.com>=70)d3++;
		if(p[i].score.com>=60&&p[i].score.com<70)d4++;
		if(p[i].score.com<60)d5++;	
		
		if(p[i].score.phy>=90)e1++;
		if(p[i].score.phy<90&&p[i].score.phy>=80)e2++;
		if(p[i].score.phy<80&&p[i].score.phy>=70)e3++;
		if(p[i].score.phy>=60&&p[i].score.phy<70)e4++;
		if(p[i].score.phy<60)e5++;	
		
		if(p[i].score.ele>=90)f1++;
		if(p[i].score.ele<90&&p[i].score.ele>=80)f2++;
		if(p[i].score.ele<80&&p[i].score.ele>=70)f3++;
		if(p[i].score.ele>=60&&p[i].score.ele<70)f4++;
		if(p[i].score.ele<60)f5++;	
	}
	printf("高 数: 优秀人数:%d\t优秀人数占比:%.2f\n",b1,b1*1.00/N); 
	printf("\t良好人数:%d\t良好人数占比:%.2f\n",b2,b2*1.00/N); 
	printf("\t中等人数:%d\t中等人数占比:%.2f\n",b3,b3*1.00/N); 
	printf("\t及格人数:%d\t及格人数占比:%.2f\n",b4,b4*1.00/N); 
	printf("\t不及格人数:%d\t不及格人数占比:%.2f\n",b5,b5*1.00/N); 
	
	printf("英 语: 优秀人数:%d\t优秀人数占比:%.2f\n",c1,c1*1.00/N); 
	printf("\t良好人数:%d\t良好人数占比:%.2f\n",c2,c2*1.00/N); 
	printf("\t中等人数:%d\t中等人数占比:%.2f\n",c3,c3*1.00/N); 
	printf("\t及格人数:%d\t及格人数占比:%.2f\n",c4,c4*1.00/N); 
	printf("\t不及格人数:%d\t不及格人数占比:%.2f\n",c5,c5*1.00/N); 

	printf("计算机: 优秀人数:%d\t优秀人数占比:%.2f\n",d1,d1*1.00/N); 
	printf("\t良好人数:%d\t良好人数占比:%.2f\n",d2,d2*1.00/N); 
	printf("\t中等人数:%d\t中等人数占比:%.2f\n",d3,d3*1.00/N); 
	printf("\t及格人数:%d\t及格人数占比:%.2f\n",d4,d4*1.00/N); 
	printf("\t不及格人数:%d\t不及格人数占比:%.2f\n",d5,d5*1.00/N); 

	printf("大 物: 优秀人数:%d\t优秀人数占比:%.2f\n",e1,e1*1.00/N); 
	printf("\t良好人数:%d\t良好人数占比:%.2f\n",e2,e2*1.00/N); 
	printf("\t中等人数:%d\t中等人数占比:%.2f\n",e3,e3*1.00/N); 
	printf("\t及格人数:%d\t及格人数占比:%.2f\n",e4,e4*1.00/N); 
	printf("\t不及格人数:%d\t不及格人数占比:%.2f\n",e5,e5*1.00/N); 

	printf("电 路: 优秀人数:%d\t优秀人数占比:%.2f\n",f1,f1*1.00/N); 
	printf("\t良好人数:%d\t良好人数占比:%.2f\n",f2,f2*1.00/N); 
	printf("\t中等人数:%d\t中等人数占比:%.2f\n",f3,f3*1.00)/N; 
	printf("\t及格人数:%d\t及格人数占比:%.2f\n",f4,f4*1.00/N); 
	printf("\t不及格人数:%d\t不及格人数占比:%.2f\n",f5,f5*1.00/N); 
}
int main(void)
{
/*	char a[]="1234";
	char b[10];
	printf("请输入密码:\n");
	scanf("%s",b);
	if(strcmp(b,a)==0)
	printf("密码正确\n");
	else{
	printf("密码错误\n");	
	exit(1);
	} 
	system("pause");
	system("CLS");*/ 
	int n;
	AA p[1024];
	while(1)
	{
		menu(&n);
		switch(n)
		{
			case 1:scanfstudent(p);break;
			case 2:courseave(p);break;
			case 3:studentave(p);break;
			case 4:pxnum(p);break;
			case 5:px1(p);break;
			case 6:px2(p);break;
			case 7:chazhaoxuehao(p);break;
			case 8:chazhaoname(p);break; 
			case 9:kandscore(p);break; 
			case 10:printfstudent(p);break; 
			case 11:save(p);break;
			case 0:printf("谢谢您的使用!\n\n");break;
			default:printf("输入有误重新输入!\n\n");break;
		}
		if(n == 0)
		break;
		system("pause");
		system("CLS");		
	}
	return 0;
}


到了这里,关于C语言课程设计-学生成绩管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java课程设计——学生成绩管理系统

    1 需求分析 1.1 需求分析概述 需求分析是开发软件系统的重要环节,是系统开发的第一步和基础环节。通过需求分析充分认识系统的目标、系统的各个组成部分、各部分的任务职责、工作流程、工作中使用的各种数据及数据结构、各部门的业务关系和数据流程等, 为系统设计

    2024年02月03日
    浏览(77)
  • 数据结构课程设计:学生成绩管理系统

    目  录 第一章   需求分析 第二章 概要设计 第三章 详细设计 第四章 测试报告 第五章 安装及使用 第六章 项目总结 第七章 源码 一.需求分析        学生成绩管理是一个学校不可缺少的部分,它的内容对于学校的管理者和学生以及学生家长来说都至关重要,所以一个良好

    2024年02月02日
    浏览(70)
  • Python毕业设计|课程设计|基于Python+Django实现的学生成绩管理系统

    作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路  关注作者有好处 文末获取源码   语言环境:Python3.7 数据库:

    2024年02月10日
    浏览(59)
  • android课程设计-学生成绩管理系统(Android期末作业,Android课设,AndroidStudio毕业设计)

    博主介绍: 本人专注于Android/java/数据库/微信小程序技术领域的开发,以及有好几年的计算机毕业设计方面的实战开发经验和技术积累;尤其是在安卓(Android)的app的开发和微信小程序的开发,很是熟悉和了解;本人也是多年的Android开发人员;希望我发布的此篇文件可以帮

    2024年02月02日
    浏览(49)
  • 【python课程作业】python学生成绩管理系统

    功能介绍 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。给舍友做的课程作业。 功能包括:成绩管理、学生管理、课程管理、班级管理、用户管理、日志管理、系统信息模块。 源码地址 https://github.com/geeeeeeeek/python_score 演示地址 http:/

    2024年03月13日
    浏览(71)
  • java web期末课程设计 学生成绩管理系统(mysql,jstl+el,Javabean)+增删改查,session域+servlet(基础易理解)

    学生成绩管理系统(源码地址在评论区需要的小伙伴可以看看,大二时做的,做得不太好) 为了更好的学习理解JavaWeb,创建了此系统。此系统可以帮助学习Java web基础,特别是javaweb入门,此系统使用大部分Java web基础知识。Java web课程设计联系了前端的HTML、CSS、JAVASCRIPT、JSP等

    2024年02月09日
    浏览(69)
  • 基于C语言的数据结构课程设计(学生管理系统、停车场管理、家谱管理、校园导航系统)

    一、设计目的 本课程设计是软件工程学生的必修课程,数据结构与算法课程设计既是一门基础课程,又是一门实践性课程。 通过本实训课程的学习和训练,使同学学会分析研究数据对象的特性,学会数据的组织方法,以便选择合适的数据逻辑结构和存储结构,以及相应的运

    2024年02月09日
    浏览(62)
  • 【学生成绩管理系统----C语言】

    还在为期末程序设计而烦恼吗,不要担心,大师帮你安利一波完整的的管理系统代码,对你有帮助记得加关注噢! 文章目录 一、学生成绩管理系统是什么? 二、信息管理的七个模块 1.Step one 2.Step Two  3.Step Three 4.Step four 5.Step five 6.Step Six 7.Next 总结        学生信息管理系统

    2024年02月03日
    浏览(55)
  • 课设——C语言学生成绩管理系统

            相信许多同学在大学期间,学习计算机相关课程的时候,都有一个令人头疼的问题——课程设计。那么本片文章就详细的分享一个用C语言实现一个简单学生成绩管理系统,供同学们学习和参考(文章最后会附上源程序)。 1.建立一张学生成绩表,每个学生包含 学

    2024年02月11日
    浏览(82)
  • 学生成绩管理系统(C语言实现)

    设计并实现一个简单的学生成绩管理系统 学生成绩表信息包括学号、姓名、各科课程成绩(语文、数学、英语、政治)和总分。用带头结点的单链表管理学生成绩表,每个学生的信息依次从键盘输入,并根据需要进行插入、删除、排序、输出等操作。 一、 实训环境 信息工程

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包