#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int i, j,n,m, sum, temp,flag=0,key=0;
int grade[30][100] = { 0 }, number[30] = { 0 }, Sum[30] = { 0 };
int max[30] = { 0 }, min[30] = { 0 };
int Tgrade[30][10] = { 0 };
int Tnumber[30] = { 0 };
char name[30][100] = { 0 };
char Tname[30][100] = { 0 }, T[][100] = { 0 };
void showMenu(char menu[9][208]);
void stop();
int M();
void F1();
void F2();
void F3();
void F4();
void F5();
void F6();
void F7();
void F8();
void F9();
int main()
{
//初始化菜单界面
char menu[9][208] = {
"(1)录入每个学生的学号,姓名和课程成绩",
"(2)按每个学生的总分由高到低排出名次表",
"(3)按每个学生的总分由低到高排出名次表",
"(4)按学号由小到大排出成绩表",
"(5)按姓名的字典顺序排出成绩表",
"(6)按学号查询学生排名及其考试成绩",
"(7)按姓名查询学生排名及其考试成绩",
"(8)按\n"
"满分(100分)\n"
"优秀(90~99)\n"
"良好(80 ~89)\n"
"中等(70 ~ 79)\n"
"及格(60 ~69)\n"
"不及格(0~59)\n"
"6个类别,对每门课程分别统计每个类别的人数及所占的百分比",
"(9)输出每个学生的学号、姓名、各科成绩、以及每门课程的总分和平均分"
};
//切换界面,实现功能
while (1)
{
char sel;
system("cls");
showMenu(menu);
sel = getchar();
switch (sel)
{
case'1':system("cls"); F1(); break;
case'2':system("cls"); F2(); break;
case'3':system("cls"); F3(); break;
case'4':system("cls"); F4(); break;
case'5':system("cls"); F5(); break;
case'6':system("cls"); F6(); break;
case'7':system("cls"); F7(); break;
case'8':system("cls"); F8(); break;
case'9':system("cls"); F9(); break;
}
}
return 0;
}
//功能1
void F1()
{
printf("录入每个学生的学号,姓名和五门课程的成绩\n");
printf("请问有多少学生:");
scanf("%d", &n);
for (i = 0; i < n; i++)
{
printf("请输入第%d个学生的信息\n", i + 1);
printf("请输入该学生的学号:");
scanf("%d", &number[i]);
getchar();
printf("请输入该学生的名字:");
gets(name[i]);
printf("请输入该学生五门科目的成绩:");
for (j = 0; j < 5; j++)
scanf("%d", &grade[i][j]);
}
flag = 1;
M();
printf("表格如下\n");
printf("-----------------------------------------------------------------\n");
printf("|序号\t|学号\t|姓名\t|科目一\t|科目二\t|科目三\t|科目四\t|科目五\t|\n");
printf("-----------------------------------------------------------------\n");
for (i = 0; i < n; i++)
{
printf("|%d\t|%d\t|%s\t",i+1,number[i],name[i]);
for (j = 0; j < 5; j++)
{
printf("|%d\t",grade[i][j]);
}
printf("|\n");
printf("-----------------------------------------------------------------\n");
}
stop();
}
//功能2
void F2()
{
if (flag == 1)
{
printf("按每个学生的总分由高到低排出名次表\n");
printf("表格如下\n");
//传递
for (i = 0; i < n; i++)
{
for (j = i; j < n; j++)
{
if (max[i] == Sum[j])
{
strcpy(Tname[i], name[j]);
strcpy(Tname[j], name[i]);
Tnumber[i] = number[j];
Tnumber[j] = number[i];
}
}
}
//打印
printf("---------------------------------\n");
printf("|排名\t|学号\t|姓名\t|总分\t|\n");
printf("---------------------------------\n");
for (i = 0; i < n; i++)
{
printf("|%d\t|%d\t|%s\t|%d\t|\n", i + 1, Tnumber[i], Tname[i], max[i]);
printf("---------------------------------\n");
}
stop();
}
else
{
printf("无任何学生信息\n");
stop();
}
}
//功能3
void F3()
{
if (flag == 1)
{
printf("按每个学生的总分由低到高排出名次表\n");
printf("表格如下\n");
//传递
for (i = 0; i < n; i++)
{
for (j = i; j < n; j++)
{
if (min[i] == Sum[j])
{
strcpy(Tname[i], name[j]);
strcpy(Tname[j], name[i]);
Tnumber[i] = number[j];
Tnumber[j] = number[i];
}
}
}
//打印
printf("---------------------------------\n");
printf("|排名\t|学号\t|姓名\t|总分\t|\n");
printf("---------------------------------\n");
for (i = 0; i < n; i++)
{
printf("|%d\t|%d\t|%s\t|%d\t|\n", n - i, Tnumber[i], Tname[i], min[i]);
printf("---------------------------------\n");
}
stop();
}
else
{
printf("无任何学生信息\n");
stop();
}
}
//功能4
void F4()
{
if (flag == 1)
{
printf("按学号由小到大排出成绩表\n");
printf("表格如下\n");
//传递
for (i = 0; i < n; i++)
Tnumber[i] = number[i];
for (i = 0; i < n; i++)
{
for (j = 0; j < 5; j++)
{
Tgrade[i][j] = grade[i][j];
}
}
//比较
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (Tnumber[j] > Tnumber[j + 1])
{
temp = Tnumber[j];
Tnumber[j] = Tnumber[j + 1];
Tnumber[j + 1] = temp;
}
}
}
//传递
for (i = 0; i < n; i++)
{
for (j = i; j < n; j++)
{
if (Tnumber[i] == number[j])
{
strcpy(Tname[i], name[j]);
strcpy(Tname[j], name[i]);
for (m = 0; m < 5; m++)
{
temp = Tgrade[j][m];
Tgrade[j][m] = Tgrade[i][m];
Tgrade[i][m] = temp;
}
}
}
}
//打印
printf("-----------------------------------------------------------------\n");
printf("|序号\t|学号\t|姓名\t|科目一\t|科目二\t|科目三\t|科目四\t|科目五\t|\n");
printf("-----------------------------------------------------------------\n");
for (i = 0; i < n; i++)
{
printf("|%d\t|%d\t|%s\t|", i + 1, Tnumber[i], Tname[i]);
for (j = 0; j < 5; j++)
{
printf("%d\t|", Tgrade[i][j]);
}
printf("\n");
printf("-----------------------------------------------------------------\n");
}
stop();
}
else
{
printf("无任何学生信息\n");
stop();
}
}
//功能5
void F5()
{
if (flag == 1)
{
printf("按姓名的字典顺序排出成绩表\n");
printf("表格如下\n");
//传递
for (i = 0; i < n; i++)
{
strcpy(Tname[i], name[i]);
}
for (i = 0; i < n; i++)
{
for (j = 0; j < 5; j++)
{
Tgrade[i][j] = grade[i][j];
}
}
//比较
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (strcmp(Tname[j], Tname[j + 1]) > 0)
{
strcpy(T, Tname[j]);
strcpy(Tname[j], Tname[j + 1]);
strcpy(Tname[j + 1], T);
}
}
}
//传递
for (i = 0; i < n; i++)
{
for (j = i; j < n; j++)
{
if (strcmp(Tname[i], name[j]) == 0)
{
Tnumber[i] = number[j];
Tnumber[j] = number[i];
for (m = 0; m < 5; m++)
{
temp = Tgrade[j][m];
Tgrade[j][m] = Tgrade[i][m];
Tgrade[i][m] = temp;
}
}
}
}
//打印
printf("-----------------------------------------------------------------\n");
printf("|序号\t|学号\t|姓名\t|科目一\t|科目二\t|科目三\t|科目四\t|科目五\t|\n");
printf("-----------------------------------------------------------------\n");
for (i = 0; i < n; i++)
{
printf("|%d\t|%d\t|%s\t|", i + 1, Tnumber[i], Tname[i]);
for (j = 0; j < 5; j++)
{
printf("%d\t|", Tgrade[i][j]);
}
printf("\n");
printf("-----------------------------------------------------------------\n");
}
stop();
}
else
{
printf("无任何学生信息\n");
end:
stop();
}
}
//功能6
void F6()
{
if (flag == 1)
{
key = 0;
printf("按学号查询学生排名及其考试成绩\n");
//查询
printf("请输入学生的学号:");
scanf("%d", &temp);
for (i = 0; i < n; i++)
{
if (temp == number[i])
{
m = i;
key = 1;
}
}
if (key == 0)
{
printf("查无此人\n");
stop();
}
else
{
//打印
printf("-----------------------------------------------------------------\n");
printf("|学号\t|姓名\t|排名\t|科目一\t|科目二\t|科目三\t|科目四\t|科目五\t|\n");
printf("-----------------------------------------------------------------\n");
printf("|%d\t|%s\t|%d\t|", number[m], name[m], n - m);
for (j = 0; j < 5; j++)
{
printf("%d\t|", grade[m][j]);
}
printf("\n");
printf("-----------------------------------------------------------------\n");
stop();
}
}
else
{
printf("无任何学生信息\n");
stop();
}
}
//功能7
void F7()
{
if (flag == 1)
{
key = 0;
printf("按姓名查询学生排名及其考试成绩\n");
//查询
getchar();
printf("请输入学生的姓名:");
gets(Tname);
for (i = 0; i < n; i++)
{
if (strcmp(Tname, name[i]) == 0)
{
m = i;
key = 1;
}
}
if (key == 0)
{
printf("查无此人\n");
//停留
printf("再按一次回车返回菜单");
getchar();
}
else
{//打印
printf("-----------------------------------------------------------------\n");
printf("|学号\t|姓名\t|排名\t|科目一\t|科目二\t|科目三\t|科目四\t|科目五\t|\n");
printf("-----------------------------------------------------------------\n");
printf("|%d\t|%s\t|%d\t|", number[m], name[m], n - m);
for (j = 0; j < 5; j++)
{
printf("%d\t|", grade[m][j]);
}
printf("\n");
printf("-----------------------------------------------------------------\n");
//停留
printf("再按一次回车返回菜单");
getchar();
}
}
else
{
printf("无任何学生信息\n");
stop();
}
}
//功能8
void F8()
{
if (flag == 1)
{
printf(
"按\n"
"满分(100分)\n"
"优秀(90~99)\n"
"良好(80 ~89)\n"
"中等(70 ~ 79)\n"
"及格(60 ~69)\n"
"不及格(0~59)\n"
"6个类别,对每门课程分别统计每个类别的人数及所占的百分比\n");
printf("表格如下\n");
char T[6][100] = { "满分","优秀","良好","中等","及格","不及格" };
int Tgrade[30][10] = { 0 };
//分类
for (i = 0; i < n; i++)
{
for (j = 0; j < 5; j++)
{
switch (grade[i][j] / 10)
{
case 10:
Tgrade[0][j]++; break;
case 9:
Tgrade[1][j]++; break;
case 8:
Tgrade[2][j]++; break;
case 7:
Tgrade[3][j]++; break;
case 6:
Tgrade[4][j]++; break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
Tgrade[5][j]++; break;
}
}
}
//打印
printf("---------------------------------------------------------\n");
printf("|类别\\课程\t|科目一\t|科目二\t|科目三\t|科目四\t|科目五\t|\n");
printf("---------------------------------------------------------\n");
for (i = 0; i < 6; i++)
{
printf("|%s \t|", T[i]);
for (j = 0; j < 5; j++)
{
printf("%d\\%d%%\t|", Tgrade[i][j], (Tgrade[i][j] * 100) / n);
}
printf("\n");
printf("---------------------------------------------------------\n");
}
stop();
}
else
{
printf("无任何学生信息\n");
stop();
}
}
void F9()
{
if (flag == 1)
{
printf("输出每个学生的学号、姓名、各科成绩、以及每门课程的总分和平均分\n");
printf("表格如下\n");
//打印
printf("---------------------------------------------------------------------------------\n");
printf("|序号\t|学号\t|姓名\t|科目一\t|科目二\t|科目三\t|科目四\t|科目五\t|总分\t|平均分\t|\n");
printf("---------------------------------------------------------------------------------\n");
for (i = 0; i < n; i++)
{
printf("|%d\t|%d\t|%s\t|", i + 1, number[i], name[i]);
for (j = 0; j < 5; j++)
{
printf("%d\t|", grade[i][j]);
}
printf("%d\t|%d\t|", Sum[i], Sum[i] / 5);
printf("\n");
printf("---------------------------------------------------------------------------------\n");
}
stop();
}
else
{
printf("无任何学生信息\n");
stop();
}
}
//停留
void stop()
{
getchar();
printf("再按一次回车返回菜单");
getchar();
}
//打印菜单
void showMenu(char menu[9][208])
{
int i;
for (i = 0; i < 9; i++)
puts(menu[i]);
}
int M()
{
//运算
for (i = 0; i < n; i++)
{
sum = 0;
for (j = 0; j < 5; j++)
{
sum += grade[i][j];
}
Sum[i] = sum;
}
//传递
for (i = 0; i < n; i++)
max[i] = Sum[i];
//比较大
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (max[j] < max[j + 1])
{
temp = max[j];
max[j] = max[j + 1];
max[j + 1] = temp;
}
}
}
//传递
for (i = 0; i < n; i++)
min[i] = Sum[i];
//比较小
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (min[j] > min[j + 1])
{
temp = min[j];
min[j] = min[j + 1];
min[j + 1] = temp;
}
}
}
}
不用指针写的学生成绩菜单系统
最新推荐文章于 2024-09-14 01:14:32 发布