思维导图
代码:
#include <stdio.h>
#include <string.h>
#define MAX 50
struct Stu//学生结构体
{
int number;
char name[20];
char sex[1];
double score;
}student[MAX];
void luru(int *n)//录入学生信息,接收学生人数变量地址,用指针改变人数变量
{
printf("输入学生人数:");
scanf("%d",n);
for(int i=0;i<*n;i++)
{
printf("输入第%d位学生信息:\n",i+1);
printf("学号:");
scanf("%d",&student[i].number);
printf("姓名:");
scanf("%s",student[i].name);
printf("性别:");
scanf("%s",student[i].sex);
printf("成绩:");
scanf("%lf",&student[i].score);
}
}
void shuchu(int n)//输出学生信息
{
printf("学号\t姓名\t性别\t成绩\n");
for(int i=0;i<n;i++)
{
printf("%d\t%s\t%s\t%.2lf\n",student[i].number,student[i].name,student[i].sex,student[i].score);
}
}
void gaodi(int n)//查找成绩最高和最低学生信息
{
int min=student[0].score,max=student[0].score;
int mini=0,maxi=0;
for(int i=0;i<n;i++)
{
if(min>student[i].score)
{
min=student[i].score;
mini=i;
}
if(max<student[i].score)
{
max=student[i].score;
maxi=i;
}
}
printf("成绩最高学生信息:\n");
printf("学号\t姓名\t性别\t成绩\n");
printf("%d\t%s\t%s\t%.2lf\n",student[maxi].number,student[maxi].name,student[maxi].sex,student[maxi].score);
printf("\n");
printf("成绩最低学生信息:\n");
printf("学号\t姓名\t性别\t成绩\n");
printf("%d\t%s\t%s\t%.2lf\n",student[mini].number,student[mini].name,student[mini].sex,student[mini].score);
}
void chengji(int n)//输出总成绩和平均成绩
{
double sum=0,ave=0;
for(int i=0;i<n;i++)
{
sum+=student[i].score;
}
ave=sum/n;
printf("学生总成绩:%.2lf\n",sum);
printf("学生平均成绩:%.2lf\n",ave);
}
void paixu(int n)//按成绩排序
{
int flag;
printf("输入0(升序)或1(降序):");
scanf("%d",&flag);
for(int i=1;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
if(student[j].score>student[j+1].score&&flag==0)
{
double temp=student[j].score;
student[j].score=student[j+1].score;
student[j+1].score=temp;
}
if(student[j].score<student[j+1].score&&flag==1)
{
double temp=student[j].score;
student[j].score=student[j+1].score;
student[j+1].score=temp;
}
}
}
printf("学号\t姓名\t性别\t成绩\n");
for(int i=0;i<n;i++)
{
printf("%d\t%s\t%s\t%.2lf\n",student[i].number,student[i].name,student[i].sex,student[i].score);
}
}
void chazhao(int n)//查找姓名
{
char m[20]="";
int flag=0;
printf("输入要查找的学生姓名:");
scanf("%s",m);
for(int i=0;i<n;i++)
{
if(strcmp(m,student[i].name)==0)
{
printf("%s存在该班级\n",m);
flag=1;
}
}
if(flag==0)//遍历结束后没有执行上条if语句
{
printf("%s不存在该班级\n",m);
}
}
void print_menu()//菜单
{
printf("\t\t***************学生管理系统*************\n");
printf("\t\t输入1录入学生信息,确定人数----------------\n");
printf("\t\t输入2输出学生信息------------------------\n");
printf("\t\t输入3输出成绩最高和最低学生信息------------\n");
printf("\t\t输入4输出学生总成绩和平均成绩--------------\n");
printf("\t\t输入5对学生信息按成绩排序(输入0升序,1降序)\n");
printf("\t\t输入6查找学生名字是否存在该班级------------\n");
printf("\t\t输入0退出------------------------------\n");
printf("\n");
}
int main(int argc, char const *argv[])
{
int m=0;//学生人数变量
memset(student,0,sizeof(student));//初始化
while(1)
{
printf("\n");
int n=0;
print_menu();
printf("输入功能选项:");
scanf("%d",&n);
switch(n)
{
case 1:
{
luru(&m);
}
break;
case 2:
{
shuchu(m);
}
break;
case 3:
{
gaodi(m);
}
break;
case 4:
{
chengji(m);
}
break;
case 5:
{
paixu(m);
}
break;
case 6:
{
chazhao(m);
}
break;
case 0:
{
printf("退出成功\n");
return 0;
}
break;
default:
printf("输入错误\n");
break;
}
}
}
运行结果: