标题:文件的难题!!!求老师更正。
只看楼主
糖包包
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2011-3-28
结帖率:91.67%
已结贴  问题点数:10 回复次数:4 
文件的难题!!!求老师更正。
题目是:
编写一个程序,用来从键盘读取本班同学的期末成绩,并把该成绩保存在score.dat文件中。
Score.dat文件内容如下:
number Chinese English C
1 87 76 67
2 67 87 65
3 76 88 87
4 46 89 88

我写的
程序代码:
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
    ofstream ofile("e:\\score.dat");
    if(!ofile)
        cout<<"打开的文件是错误的"<<endl;
    else
    {
        ofile<<"number"<<"Chinese"<<"English"<<"C"<<endl;
        ofile<<"1"<<"87"<<"76"<<"67"<<endl;
        ofile<<"2"<<"67"<<"87"<<"65"<<endl;
        ofile<<"3"<<"76"<<"88"<<"87"<<endl;
        ofile<<"4"<<"46"<<"89"<<"88"<<endl;
    }
}
可是老师说用键盘读取的意思是要用键盘输入成绩再存入文件中!!不会啊!!!求解。
怎么从键盘输入成绩啊,那还有一大堆字母要怎么处理啊.....
还有怎么用这个数据文件计算其平均成绩和期末成绩啊,还要输出成绩不及格的学生的学号!!!这不是太难了嘛!~~~

完全不会,我要崩溃了!!!!
搜索更多相关主题的帖子: English Chinese 老师 同学 
2011-06-15 15:36
糖包包
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2011-3-28
得分:0 
程序代码:
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
    ofstream ofile("e:\\score.dat");
    if(!ofile)
        cout<<"打开的文件是错误的";
    else
    {
  int a=1;
  while(a)
  {
   cout<<"Input student number:";
   cin>>a;
   ofile<<a;
   cout<<"Input score of Chinese:";
   cin>>a;
   ofile<<a;
   cout<<"Input score of English:";
   cin>>a;
   ofile<<a;
   cout<<"Input score of C:";
   cin>>a;
   ofile<<a<<endl;
   cout<<"Do you continue?   1.Yes;  0.No.\n";
   cin>>a;
  }
  ofile.close();

 }
}


请问一下这样行吗?产生文件dat.
2011-06-15 15:43
Pirelo
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:118
专家分:550
注 册:2011-1-28
得分:10 
回复 2楼 糖包包
可以的
2011-06-15 17:24
糖包包
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2011-3-28
得分:0 
恩,今天在看到有人问这个问题
题目是如下,代码可以大家一起学习一下。

1.编写一个程序,用来从键盘读取本班同学的期末成绩,并把该成绩保存在score.dat文件中。Score.dat文件内容如下:
number   Chinese   English   C
1        87        76        67
2        67        87        65
3        76        88        87
4        46        89        88

2.编写一个程序,用来读取上题创建的score.dat数据文件,并计算其平均成绩和期末总成绩。把计算的结果存在statistics.dat文件中,并输出成绩有不及格的学生的学号。其格式如下:
number Chinese English   C     total   average
1      87      76        67    230     76.67
2      67      87        65    219     73
3      76      88        87    251     83.67
4      46      89        88    223     74.3
程序代码:
终于搞定!!!!
首先你的创建一个工程,然后创建一个.c文件,将下面的代码放入其中,其次你的创建两个.dat文件在工程中,文件名分别是score.dat和statistic.dat,score.dat文件用于将存放你输入的学生成绩,另一个用于保存处理后的成绩单

#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <stdlib.h>
#define MAXSIZE 10
using namespace std;
//定义学生结构体,用于存储学号和成绩
typedef struct student
{

 int number;

 int chinese,english,CLanguage;

 int total;

 float avarge;
}STUDENT;
STUDENT array[MAXSIZE];

int writescore(char * filename);//将成绩输出到文本文件
int readscore(char * filename);//读出成绩,并进行计算
//主函数
int main()
{

 char * file;

 file=(char *)malloc(sizeof(char));

 cout<<"input filename: "<<endl;
  cin>>file;

 writescore(file);

 readscore(file);

 return 0;

}
//输出成绩到文本函数定义
int writescore(char * filename)
{

 int students;//总的学生个数
 int chinese,english,c;//各个成绩
 ofstream outfile(filename,ios::out);

 if(!outfile)

 {
  cerr<<"open error!"<<endl;
  exit(1);

 }

 cout<<"please input number of students: "<<endl;

 cin>>students;//输入学生个数
 outfile<<students<<endl;

 outfile<<"number"<<setw(20)<<"chinese"<<setw(20)<<"english"<<setw(20)<<"cLanguage"<<endl;

 for(int i=0;i<students;i++)

 {
  cout<<"please input the students' score of chinese english and c:"<<endl;
  cin>>chinese>>english>>c;
  outfile<<i+1<<setw(20)<<chinese<<setw(20)<<english<<setw(20)<<c<<endl;

 }

 outfile.close();

 return 0;
}
//读出成绩并进行处理函数的详细定义
int readscore(char * filename)
{

 int i=0;

 int j;

 string num,chin,eng,C;

 ifstream infile(filename,ios::in);

 if(!infile)

 {
  cerr<<"open error."<<endl;
  exit(1);

 }

 infile>>i;//获取总的学生数目
 infile>>num>>chin>>eng>>C;

 //分别获取每个学生的学号,和各项成绩,并进行相应的计算
 for(int k=0;k<i;k++)

 {

 
  infile>>array[k].number>>array[k].chinese>>array[k].english>>array[k].CLanguage;
  array[k].total = array[k].chinese+array[k].english+array[k].CLanguage;
  array[k].avarge=array[k].total/3;

 

 }

 infile.close();

 //将处理后的成绩单输入到statistics文本文件中
 ofstream file2("statistic.dat",ios::out);

 if(!file2)

 {
  cerr<<"open error!"<<endl;
  exit(1);

 }


 file2<<num<<setw(20)<<chin<<setw(20)<<eng<<setw(20)<<C<<setw(20)<<"total"<<setw(20)<<"average"<<endl;

 for(j=0;j<i;j++){

 
  file2<<array[j].number<<setw(20)<<array[j].chinese<<setw(20)<<
     array[j].english<<setw(20)<<array[j].CLanguage<<setw(20)<<array[j].total<<setw(20)<<array[j].avarge<<endl;

 

 }

 //判断成绩不及格的学生,并输出
 for(j=0;j<i;j++)

 {
  if(array[j].chinese<60||array[j].english<60||array[j].CLanguage<60)
   file2<<"Number "<<array[j].number<<" student have test failed"<<endl;


 }

 file2.close();



 return 0;

}


2011-06-15 23:11
乖乖承诺
Rank: 2
等 级:论坛游民
帖 子:5
专家分:18
注 册:2011-6-10
得分:0 
这个学习了

戏子如画,一生天涯。
2011-06-17 11:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-342957-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.070795 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved