设计一个C语言程序

就是设计一个学籍管理,要求是输入一个人的名字就出来他的性别学号出生年月入学成绩
还有就是他们的成绩还得排序,他们的顺序就是按成绩的顺序,而且每步要中文解释,麻烦大家了,谢谢了,我很着急啊!!!!如有满意答案追加20分

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
struct student{
int id;
char name[10];
int age;
int cell;
int tel;
}st[50];
int i=0;
void shuru() {
char a;
do{
printf("\n请输入身份证号:");
scanf("%d",&st[i].id);
fflush(stdin);
printf("\n请输入姓名:");
gets(st[i].name);
printf("\n") ;
printf("请输入年龄:");
scanf("%d",&st[i].age);
printf("\n请输入手机:");
scanf("%d",&st[i].cell);
printf("\n请输入电话:");
scanf("%d",&st[i].tel);
printf("\n是否继续输入另外一个学生信息?(y/n)");
fflush(stdin);
a=getchar();
i++;
}while(a=='y' && i<=50);

}

void xianshi()
{
int j;
printf("\t身份证号 \t姓名\t\t年龄\t\t手机\t\t电话\n");
for(j=0;j<i;j++)
printf(" \t%d\t\t%s \t\t%d\t\t%d\t\t%d\n",st[j].id,st[j].name,st[j].age,st[j].cell,st[j].tel);
getche();
}

void paixu() //按年龄从大到小排序函数
{
int j,k;
int temp;
for(j=0;j<i;j++)
{
for(k=0;k<i-1-j;k++)
{
if(st[k].age<st[k+1].age)
{
temp=st[k].age;
st[k].age=st[k+1].age;
st[k+1].age=temp;
}
}
}
xianshi(); //排序后输出
}

void chazhao()
{
int m;
char name[20],b;
do
{
printf("\n请输入想查找的学生姓名:");
fflush(stdin);
gets(name);
for(m=0;m<i;m++)
{
if(strcmp(name,st[m].name)==0)
{
printf("\n\t\t您查找的学生在第%d个位置找到了!!!\n",m+1);
break;
}
}
if(m>=20)
printf("\n\t\t没有找到这个学生!!!\n");
else
{
printf("\t身份证号 \t姓名\t\t年龄\t\t手机\t\t电话\t\t平均分\n");
printf(" \t%d\t\t%s \t\t%d\t\t%d\t\t%d\n",st[m].id,st[m].name,st[m].age,st[m].cell,st[m].tel);
}
printf("\n是否查找另一个学生的信息?(y/n)");
fflush(stdin);
b=getchar();

}while(b=='y');

}

void main() //主函数
{
int change;
do{
system("cls");
printf("============================学生信息管理系统===================================\n");
printf("\t\t\t一: 输入学生信息\n");
printf("\t\t\t二: 显示学生信息\n");
printf("\t\t\t三: 查找学生信息\n");
printf("\t\t\t四: 退出程序\n");
fflush(stdin);
printf("\n\t\t\t请输入功能选项:");
scanf("%d",&change);
switch(change)
{
case 1:
shuru(); break;
case 2:
xianshi(); break;
case 3:
chazhao(); break;
case 4:
break;
}
getch();
}while(change!=4);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-16
用数据库,直接查询就可以了
第2个回答  2008-06-22
符合要求,但简陋了些
/*
input
1
n1 101 m 2000-01-01 542
n2 102 w 2000-01-02 565
over 103 m 2000-01-03 595
2
n2

output
n2 102 w 2000-01-02 565

*/#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct student
{
int num; // 学号
char name[20]; //名字
char sex[10]; //性别
char birth[20]; //出生年月日
int score; //成绩
}stu[100];
int num;
void input()
{
num=0;
printf("输入学生的姓名 学号 性别 生日 成绩(姓名over结束)\n");
while(1)
{
scanf("%s %d %s %s %d",&stu[num].name,&stu[num].num,
&stu[num].sex,&stu[num].birth,&stu[num].score);
if(strcmp(stu[num].name,"over")==0) break;
num++;
}
}

void search()
{
int i,flag=0;
char name[20];
printf("请输入要查询学生的名字\n");
scanf("%s",name);
for(i=0;i<num;i++)
{
if(strcmp(stu[i].name,name)==0)
{
printf("%10s%5d%5s%10s%5d\n",stu[i].name,stu[i].num,
stu[i].sex,stu[i].birth,stu[i].score);
flag=1;
}
}
if(flag==0) printf("未找到符合要求的学生\n");
}

int main()
{
int chos;
while(1)
{
printf("1.输入数据\n");
printf("2.查询学生\n");
printf("3.退出\n");
printf("请选择");
scanf("%d",&chos);
switch(chos)
{
case 1:
input();
break;
case 2:
search();
break;
case 3:
exit(0);
}
}
return 0;
}