您的位置:首页 > 其它

第17周项目6 阅读文件,多文件

2015-07-29 13:15 381 查看
要求:

score.txt一些在校学生数、全名、C++、、英语成绩,利用前面定义的结构体数组,读取文件score.txt中的数据,完毕以下的应用:

在这个程序採用多文件处理:



main.cpp

#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
struct Student    //同项目1
{
char num[13];
char name[10];
int cpp;
int math;
int english;
int grade;
double average;
};
void in_line_grade(Student [],int);      //按总分降序排序
void output(Student [],int);     //输出成绩单
void in_line_award(Student [],int);  //
void cpp(Student [],int);
void name(Student [],int);
int main( )
{
int i ,stuNum=0;
//定义结构体数组
Student stu[200];
//从文件里读出数据,存放到你定义的结构体数组中;
ifstream infile("score.txt",ios::in); 	//以输入的方式打开文件
if(!infile)   				//測试是否成功打开
{
cerr<<"open error!"<<endl;
}
i=0;
while(infile>>stu[i].num>>stu[i].name>>stu[i].cpp>>stu[i].math>>stu[i].english)
{
++stuNum;
++i;
}
infile.close();

for(i=0; i<stuNum; i++)
{
stu[i].grade=stu[i].cpp+stu[i].math+stu[i].english;
stu[i].average=stu[i].grade/3.0;
}
cout<<"数据读取完成"<<endl;
int x;
do
{
cout<<"请选择以下的功能:"<<endl;
cout<<"1.输出成绩单"<<endl;
cout<<"2.按总分排序并输出成绩单"<<endl;
cout<<"3.输出获奖学金的同学的名单"<<endl;
cout<<"4.输出C++不及格的姓名和c++成绩"<<endl;
cout<<"5.输出您要查找人的成绩"<<endl;
cout<<"0.结束"<<endl;
cout<<"请输入您的选择:";
cin>>x;
switch(x)
{
case 0:break;
case 1:output(stu,stuNum);break;
case 2:in_line_grade(stu,stuNum);break;
case 3:in_line_award(stu,stuNum);break;
case 4:cpp(stu,stuNum);break;
case 5:name(stu,stuNum);break;
default :
cout<<"你的输入有误,请从新输入"<<endl;
}

}while(x!=0);
return 0;
}


c++.cpp

#include <iomanip>
#include <iostream>
using namespace std;
struct Student    //同项目1
{
char num[13];
char name[10];
int cpp;
int math;
int english;
int grade;
double average;
};

void cpp(Student s[],int n)  //输出优秀者:总分超285。单科不低于90
{
int a[200];
for(int i=0; i<n; i++)
a[i]=s[i].cpp;
int k=0;
cout<<setiosflags(ios::left);
for(int i=0; i<n; i++)
if(a[i]<60)
{
k++;
if(k%4==0)
cout<<setw(8)<<s[i].name<<setw(8)<<s[i].cpp<<endl;
else
cout<<setw(8)<<s[i].name<<setw(8)<<s[i].cpp;

}
cout<<endl;

}


in_line_award.cpp

#include <iomanip>
#include <iostream>
using namespace std;
struct Student    //同项目1
{
char num[13];
char name[10];
int cpp;
int math;
int english;
int grade;
double average;
};

void in_line_award(Student s[],int n)  //输出优秀者:总分超285,单科不低于90
{
int a[200],i;
for( i=0; i<n; i++)
a[i]=s[i].grade;
for(int i=n-1; i>=0; i--)
for(int j=n-i-2; j>=0; j--)
if(a[j]<a[j+1])
{
int k;
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
Student t;
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
int k=0;
cout<<setiosflags(ios::right);
for( i=0; k<30; i++)
if(s[i].cpp<60||s[i].math<60||s[i].english<60)
k--;
else
{
k++;
if(k%5==0)
cout<<setw(12)<<s[i].name<<endl;
else cout<<setw(12)<<s[i].name;
}
int t;
t=s[i].grade;
for(; s[i].grade==t; i++)
{
if(s[i].cpp<60||s[i].math<60||s[i].english<60)
continue;
else
{
k++;
if(k%5==0)
cout<<setw(12)<<s[i].name<<endl;
else cout<<setw(12)<<s[i].name;
}
}
cout<<endl;
}


in_line_grade.cpp

struct Student    //同项目1
{
char num[13];
char name[10];
int cpp;
int math;
int english;
int grade;
double average;
};
void output(Student [],int);     //输出成绩单

void in_line_grade(Student s[],int n)      //°´×Ü·Ö½µÐòÅÅÐò
{
int a[200];
for(int i=0; i<n; i++)
a[i]=s[i].grade;
for(int i=n-1; i>=0; i--)
for(int j=n-i-2; j>=0; j--)
if(a[j]<a[j+1])
{
int k;
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
Student t;
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
output(s,n) ;

}


name.cpp

#include <iostream>
#include <iomanip>
using namespace std;
struct Student    //同项目1
{
char num[13];
char name[10];
int cpp;
int math;
int english;
int grade;
double average;
};
void name(Student s[],int n)
{
string a[200];
for(int i=0; i<n; i++)
a[i]=s[i].num;
char Cin[20];
cout<<"请输入您要查找人的学号:";
cin>>Cin;
int i;
for(i=0; i<n; i++)
{
if(a[i]==Cin)
break;
}
if(i==n)
cout<<"抱歉,查无此人"<<endl;
else
{
cout<<"学号"<<setw(20)<<"名字"<<setw(8)<<"C++"<<setw(8)<<"数学"<<setw(8)<<"英语"<<setw(8);
cout<<"总分"<<setw(16)<<"平均成绩"<<endl;
cout<<s[i].num<<setw(12)<<s[i].name<<setw(8);
cout<<s[i].cpp<<setw(8)<<s[i].math<<setw(8)<<s[i].english<<setw(8);
cout<<s[i].grade<<setw(16)<<s[i].average<<endl;
}

}


output.cpp

#include <iomanip>
#include <iostream>
using namespace std;
struct Student    //同项目1
{
char num[13];
char name[10];
int cpp;
int math;
int english;
int grade;
double average;
};
void output(Student s[],int n)     //输出成绩单
{
cout<<"学号"<<setw(20)<<"名字"<<setw(8)<<"C++"<<setw(8)<<"数学"<<setw(8)<<"英语"<<setw(8);
cout<<"总分"<<setw(16)<<"平均成绩"<<endl;

for(int i=0; i<n; i++)
{
cout<<s[i].num<<setw(12)<<s[i].name<<setw(8);
cout<<s[i].cpp<<setw(8)<<s[i].math<<setw(8)<<s[i].english<<setw(8);
cout<<s[i].grade<<setw(16)<<s[i].average<<endl;

}
}
执行结果:









内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: