成学生管理系统
1> 使用菜单完成
2> 有学生的信息录入功能:输入学生个数,并将学生的姓名、分数录入
3> 查看学生信息:输出所有学生姓名以及对应的分数
4> 求出学习最好的学生信息:求最大值
5> 按姓名将所有学生进行升序排序
6> 按成绩将所有学生进行升序排序
要求每个功能使用函数完成
>>>>>>>>>>>实现的函数类型是有参数,无返回值的函数<<<<<<<<<<<<<<<<<<
#include <stdio.h>
#include <string.h>
#define MAX 100
void print_menu()
{
printf("\t\t======1.录入学生信息===================\n");
printf("\t\t======2.查看学生信息===================\n");
printf("\t\t======3.查询学习最好的学生信息===========\n");
printf("\t\t======4.按姓名将所有学生进行升序排序======\n");
printf("\t\t======0.退出==========================\n");
}
// 1.录入学生信息
void enterStudents(int studentsNumber,char names[MAX][30],int scores[MAX])
{
for (int i = 0; i < studentsNumber; i++)
{
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", names[i]);
getchar();
printf("请输入第%d个学生的成绩:", i + 1);
scanf("%d", &scores[i]);
}
}
// 2.查看学生信息
void viewStudents(int studentsNumber,char names[MAX][30],int scores[MAX])
{
printf("学生信息如下:\n");
for (int i = 0; i < studentsNumber; i++)
{
printf("学生姓名:%s 学生成绩:%d\n", names[i], scores[i]);
}
}
// 3.求出学习最好的学生信息(求最大值)
void bestStudents(int studentsNumber,char names[MAX][30],int scores[MAX])
{
int maxi = 0;
for (int i = 0; i < studentsNumber; i++)
{
if (scores[maxi] < scores[i])
{
maxi = i;
}
}
printf("成绩最好的学生姓名:%s 学生成绩:%d\n", names[maxi], scores[maxi]);
}
// 4.按姓名将所有学生进行升序排序
void nameStudents(int studentsNumber,char names[MAX][30],int scores[MAX])
{
char temp[50] = {'0'};
int temps = 0;
for (int i = 0; i < studentsNumber - 1; i++)
{
for (int j = 0; j < studentsNumber - i - 1; j++)
{
if (strcmp(names[j], names[j + 1]) > 0)
{
strcpy(temp, names[j]);
strcpy(names[j],names[j+1]);
strcpy(names[j+1], temp);
temps = scores[j];
scores[j] = scores[j+1];
scores[j+1] = temps;
}
}
}
for (int i = 0; i < studentsNumber; i++)
{
printf("排序后学生姓名:%s 学生成绩:%d\n", names[i], scores[i]);
}
}
int main(int argc, char const *argv[])
{
char names[MAX][30] = {'0'};
int scores[MAX] = {0};
int studentsNumber = 0;
while (1)
{
int n = 0;
print_menu();
printf("请输入序号>>");
scanf("%d", &n);
getchar();
switch (n)
{
case 1:
printf("请输入学生个数:");
scanf("%d", &studentsNumber);
getchar();
enterStudents(studentsNumber,names,scores);
break;
case 2:
viewStudents(studentsNumber,names,scores);
break;
case 3:
bestStudents(studentsNumber,names,scores);
break;
case 4:
nameStudents(studentsNumber,names,scores);
break;
case 0:
goto END;
default:
printf("您输入的功能有误,请重新输入\n");
break;
}
}
END:
return 0;
}
以下代码作为纪念,定义了全局变量,没有传参,直接实现函数功能了,总之好像没啥意义
#include <stdio.h>
#include <string.h>
#define MAX 100
char names[MAX][30] = {'0'};
int scores[MAX] = {0};
int studentsNumber = 0;
void print_menu()
{
printf("\t\t======1.录入学生信息===================\n");
printf("\t\t======2.查看学生信息===================\n");
printf("\t\t======3.查询学习最好的学生信息===========\n");
printf("\t\t======4.按姓名将所有学生进行升序排序======\n");
printf("\t\t======0.退出==========================\n");
}
// 1.录入学生信息
void enterStudents(void)
{
printf("请输入学生个数:");
scanf("%d", &studentsNumber);
getchar();
for (int i = 0; i < studentsNumber; i++)
{
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", names[i]);
getchar();
printf("请输入第%d个学生的成绩:", i + 1);
scanf("%d", &scores[i]);
}
}
// 2.查看学生信息
void viewStudents(void)
{
printf("学生信息如下:\n");
for (int i = 0; i < studentsNumber; i++)
{
printf("学生姓名:%s 学生成绩:%d\n", names[i], scores[i]);
}
}
// 3.求出学习最好的学生信息(求最大值)
void bestStudents(void)
{
int maxi = 0;
for (int i = 0; i < studentsNumber; i++)
{
if (scores[maxi] < scores[i])
{
maxi = i;
}
}
printf("成绩最好的学生姓名:%s 学生成绩:%d\n", names[maxi], scores[maxi]);
}
// 4.按姓名将所有学生进行升序排序
void nameStudents(void)
{
char temp[50] = {'0'};
int temps = 0;
for (int i = 0; i < studentsNumber - 1; i++)
{
for (int j = 0; j < studentsNumber - i - 1; j++)
{
if (strcmp(names[j], names[j + 1]) > 0)
{
strcpy(temp, names[j]);
strcpy(names[j],names[j+1]);
strcpy(names[j+1], temp);
temps = scores[j];
scores[j] = scores[j+1];
scores[j+1] = temps;
}
}
}
for (int i = 0; i < studentsNumber; i++)
{
printf("排序后学生姓名:%s 学生成绩:%d\n", names[i], scores[i]);
}
}
int main(int argc, char const *argv[])
{
while (1)
{
int n = 0;
print_menu();
printf("请输入序号>>");
scanf("%d", &n);
getchar();
switch (n)
{
case 1:
enterStudents();
break;
case 2:
viewStudents();
break;
case 3:
bestStudents();
break;
case 4:
nameStudents();
break;
case 0:
goto END;
default:
printf("您输入的功能有误,请重新输入\n");
break;
}
}
END:
return 0;
}
输出结果如下:
思维导图整理: