C语言,成绩管理系统

题目为: 试设计一学生成绩管理系统,使之能提供以下功能:

1、输入学生信息 (包括学号,姓名,高等数学成绩,大学英语成绩,C语言成绩)

2、显示学生信息

3、显示一门课的最高分

4、显示一门课的最低分

5、显示一门课的平均分

6、从高到低显示C语言的成绩按学号查找C语言成绩

7、按学号查找C语言成绩

8、按性别查找C语言成绩

9、退出

10、其它可扩充功能

#pragma warning(disable:4996)//忽略4996错误
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define name_len 128
#define NUMBER 64//学生的最大数量
int select=0;//模式选择
int a = 0;//当前学生数量
struct student//学生结构体
{
	long long ID;//学号
	char name[name_len];//姓名
	int math_grade;//高等数学
	int english_grade;//英语
	int c_grade;//c语言
};
struct student people[NUMBER] = {0};
void menu()//菜单选择
{
	printf("***成绩管理系统***\n");
	printf("(1)输入学生信息\n");
	printf("(2)显示学生信息\n");
	printf("(3)显示一门课的最高分\n");
	printf("(4)显示一门课的最低分\n");
	printf("(5)显示一门课的平均分\n");
	printf("(6)从高到低显示c语言成绩\n");
	printf("(7)按学号查找C语言成绩\n");
	printf("(8)按姓名查找C语言成绩\n");
	printf("(9)写入数据文件\n");
	printf("(10)退出系统\n");
	printf("请输入1~10的数字\n");
	
	do
	{
		scanf("%d", &select);
		if (select > 10 || select < 1)
		{
			printf("请重新输入");

		}
	} while (select>10||select<1);
}
void menu_1()
{
	printf("***输入学生信息***\n");
	printf("请输入学生的学号:\n");	scanf("%lld", &people[a].ID);
	printf("请输入学生的姓名:\n"); scanf("%s", people[a].name,name_len);
	printf("请依次输入该学生高等数学,大学英语,C语言三科的成绩(中间用回车键或空格隔开)\n");
	scanf("%d %d %d", &people[a].math_grade, &people[a].english_grade, &people[a].c_grade);
	a++;
	printf("!!!添加成功,当前学生数量为%d!!!\n", a);
}
void menu_2()
{
	printf("***显示学生信息***\n");
	printf("从左到右依次为:学号,姓名,数学,英语,c语言\n");
	for (int i = 0; i < a; i++)
	{
		printf("%-10lld", people[i].ID);
		printf("%-5s", people[i].name);
		printf("%-4d%-4d%-4d\n", people[i].math_grade, people[i].english_grade, people[i].c_grade);
	}
}
void menu_3()
{
	int max_math = people[0].math_grade;
	int max_english = people[0].english_grade;
	int max_c = people[0].c_grade;
	printf("***数学的最高分***\n");
	for (int i = 1; i < a; i++)
	{
		if (people[i].math_grade>max_math)
		{
			max_math = people[i].math_grade;
		}
	}
	printf(" 数学的最高分为:%4d\n", max_math);
	printf("***英语的最高分***\n");
	for (int i = 1; i < a; i++)
	{
		if (people[i].english_grade > max_english)
		{
			max_english = people[i].english_grade;
		}
	
	}
	printf(" 英语的最高分为:%4d\n", max_english);
	printf("***C语言的最高分***\n");
	for (int i = 1; i < a; i++)
	{
		if (people[i].c_grade > max_c)
		{
			max_c = people[i].c_grade;
		}
	}
	printf("C语言的最高分为:%4d\n", max_c);
}
void menu_4()
{
	int min_math = people[0].math_grade;
	int min_english = people[0].english_grade;
	int min_c = people[0].c_grade;
	printf("***数学的最低分***\n");
	for (int i = 1; i < a; i++)
	{
		if (people[i].math_grade < min_math)
		{
			min_math = people[i].math_grade;
		}
	}
	printf(" 数学的最低分为:%4d\n", min_math);
	printf("***英语的最低分***\n");
	for (int i = 1; i < a; i++)
	{
		if (people[i].english_grade < min_english)
		{
			min_english = people[i].english_grade;
		}
	}
	printf(" 英语的最低分为:%4d\n",min_english );
	printf("***C语言的最低分***\n");
	for (int i = 1; i < a; i++)
	{
		if (people[i].c_grade < min_c)
		{
			min_c = people[i].c_grade;
		}
	}
	printf("C语言的最低分为:%4d\n", min_c);
}
void menu_5()
{
	printf("***显示一门课的平均分***");
	float add_math = 0;
	float add_english = 0;
	float add_c = 0;
	for (int i = 0; i < a; i++)
	{
		add_math += people[i].math_grade;
		add_english += people[i].english_grade;
		add_c += people[i].c_grade;
	}
	printf("数学的平均分: %.1f\n", (float)(add_math / a));
	printf("英语的平均分: %.1f\n", (float)(add_english / a));
	printf("c语言的平均分:%.1f\n", (float)(add_c / a));
}
void menu_6()
{
	printf("***从高到低显示C语言成绩***\n");
	struct student max_min[NUMBER];
	for (int i = 0; i < a; i++)
	{
		max_min[i] = people[i];
	}
	for (int i = 0; i < a-1; i++)
	{
		for (int j = 0; j < a-1; j++)
		{
			if (max_min[j].c_grade<max_min[j+1].c_grade)
			{
				struct student temp = max_min[j];
				max_min[j] = max_min[j + 1];
				max_min[j + 1] = temp;
			}
		}
	}
	for (int i = 0; i < a; i++)
	{
		printf("%-10lld", max_min[i].ID);
		printf("%-5s", max_min[i].name);
		printf("%-4d\n",  max_min[i].c_grade);
	}
}
void menu_7()
{
	printf("***按学号查找C语言成绩***\n");
	long long tend_id;
	int i = 0;
	printf("请输入你要查询的学生学号:\n");
	scanf("%lld", &tend_id);
	while (1)
	{
		if (people[i].ID!=tend_id)
		{
			if (i==a)
			{
				printf("查询失败,请输入正确的学号\a\n");
				break;
			}
			i++;
		}
		else
		{
			printf("%-11lld %5s的C语言成绩为:%d\n", people[i].ID, people[i].name, people[i].c_grade);
			break;
		}
	}
}
void menu_8()
{
	printf("***按姓名查找C语言成绩***\n");
	char tend_name[name_len] = {0};
	int i = 0;
	printf("请输入你要查询的学生姓名:\n");
	scanf("%s", tend_name,name_len);
	while (1)
	{
		if (strcmp(people[i].name,tend_name)!=0)
		{
			if (i == a)
			{
				printf("查询失败,请输入正确的姓名\a\n");
				break;
			}
			i++;
		}
		else
		{
			printf("%-11lld %5s的C语言成绩为:%d\n", people[i].ID, people[i].name, people[i].c_grade);
			break;
		}
	}

}
void menu_9()
{
	FILE* fp;
	fp = fopen("数据文件.txt", "w");
	if (fp==NULL)
	{
		printf("写入文件失败");
	}
	else
	{
		for (int i = 0; i < a; i++)
		{
			fprintf(fp,"%lld%5s%4d%4d%4d\n", people[i].ID, people[i].name, people[i].math_grade, people[i].english_grade, people[i].c_grade);
		}
		printf("写入文件成功!\n");
		fclose(fp);
		system("pause");
	}
}
int main()
{
	while (1)
	{
		menu();
		if (select==1)
		{
			menu_1();
		}
		if (select==2)
		{
			menu_2();
		}
		if (select==3)
		{
			menu_3();
		}
		if (select==4)
		{
			menu_4();
		}
		if (select==5)
		{
			menu_5();
		}
		if (select==6)
		{
			menu_6();
		}
		if (select==7)
		{
			menu_7();
		}
		if (select==8)
		{
			menu_8();
		}
		if (select==9)
		{
			menu_9();
		}
		if (select==10)
		{
			printf("***退出成功***");
			break;
		}
	}
	return 0;
}

DEV C++上面可以运行,其他的编译器自己根据警告稍微改一改就好了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值