恩,今天在看到有人问这个问题
题目是如下,代码可以大家一起学习一下。
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;
}