题目为: 试设计一学生成绩管理系统,使之能提供以下功能:
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++上面可以运行,其他的编译器自己根据警告稍微改一改就好了