第17周项目6 阅读文件,多文件

要求:

score.txt一些在校学生数、全名、C++、、英语成绩,利用前面定义的结构体数组,读取文件score.txt中的数据,完毕以下的应用:

在这个程序採用多文件处理:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2gyMDE0NTg1MDExMDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

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;

    }
}

执行结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2gyMDE0NTg1MDExMDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2gyMDE0NTg1MDExMDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2gyMDE0NTg1MDExMDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-05 23:01:46

第17周项目6 阅读文件,多文件的相关文章

第17周项目2--引用作行参(三数排序(引用类型作参数))

/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:刘畅 * 完成日期:2014 年 12 月 17 日 * 版 本 号:v1.0 * * 问题描述:设计一个程序,输入三个整数,将其从大到小的顺序输出,要求 (1)排序功能通过函数实现,三个整数用三个变量,不必定义数组: (2)写出两个版本的函数,一个采用传地址值的方法,另一个采用引用类型作参数. * 输入描述:三个整数, * 程序输出:将

第17周项目2--引用作行参(三数排序(指针作参数))

/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:刘畅 * 完成日期:2014 年 12 月 17 日 * 版 本 号:v1.0 * * 问题描述:设计一个程序,输入三个整数,将其从大到小的顺序输出,要求 (1)排序功能通过函数实现,三个整数用三个变量,不必定义数组: (2)写出两个版本的函数,一个采用传地址值的方法,另一个采用引用类型作参数. * 输入描述:三个整数, * 程序输出:将

2014秋C++ 第8周项目 分支程序设计

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703.课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看. 阅读并验证 阅读以下的两段程序,用"人脑"执行写出输出结果.再在计算机或手机上执行程序,对照自己写出的结果,进行反思.1.#include <iostream>using namespace std;int main(){    int a=1,b=2,c=3;

2015级C++第7周项目 友元、共享数据保护、多文件结构

[项目1-成员函数.友元函数和一般函数有差别]參考解答 (1)阅读以下的程序,体会凝视中的说明(要执行程序,请找到课程主页并复制代码) //例:使用成员函数.友元函数和一般函数的差别 #include <iostream> using namespace std; class Time { public: Time(int h,int m,int s):hour(h),minute(m),sec(s) {} void display1(); //display1是成员函数 friend voi

17周(引用做形参 )

/* *copyright(c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:17周(引用做形参 ) *作者:王忠 *完成日期:2014.12.21 *版本号:v1.0 * *问题描述:输入3个数,按从大到小的顺序输出,fun1用指针,fun2引用 *输入描述:输入3个数 *程序输出:按从大到小的顺序输出 #include <iostream> using namespace std; void fun1(int *x,int *y,int *z);

17周(胖子 大胖子 )

/* *copyright(c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:17周(胖子 大胖子 ) *作者:王忠 *完成日期:2014.12.21 *版本号:v1.0 * *问题描述:输入一个人的姓名性别身高体重,计算他的体重情况,并输出 *输入描述:输入一个人的姓名性别身高体重 *程序输出:计算他的体重情况,并输出 #include <iostream> using namespace std; struct information { char

第十二周项目3-摩托车继承自行车和电动车

#include <iostream> #include<conio.h> #include <windows.h> using namespace std; enum vehicleStaus {rest, running}; //车辆状态:泊车.行进 class vehicle //车辆类,虚基类 { protected: int maxSpeed; //最大车速 int currentSpeed; //当前速度 int weight; //车重 vehicleSt

16周(项目四 动态数组)

/* *copyright(c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:16周(项目四 动态数组) *作者:王忠 *完成日期:2014.12.15 *版本号:v1.0 * *问题描述:新增一个恰当长度的动态数组,将原数组中的数据"复制"到新数组,接着再输入新的数据.增加新数据后的数组,成为保存数据的新数组. *输入描述:输入成绩,学生数 *程序输出:新增的学生数 成绩 #include <iostream> using nam

12周 项目3 摩托车继承机动车和自行车

#include <iostream> #include<conio.h> #include <windows.h> using namespace std; enum vehicleStaus {rest, running}; //车辆状态:泊车.行进 class vehicle //车辆类 { protected: int maxSpeed; //最大车速 int currentSpeed; //当前速度 int weight; //车重 vehicleStaus