您的位置:首页 > 移动开发 > IOS开发

第十七周实验报告一(所有同学的成绩表等用结构体做)

2012-02-23 22:33 330 查看
 实验目的:学会利用结构体

实验内容:所有同学的成绩表等用结构体做

* 程序头部注释开始


* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作    者:冯珍珍
* 完成日期: 2011年 12 月 18日
* 版本号:

#include <fstream>
#include<iostream>
#include <iomanip>
#include <string>
using namespace std;
struct student
{
char num[12];
string name;
int grade[3];
int sum;
};

int main( )
{
void open_file(student *p);  //从文件中读取数据
void select_score(student *p);  //对数据进行排序
void show_score(student *p);//输出降序后的数据
void school_reward(student *p);//输出获得奖学金的同学名单。
student student[180],score,*p;
p=student;
open_file(p);
select_score(p);
cout<<"学号为"<<setw(16)<<"人名"<<setw(8)<<"c++"<<setw(8)<<"高数"<<setw(8)<<"英语"<<setw(8)<<"总成绩"<<endl;
show_score(p);
cout<<"获得奖学金的同学名单为:"<<endl;
school_reward(p);
return 0;
}
//定义从文件输入函数;
void open_file(student *p)
{
int j;
ifstream infile("score.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
for(j=0;j<180;j++)
{
infile>>(p+j)->num>>(p+j)->name>>(p+j)->grade[0]>>(p+j)->grade[1]>>(p+j)->grade[2];//读入学生成绩;
(p+j)->sum=((p+j)->grade[0]+(p+j)->grade[1]+(p+j)->grade[2]);
}
infile.close();
}
//定义函数;
void show_score(student *p)
{
for(int j=0;j<180;j++)
{
cout<<(p+j)->num<<"   "<<setw(8)<<(p+j)->name<<setw(8)<<(p+j)->grade[0]
<<"    "<<(p+j)->grade[1]<<"    "<<(p+j)->grade[2]<<"\t"<<(p+j)->sum<<endl;
}
cout<<endl;
}
//定义排序函数;
void select_score(student *p)
{
int i,j;
student score;
for(i=0;i<179;i++)
for(j=0;j<179-i;j++)
{
if((p+j)->sum<(p+j+1)->sum)
{
score=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=score;
}
}
}
//找出得奖学金的学生;
void school_reward(student *p)
{
for(int j=0;j<30;j++)
{

if((p+j)->grade[0]>=60&&(p+j)->grade[1]>=60&&(p+j)->grade[2]>=60)
{
if(j%5==0)
cout<<endl;
cout<<setw(8)<<(p+j)->name<<"  "<<setiosflags(ios::left);
}
else j--;
}

}





上级感言:这个程序对我来说真很难;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  file ios string c