C语言程序设计项目化教程课件第10章.ppt
1、第第10章章 项目中文件的应用项目中文件的应用 在前面的章节中,我们学习了结构体这种构造数据类型,它主要是为了存储复杂的数据,在第9章中,我们通过学生信息管理系统来实现对批量数据的处理,但这些批量数据只能在程序执行时占据内存,程序结束后即从内存消失。那么添加学生信息等操作每次都要重新执行。如何将数据永久保存起来,即将输入输出的数据以磁盘文件的形式存储起来,这些内容是本章需要解决的问题。本章将结合学生信息管理系统项目中学生信息的存储和重载,学习文件的概念、分类、文件指针和文件操作等相关知识。学习目标:理解和掌握文件的概念、文件的打开、文件的关闭;理解和掌握文件的读写操作。10.1 任务二 项目中数据的存储一、任务描述 在主函数中,通过InputStu()函数添加学生信息,添加完后,应将学生信息保存在磁盘文件中。在浏览、删除等操作中,首先要将数据读入到结构体数组中,对结构体数组进行操作,操作完成后,再将结构体数组中的数据保存到文件中。该任务将用SaveStu()函数将结构体数组存入到“list.dat”文件中,用LoadStu()函数实现将“list.dat”文件中的数据导入到结构体数组中
2、。二、任务涉及知识要点 本任务涉及到的新知识点主要有文件的打开、读写、关闭等操作。三、任务分析 实现学生信息的处理和保存,可以用LoadStu()函数和SaveStu()函数实现读取和存储。该项目中虽然定义了能够处理的最大学生数N,但是由于从文件中读取或者通过函数InputStu()输入的学生数量是不定的,所以在LoadStu()、InputStu()函数中均要统计读取或输入的学生数量。在调用SaveStu()函数进行数据保存时,也要将数组元素的个数作为实参传入,以确定要保存的数组元素个数。考虑到数据分多次录入的情况,SaveStu()可采用追加和覆盖两种方式写入文件。由于要对学生信息数组stu和学生实际人数同时进行传递,因此在函数的参数定义中采用结构体数组和指针,如void LoadStu(struct student stu,int*stu_number);,这样可以使学生信息结构体数组stu和学生人数stu_number在各个函数之间进行传递。四、任务实现各函数的定义分别为:1.学生信息的读取函数void LoadStu(struct student stu,int*stu_nu
3、mber)FILE*fp;int i=0;if(fp=fopen(list.dat,rb)=NULL)printf(不能打开文件n);return;while(fread(&stui,sizeof(struct student),1,fp)=1&iN)i+;*stu_number=i;/重置学生记录个数if(feof(fp)fclose(fp);else printf(文件读错误);fclose(fp);return;2学生信息的保存函数void SaveStu(struct student stu,int count,int flag)FILE*fp;int i;if(fp=flag?fopen(list.dat,ab):fopen(list.dat,wb)=NULL)printf(不能打开文件n);return;for(i=0;icount;i+)if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(文件写错误n);fclose(fp);3.增加学生记录函数void InputStu(struct student stu,in
4、t*stu_number)char ch=y;int count=0;while(ch=y)|(ch=Y)system(cls);printf(ntt 增加学生记录 n);printf(nntt 请输入学生信息n);printf(n学号:);scanf(%d,&stucount.no);printf(n姓名:);scanf(%s,&stucount.name);printf(n性别:);scanf(n%c,&stucount.sex);printf(n语文成绩:)scanf(%3d,&stucount.score0);printf(n数学成绩:);scanf(%3d,&stucount.score1);printf(n英语成绩:);scanf(%3d,&stucount.score2);stucount.sum=stucount.score0+stucount.score1+stucount.score2;stucount.average=stucount.sum/3.0;printf(nntt 是否输入下一个学生信息?(y/n);scanf(n%c,&ch);count+;*stu_
5、number=*stu_number+count;SaveStu(stu,count,1);/参数1表示以追加方式写入文件 return;程序说明:(1)在程序第一次执行时,应首先进行学生信息的添加,即调用InputStu()函数添加学生记录,并将录入的学生信息数据和统计的学生人数通过调用SaveStu()函数保存到list.dat文件中。浏览、删除等函数执行时均调用LoadStu()函数读取学生信息数据,处理完后,若学生信息发生了改变,则重新写入文件。为区分是添加信息还是重新保存,在SaveStu()函数的形参中,构造了一个flag标志变量,若flag=1,则添加信息并追加到数据文件中;若flag=0,则将学生的信息重新以覆盖方式保存到数据文件中。学完本章后,学生应该将SaveStu()函数的内容补充到相应的函数中去。相关的内容见附件的完整程序。(2)在LoadStu()函数中,要将学生信息读入到结构体数组中,学生人数在InputStu()函数和DeleteStu()函数中会有改变。为了使数据更安全,在程序中没有使用全局变量来定义学生的人数,而是通过指针变量stu_number来存储
《C语言程序设计项目化教程课件第10章.ppt》由会员m****u分享,可在线阅读,更多相关《C语言程序设计项目化教程课件第10章.ppt》请在八斗文库上搜索。
《MATLAB图像处理实例详解》课件Chapter_9o第9章彩色图像处理.pptx
《MATLAB图像处理实例详解》课件Chapter_6i第6章图像复原技术.pptx
《MATLAB图像处理实例详解》课件Chapter_13a第13章小波在图像处理中的应用.pptx
《Windows Server操作系统维护与管理项目教程》课件学习情境4.pptx
《MATLAB图像处理实例详解》课件Chapter_11o第11章图像特征分析.pptx
《中外广告史》课件第七章ppt.pptx
《经济学原理与应用》课件第8章ppt.pptx
《企业内部控制与制度设计(第3版)》课件项目五销售业务内部控制与制度设计.pptx
《经济学原理与应用》课件第4章ppt.pptx
《企业内部控制与制度设计(第3版)》课件项目三采购业务内部控制与制度设计.pptx
《资产评估》课件项目 八企业价值评估.ppt
《经济学原理与应用》课件第7章ppt.pptx
《人员测评原理与方法(第三版)》课件第十一章 个人资料的分析与评鉴.pptx
课件《客舱设施与服务》(模块一实操).pptx
《新编文学理论(第二版)》课件第七章.pptx
课件《客舱设施与服务》(模块三案例).pptx
《资产评估》课件项目四 机器人设备评估.ppt
《企业纳税实务(第3版)》项目一、项目二.ppt
《酒吧服务与管理(第3版)》课件模块一酒吧概述.ppt
《营销心理学》课件项目二 探索消费者的心理过程.pptx
《人员测评原理与方法(第三版)》课件第五章智能测评.pptx
《人员测评原理与方法(第三版)》课件第七章 胜任素质测评.pptx
《银行产品推广与服务》课件.pptx
《客舱设施与服务》模块二练习题答案.docx
《经济学原理与应用》课件第3章ppt.pptx
《中外广告史》课件第十章.pptx
《酒吧服务与管理(第3版)》教案教案(模块十三).docx
《跨境电商通关实务(第2版)》课件2021课件4关务技能3-报关单填制.ppt
《客舱设施与服务》模块一练习题.docx
《资产评估》课件项目一 资产评估基本理论.ppt
《经济学原理与应用》课件第1章ppt.pptx
《企业内部控制与制度设计(第3版)》同步训练参考答案.doc
拔河比赛竞赛规程.doc
班会主题策划书模板.docx
简易版个人林地承包合同范本.docx
漳州市房地产企业土地增值税清算工作规程.docx
民政慈善暨残联工作会议讲话.docx
应用系统迁移方案_1.docx
简单代理销售合同书3篇最新.docx
2022年整理—2022年整理—上学期幼儿园中班体育教案.docx
大学优秀团员申请书模板.docx
[专家观点]黎文涛-中非合作谱新章.docx
王引之汪容甫先生行状阅读答案原文及翻译.doc
弱电安防--两台程控电话交换机接入通信方案.doc
报检员考试精讲班.doc
简单房产抵押借贷合同范本.docx
2022年整理—2022年整理—三年级语文教案——捞铁牛.docx
2021-2022年收藏的精品资料高中数学说课稿:《正弦定理》优秀说课稿范例.doc
怎样培养学生阅读兴趣和良好的阅读习惯.docx
村主任述职述廉报告推荐借鉴合集.docx
招生工作总结报告.docx
工厂安全生产管理制度..docx
学校校长的年终述职报告范文锦集6篇.docx
2021-2022年收藏的精品资料造价师《案例分析》:建设期利息估算考试题.docx
护士的个人述职报告范文锦集6篇.docx
笛子声音怎样吹得圆润.docx
学生会的个人述职报告集合9篇.docx
学校门卫工作职责.docx
matlabgui生成独立可执行的程序.docx
优秀资料(2021-2022年收藏)小学五年级上册英语教学工作总结.doc
学校校本研修工作总结报告_1.docx
2022会计个人实习报告.docx
欢庆2022新年元旦演讲稿模板.docx
班级管理经历沟通.docx
学校招生办2020年度工作总结.docx
财务主管个人述职报告文.docx
大学英语四级作文万能句型.docx
大学教学管理规章制度.docx
电子商务工作计划范文.docx
2021-2022年收藏的精品资料软件工程领域工程硕士研究生培养方案.doc
2022年整理—2022年整理—三年级语文教案——哪吒闹海1.docx
欢庆元旦古诗词优选25首.docx
百年风流人物曾国藩-尔雅选修课答案-.doc
社区老年运动会致辞.docx
现代信号处理复习要点总结.doc
实用个人述职报告集合九篇.docx
活动2021年六一儿童节的策划.docx
地质雷达测量技术.docx
纳税人办理各类税务事项申请书模板的公告.docx
复旦大学专业介绍.docx
志愿者服务协议书_1.docx
ASP程序设计及应用(第二版)课件第11章Web安全.ppt
C++面向对象程序设计课件第六章 多态性与虚函数.ppt
Visual C++程序设计教程课件第5章.ppt
C++面向对象程序设计课件第三章 C++程序的结构.ppt
Windows Server 配置管理项目实训教程课件项目7 管理存储设备.ppt
ASP程序设计及应用(第二版)课件第3章VBScript脚本语言.ppt
Visual Basic程序设计简明教程(第二版)课件第1章.ppt
C语言程序设计(第二版)课件第10章.ppt
3ds max 2009基础案例教程课件3ds max 2009-6.ppt
3ds max 2009基础案例教程课件3ds max 2009-3.ppt




马上下载
