基于C语言的学生成绩及学分统计系统

发布时间:2023年12月25日

功能展示:

主菜单

?报错功能

各科成绩

学分统计

总分统计

最终成绩单

内容讲解:

1.自定义类型(结构体)
//学生结构体
struct student{
	char num[11];
	char name[10];
	int gaoshu;
	int Cyuyan;
	int zhuandao;
	int tiyu;
	int yingyu;
	int junshi;
	int xingzheng;
	int xinli;
	int jindaishi;
	float xf;
	float s;
}a[30]; 

?

2.菜单模块
(1)主菜单(主函数)
while(true){
		printf("\t\t\t************************************************\n");
 	    printf("\t\t\t*                                              *\n");
 	    printf("\t\t\t*   计算机科学与技术2023级1班成绩管理系统      *\n");
 	    printf("\t\t\t*                                              *\n");
 	    printf("\t\t\t*           1.输入学生的学号和姓名             *\n");
 	    printf("\t\t\t*           2.输入学生各科成绩                 *\n");
 	    printf("\t\t\t*           3.计算学生获得学分                 *\n");
 	    printf("\t\t\t*           4.计算学生总分                     *\n");
 	    printf("\t\t\t*           5.输出学生成绩信息                 *\n");
 	    printf("\t\t\t*           6.退出系统                         *\n");
 	    printf("\t\t\t************************************************\n");
 	    printf("请输入您的选择:");
 	    scanf("%d",&choice);
(2)成绩菜单(函数menu实现)
	while(true){
 		printf("\t\t\t\t**********************************************\n");
 		printf("\t\t\t\t*                                            *\n");
 		printf("\t\t\t\t*   计算机科学与技术2023级1班成绩管理系统    *\n");
 		printf("\t\t\t\t*                                            *\n");
 		printf("\t\t\t\t*       1.输入高数成绩                       *\n");
 		printf("\t\t\t\t*       2.输入C语言成绩                      *\n");
 		printf("\t\t\t\t*       3.输入计算机科学与技术专业导论成绩   *\n");
 		printf("\t\t\t\t*       4.输入体育成绩                       *\n");
 		printf("\t\t\t\t*       5.输入英语成绩                       *\n");
 		printf("\t\t\t\t*       6.输入军事理论成绩                   *\n");
 		printf("\t\t\t\t*       7.输入形势与政策成绩                 *\n");
 		printf("\t\t\t\t*       8.输入大学生心理健康辅导成绩         *\n");
 		printf("\t\t\t\t*       9.输入中国近代史纲要成绩             *\n");
 		printf("\t\t\t\t*       10.返回主菜单                        *\n");
 		printf("\t\t\t\t**********************************************\n");
 		printf("\t\t\t请输入您的选择:");
     	scanf("%d",&choice) ;

3.功能函数

input_xx:学生信息(输入学生学号与姓名)

void input_xx(){
	char str[3]; 
	for(int i=0;i<N;i++){
		if(i<10){
			strcpy(a[i].num,"230801010");
			itoa(i+1,str,10);
			strcat(a[i].num,str);
		}else if(i>=10){
			strcpy(a[i].num,"23080101");
			itoa(i+1,str,10);
			strcat(a[i].num,str);
		}
		fflush(stdin);
		printf("\t\t\t\t学号:%s  姓名:",a[i].num );
		scanf("%s",&a[i].name );
	}
}

input_gaoshu…jindaishi:学生单科成绩

void input_gaoshu(){
	for(int i=0;i<N;i++){
		printf("\t\t\t\t请输入%s号%s同学高数成绩:",a[i].num,a[i].name);
		scanf("%d",&a[i].gaoshu);
		if(a[i].gaoshu<0||a[i].gaoshu>100){
			printf("\t\t\t\t请重新输入%s号%s同学高数成绩:",a[i].num,a[i].name);
			scanf("%d",&a[i].gaoshu);	
		}
	}
	n++; 
}

input_xf:学生学分(根据课程与成绩输出学分)

void input_xf(){
	double sum;
	sum=0;
	if(n<M){
		printf("\t\t\t未输入全部科目\n");
	}else{
		for(int i=0;i<N;i++){
			if(a[i].gaoshu>=60){
				sum+=5.0;
			}if(a[i].Cyuyan >=60){
				sum+=3.5;
			}if(a[i].zhuandao >=60){
				sum+=2.5;
			}if(a[i].tiyu >=60){
				sum+=1;
			}if(a[i].yingyu >=60){
				sum+=2;
			}if(a[i].junshi >=60){
				sum+=1;
			}if(a[i].xingzheng >=60){
				sum+=2;
			}if(a[i].xinli >=60){
				sum+=1;
			}if(a[i].jindaishi >=60){
				sum+=2.5;
			}
			a[i].xf=sum;
		}		
		printf("---------------------------------\n");
		printf("|序号|学      号|姓  名|获得学分|\n");
		printf("---------------------------------\n");
		for(int i=0;i<N;i++){
			printf("|%4d|%10s|%6s|%8.1f|\n",i+1,a[i].num,a[i].name,a[i].xf);
		}		
	}	
}

input_total:总成绩(根据输入的单科成绩输出总分)

void input_total(){
	if(n<M){
		printf("\t\t\t未输入全部科目\n");
	}else{
		for(int i=0;i<N;i++){
			a[i].s =a[i].Cyuyan +a[i].gaoshu +a[i].jindaishi +a[i].junshi +a[i].tiyu +a[i].xingzheng +a[i].xinli +a[i].yingyu +a[i].zhuandao ;
		}
		printf("---------------------------------\n");
		printf("|序号|学      号|姓  名|总    分|\n");
		printf("---------------------------------\n");
		for(int i=0;i<N;i++){
			printf("|%4d|%10s|%6s|%5f|\n",i+1,a[i].num,a[i].name,a[i].s);
		}
		printf("---------------------------------\n");
	}
}

menu:菜单

output:学生成绩单

void output(){
	printf("---------------------------------------------------------------------------------------------------\n");
 	printf("|序号|学      号|姓  名|获得学分|高 数|C语言|专 导|体 育|英 语|军 事|形 政|心 理|近代史|总 分|\n");
 	printf("---------------------------------------------------------------------------------------------------\n");	
 	for(int i=0;i<N;i++){
 		printf("|%4d|%10s|%6s|%8.1f|%5d|%5d|%5d|%5d|%5d|%5d|%5d|%5d|%5d|%5d|\n",i+1,a[i].num ,a[i].name,a[i].xf ,a[i].gaoshu ,a[i].Cyuyan ,a[i].zhuandao ,a[i].tiyu ,a[i].yingyu ,a[i].junshi ,a[i].xingzheng ,a[i].xinli ,a[i].jindaishi ,a[i].s );
	 } 
}

4.细节强调

1.定义全局变量n,作为计数器,记录已填报成绩的科目。以便后续判断是否输入全科成绩

2.注意数组不要越界!

3.菜单制作注意排版

system("pause");//暂停
system("cls");//清屏
fflush(stdin);//清除缓冲区

4.保证数据类型无误

参考:

QUST2023级软件工程实训作业(大一上)

文章来源:https://blog.csdn.net/qq_38060565/article/details/135180701
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。