//*实验目的:学会利用结构体
*实验内容:所有同学的成绩表等用结构体做
* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者:朱亚楠
* 完成日期: 2011年 12 月 19 日
* 版本号: zyn.01
*//
#include <fstream>
#include <iomanip>
#include <string>
#include <iostream>
using namespace std;
struct Student
{
char num[12];
string name;
int grade[3];
int sum;
};
int main()
{
void open_file(Student *p); //从文件中读取数据
void select_socre(Student *p); //对数据进行排序
void grade_place(Student *p);//输出降序后的数据
void school_reward(Student *p);//输出获得奖学金的同学名单。
Student student[180],temp,*p;
p=student;
open_file(p);
select_socre(p);
cout<<"成绩排名"<<endl;
grade_place(p);
cout<<"获得奖学金的同学"<<endl;
school_reward(p);
return 0;
}
void open_file(Student *p)
{
int i;
ifstream infile("score.txt",ios::in);
if(!infile)
{
cerr<<"open error!"<<endl;
exit(1);
}
for(i=0;i<180;i++)
{
infile>>(p+i)->num>>(p+i)->name>>(p+i)->grade[0]>>(p+i)->grade[1]>>(p+i)->grade[2];
(p+i)->sum=((p+i)->grade[0]+(p+i)->grade[1]+(p+i)->grade[2]);
}
infile.close();
}
void select_socre(Student *p) //对数据进行排序
{
Student temp;
int i , j;
for(j=0;j<179;j++)
{
for(i=0;i<179-j;i++)
{
if((p+i)->sum<(p+i+1)->sum)
{
temp=*(p+i);
*(p+i)=*(p+i+1);
*(p+i+1)=temp;
}
}
}
}
void grade_place(Student *p) //输出降序后的数据
{
for(int i=0;i<180;i++)
{
cout<<(p+i)->num<<" ";
cout<<setw(8)<<(p+i)->name;
cout<<setw(8)<<(p+i)->grade[0];
cout<<setw(8)<<(p+i)->grade[1];
cout<<setw(8)<<(p+i)->grade[2];
cout<<setw(8)<<(p+i)->sum<<endl;
}
}
void school_reward(Student *p) //输出获得奖学金的同学名单。
{
for(int i=0;i<30;i++)
{
if((p+i)->grade[0]>=60&&(p+i)->grade[1]>=60&&(p+i)->grade[2]>=60)
{
if(i%5==0)cout<<endl;
cout<<setw(12)<<(p+i)->name;
}
else i--;
}
cout<<endl;
}
17周实验报告1
最新推荐文章于 2024-04-24 15:20:21 发布