代码
可以在Dev C++上编译运行。
但在VC2010上编译,运行失败。
有大佬能帮我不,有偿。
可以将代码贴出来大家看看,应该能找到问题
把变量申明全部放到函数的开头部分试试
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 30
void input();
void show();
void save();
void del();
void change();
void search();
void sort();
void statistics();
void quit();
struct Student
{
int num;
char name[20];
char sex;
int age;
char beizhu[100];
};struct Student a[30];
int count=0,i;//定义全局变量
char m[10]={"123456"};
int main()
{
char n[20],t;
struct Student a[N];
FILE * fp;
fp=fopen("学生信息.txt","w+");
{
fscanf(fp,"%d\n",&count);
for(i=0;i<count;i++)
{
fscanf(fp,"学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注:%s\n",&a[i].num,a[i].name,&a[i].sex,&a[i].age,&a[i].beizhu);
}
fclose(fp);
}
printf("学生信息管理系统\n");
while(1)
{
printf("请输入密码:\n");
gets(n);
if(strcmp(m,n)==0)
{
printf("请选择系统功能项:\n");
while(1)
{
printf("a.学生基本信息录入\n");
printf("b.学生基本信息显示\n");
printf("c.学生基本信息保存\n");
printf("d.学生基本信息删除\n");
printf("e.学生基本信息修改\n");
printf("f.学生基本信息查询\n (1).按学号查询\n (2).按姓名查询\n (3).按性别查询\n (4).按年龄查询\n");
printf("g.排序显示\n");
printf("h.数据统计\n");
printf("x.退出系统\n");
printf("输入选择:");
scanf("%d",&t);
t=getchar();
switch(t)
{
case 'a':
input();break;
case 'b':
show();break;
case 'c':
save();break;
case 'd':
del();break;
case 'e':
change();break;
case 'f':
search();break;
case 'g':
sort();break;
case 'h':
statistics();break;
case 'x':
quit();break;
default:
printf("无此项操作!\n");
}
}
}else
printf("密码错误\n");
}
return 0;
}
void input()
{
char d;
for(i=count;i<N;i++)
{
printf("请输入学生%d的信息:学号、姓名、性别、年龄、备注\n",(count+1));
scanf("%d %s %c %d %s",&a[i].num,a[i].name,&a[i].sex,&a[i].age,&a[i].beizhu);
count++;
printf("是否继续输入?Y/N\n");
getchar();
scanf("%c",&d);
if(d=='Y')
continue;
else if(d=='N')
break;
else
{
printf("输入错误,请重新输入!\n");
count--;
}
} }
void show()
{
for(i=0;i<count;i++)
{
printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注:%s\n",
a[i].num,a[i].name,a[i].sex,a[i].age,a[i].beizhu);
}
}
void save()
{
FILE * fp;
fp=fopen("学生信息.txt","w+");
fprintf(fp,"总共输入了%d个学生的信息\n",count);//用格式化方式读入文件
for(i=0;i<count;i++)
{
fprintf(fp,"学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注:%s\n",
a[i].num,a[i].name,a[i].sex,a[i].age,a[i].beizhu);
}
printf("保存成功!\n");
fclose(fp);//用fclose函数关闭数据文件
}
void del()
{
int xuehao,i1,flag=0;
printf("请输入要删除学生的学号:\n");
scanf("%d",&xuehao);
for(i=0;i<count;i++)
{
if(xuehao==a[i].num)
{
flag=1;
for(i1=i;i1<count-1;i1++)
{
a[i1]=a[i1+1];
}
}
}
if(flag=0)
printf("查无此人\n");
if(flag=1)
{
count-=1;
printf("删除成功\n");
}
}
void change()
{
char n1[20],c2;
int c1,k;
printf("请输入密码:\n");
scanf("%s",n1);
if(strcmp(m,n1)==0)
{
printf("请输入要修改学生的学号:\n");
scanf("%d",&c1);
for(i=0;i<count;i++)
{
if(a[i].num==c1)
{
while(1)
{
if(k==5)
break;
printf("1.修改姓名\n");
printf("2.修改年龄\n");
printf("3.修改性别\n");
printf("4.修改备注\n");
printf("5.退出\n");
printf("请输入你的选择:\n");
scanf("%d",&k);
switch(k)
{
case 1:printf("请输入新姓名:\n");
scanf("%s",n1);
strcpy(a[i].name,n1);break;
case 2:printf("请输入新年龄:\n");
scanf("%d",&c1);
a[i].age=c1;break;
case 3:printf("请输入新性别:\n");
scanf("%c",&c2);
a[i].sex=c2;break;
case 4:printf("请输入新备注:\n");
scanf("%s",n1);
strcpy(a[i].beizhu,n1);break;
case 5:break;
default:printf("无此项操作\n");
}
}
}
}
}
else
printf("密码错误\n");
}
void search()
{
int x,l1;
char l2;
printf(" (1).按学号查询\n (2).按姓名查询\n (3).按性别查询\n (4).按年龄查询\n");
printf("请选择:");
scanf("%d",&x);
if(x==1)
{
int b1;
printf("请输入学号:");
scanf("%d",&b1);
for(i=0;i<count;i++)
{
if(b1==a[i].num)
break;
}
if(i>=count)
printf("查无此人\n");
else
printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注\n",
a[i].num,a[i].name,a[i].sex,a[i].age,a[i].beizhu);
}
else if(x==2)
{
int j=0;
char name1[20];
printf("请输入姓名:\n");
scanf("%c",&l2);
gets(name1);
for(i=0;i<count;i++)
{
if(strcmp(name1,a[i].name)==0)
printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注%s\n",
a[i].num,a[i].name,a[i].sex,a[i].age,a[i].beizhu);
j=1;
}
if(j==0)
printf("查无此人\n");
}
else if(x==3)
{
char sex1;
printf("请输入性别:");
scanf("%d",&l1);
scanf("%c",&sex1);
for(i=0;i<count;i++)
{
if(sex1==a[i].sex)
printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注%s\n",
a[i].num,a[i].name,a[i].sex,a[i].age,a[i].beizhu);
}
}
else if(x==4)
{
int y;
printf("请输入年龄:");
scanf("%d",&y);
for(i=0;i<count;i++)
{
if(y==a[i].age)
printf("学号:%d\n姓名:%s\n性别:%c\n年龄:%d\n备注%s\n",
a[i].num,a[i].name,a[i].sex,a[i].age,a[i].beizhu);
}
}
else
printf("无此项操作\n");
}
void sort()
{
int i,j,k;
printf("按什么进行排序?\n" );
printf("1.学号\n2.年龄\n");
scanf("%d",&k);
if(k==1)
{
for(i=1;i<count;i++)
for(j=0;j<i;j++)
if(a[i].num>a[j].num)
{
long double num;
char name[20];
char sex;
int age;
char beizhu[100];
strcpy(name,a[i].name);
strcpy(a[i].name,a[j].name);
strcpy(a[j].name,name);
num=a[i].num;
a[i].num=a[j].num;
a[j].num=num;
sex=a[i].sex;
a[i].sex=a[j].sex;
a[j].sex=sex;
age=a[i].age;
a[i].age=a[j].age;
a[j].age=age;
strcpy(beizhu,a[i].beizhu);
strcpy(a[i].beizhu,a[j].beizhu);
strcpy(a[j].beizhu,beizhu);
}
}
else if(k==2)
{
for(i=1;i<count;i++)
for(j=0;j<i;j++)
if(a[i].age>a[j].age)
{
long double num;
char name[20];
char sex;
int age;
char beizhu[100];
strcpy(name,a[i].name);
strcpy(a[i].name,a[j].name);
strcpy(a[j].name,name);
num=a[i].num;
a[i].num=a[j].num;
a[j].num=num;
sex=a[i].sex;
a[i].sex=a[j].sex;
a[j].sex=sex;
age=a[i].age;
a[i].age=a[j].age;
a[j].age=age;
strcpy(beizhu,a[i].beizhu);
strcpy(a[i].beizhu,a[j].beizhu);
strcpy(a[j].beizhu,beizhu);
}
}
else
printf("输入错误!\n");
}
void statistics()
{
printf("1.男女生人数统计:\n");
printf("2.年龄段人数统计:\n");
int xuanxiang,m,n,male=0,female=0,young=0,old=0;
scanf("%d",&xuanxiang);
if(xuanxiang==1)
{
for(m=0;m<count;m++)
{
if(a[m].sex=='M')
male++;
else if(a[m].sex=='F')
female++;
else
{
printf("输入错误!请重新输入:\n");
m--;
}
}
printf("男生人数:%d\n",male);
printf("女生人数:%d\n",female);
}
else if(xuanxiang==2)
{
for(n=0;n<count;n++)
{
switch(a[n].age/10)
{
case 1: young++;break;
case 2: old++;break;
default:printf("昆工没有这么老的学生!\n");break;
}
}
printf("10-19岁人数:%d\n",young);
printf("20-29岁人数:%d\n",old);
}
}
void quit()
{
printf("成功退出系统!\n");
exit(0);
}