资源描述:
《实现对两个文件数据进行合并生成新文件3.txt》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、要用的请复制,要转载的请注明,要问的免了题目如下25.学生成绩管理系统现有学生成绩信息文件1.txt,内容如下姓名学号语文数学英语张明明01677882李成友02789188张辉灿03688256王露04564577陈东明05673847学生成绩信息文件2.txt,内容如下:姓名学号语文数学英语陈果31576882李华明32889068张明东33484256李明国34504587陈道亮35475877试编写一管理系统,要求如下:1)实现对两个文件数据进行合并,生成新文件3.txt2)抽取出三科成绩中有补考的学
2、生并保存在一个新文件4.txt3)合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现)4)输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)5)要求使用结构体,链或数组等实现上述要求.6)采用多种方法且算法正确者,可适当加分.源代码如下#include#include#includechartop[50];//成绩文件顶部的标题用top保存typedefstructstudent//单个学生成绩的记录{c
3、harname[10];//姓名intnumber;//学号intchinese;//语文intmath;//数学intenglish;//英语structstudent*next;}student,*gradelist;gradelistfileread(char*adress)//读取成绩文件{FILE*fp;if((fp=fopen(adress,"r"))==NULL)//打开文件{printf("文件打开出错");exit(0);}gradelistfile=(student*)malloc(siz
4、eof(student));//申请空间file->next=NULL;student*p=file;//操作指针intn=0;//循环标记,具体作用是在第一次循环时方便处理标题while(!feof(fp)){if(n==0){fgets(top,50,fp);//处理标题,并且文件指针移到第二行}if(n==1)//申请空间{(p->next)=(student*)malloc(sizeof(student));p=p->next;p->next=NULL;}fscanf(fp,"%s%d%d%d%d",
5、p->name,&p->number,&p->chinese,&p->math,&p->english);//将文件的数据输入到链表中n=1;}if(fclose(fp))//关闭文件{printf("文件关闭失败");exit(0);}returnfile;}voidFilePrint(gradelistfile)//将成绩文件打印到屏幕上{student*p=file;printf("%s",top);//打印标题while(p->next!=NULL){printf("%6s%2d%d%d%d"
6、,p->name,p->number,p->chinese,p->math,p->english);//循环打印p=p->next;}}voidmerger()//合并文件{char*address1="1.txt",*address2="2.txt",*address3="3.txt";gradelistfile1=fileread(address1),file2=fileread(address2);FILE*fp;if((fp=fopen("3.txt","w+"))==NULL)//先新建一个3.tx
7、t,然后将1.txt和2.txt的内容输入到里面{printf("合并成绩文档失败,原因:建立文档出错");exit(0);}student*p1=file1,*p2=file2;fprintf(fp,"%s",top);//先输入标题while(p1->next!=NULL){fprintf(fp,"%6s%2d%d%d%d",p1->name,p1->number,p1->chinese,p1->math,p1->english);//输入1.txtp1=p1->next;}while(p2->nex
8、t!=NULL){fprintf(fp,"%6s%2d%d%d%d",p2->name,p2->number,p2->chinese,p2->math,p2->english);//输入2.txtp2=p2->next;}if(fclose(fp)){printf("文件关闭失败");exit(0);}}voidextract()//抽取补考的成绩记录{char*address4="4.txt"