求教 学生成绩管理系统出错
小弟刚做了个学生成绩管理系统 编译无错误 但是运行的时候连选择函数都不能 特来求教 望高手解释 代码如下:#include <stdio.h>
#include <stdlib.h>
#define N 20
#define M 100
struct score
{
int scr1;
int scr2;
int scr3;
int scr4;
float avg;
int total;
};
struct student
{
char num[10];
char name[10];
char sex[2];
int age;
struct score scr;
};
int x=0;
int input(struct student *s);
int insert(struct student *s);
int sort(struct student *s);
int find(struct student *s);
int delet(struct student *s);
int output(struct student *s);
void main()
{
int i=1;
struct student stu[M];
printf("* * * * * * * * * * * * * * *学生成绩管理系统* * * * * * * * * * * * * * * *\n");
printf("请按数字键选择需要的操作:\n");
printf(" 1.输入学生信息\n");
printf(" 2.插入学生信息\n");
printf(" 3.对学生信息进行排序\n");
printf(" 4.查找学生信息\n");
printf(" 5.删除学生信息\n");
printf(" 6.输出所有学生信息\n");
for(i;;)
{
i=getchar();
switch(i)
{
case 1:
system("cls");
i=input(stu);
break;
case 2:
system("cls");
i=insert(stu);
break;
case 3:
system("cls");
i=sort(stu);
break;
case 4:
system("cls");
i=find(stu);
break;
case 5:
system("cls");
i=delet(stu);
break;
case 6:
system("cls");
i=output(stu);
break;
}
}
}
int input(struct student *s)
{
int i;
for(i=0;i<N;i++,s++)
{
printf("请输入%d个学生的信息:\n学号 姓名 性别 年龄 四科成绩\n",N+1);
scanf("%s%s%s%d%d%d%d%d",s->num,s->name,s->sex,s->age,s->scr.scr1,s->scr.scr2,s->scr.scr3,s->scr.scr4);
s->scr.total=s->scr.scr1+s->scr.scr2+s->scr.scr3+s->scr.scr4;
s->scr.avg=s->scr.total/4.0;
}
printf("输入1返回主菜单,输入0退出");
return(i=getchar());
}
int insert(struct student *s)
{
int i=1,j;
struct student s1;
printf("输入要插入的学生信息:\n学号 姓名 性别 年龄 四科成绩\n");
for(i;;)
{
scanf("%s%s%s%d%d%d%d%d",s1.num,s1.name,s1.sex,s1.age,s1.scr.scr1,s1.scr.scr2,s1.scr.scr3,s1.scr.scr4);
for(i=0;i<N;i++)
{
if(s1.num<s[i].num)
{
for(j=N-1;j>=i;j--)
{
s[j+1]=s[j];
}
s[i]=s1;
}
}
printf("继续插入输入1,放弃插入输入0");
i=getchar();
x++;
}
printf("输入1返回主菜单,输入0退出");
return(i=getchar());
}
int sort(struct student *s)
{
int i,j;
struct student s2;
printf("请选择排序的要求:\n1.按学号\n2.按总成绩\n");
i=getchar();
switch(i)
{
case 1:
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1-i;j++)
{
if(s[j].num>s[j+1].num)
{
s2=s[j];
s[j]=s[j+1];
s[j+1]=s2;
}
}
}
break;
case 2:
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1-i;j++)
{
if(s[j].scr.total>s[j+1].scr.total)
{
s2=s[j];
s[j]=s[j+1];
s[j+1]=s2;
}
}
}
break;
}
printf("%-8学号%-8姓名%-8性别%-8年龄%-8数学%-8中文%-8英文%-8体育%-8平均成绩%-8总成绩");
for(i=0;i<N;i++)
{
printf("%-8s%-8s%-8s%-8d%-8d%-8d%-8d%-8d%-8.2f%-8d",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].scr.scr1,s[i].scr.scr2,s[i].scr.scr3,s[i].scr.scr4,s[i].scr.avg,s[i].scr.total);
}
printf("输入1返回主菜单,输入0退出");
return(i=getchar());
}
int find(struct student *s)
{
int i=1;
char f[10];
for(i;;)
{
printf("输入要查找的学生学号或姓名\n");
scanf("%s",f);
for(i=0;i<N;i++)
{
if(f==s[i].num||f==s[i].name)
{
printf("%-8学号%-8姓名%-8性别%-8年龄%-8数学%-8中文%-8英文%-8体育%-8平均成绩%-8总成绩");
printf("%-8s%-8s%-8s%-8d%-8d%-8d%-8d%-8d%-8.2f%-8d",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].scr.scr1,s[i].scr.scr2,s[i].scr.scr3,s[i].scr.scr4,s[i].scr.avg,s[i].scr.total);
}
}
printf("继续查询输入1,放弃查询输入0");
i=getchar();
}
printf("输入1返回主菜单,输入0退出");
return(i=getchar());
}
int delet(struct student *s)
{
int i=1,j;
char f[10];
for(i;;)
{
printf("输入要删除的学生学号或姓名\n");
scanf("%s",f);
for(i=0;i<N;i++)
{
if(f==s[i].num||f==s[i].name)
{
for(j=i+1;j<N;j++)
{
s[j-1]=s[j];
}
}
}
printf("继续删除输入1,放弃删除输入0");
i=getchar();
x--;
}
printf("输入1返回主菜单,输入0退出");
return(i=getchar());
}
int output(struct student *s)
{
int i;
printf("所有学生信息:");
printf("%-8学号%-8姓名%-8性别%-8年龄%-8数学%-8中文%-8英文%-8体育%-8平均成绩%-8总成绩");
for(i=0;i<N+x;i++)
{
printf("%-8s%-8s%-8s%-8d%-8d%-8d%-8d%-8d%-8.2f%-8d",s[i].num,s[i].name,s[i].sex,s[i].age,s[i].scr.scr1,s[i].scr.scr2,s[i].scr.scr3,s[i].scr.scr4,s[i].scr.avg,s[i].scr.total);
}
printf("输入1返回主菜单,输入0退出");
return(i=getchar());
}