2-3文件+结构体实现实用系统

来源:互联网 发布:圣斗士观看顺序 知乎 编辑:程序博客网 时间:2024/05/22 13:44
/** 作    者: 霍雨佳* 完成日期:2014 年3月6日* 版 本 号:v1.0* 问题描述:利用结构体数组等知识对学生的成绩进行统计。* 样例输入:略* 样例输出:略* 问题分析:(1)从文件中读出数据,存放到结构体数据中。            (2)求出每名同学的总分(可以在读入过程中顺便计算)            (3)输出结构体数组中所有同学的记录。            (4)按总分排序(降序);            (5)输出排序后的成绩单;            (6)有30名同学可以获得奖学金,规则是总分高者优先,有挂科者不得奖学金,请输出可以的奖学金的同学的名单*/#include <iostream>#include <cstdlib>//调用 exit(1)需要包含cstdlib#include <fstream>//操作文件必写#include <iomanip>using namespace std;struct Student{    char num[13];   //学号    char name[10];    int cpp;    int math;    int english;    int grade;    //总成绩    double average;//均值};void output(Student s [],int n);//输出所有同学的记录void sort(Student s [],int n);//按总分排序(降序)void put(Student s [],int n);//输出排序后的成绩单void out(Student s [],int n);//输出得奖学金同学名单int main(){    int i;    Student stu[1500];    int stuNum=0;    //从文件中读取数据,存放到定义的结构体数组中    ifstream infile("score.txt",ios::in);//以输入方式打开文件    if(!infile)//测试是否成功打开    {        cerr<<"open error!"<<endl;        exit(1);    }    i=0;    while(infile>>stu[i].num>>stu[i].name>>stu[i].cpp>>stu[i].math>>stu[i].english)    {        stu[i].grade=stu[i].cpp+stu[i].math+stu[i].english;//计算总成绩        ++stuNum;        ++i;    }    infile.close();    output(stu,stuNum);    sort(stu,stuNum);    cout<<"按总分排序后的名单为:"<<endl;    put(stu,stuNum);    cout<<"获得奖学金的同学有:"<<endl;    out(stu,stuNum);    return 0;}void output(Student s[],int n)//输出所有同学的记录{    int j;    cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"C++"<<setw(13)<<"高数"<<setw(13)<<"英语"<<setw(13)<<"总分"<<endl;    for(j=0; j<n; j++)    {        cout<<setw(13)<<s[j].num<<setw(13)<<s[j].name<<setw(13)<<s[j].cpp<<setw(13)<<s[j].math<<setw(13)<<s[j].english<<setw(13)<<s[j].grade<<endl;    }}void sort(Student s[],int n)//按总分排序(降序){    int j,i;    Student m;    for(j=0; j<n-1; j++) //冒泡排序法    {        for(i=0; i<n-1-j; i++)        {            if(s[i].grade<s[i+1].grade)            {                m=s[i];                s[i]=s[i+1];                s[i+1]=m;            }        }    }}void put(Student s[],int n)     //输出排序后成绩单{    int j;    cout<<setw(13)<<"学号"<<setw(13)<<"姓名"<<setw(13)<<"C++"<<setw(13)<<"高数"<<setw(13)<<"英语"<<setw(13)<<"总分"<<endl;    for(j=0; j<n; j++)    {        cout<<setw(13)<<s[j].num<<setw(13)<<s[j].name<<setw(13)<<s[j].cpp<<setw(13)<<s[j].math<<setw(13)<<s[j].english<<setw(13)<<s[j].grade<<endl;    }}void out(Student s [],int n)//输出得奖学金同学名单{    int i;    for(i=0;i<30;)    {        if(s[i].cpp>=60&&s[i].math>=60&&s[i].english>=60)        {             cout<<setw(13)<<s[i].num<<setw(13)<<s[i].name<<setw(13)<<s[i].cpp<<setw(13)<<s[i].math<<setw(13)<<s[i].english<<setw(13)<<s[i].grade<<endl;             i++;        }    }}


运行结果:

                    丫丫,做好了

                      开始运行结果直接看不懂,乱七八糟的,一点一点终于调好了,对于文件的应用不熟练

                       加油加油~~~

 

0 0
原创粉丝点击