《C语言程序设计项目八.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计项目八.ppt(18页珍藏版)》请在人人文库网上搜索。
1、项目工程8学生成绩文件管理,项目工程要求将某一级40名学生的相关数据存入文件,从文件中读出,将该数据按平均分数由高到低的顺序排列,输出到屏幕上和其他文件上。 第二,项目分析要完成学生成绩的档案管理,首先要了解档案的概念,然后学习档案的打开与关闭;第二,档案的读写是必要的。 因此,将该项目工程分为两个塔斯克进行介绍。 任务1是把学生的成绩按顺序读写文件任务2是把学生的成绩随机读写文件。 任务1把学生的成绩按顺序读写在文件上,一、问题方案(1)有一个班的修订40名学生通过数学考试,现在把这个班的学生成绩保存在文件上,便于今后的管理,做个计程仪计划来实现。 (2)除了上述问题之外,还将文档中保存的数。
2、据读出并输出至显视器。 二、具体实现#include stdio.h main() int a10、I、b10; 文件* p; /*定义文件指针定类型的变量*/p=fopen(“aaa.txt”、“w”); /*文本文件*/for(i=0; i10; (I )关闭扫描(% d,/文件,p=fopen(“aaa.txt,r ); /*打开用于读取文本文件的文件将*/*aaa.txt文件中的数据读取到数组b中*/for(i=0; i10; I )打开和关闭i ) fscanf(p,%d,1,文件; 2、文件的读写、三、相关知识、(一)文件的开放关闭。 1 .文件概念“文件”是记录在外部介质上的数据。
3、的有序集合。 从文件的编码体系来看,文件分为ASCII查询密码文件和二进制代码文件。 2 .文件类型指针FILE *指针变量标识符示例: FILE *p; 一般习惯把p称为指向一个文件的指针。 在进行读写操作之前打开文件,使用完毕后关闭文件。 3 .打开和关闭文件(1)打开文件(fopen ()函数) fopen ()函数打开以FILE *p p=fopen (使用文件名、文件方法)()的格式调用的文件if (fp=fopen(“d:aa.dat”、“r”)打印机(“ncantopenfile”! ”“这是一个很好的例子。” ); exit(1)、(2)文件的读写、(2)文件的读写fprint。
4、f ()函数和fscanf ()函数调用格式: fscanf (文件指针、格式字符串、输入表列) fprintf FILE *p; p=开放(AAA.txt,w ) :关闭(I=0; i10; i ) scanf(%d,/*将输入的成绩以5d的格式保存到文件aaa.txt中*/,for(i=0; i10; 打印(p,ai ); fclose(p ); /关闭文件p=fopen(aaa.txt,r ); 将aaa.txt文件中的数据读取到数组b中*/for(i=0; i10; I )分析i ) fscanf(p,%d,问题方案中的c-plum,【例8-1】从牛鼻子板输入学生的姓名和数学、英语、语。
5、文3门成绩,补正该学生的平均分,将该学生的相关信息写入文档cc.txt读入cc.txt文件的数据分析: (1)一个字符数组存储名字,三个整数变量存储三堂课的成绩,一个实数变量存储平均分;(2)将该同学的名字、三门课的成绩读入牛鼻子板,再订正平均分;(3)姓名、三门课的成绩, 将平均点写入以写入形式打开的文本文件cc.txt,关闭该文件(以只读方式打开cc.txt文件后,将该文件的数据读入指定的变量(5)向显视器输出变量# include stdio.h # inn 有一个exit ()函数,其中使用此库函数*/main() char name10和n10。 英制、英制、细胞、m1、e1、c1;。
6、 浮动avg、a1; 文件* FP; 以写入格式打印文件cc.txt*/if(fp=fopen(cc.txt,w )=null (无法打开文件n ):exit (1); printf (请输入这个学生的数据n )/*输入那个同学的名字,成绩,把那个同学的平均分*/scanf(%s%d%d%d,name,/*那个同学的名字,三门的成绩,平均分写入文件aa.txt。 fclose(fp ); 文件cc.txt*/if(fp=fopen(cc.txt,r ) )=空打印(无法打开文件n ):exit (1); /*将该同学的姓名、三门成绩、平均分读入指定变量*/fscanf(fp,%s%d%d%d%。
7、f,n1,【例8-2】从牛鼻子板上输入10个,分析:写这个问题的构想是: (1)写10个同学的名字, (2)在牛鼻子板上读入10个同学的名字,3个科目的成绩,对每个同学的平均分进行订正;(3)将10个同学的名字,三门课的成绩及平均分写在文本文件aa.txt中包括stdio.h #包括程序. h/*定义结构* /结构图形名称10; 英匹特、英格丽斯、陈斯; 浮动avg; 主() stu student 10,*pp; 文件* FP; 英特尔; PP=史蒂文; 以写入格式打印文件aa.txt*/if(fp=fopen(aa.txt,w )=null (无法打开文件n ):exit (1); pri。
8、ntf (请输入10名学生的数据n )/*输入10名同学的名字、成绩,各同学的平均分*/for(i=0; 关闭iname、/文件,输入的数据如下:打开项目aa.txt、【例8-3】读出上例的文本文件aa.txt的数据,将读出的数据输出到显示器。 分析: (1)定义存储读取数据的结构数组(2)以只读方式打开文件aa.txt。 (3)将文本文件aa.txt的数据读入到构造体数组中(4)将该数组输出到显视器,# include stdio.h # includeprocess.h/*有exit ()函数,用该库函数*/*表示构造体*/structstuchhes 英匹特、英格丽斯、陈斯; 浮动avg。
9、; 主() stu student 10,*pp; 英特尔; 文件* FP; /*以读取的形式打印文件aa.txt*/if(fp=fopen(aa.txt,r ) )=null (不能打开文件n ); exit(1); PP=史蒂文; 从、/*文件中将10个同学的名字、3个科目的成绩、平均分读入结构数组student */for (I=0; iname,显然,输出的结果是上述例子的数据。 2. fread ()和fwrite ()函数同时读写数据定径套,例如数组元素和结构变量的值。 其投入产出函数是二进制形式的投入产出函数,投入产出不需要进行数据的转换,投入产出速度相对较快。读写封摇滾乐函数调。
10、用的一般形式是fread(buffer,size,count,fp ); 写入(缓冲、大小、计数、fp ); 说明:关于buffer:fread (),指读取的数据的保存位置fwrite时,是输出数据的地址。size读写数据时,每1数据的大小count :读写数据的笔数fp :文件指针、for(i=0; 名称,自由(YY,sizeof (结构步骤),10,fp ); for(i=0; 名称、对匹配、对引擎列表、对链路、对avg ); 写入(PP、尺寸(结构)、10、fp ); 由fread ()、fwrite ()函数合成了【例8-2】【例8-3】的程序包括: # include stdio.。
11、h # include process.h int math、englist、chinese; 浮动avg; 主()步骤10、步骤10、*yy、*pp; 文件* FP; 英特尔; PP=史蒂文; 打印机(无法打开文件n ):exit (1); printf (请输入10个学生的数据for(i=0; 名字,yy=ss; /*一次读取10个人的同级生资料*/fread(yy,sizeof(struct stu ),10,fp ); /*将结果*/printf显示在显示器上(读取文件后的数据为:n) for(i=0; 名称、YY匹配、YY工程师、YY链接、yy-avg ); fclose(fp );。
12、 student读入牛鼻子板,ss读入文件,以写入形式打开二进制文件aa.dat,一次以写入形式打开10个数据,以读入形式打开二进制文件aa.dat,一次读取10个数据,3. feof 功能是调用的一般形式: feof (文件指针)、【例8-4】打开在例8-2中创建的文件aa.txt,输入名称,在aa.txt文件中查找该学生,找到该学生的所有数据后输出,如果没有输入的名称给予打开的文件aa.txt (2)输入要检索的名称(3)读取记录查询密码,检查该记录查询密码的名称是否与检索的名称一致,如果一致则输出该记录查询密码。 (4)如果不是文件的末尾,则检查(3)、(5)所有的记录查询密码,如果没有。
13、该记录查询密码,则重复输出相应的信息。 #包括stdio.h #包括流程. h #包括字符串. hstructstucharname 10。 英匹特、英格丽斯、陈斯; 浮动avg; 主()步骤10、*pp、ss10、*yy; char nn10; 文件* FP; 英特尔; i=0; fp=fopen(aa.txt,r ) :打印(请输入要搜索的名称: ) gets (nn ); while (! feof(fp) fscanf(fp,%s%d%d%d%f,studenti.name,塔斯克2将学生的成绩随机地读写到文件中,另一方面,问题情景是从牛鼻子板输入一个级别440的第2、4、6、8、10。
14、个学生的分析:例8-2、例8-3的文件的读写全部按顺序进行,但本塔斯克的问题是要求随机读写,即按照要求进行读写。 也就是说,人工控制当前文件指针的移动,使文件指针能够自由指向我们想要指向的位置,即所谓的文件定位和随机读写,而不是像以往那样以物理顺序一个一个移动。 二、具体实现(假设只有10名学生执行计划)、# include stdio.h # include process.hstructstucharname 10; 英匹特、恩格列斯特、陈斯; 浮动avg; 主()步骤10、*pp、ss10、*yy; 文件* FP; 英特尔; PP=史蒂文; if(fp=fopen(aa.txt,WB )。
15、 )=空打印(无法打开文件n )。 exit(1); printf (请输入10个学生的数据for(i=0; iname、知识点为: 1、文件定位2 .文件的随机读写、三、相关知识、随机读写和前面的文字(字节)读完后,不一定需要后续的文字(字节)读写,文件内任意位置需要的文字、指针指向文件开头的函数(rewind ()函数)调用的形式: rewind (文件指针)功能:将文件指针重新移动到文件开头的位置2. fseek ()函数fseek (文件指针、片偏移量、开始点功能:用于移动文件内部位置的指针移动量如果是正数,则指针向地址的高度方向移动。 如果为负数,则指针向地址低的方向移动。 如果位移量是常数,后缀l的起点必须是0、1或2。 以下三个符号常数的起点分别表示符号意义0 SEEK_SET文件开始1 SEEK_CUR当前文件指针位置2 SEEK_END文件的末尾,fseek ()函数通常用于二进制文件,因为文本文件经过字符转换其含义是将位置指针移动到离开文件开头100字节的位置。 fseek(fp,20L,1 ); 将位置指针移动到距离当前位置20字节的位置(向地址高的方向移动)。 fseek(fp,-20L,1 ); 将位置指针移动到距离当前位置20字节的位置(向地址低的方向移动)。 fseek(fp、-30L、2。