文件操作实验报告.docx
- 文档编号:10780941
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:15
- 大小:116.50KB
文件操作实验报告.docx
《文件操作实验报告.docx》由会员分享,可在线阅读,更多相关《文件操作实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
文件操作实验报告
嘉应学院计算机学院
实验报告
课程名称
程序设计基础
实验名称
实验地点
指导老师
实验时间
提交时间
班级
姓名
座号
一、实验目的和要求
1、了解文件和文件指针的概念。
2、学会使用文件操作函数实现对文件打开、关闭、读、写等操作。
3、学会对数据文件进行简单的操作。
二、实验环境和方法
实验方法:
(一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。
(二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。
(三)根据实验内容,编译程序。
实验环境:
WindowsxpVisualC++6.0
三、实验内容及过程描述
实验内容:
编译以下题目的程序并调试运行。
1、有5个学生,每个学生有3门课成绩、从键盘输入5个学生数据,计算出平均成绩,将原有数据和和计算出的平均分数存在磁盘文件stud中。
设5名学生的学号、姓名和3门课成绩如下:
10101Wang89,98,67.5
10103Li60,80,90
10106Sum75.5,91.5,99
10110Ling100,50,62.5
10113Yuan58,68,71
在向文件stud写入数据后,应检查验证stud文件的内容是否正确。
2、将上题stud文件中的数据按平均分进行排序处理,将已排序的学生数据存入一个新的文件stu_sort中。
在向文件stu_sort写入数据后,应检查验证stu_sort文件的内容是否正确。
3、将上题已排序的学生成绩文件进行插入处理。
插入一个学生的3门课成绩。
程序先计算插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新的文件。
要插入的数据位
10108Xin90,95,60
在想新文件stu_new写入数据后,应检查验证stu_new文件的内容是否正确。
实验步骤:
1进入VisualC++6.0集成环境。
2输入自己编好的程序。
3检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。
4进行编译和连接。
如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提示找到出错位置和原因,加以改正。
再进行编译,如此反复直到不出错为止。
5运行程序并分析运行结果是否合理。
在运行是要注意当输入不同的数据时所得结果是否正确,应运行多次,分别检查在不同情况下结果是否正确。
以下是各题源代码:
1、有5个学生,每个学生有3门课成绩、从键盘输入5个学生数据,计算出平均成绩,将原有数据和和计算出的平均分数存在磁盘文件stud中。
#include
#defineN5
structStudent
{
intnum;
charname[5];
floatscore[3];
floatave;
}stu[N];
voidsave()
{
FILE*fp;
inti,j;
if((fp=fopen("E:
\\stu.txt","w"))==NULL)
{
printf("打开文件失败!
\n");
return;
}
for(i=0;i { if(fwrite(&stu[i],sizeof(structStudent),1,fp)! =1) printf("写入文件失败! \n"); } fclose(fp); fp=fopen("E: \\stu.txt","r"); printf("\t学号\t姓名\t第1门成绩\t第2门成绩\t第3门成绩\t平均分\n"); printf("\t---------------------------------------------------------------\n"); for(i=0;i { printf("\t%d\t%s",stu[i].num,stu[i].name); for(j=0;j<3;j++) { printf("\t%5.1f",stu[i].score[j]); } printf("\t%8.2f\n",stu[i].ave); printf("\t--------------------------------------------------------------\n"); } } intmain() { inti,j; floatsum=0; printf("\t\t\t*******输入学生数据*******\n"); for(i=0;i { printf("\t请输入第%d位学生的数据: \n",i+1); printf("\t学号: "); scanf("%d",&stu[i].num); printf("\t姓名: "); scanf("%s",stu[i].name); for(j=0;j<3;j++) { printf("\t第%d门课成绩: ",j+1); scanf("%f",&stu[i].score[j]); sum+=stu[i].score[j]; } stu[i].ave=sum/3.0; printf("\t-----------------------------------\n"); } save(); } { printf("\t%5.1f",stu[i].score[j]); } printf("\t%8.2f\n",stu[i].ave); printf("\t--------------------------------------------------------------\n"); } } intmain() { inti,j; floatsum=0; printf("\t\t\t*******输入学生数据*******\n"); for(i=0;i { printf("\t请输入第%d位学生的数据: \n",i+1); printf("\t学号: "); scanf("%d",&stu[i].num); printf("\t姓名: "); scanf("%s",stu[i].name); for(j=0;j<3;j++) { printf("\t第%d门课成绩: ",j+1); scanf("%f",&stu[i].score[j]); sum+=stu[i].score[j]; } stu[i].ave=sum/3.0; printf("\t-----------------------------------\n"); } save(); } 2、将上题stud文件中的数据按平均分进行排序处理,将已排序的学生数据存入一个新的文件stu_sort中。 #include #include #defineN5 structStudent { intnum; charname[5]; floatscore[3]; floatave; }stu[N],temp; intmain() { FILE*fp; inti,j,k; if((fp=fopen("E: \\stu.txt","r"))==NULL) { printf("打开文件失败! \n"); exit(0); } printf("原数据为: \n"); printf("\t学号\t姓名\t第1门成绩\t第2门成绩\t第3门成绩\t平均分\n"); for(i=0;i { fread(&stu[i],sizeof(structStudent),1,fp); printf("\t%d\t%s",stu[i].num,stu[i].name); for(j=0;j<3;j++) { printf("\t%5.1f",stu[i].score[j]); } printf("\t%8.2f\n",stu[i].ave); printf("\t--------------------------------------------------------------\n"); } fclose(fp); printf("\n"); for(i=0;i { k=i; for(j=i+1;j if(stu[j].ave>stu[k].ave)k=j; temp=stu[i]; stu[i]=stu[k]; stu[k]=temp; } if((fp=fopen("E: \\stu_sort.txt","w"))==NULL) { printf("打开文件失败! \n"); exit(0); } for(i=0;i if(fwrite(&stu[i],sizeof(structStudent),1,fp)! =1) printf("写入文件失败! \n"); fclose(fp); fp=fopen("E: \\stu_sort.txt","r"); printf("排序结果为: \n"); printf("\t学号\t姓名\t第1门成绩\t第2门成绩\t第3门成绩\t平均分\n"); printf("\t---------------------------------------------------------------\n"); for(i=0;i { printf("\t%d\t%s",stu[i].num,stu[i].name); for(j=0;j<3;j++) { printf("\t%5.1f",stu[i].score[j]); } printf("\t%8.2f\n",stu[i].ave); printf("\t--------------------------------------------------------------\n"); } } 3、将上题已排序的学生成绩文件进行插入处理。 插入一个学生的3门课成绩。 程序先计算插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新的文件。 #include #include #defineN6 structStudent { intnum; charname[5]; floatscore[3]; floatave; }stu[N],s,temp; intmain() { FILE*fp; inti,j,k; floatsum=0; if((fp=fopen("E: \\stu_sort.txt","r"))==NULL) { printf("打开文件失败! \n"); exit(0); } printf("原数据为: \n"); printf("\t学号\t姓名\t第1门成绩\t第2门成绩\t第3门成绩\t平均分\n"); for(i=0;i { fread(&stu[i],sizeof(structStudent),1,fp); printf("\t%d\t%s",stu[i].num,stu[i].name); for(j=0;j<3;j++) { printf("\t%5.1f",stu[i].score[j]); } printf("\t%8.2f\n",stu[i].ave); printf("\t--------------------------------------------------------------\n"); } fclose(fp); printf("请输入要插入的学生数据: \n"); printf("\t学号: "); scanf("%d",&s.num); printf("\t姓名: "); scanf("%s",&s.name); for(j=0;j<3;j++) { printf("\t第%d门课成绩: ",j+1); scanf("%f",&s.score[j]); sum+=s.score[j]; } s.ave=sum/3.0; printf("\t------------------------------\n"); for(i=0;i { if(s.ave k=i; } for(i=N-1;i>=k;i--) stu[i+1]=stu[i]; stu[k+1]=s; if((fp=fopen("E: \\stu_new.txt","w"))==NULL) { printf("打开文件失败! \n"); exit(0); } for(i=0;i if(fwrite(&stu[i],sizeof(structStudent),1,fp)! =1) printf("写入文件失败! \n"); fclose(fp); fp=fopen("E: \\stu_new.txt","r"); printf("新的结果为: \n"); printf("\t学号\t姓名\t第1门成绩\t第2门成绩\t第3门成绩\t平均分\n"); printf("\t---------------------------------------------------------------\n"); for(i=0;i { printf("\t%d\t%s",stu[i].num,stu[i].name); for(j=0;j<3;j++) { printf("\t%5.1f",stu[i].score[j]); } printf("\t%8.2f\n",stu[i].ave); printf("\t--------------------------------------------------------------\n"); } } 四、实验结果: 1、有5个学生,每个学生有3门课成绩、从键盘输入5个学生数据,计算出平均成绩,将原有数据和和计算出的平均分数存在磁盘文件stud中。 以上是输入数据,以下是输出结果: 2、将上题stud文件中的数据按平均分进行排序处理,将已排序的学生数据存入一个新的文件stu_sort中。 3、将上题已排序的学生成绩文件进行插入处理。 插入一个学生的3门课成绩。 程序先计算插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新的文件。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文件 操作 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)