实验要求:输入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<<"\t"<<stu.name << "\t" << stu.score[0]<<"\t"<< stu.score[1]
        <<"\t" << stu.score[2]<<"\t"<< stu.score[3]<<"\t" << stu.score[4] <<"\t"
        <<stu.total<<"\t"<<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\n";
        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();
}

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

  1. 【转】 [C/OC的那点事儿]NSMutableArray排序的三种实现(依赖学生成绩管理系统).

    原文网址:http://blog.csdn.net/ministarler/article/details/17018839 c语言实现的学生成绩管理系统是面向过程的,而OC实现的学生成绩管理系统则是 ...

  2. c++链表实现学生成绩管理系统(简易版)

    #include<iostream> using namespace std; typedef struct student{ int id;//学号 string sex; string ...

  3. 学生成绩管理系统C(链表)语言

    #include"stdio.h" #include"stdlib.h" #include"string.h" //用于调用一些函数 str ...

  4. 学生成绩管理系统[C]

    #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #d ...

  5. 使用C++名单在文档处理和学生成绩管理系统相结合

    对于学生成绩管理系统,我并不陌生,几乎学习C人的语言.做项目会想到学生成绩管理系统,我也不例外.在研究中的一段时间C语言之后,还用C语言到学生管理系统,然后做几个链接.计数,这个系统是以前的系统上的改 ...

  6. 【学生成绩管理系统】 大二c语言作业

    几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值... #include <cstdio> #include <conio.h> #include <i ...

  7. [项目记录] 用c语言完成的一个学生成绩管理系统

    一.要求: 学生成绩管理系统 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).使用链表编程实现如下菜单驱动的学生成绩管理系统. 从文件读入每个学生个人信 ...

  8. 学生成绩管理系统C++

    今天晚上终于做完了学生成绩管理系统!激动!开心!!!哈哈哈~~~~ 总共298行代码,第一次写这么多. 其中遇到了好多困难,也烦恼了好久,不过最终都解决了! 做了之后果然,满满的成就感!抑制不住的兴奋 ...

  9. C语言项目:学生成绩管理系统

    C语言项目:学生成绩管理系统    1.数据结构:学生信息:学号.姓名.年龄.性别.3课成绩    2.功能:   (1)增加学生记录    (2)  删除学生记录    (3)  查找学生信息(学号 ...

随机推荐

  1. 半夜删你代码队 Day4冲刺

    一.每日站立式会议 1.站立式会议 成员 昨日完成工作 今日计划工作 遇到的困难 陈惠霖 做了新规划 开始双人合作 无 侯晓龙 写了第一个例子 开始双人合作 无 周楚池 准备合作 开始双人合作 无 胡 ...

  2. 【Azure Developer】VS Code运行Java 版Azure Storage SDK操作Blob (新建Container, 上传Blob文件,下载及清理)

    问题描述 是否可以用Java代码来管理Azure blob? 可以.在代码中加入azure-storage-blob依赖.即可使用以下类操作Azure Storage Blob. BlobServic ...

  3. 利用神经网络算法的C#手写数字识别(一)

    利用神经网络算法的C#手写数字识别 转发来自云加社区,用于学习机器学习与神经网络 欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 下载Demo - 2.77 MB (原始地址):handwri ...

  4. 题解-CF348E Pilgrims

    题面 CF348E Pilgrims 有一棵 \(n\) 个点的 带权 树和 \(m\) 个关键点,要求杀了一个不关键的点,满足最多的关键点到离它最远的所有关键点的路径都被打断.求可以满足的最多关键点 ...

  5. JOISC2020 自闭记

    以下是我考场上的思路,很多题都不是正解.对于某些题目,我们使用<代码部落>中的题解,希望大家能够看懂 JOISC2020 Round1 自闭记 T1 11 pts 算法:考虑\(DP\). ...

  6. 如何更简单的使用Polly

    Polly 弹性瞬时错误处理库 Polly是一个C#实现的弹性瞬时错误处理库 它可以帮助我们做一些容错模式处理,比如: 超时与重试(Timeout and Retry) 熔断器(Circuit Bre ...

  7. 【UIautomator2 安卓自动化】教程

    一.环境准备: [安装] 安装uiautomator2 pip install --pre uiautomator2 pip install pillow [初始化] 部署相关的守护进程. 电脑连接上 ...

  8. JavaSE01-概述

    1.1 Java语言发展史 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford University Networ ...

  9. 【震惊】padding-top的百分比值参考对象竟是父级元素的宽度

    引言 书写页面样式与布局是前端工程师Coding 中必不可少的一项工作,在定义页面元素的样式时,padding 属性也是经常被使用到的. padding 属性用于设置元素的内边距,其值可以是lengt ...

  10. ssl证书---验证域名数量分类

    单域名SSL证书   : 单一域名 多域名SSL证书   : 多个域名 通配符SSL证书   : 通配符域名