• 学生成绩管理系统: 统计成绩排序并打印(c++)(内含读取文件.txt及将文件输出excel的方法)


    实验要求:输入30个学生的学号、姓名和5门课程的成绩,计算总分并按照总分排出名次,最后按照学号顺序打印成绩单, 并把成绩单输出为excel文件。

    txt数据:

    2015020981 甲 90 89 99 88 79
    2015020986 戌 97 87 97 60 79
    2015020970 鹏 97 88 77 80 79
    2015020983 丙 92 89 70 88 79
    2015020984 丁 93 84 96 36 77
    2015020982 乙 61 88 99 84 70
    2015020985 戊 94 81 94 82 75
    2015020989 三 93 89 99 88 50
    2015020994 八 91 88 49 84 70
    2015020987 一 99 89 99 88 60
    2015020988 二 91 58 69 84 70
    2015020969 将 94 51 94 82 75
    2015020960 孙 91 88 99 84 99
    2015020990 四 93 84 96 86 77
    2015020995 九 92 50 99 88 79
    2015020992 六 97 87 97 80 79
    2015020993 七 90 69 99 88 79
    2015020997 张 74 81 54 82 75
    2015020996 十 63 84 96 86 77
    2015020965 郑 90 88 99 88 79
    2015020998 王 97 87 100 80 79
    2015020999 李 40 89 99 88 79
    2015020963 刘 94 89 94 82 75
    2015020961 赵 92 89 99 88 79
    2015020962 岳 93 84 96 86 100
    2015020966 林 51 88 99 84 70
    2015020964 宋 97 87 47 80 79
    2015020968 宗 93 84 96 86 57
    2015020967 任 92 89 99 70 79
    2015020991 五 94 81 44 82 75

    源代码:

    #include<iostream>
    #include<cstdio>
    #include<fstream>
    #include<string>
    #include<algorithm>
    using namespace std;
    struct Student
    {

        int id;
        string name;
        int score[5];
        int total;
        int rank;
    public:
        friend ostream & operator<<(ostream & out, const Student &stu);
        friend istream & operator>>(istream & in, Student &stu);
    };
    ostream & operator <<(ostream & out, const Student &stu)
    {
        out << stu.id<<" "<<stu.name << " " << stu.score[0]<<" "<< stu.score[1]
            <<" " << stu.score[2]<<" "<< stu.score[3]<<" " << stu.score[4] <<" "
            <<stu.total<<" "<<stu.rank<<endl ;
        return out;
    }
    istream & operator >>(istream & in,  Student &stu)
    {
        in>>stu.id>>stu.name >> stu.score[0]>> stu.score[1]>> stu.score[2]
            >> stu.score[3] >>stu.score[4];
        return in;
    }
    int main()
    {
        string filename1;
        int num = 0;
        Student stu[100];
        int ReadTextFile(string fname, Student stu[]);//从文件中读取TXT数据
        void PrintScreen(Student stu[], int n);//打印数据在屏幕中
        void Total(Student stu[],int n);//计算总分
        void Rank(Student stu[], int n);//计算排名
        void Sort(Student stu[], int n);//按学号排序
        void WExcel(Student stu[], int n);//在Excel中输出
        filename1 = "c:\score.txt";
        num=ReadTextFile(filename1, stu);
        Total(stu,num);
        Rank(stu, num);
        Sort(stu, num);
        WExcel(stu, num);
        PrintScreen(stu, num); 
    }

    //从文件中读取TXT数据
    int ReadTextFile(string fname, Student stu[])
    {
        int i = 0;
        ifstream fin(fname);
        if (!fin)
        {
            cout << "source text file error ";
            return 0;
        }
        fin >> stu[i];
        while (!fin.eof())
        {
            i++;
            fin >> stu[i];
        }
        fin.close(); 
        return i;
    }

    //打印数据在屏幕中
    void PrintScreen(Student stu[], int n)
    {
        for (int i = 0; i <n; i++)
            cout << stu[i];
    }
    void Total(Student stu[],int n)
    {
        for (int i=0; i < n; i++)
        {
            stu[i].total= stu[i].score[0] + stu[i].score[1] + stu[i].score[2]
                + stu[i].score[3] + stu[i].score[4];
        }
    }

    //计算总分
    void Rank(Student stu[], int n)
    {
        int temp,i,j;
        for ( i = 0; i < n; i++)
        {
            temp = 0;
            {for (j = 0; j < n; j++)
                if (stu[i].total<=stu[j].total)
                    temp++;
            stu[i].rank = temp;
            }
        }
    }

    //按学号排序
    void Sort(Student stu[],int n)
    {
        int i, j;
        Student temp;
        for(i=0;i<n;i++)
            for(j=i+1;j<n;j++)
                if (stu[i].id>stu[j].id)
                {
                    temp = stu[i];
                    stu[i] = stu[j];
                    stu[j] = temp;
                }
    }

    //在Excel中输出
    void WExcel(Student stu[], int n)
    {
        ofstream oFile;
        oFile.open("1.csv", ios::out | ios::trunc);
        oFile << "学号"<<"," << "姓名" << "," << "成绩1" << "," << "成绩2" 
            << ","<<"成绩3"<<"," << "成绩4"<<" ,"<< "成绩5"<<","
            <<"总分"<<","<<"排名"<<endl;
        for (int i = 0; i < n; i++)
        {
            oFile << stu[i].id << "," << stu[i].name << "," << stu[i].score[0] 
                << "," << stu[i].score[1]<< "," << stu[i].score[2] << "," 
                << stu[i].score[3] << "," << stu[i].score[4]<<","<<stu[i].total
                <<","<<stu[i].rank<<endl;
        }
        oFile.close();
    }

    永远热泪盈眶。
  • 相关阅读:
    第一篇博客
    margin 与 padding
    CSS伪类
    CSS定位
    利用css布局在图片插入文字
    CSS选择符
    CSS伪类
    CSS语法顺序
    CSS样式特点及优先级
    frame-框架
  • 原文地址:https://www.cnblogs.com/2021WGF/p/14253239.html
Copyright © 2020-2023  润新知