这是我编的一个C程序,实现建立一个学生成绩管理系统,能生成文件,并能显示,查询,修改文件中的信息,但我只能实现录入信息和显示信息.修改和查询功能都不能实现.有谁能教我吗?后天就要交了,谢谢各位了!
#include<time.h>
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#define n 80
void input();
void display();
void modify();
void search();
int a=0;
main()
{
int code;
int as;
start: printf("\t\t\t欢迎使用学生成绩管理系统\n\n");
//一下为功能选择模块
printf("请输入密码code:");
scanf("%d",&code);
if(code==12345)
{
printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.修改学生信息\n\t\t\t\t4.查询学员信息\n\t\t\t\t5.删除学员信息\n\t\t\t\t6.退出\n");
printf("\t\t\t\t选择功能选项:");
fflush(stdin);
scanf("%d",&as);
switch(as)
{
case 1:
system("cls");
input();
break;
case 2:
system("cls");
display();
break;
/*case 3:
modify();
system("cls");
break;*/
case 4:
system("cls");
search();
break;
}
}else printf("输入密码错误!\n");
}
void input()
{
FILE *fp;
int i=1;char ch;
struct student_type
{
char name[10];
int num;
int age;
int math;
int English;
int physics;
}stud[n];
printf("输入 姓名 学号 年龄 数学 英语 物理\n");
do{
printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i++);
printf("输入学生姓名:\n");
fflush(stdin);
gets(stud[i].name);
printf("输入学生学号:\n");
fflush(stdin);
scanf("%d",&stud[i].num);
printf("输入学生年龄:\n");
scanf("%d",&stud[i].age);
fflush(stdin);
printf("输入数学成绩:\n");
fflush(stdin);
scanf("%d",&stud[i].math);
printf("输入英语成绩:\n");
fflush(stdin);
scanf("%d",&stud[i].English);
printf("输入物理成绩:\n");
fflush(stdin);
scanf("%d",&stud[i].physics);
printf("是否继续y,n:");
fflush(stdin);
ch=getchar();
a++;
}while(ch=='y'||ch=='Y');
if((fp=fopen("stu_list","wb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
fwrite(&stud[i],sizeof(struct student_type),1,fp);
fclose(fp);
}
void display()
{
int i;
FILE*fp;
fp=fopen("stu_list","rb");
struct student_type
{
char name[10];
int num;
int age;
int math;
int English;
int physics;
}stud[n];
for(i=0;i<=a;i++)
{fread(&stud[i],sizeof(struct student_type),1,fp);
printf("%-10s %4d %4d %4d %4d %4d\n",stud[i].name,stud[i].num,stud[i].age,stud[i].math,stud[i].English,stud[i].physics);
fclose(fp);}
}
void modify()
{
int i;
char newname[10];
struct student_type
{
char name[10];
int num;
int age;
int math;
int English;
int physics;
}stud[n];
printf("\t\t\t\t修改学生信息\t\t\t\t");
printf("\n输入要修改学生的姓名newname:");
fflush(stdin);
gets(newname);
if(strcmp(stud[i].name,newname)==0)
{
system("cls");
printf("\t\t\t\t输入新信息\t\t\t\t");
printf("输入数学成绩:\n");
fflush(stdin);
scanf("%d",&stud[i].math);
printf("\n输入英语成绩:\n");
fflush(stdin);
scanf("%d",&stud[i].English);
printf("\n输入物理成绩:\n");
fflush(stdin);
scanf("%d",&stud[i].physics);
}
}
void search()
{
int i,c;
struct student_type
{
char name[10];
int num;
int age;
int math;
int English;
int physics;
} stud[n];
FILE *fp;
printf("\t\t\t\t查询学生信息\t\t\t\t\n");
fp=fopen("stu_list","r");
printf("输入要查询学生的姓名newname");
fflush(stdin);
scanf("%d",c);
for(i=0;i<a;i++)
if(c==stud[i].num)
{
printf("\t姓名\t学号\t年龄\t数学成绩\t英语成绩\t物理成绩\t\n");
printf("\t%s\t%d\t%d\t%d\t%d\t%d\t\n",stud[i].name,stud[i].num,stud[i].age,stud[i].math,stud[i].English,stud[i].physics);
}
}
----------------解决方案--------------------------------------------------------