收获日2哪个图钱:C语言编程问题,请朋友帮忙!!

来源:百度文库 编辑:高考问答 时间:2024/04/30 00:14:45
输入n个学生的4门成绩到指定文件中,实现追加、删除和显示功能。。

在TC上调试成功
实现了追加、显示、删除、查找功能;删除功能用c语言不好实现,我采用的是创建一个临时文件,把除符合条件以外的记录都拷贝过去,然后再拷贝回来,最后删除临时文件。
#include "stdio.h"
struct student
{
char name[20];
float score [4];
}stu;
char filename[20]="myfile";
append(char *filename)
{
char ch;
FILE *fp;
fp=fopen(filename,"a");
do{
printf("\nplease input the student's data you want to append:\n");
scanf("%s%f%f%f%f",stu.name,&stu.score[0],&stu.score[1],&stu.score[2],&stu.score[3]);
fseek(fp,0,2);
fwrite(&stu,sizeof(struct student),1,fp);
printf("\ndo you want to continue appending?(y/n)");
getchar();
ch=getchar();
}while(ch!='n');
fclose(fp);
}
list(char *filename)
{
FILE *fp;
fp=fopen(filename,"r");
printf("\nname s1 s2 s3 s4");
printf("\n**************************************");
while(fread(&stu,sizeof(struct student),1,fp)==1)
{
printf("\n%-10s%7.2f%7.2f%7.2f%7.2f",stu.name,stu.score[0],stu.score[1],stu.score[2],stu.score[3]);
}
fclose(fp);
}
seek(char *filename,char *stu_name)
{
FILE *fp;
int s;
fp=fopen(filename,"r");
printf("\n\nname s1 s2 s3 s4");
printf("\n**************************************");
s=fread(&stu,sizeof(struct student),1,fp);
while(s==1)
{
if (strcmp(stu.name,stu_name)==0)
{printf("\n%-10s%7.2f%7.2f%7.2f%7.2f",stu.name,stu.score[0],stu.score[1],stu.score[2],stu.score[3]);}
s=fread(&stu,sizeof(struct student),1,fp);
}
fclose(fp);
}
del(char *filename,char *del_name)
{
FILE *fp;
FILE *temp;
int s;
temp=fopen("temp","w");
fp=fopen(filename,"a+");
s=fread(&stu,sizeof(struct student),1,fp);
while(s==1)
{
if (strcmp(stu.name,del_name)!=0)
fwrite(&stu,sizeof(struct student),1,temp);
s=fread(&stu,sizeof(struct student),1,fp);
}
fclose(fp);
remove(filename);
fp=fopen(filename,"w");
rewind(temp);
s=fread(&stu,sizeof(struct student),1,temp);
while(s==1)
{
fwrite(&stu,sizeof(struct student),1,fp);
s=fread(&stu,sizeof(struct student),1,temp);
}
fclose(fp);
fclose(temp);
remove("temp");
}
main()
{
char stu_name[20],del_name[20];
append(filename);
list(filename);
while (strcmp(stu_name,"quit")!=0)
{
printf("\nplease input the student's name you want to search:(input \"quit\" to exit)");
scanf("%s",stu_name);
seek(filename,stu_name);
}
while (strcmp(del_name,"quit")!=0)
{
printf("\nplease input the student's name you want to delete:(input \"quit\" to exit)");
scanf("%s",del_name);
del(filename,del_name);
list(filename);
}
}

我做过这个系统,你把油箱发出来,我给你把源程序发过去,C++ MFC ODBC实现

用struct