/*代码已经做到简洁扼要,按照你的要求,只有简单的几个功能*/
/*已经测试过,正常执行。希望能帮助你*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define NAME_LEN 10
#define ID_LEN 11
#define REC 5 /*记录条数*/
/* 学生结构体*/
typedef struct student
{
char id[ID_LEN];/*学号*/
char name[NAME_LEN];/*姓名*/
int score[3];/*三科成绩*/
} Stu;
/*成绩输入*/
void input(Stu s[],int n)
{
int i;
printf("请输入学号姓名分数1 分数2 分数3\n");
for(i=0;i<n;i++)
scanf("%s%s%d%d%d",s[i].id,s[i].name,
&s[i].score[0],&s[i].score[1],&s[i].score[2]);
}
/*成绩输出*/
void print(Stu s[],int n)
{
int i;
printf("学号 姓名 分数1 分数2 分数3\n");
for(i=0;i<n;i++)
printf("%s %s %d %d %d\n",s[i].id,s[i].name,
s[i].score[0],s[i].score[1],s[i].score[2]);
}
/*按成绩排序*/
void sort(Stu s[],int n,int no)
{
int i,j;
Stu temp;
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(s[i].score[no-1]<s[j].score[no-1])
{
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
}
/*成绩按学号查询成绩*/
void search(Stu s[], int n,char *id)
{
int i;
for(i=0; i<n; i++)
if(strcmp(s[i].id,id)==0)
{
printf("%s %s %d %d %d\n",s[i].id,s[i].name,
s[i].score[0],s[i].score[1],s[i].score[2]);
return;
}
printf("没找到相应记录\n");
}
void main()
{
Stu stu[REC];
int no,menu;
char id[ID_LEN];
printf("****************学生成绩管理*****************\n\n");
printf("1.成绩输入\n");
printf("2.显示所有学生成绩\n");
printf("3.按成绩排序输出\n");
printf("4.按学号查询成绩\n");
printf("0.退出程序\n");
while(1)
{
printf("\n请输入菜单号:");
scanf("%d",&menu);
switch(menu)
{
case 1:
input(stu,REC);
break;
case 2:
print(stu,REC);
break;
case 3:
printf("输入要排序的分数号:");
scanf("%d",&no);
sort(stu,REC,no);
print(stu,REC);
break;
case 4:
printf("输入要查询的学号:");
scanf("%s",id);
search(stu,REC,id);
break;
case 0:
exit(0);
default:
printf("菜单号输入错误\n");
break;
}
}
}
温馨提示:内容为网友见解,仅供参考