实验内容
在某系的成绩登记册中,每个班最多有40个学生,每份成绩表中的信息包括:学号(9个字符),姓名(8个字符),成绩(百分制),备注(20位字符)。设计程序以及处理一个班级的成绩信息,包括输入、输出、查询(给定分数以上或者以下的学生信息)、按分数排序等。
1、算法思想
定义一个结构体,用于存放学生的相关信息,制作简单的操作界面,由用户选择进入相应的处理模块。
2、程序代码3
#include "stdio.h"
#include "string.h"
#define count 2
struct student //结构类型
{char num[10];
char name[8];
int chengji;
char other[20];
}stu[count],temp;
main()
{int i,jishuqi,c,b,min,max; char tem,xiaji; char chaxun[9];
jishuqi=0;
printf("########请选择程序的相应功能#############\n");
A:printf(" 1、资料录入\n");
printf(" 2、资料概览\n");
printf(" 3、信息查询\n");
printf(" 4、分数排序\n");
printf(" 5、退出系统\n");
tem=getchar();
if(tem=='1')
{jishuqi=jishuqi+1;
for(i=0;i<count;i++)
{printf("请输入9位学号:");
scanf("%s",stu[i].num);
printf("请输入8位姓名:");
scanf("%s",stu[i].name);
printf("请输入3位成绩:");
scanf("%d",&stu[i].chengji);
printf("请输入20位以内备注:");
scanf("%s",&stu[i].other);
}
printf("输入完毕,请选择下一步\n");
getchar();
goto A;
}
if(tem=='2')
{ printf("学号 姓名 成绩 备注\n");
for(i=0;i<count;i++)
printf("%9s %8s %3d %20s\n",stu[i].num,stu[i].name,stu[i].chengji,stu[i].other);
printf("浏览完毕,请选择下一步\n");
getchar();
goto A;
}
if(tem=='3')
{printf("1、按学号查询\n");
printf("2、按某分数以下查询\n");
printf("3、按某分数以上查询\n");
getchar();
xiaji=getchar();
if(xiaji=='1')
{ printf("请输入要查询的学号");
scanf("%s",chaxun);
for(i=0;i<count;i++)
{if(strcmp(stu[i].num,chaxun)==0)
printf("%9s %8s %3d %20s\n",stu[i].num,stu[i].name,stu[i].chengji,stu[i].other);
}
printf("查询完毕,请选择下一步\n");
getchar();
goto A;
}
if(xiaji=='2')
{ printf("请输入要查询多少分以下的学生");
scanf("%d",&max);
//printf("%d",max);exit(0);
for(i=0;i<count;i++)
{if((stu[i].chengji)<max)
printf("%9s %8s %3d %20s\n",stu[i].num,stu[i].name,stu[i].chengji,stu[i].other);
}
printf("查询完毕,请选择下一步\n");
getchar();
goto A;
}
if(xiaji=='3')
{ printf("请输入要查询多少分以上的学生");
scanf("%d",&min);
for(i=0;i<count;i++)
{if(stu[i].chengji>min)
printf("%9s %8s %3d %20s\n",stu[i].num,stu[i].name,stu[i].chengji,stu[i].other);
}
printf("查询完毕,请选择下一步\n");
getchar();
goto A;
}
}
if(tem=='4')
{printf("当前学生数据按成绩降序排列为\n");
for(c=0;c<2;c++)
for(b=1;b>c;b--)
if((stu[b].chengji)<(stu[b-1].chengji))
{
temp.num=stu[b-1].num;
temp.name=stu[b-1].name;
temp.chengji=stu[b-1].chengji;
temp.other=stu[b-1].other;
stu[b-1].num=stu[b].num;
stu[b-1].name=stu[b].name;
stu[b-1].chengji=stu[b].chengji;
stu[b-1].other=stu[b].other;
stu[b].num=temp.num;
stu[b].name=temp.name;
stu[b].chengji=temp.chengji;
stu[b].other=temp.other;
};
printf("学号 姓名 成绩 备注\n");
for(i=0;i<count;i++)
printf("%9s %8s %3d %20s\n",stu[i].num,stu[i].name,stu[i].chengji,stu[i].other);
printf("浏览完毕,请选择下一步\n");
getchar();
goto A;
}
/////////////////////////////////////////////
if(tem=='5') exit(0);
}