#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 10
#define MAXSUB 3
int length;
typedef struct tagStudent_t
{
char no[11];
char name[20];
int score[MAXSUB];
}Student;
char menu_select();
void input(Student * p);
void output(Student * p);
void searchByNo(Student * p);
void main()
{
Student stus[MAXSIZE];
Student * p=stus;
while(1)
{
switch(menu_select())
{
case'1':
input(p);
break;
case'2':
searchByNo(p);
printf("按任意键继续...");
fflush(stdin);
getchar();
break;
case'3':
output(p);
printf("按任意键继续...");
fflush(stdin);
getchar();
break;
case'0':
printf("\n 谢谢使用!\n");
exit(0);
}
}
}
char menu_select()
{
char MenuItem;
printf("\n");
printf("***********************学生管理系统***********************\n");
printf("********************************************************\n");
printf("*************************主菜单**************************\n");
printf("********************************************************\n");
printf(" 1-------录入学生信息 \n");
printf(" 2-------查询学生信息 \n");
printf(" 3-------显示学生信息 \n");
printf(" 0-------退出 \n");
printf("********************************************************\n");
do
{
printf("\n 请输入选项(0~3)");
fflush(stdin);
scanf("%c",&MenuItem);
getchar();
}while(MenuItem<'0'||MenuItem>'3');
return MenuItem;
}
void input(Student * p)
{
int i,j;
char cContinue;
int flag=1;
fflush(stdin);
for(i=length;i<MAXSIZE-1;i++,p++)
{
printf("请输入第%d名学生的学号:",i+1);
scanf("%s",&p->no);
printf("请输入姓名:");
scanf("%s",&p->name);
for(j=0;j<MAXSUB;j++)
{
printf("请输入第%d门成绩: ",j+1);
scanf("%d",&p->score[j]);
}
length++;
do
{
flag=1;
printf("需要继续录入成绩吗?(y/n)?");
fflush(stdin);
scanf("%c",&cContinue);
getchar();
switch(cContinue)
{
case'Y':
case'y':
flag=0;
break;
case'N':
case'n':
return;
}
}while(flag);
}
}
void output(Student * p)
{
int i,j;
printf("学号 姓名 成绩1 成绩2 成绩3\n");
printf("\n");
for(i=0;i<length;i++,p++)
{
printf("% -6s% -14s",p->no,p->name);
for(j=0;j<MAXSUB;j++)
printf("%7d",p->score[j]);
printf("\n");
}
}
void searchByNo(Student * p)
{
p=p-length;
char no[20];
int i,j;
printf("\n请输入学生学号: ");
scanf("%s",no);
for(i=0;i<length;i++,p++)
if(strcmp(p->no,no)==0)
{
printf("学号 姓名 成绩1 成绩2 成绩3\n");
printf("\n");
printf("% -6s% -14s",p->no,p->name);
for(j=0;j<MAXSUB;j++)
printf("%7d",p->score[j]);
}
else
{
printf("该生不存在!\n");}
}
整个程序编译都没有问题,但是查找函数SearchByNo(),执行结果不对,总是“该生不存在”。。
哪位大侠指教一下。。