#include<stdio.h>
#include<string.h>
#define N 100
struct Xitong
{
int number;
char name[20];
char sex[10];
double score;
};
void luru(int n,struct Xitong *gn)
{
for(int i=0;i<n;i++)
{
printf("请输入第%d个学生学号:",i+1);
scanf("%d",&gn[i].number);
printf("请输入第%d个学生姓名:",i+1);
scanf("%s",gn[i].name);
printf("请输入第%d个学生性别:",i+1);
scanf("%s",gn[i].sex);
printf("请输入第%d个学生分数:",i+1);
scanf("%lf",&gn[i].score);
}
printf("录入完成\n");
}
void shuchu(int n,struct Xitong *gn)
{
for(int i=0;i<n;i++)//循环输出
{
printf("%d\t%s\t%s\t%.2lf\n",gn[i].number,gn[i].name,gn[i].sex,gn[i].score);
}
}
void zuizhi(int n,struct Xitong *gn)
{
struct Xitong zd=gn[0];
struct Xitong zx=gn[0];
double zd_zhi;
double zx_zhi;
double zhi;
for(int i=0;i<n;i++)//循环求最大值
{
zhi=gn[i].score;
zd_zhi=zd.score;
zx_zhi=zx.score;
if(zhi>zd_zhi)//判断最大值
{
zd=gn[i];
}
if(zhi<zx_zhi)//判断最小值
{
zx=gn[i];
}
}
printf("最高:%d\t%s\t%s\t%.2lf,最低:%d\t%s\t%s\t%.2lf\n",zd.number,zd.name,zd.sex,zd.score,zx.number,zx.name,zx.sex,zx.score);
}
void chenji(int n,struct Xitong *gn)
{
double ave,sum;
for(int i=0;i<n;i++)//循环求总成绩
{
sum+=gn[i].score;
}
ave=sum/n;
printf("总成绩:%.2lf,平均成绩:%.2lf\n",sum,ave);
}
void paixu(int n,struct Xitong *gn)
{
char x;
printf("请选择升序还是降序:");
scanf("%s",&x);
if(x=='s')
{
for(int i=1;i<n;i++)//循环求升序后的数组
{
for(int j=0;j<n-i;j++)
{
if(gn[j].score>gn[j+1].score)
{
struct Xitong sx=gn[j];
gn[j]=gn[j+1];
gn[j+1]=sx;
}
}
}
for(int i=0;i<n;i++)
{
printf("%d\t%s\t%s\t%.2lf\n",gn[i].number,gn[i].name,gn[i].sex,gn[i].score);
}
}
else if(x=='j')
{
for(int i=1;i<n;i++)//循环求降序后的数组
{
for(int j=0;j<n-i;j++)
{
if(gn[j].score<gn[j+1].score)
{
struct Xitong jx=gn[j];
gn[j]=gn[j+1];
gn[j+1]=jx;
}
}
}
for(int i=0;i<n;i++)
{
printf("%d\t%s\t%s\t%.2lf\n",gn[i].number,gn[i].name,gn[i].sex,gn[i].score);
}
}
else
{
printf("error!\n");
}
}
void cat(int n,struct Xitong *gn)
{
char xm[20]={""};
int flag=0;
printf("请输入要查找的学生的姓名:");
scanf("%s",xm);
for(int i=0;i<n;i++)
{
char mz[20]={""};
strcpy(mz,gn[i].name);
if(strcmp(mz,xm)==0)
{
flag=1;
break;
}
}
if(flag==1)
{
printf("存在\n");
}
else
{
printf("不存在\n");
}
}
int main(int argc,const char *argv[])
{
int n=0;
printf("请输入学生人数:");
scanf("%d",&n);
while(1)
{
int a=0;
struct Xitong gn1[N];
printf("----------输入1,录入成绩----------\n");//菜单
printf("----------输入2,查询学生成绩----------\n");
printf("----------输入3,查询成绩最高和最低的学生----------\n");
printf("----------输入4,查询学生总成绩和平均成绩----------\n");
printf("----------输入5,对学生成绩进行排序----------\n");
printf("----------输入6,查找学生----------\n");
printf("----------输入0,退出----------\n");
printf("请输入选项:");
scanf("%d",&a);
switch(a)
{
case 1:
{
luru(n,gn1);
}break;
case 2:
{
shuchu(n,gn1);
}break;
case 3:
{
zuizhi(n,gn1);
}break;
case 4:
{
chenji(n,gn1);
}break;
case 5:
{
paixu(n,gn1);
}break;
case 6:
{
cat(n,gn1);
}break;
case 0:goto END;
default:
{
printf("输入错误请重新输入:\n");
}
}
}
END:
return 0;
}
结构体---学生管理系统(学号,姓名,性别,成绩)
于 2024-07-16 20:58:45 首次发布