使用结构体完成学生(学号、姓名、性别、成绩)管理系统
1> 使用菜单实现
2> 功能1:完成对学生信息的录入,确定人数,完成输入
2> 功能2:完成对学生信息的输出
3> 功能3:输出成绩最高和最低学生的信息
4> 功能4:输出学生的总成绩和平均成绩
5> 功能5:对学生信息按成绩进行排序,根据传入的升降序,确定排序功能、
6> 功能6:提示并输入要查找的学生名字,查找该名字是否存在于该班级
7> 功能0:退出
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 10 //数组最大长度
struct Stu //存放学生信息的结构体
{
char id[30]; //学号
char name[20]; //姓名
char gender[3]; //性别
double score; //成绩
};
void shuru(struct Stu *p,int *q) //学生信息录入函数
{
int n=0;
printf("要录入学生信息的个数>>");
scanf("%d",&n);
for(int i=*q;i<*q+n;i++)
{
printf("请输入第%d个学生的学号:",i+1);
scanf("%s",p[i].id);
printf("请输入第%d个学生的姓名:",i+1);
scanf("%s",p[i].name);
printf("请输入第%d个学生的性别:",i+1);
scanf("%s",p[i].gender);
printf("请输入第%d个学生的成绩:",i+1);
scanf("%lf",&p[i].score);
printf("\n");
}
*q+=n;
}
void shuchu(const struct Stu *p,int n) //学生信息输出函数
{
printf("学生信息如下:\n");
printf("学号\t姓名\t性别\t成绩\n");
for(int i=0;i<n;i++)
{
printf("%s\t%s\t%s\t%.2lf\n",p[i].id,p[i].name,p[i].gender,p[i].score);
}
}
void maximum(const struct Stu *p,int n) //求学生成绩最好和最差的学生的函数
{
int max=0,min=0;
for(int i=0;i<n;i++)
{
if(p[i].score>p[max].score)
{
max=i;
}
if(p[i].score<p[min].score)
{
min=i;
}
}
printf("成绩最好的学生是%s\n",p[max].name);
printf("成绩最差的学生是%s\n",p[min].name);
}
void sum_ave(const struct Stu *p,int n) //求学生总成绩和学生平均成绩的函数
{
float sum=0,ave=0;
for(int i=0;i<n;i++)
{
sum+=p[i].score;
}
ave=sum/n;
printf("学生的总成绩为:%.0f\n",sum);
printf("学生的平均成绩为:%.2f\n",ave);
}
void sort(struct Stu *p,int n) //排序函数
{
int flag=0;
printf("升序按1,降序按2>>");
scanf("%d",&flag);
for(int i=1;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
if(flag==1)
{
if(p[j].score>p[j+1].score)
{
struct Stu temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
if(flag==2)
{
if(p[j].score<p[j+1].score)
{
struct Stu temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
}
}
}
int main(int argc,const char *argv[])
{
printf("\t\t********学生管理系统*********\n");
printf("\t\t1.录入学生信息\n");
printf("\t\t2.查看当前所有学生信息\n");
printf("\t\t3.查询成绩最高和最低学生信息\n");
printf("\t\t4.查询学生的总成绩和平均成绩\n");
printf("\t\t5.按成绩进行排序\n");
printf("\t\t6.退出\n");
int meau=0;
int size=0; //数组实际大小
struct Stu s[MAX];
memset(s,0,sizeof(s));
while(1)
{
printf("请输入>>>");
scanf("%d",&meau);
switch(meau)
{
case 1:
shuru(s,&size);
break;
case 2:
shuchu(s,size);
break;
case 3:
maximum(s,size);
break;
case 4:
sum_ave(s,size);
break;
case 5:
sort(s,size);
break;
case 6:
exit(0);
default:
printf("输入错误,请重新输入\n");
break;
}
}
return 0;
}