首页 > 代码库 > 第十七周项目6 读取文件,多文件处理
第十七周项目6 读取文件,多文件处理
要求:
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; } }运行结果:
第十七周项目6 读取文件,多文件处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。