用C语言编一个简易学生成绩管理系统,只要求能输入学生姓名学号和3科成绩,显示这些信息,成绩排序,

还有能够按学号查询 这几个功能就行了。越简洁越好,最好用结构体数组。链表也行。在线等。。。。

/*代码已经做到简洁扼要,按照你的要求,只有简单的几个功能*/
/*已经测试过,正常执行。希望能帮助你*/

#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;
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-25
这个虽然说写起来并不费脑子,但是太费时间了,直接给你推荐一本书,图书馆应当能找到;书后面有一个c++写的学生管理系统,功能还不错,大致根据你的需要修改一下,把没用的功能去掉就行了,如何
第2个回答  2012-06-25
这个我以前写过,C语言的忘了,用C++编的就有,要不要?先让我找找,找到再发
相似回答