学生成绩管理系统,该怎么处理
发布时间: 2013-09-12 22:07:04 作者: rapoo
学生成绩管理系统
现有学生成绩信息文件1(1.txt),内容如下
姓名 学号 语文 数学 英语
张明明 01 67 78 82
李成友 02 78 91 88
张辉灿 03 68 82 56
王露 04 56 45 77
陈东明 05 67 38 47
…. .. .. .. …
学生成绩信息文件2(2.txt),内容如下:
姓名 学号 语文 数学 英语
陈果 31 57 68 82
李华明 32 88 90 68
张明东 33 48 42 56
李明国 34 50 45 87
陈道亮 35 47 58 77
…. .. .. .. …
试编写一管理系统,要求如下:
①实现对两个文件数据进行合并,生成新文件3.txt;
②抽取出三科成绩中有补考的学生并保存在一个新文件4.tx;
③对合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实现);
④输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现);
⑤要求使用结构体,链或数组等实现上述要求;
⑥采用多种方法且算法正确者,可适当加分。
实现功能:输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出。
数据 结构 合并 管理 算法
[解决办法]
打断点,调试,跟踪,这些你得自己多调调。
乱码一般是未初始化或者指针指向错误。
[解决办法]
#include "stdafx.h"
#include <iostream.h>
struct stu
{
char name[20];
int xuehao;
int yuwen;
int shuxue;
int yingyu;
}st1[5],st2[5],st3[10],*sst1,*sst2,*sst3;
int main(int argc, char* argv[])
{
sst1=st1;
sst2=st2;
sst3=st3;
FILE *fp3;
if ((fp3=fopen("E:\\3.txt","wb+"))==NULL)
{
printf("cannot open file3!\n");
}
FILE *fp1;
if ((fp1=fopen("E:\\1.txt","rb"))==NULL)
{
printf("cannot open file1!!!\n");
}
fread(sst3,sizeof(struct stu),6,fp1);
printf("%s%2d%3d%4d%5d%6d\n",sst3->name,sst3->xuehao,sst3->yuwen,sst3->shuxue,sst3->yingyu);
fwrite(sst3,sizeof(struct stu),6,fp3);
fclose(fp1);
FILE *fp2;
if ((fp2=fopen("E:\\2.txt","rb+"))==NULL)
{
printf("cannot open file2!\n");
}
fread(sst3,sizeof(struct stu),6,fp2);
printf("%s%2d%3d%4d%5d%6d\n",sst3->name,sst3->xuehao,sst3->yuwen,sst3->shuxue,sst3->yingyu);
fclose(fp2);
fseek(fp3,sizeof(struct stu),2);
fwrite(sst3,sizeof(struct stu),6,fp3);
fclose(fp3);
//cout<<"haha\rxi"<<endl;
return 0;
}
[解决办法]是不是要文件字节对齐?
[解决办法]可以,不过现在没时间呢!很抱歉~