第17周项目6 阅读文件,多文件
2015-06-20 13:24
363 查看
要求:
score.txt一些在校学生数、全名、C++、、英语成绩,利用前面定义的结构体数组,读取文件score.txt中的数据,完毕以下的应用:
在这个程序採用多文件处理:
main.cpp
c++.cpp
in_line_award.cpp
in_line_grade.cpp
name.cpp
output.cpp
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; } }执行结果:
相关文章推荐
- Spring整合JMS(三)——MessageConverter介绍
- 获取Class对象的三种获取方式:
- 测试与调试
- Android学习笔记(四十):Preference使用
- 日语学习之沪江N3基础 20150620 -3
- Spring整合JMS(二)——三种消息监听器
- 父亲节快到了,几句父亲的话留下
- 有一个NSStirng类型,retain时尚宣言name财产setter内部方法的每一行代码的作用?
- WebRTC代码走读(十一):video_coding模块分析
- 2015062002 - 赵云
- qt creator笔记1
- WebRTC代码走读(十):rtp_rtcp模块分析
- 使用crontab执行GUI程序
- 小Z观察:企业证书分发应用的方式是否会退出历史舞台
- Spring整合JMS(一)——基于ActiveMQ实现
- Linux下安装JDK
- Failed to resolve: com.android.support:appcompat-v7:21.的解决方法
- Bookmark(书签)和move指针的应用
- 服务器端程序
- leetcode--Find Minimum in Rotated Sorted Array