C++第11周项目5——体验文件操作

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565


【项目5-体验文件操作】

  先阅读《文件操作初体验》。文件english.dat(含10000个数据的文件在BB平台。为方便校外读者,本文后附100个数据,自行复制粘贴到记事本中保存为文件english.dat))中给出的是2012级10000名新生入学英语分级考试全校同学的成绩。编程序,求出这次考试的平均成绩,并统计各分数段的人数(优秀:≥90,良好:≥80,中等:≥70,及格:≥60,不及格:<60)。运行结果如图所示。

  
  提示:本任务完成困难,可以考虑预做下面的练习
  练习1:从文件中读出学生的成绩,输出最高、最低,以及平均成绩(平均成绩为小数)。
  练习2:从文件中读出学生的成绩,统计90分以上学生的人数并输出。
  拓展1:将输出界面改良下,显示成下面的样子(仅变输出方式)

  
  拓展2:将统计结果保存到数据文件statictic.dat中(提示:要写入文件了)


【参考解答】

项目任务参考代码:

#include <fstream>   //操作文件必写
#include<iostream>
using namespace std;
int main( )
{	
	int s,i,r; 
	int a=0, b=0,c=0,d=0,e=0;//分别代表优秀、良好、中等、及格、不及格人数
	double sum=0,ave;
	//以输入的方式(ios::in)打开文件
	ifstream infile("english.dat",ios::in);
	if(!infile)   				
	{
		cerr<<"open error!"<<endl;
		exit(1);
	}
	for(i=0;i<10000;i++)
	{
		infile>>s;
		sum+=s;
		r=s/10;  //r用于分出“档次”
		switch(r)
		{
		case 10:
		case 9: 
			a++; 
			break;
		case 8: 
			b++; 
			break;
		case 7: 
			c++; 
			break;
		case 6: 
			d++; 
			break;
		default: 
			e++; 
			break;
		}
  	}
	infile.close(); 		 //读入完毕要关闭文件
	//下面对数据的操作和文件就没有关系了,本例输出求得的最大值
	ave=sum/10000;
	cout<<"平均成绩为:"<<ave<<endl;
	cout<<"优秀人数:"<<a<<endl;
	cout<<"良好人数:"<<b<<endl;
	cout<<"中等人数:"<<c<<endl;
	cout<<"及格人数:"<<d<<endl;
	cout<<"不及格人数:"<<e<<endl;
	return 0;
}  

拓展1参考代码:

#include <fstream>   //操作文件必写
#include<iostream>
using namespace std;
int main( )
{	
	int s,i,r; 
	int a=0, b=0,c=0,d=0,e=0;//分别代表优秀、良好、中等、及格、不及格人数
	double sum=0,ave;
	//以输入的方式(ios::in)打开文件
	ifstream infile("english.dat",ios::in);
	if(!infile)   				
	{
		cerr<<"open error!"<<endl;
		exit(1);
	}
	for(i=0;i<10000;i++)
	{
		infile>>s;
		sum+=s;
		r=s/10;  //r用于分出“档次”
		switch(r)
		{
		case 10:
		case 9: 
			a++; 
			break;
		case 8: 
			b++; 
			break;
		case 7: 
			c++; 
			break;
		case 6: 
			d++; 
			break;
		default: 
			e++; 
			break;
		}
  		}
	infile.close(); 		 
	
	ave=sum/10000;
	int max,l; //将存储这几个分数段中的最多人数,l是输出“进度条”的长度
	max=a;
	if(max<b) max=b;
	if(max<c) max=c;
	if(max<d) max=d;
	if(max<e) max=e;
	cout<<"平均成绩为:"<<ave<<endl;
	//人数最多的(max)输出20个格子,据此可算出各档需要多少格子

	cout<<"优秀 ";
	l=double(a)/max*50;
	for(i=0;i<l;++i) 
		cout<<'#';
	cout<<"  "<<a<<endl;
	cout<<"良好 ";
	l=double(b)/max*50;
	for(i=0;i<l;++i) 
		cout<<'#';
	cout<<"  "<<b<<endl;
	cout<<"中等 ";
	l=double(c)/max*50;
	for(i=0;i<l;++i) 
		cout<<'#';
	cout<<"  "<<c<<endl;
	cout<<"及格 ";
	l=double(d)/max*50;
	for(i=0;i<l;++i) 
		cout<<'#';
	cout<<"  "<<d<<endl;
	cout<<"挂科 ";
	l=double(e)/max*50;
	for(i=0;i<l;++i) 
		cout<<'#';
	cout<<"  "<<e<<endl;
	return 0;
}  


附:本文后附100个数据,自行复制粘贴到记事本中保存为文件english.dat,以便于完成练习。
66
77
97
65
69
79
79
77
69
74
90
73
64
69
69
69
74
71
83
96
87
88
62
76
65
51
66
73
77
78
73
52
78
75
73
60
69
56
76
68
76
77
87
56
61
62
69
64
73
68
62
62
79
88
79
77
71
57
88
69
71
78
74
67
86
55
86
78
81
52
66
67
68
85
72
74
84
64
61
76
71
64
91
72
82
60
70
64
84
75
67
67
85
70
59
72
87
65
55
77

  


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
包括该书中所有示例的源程序,所有示例均在Windows XP SP1 + Visual C++.NET环境下调试通过。<br>内容目录如下:<br>第2章 定制窗口<br>2.2 示例——设置窗口风格<br>2.3.1 示例——创建六边形窗口<br>2.3.2 示例——创建异形窗口<br>第3章 菜单和控制条高级应用<br>3.1.3 示例——菜单编程<br>3.2.3 示例——工具栏编程<br>3.3.3 示例——状态栏编程<br>3.5.2 示例——为工具栏添加皮肤<br>第5章 系统编程<br>5.1.4 示例——操作注册表<br>5.2.2 示例——系统托盘编程<br>5.3.3 示例——鼠标钩子程序<br>5.4.3 示例——文件分割器<br>第6章 多文档/多视图编程<br>6.2.4 示例1——单文档多视<br>6.2.5 示例2——单文档多视<br>第7章 对话框高级应用<br>7.2.2 示例——实现无模式对话框<br>7.4.5 示例——使用模式属性表及向导属性表<br>7.5.4 示例——鼠标敏感文字<br>第8章 GDI+图形编程<br>本章示例通常含有多段被注释的演示代码,请读者查看源文件时通过取消注释的方法尝试各段代码的功能。注意其中gra、TextDemo、DrawImageDemo和MetafileDemo文件夹中的源文件代码在本章中未作为独立的节出现。<br>8.4.6 示例——图像浏览器<br>第9章 多线程编程<br>9.6.1 示例——使用全局变量通信<br>9.6.2 示例——使用Windows消息通信<br>9.7.5 示例——使用CriticalSection对象<br>9.7.7 示例——使用Mutex对象<br>9.7.9 示例——使用Semaphore对象<br>第10章 DLL编程<br>10.4 示例——创建和使用Win32DLL<br>10.5 示例——创建和使用MFC DLL<br>第11章 ATL编程<br>11.2 示例——简单的非属性化ATL项目<br>11.3 示例——使用ATL开发COM组件<br>第12章 STL编程<br>12.6 示例——list编程<br>第13章 网络编程<br>13.1.4 示例——网上聊天应用程序<br>13.2.5 示例——简单的网页浏览器<br>13.3.3 示例——ISAPI服务器扩展编程<br>第14章 数据库编程<br>14.3.6 示例——ODBC数据库编程<br>14.5.5 示例——ADO编程<br>第15章 HTML帮助系统编程<br>15.3 示例——创建HTML帮助文件<br>15.5.2 示例——区分上下文帮助<br>第16章 安装和部署项目<br>16.4 示例——用安装程序向导创建安装项目<br>16.5 示例——部署应用程序<br>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迂者-贺利坚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值