关于C语言学生管理系统的求助!!
请教高手怎么解决下面这个程序不能修改信息的问题。还有就是就是这个程序在显示班级的时候会把级别和专业这两项合并。求解决办法。谢谢了。#include<stdio.h>
#include<string.h>
struct student //一条学生记录包含的信息//
{
char xuehao[10]; //编号//
char xingming[10]; //班级//
char xingbie[2]; //级别//
char shengri[10]; //专业//
char zhuanye[20]; //班主任//
char banji[4]; //总人数//
char jiatingdizhi[20]; //男生人数//
char sushehaoma[4]; //女生人数//
};
struct student stu[100]; //定义可容纳100条记录的结构体数组//
void save() //保存函数//
{
FILE *fp;
int i;
if((fp=fopen("xueshengxinxi","w+"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i<100;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void function_1() //浏览所有学生的信息//
{
int i;
FILE *fp;
fp=fopen("xueshengxinxi","rb");
printf("编号");
printf("\t班级");
printf("\t级别");
printf("\t 专业");
printf("\t 班主任");
printf("\t 总人数");
printf("\t 男生人数");
printf("\t 女生人数");
for(i=0;i<5;i++)
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s",
stu[i].xuehao,stu[i].xingming,stu[i].xingbie,
stu[i].shengri,stu[i].zhuanye,stu[i].banji,
stu[i].jiatingdizhi,stu[i].sushehaoma);
}
fclose(fp);
}
int function_2() //添加学生信息//
{
int i=0;
char MM='Y';
while(MM=='Y'&&i<100)
{
printf("\n请输入第%d个班级的相关信息\n",i+1);
printf("编号: "); scanf("%s",stu[i].xuehao);
printf("班级: "); scanf("%s",stu[i].xingming);
printf("级别: "); scanf("%s",stu[i].xingbie);
printf("专业: "); scanf("%s",stu[i].shengri);
printf("班主任: "); scanf("%s",stu[i].zhuanye);
printf("总人数: "); scanf("%s",stu[i].banji);
printf("男生人数:"); scanf("%s",stu[i].jiatingdizhi);
printf("女生人数: "); scanf("%s",stu[i].sushehaoma);
i=i+1;
getchar();
printf("\n是否继续添加信息?y/n ");
MM=getchar();
save();
}
return(i);
}
void function_3() //查找学生信息//
{
int i,k=0;
char MVP='Y',XH[10],XM[10];
FILE *fp;
fp=fopen("xueshengxinxi","r");
while(MVP=='Y')
{
printf("1---按编号查找\n");
printf("2---按班级名查找\n");
printf("\n请根据操作项所对应的数字进行选择: ");
scanf("%d",&i);
while(i>2||i<1)
{
printf("\n选择有误,请重新选择 ");
scanf("%d",&i);
}
if(i==1)
{
printf("\n请输入编号: ");
scanf("%s",XH);
while(k<5)
{
if(strcmp(XH,stu[k].xuehao)==0)
break;
k=k+1;
}
if(k<5)
{
printf("\n该班级的信息为\n");
printf("编号: %s\n",stu[k].xuehao);
printf("班级: %s\n",stu[k].xingming);
printf("级别: %s\n",stu[k].xingbie);
printf("专业: %s\n",stu[k].shengri);
printf("班主任: %s\n",stu[k].zhuanye);
printf("总人数: %s\n",stu[k].banji);
printf("男生人数: %s\n",stu[k].jiatingdizhi);
printf("女生人数: %s\n",stu[k].sushehaoma);
}
else
printf("\n对应的班级信息不存在\n\n");
}
else
{
printf("\n请输入班级名: ");
scanf("%s",XM);
while(k<5)
{
if(strcmp(XM,stu[k].xingming)==0)
break;
k=k+1;
}
if(k<5)
{
printf("\n该班级的信息为\n");
printf("编号: %s\n",stu[k].xuehao);
printf("班级: %s\n",stu[k].xingming);
printf("级别: %s\n",stu[k].xingbie);
printf("专业: %s\n",stu[k].shengri);
printf("班主任: %s\n",stu[k].zhuanye);
printf("总人数: %s\n",stu[k].banji);
printf("男生人数: %s\n",stu[k].jiatingdizhi);
printf("女生人数: %s\n",stu[k].sushehaoma);
}
else
printf("\n对应的班级信息不存在\n\n");
}
getchar();
printf("\n\n是否继续查找?y/n ");
MVP=getchar();
}
fclose(fp);
}
void function_4() //修改学生信息//
{
int i=0,k=0;
char ZHY,XH[10],code[10];
FILE *fp;
fp=fopen("xueshengxinxi","r");
printf("\n请输入编号: ");
scanf("%s",XH);
while(k<5)
{
if(strcmp(XH,stu[k].xuehao)==0)
break;
k=k+1;
}
{
printf("确定要修改信息吗?y/n ");
ZHY=getchar();
if(ZHY=='Y')
{
printf("请输入班级信息\n");
printf("编号: "); scanf("%s",stu[k].xuehao);
printf("班级: "); scanf("%s",stu[k].xingming);
printf("级别: "); scanf("%s",stu[k].xingbie);
printf("专业: "); scanf("%s",stu[k].shengri);
printf("班主任: "); scanf("%s",stu[k].zhuanye);
printf("总人数: "); scanf("%s",stu[k].banji);
printf("男生人数: "); scanf("%s",stu[k].jiatingdizhi);
printf("女生人数: "); scanf("%s",stu[k].sushehaoma);
save();
}
}
}
void main() //主函数//
{
int i,N=0; //N条记录//
char kobe='Y';
printf("\n\n ===============欢迎使用班级管理系统===============\n\n");
while(kobe=='Y')
{
printf("\n 1-浏览所有班级的信息\n");
printf("\n 2-添加班级新信息\n");
printf("\n 3-查找班级信息\n");
printf("\n 4-修改班级信息\n");
printf("\n =================================================\n");
printf("\n\n 请根据操作项所对应的数字进行选择:");
scanf("%d",&i);
while(i>4||i<1)
{
printf("\n选择有误,请重新选择: ");
scanf("%d",&i);
}
if(i==1) function_1();
else
if(i==2) N=function_2();
else
if(i==3) function_3();
else function_4();
getchar();
printf("\n\n\n是否返回主界面?y/n ");
kobe=getchar();
}
printf("\n共有%d条记录\n",N);
printf("\n\n");
printf(" 谢谢访问 再见 ");
}