现在的位置: 首页 > 综合 > 正文

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

2013年02月22日 ⁄ 综合 ⁄ 共 1593字 ⁄ 字号 评论关闭

 实验目的:学会利用结构体
实验内容:所有同学的成绩表等用结构体做
* 程序头部注释开始

* 程序的版权和版本声明部分
* 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--;
 }

}

 

17周实验报告1

上级感言:这个程序对我来说真很难;

抱歉!评论已关闭.