学生成绩管理系统: 统计成绩排序并打印(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<<"\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的方法)的更多相关文章
- 【转】 [C/OC的那点事儿]NSMutableArray排序的三种实现(依赖学生成绩管理系统).
原文网址:http://blog.csdn.net/ministarler/article/details/17018839 c语言实现的学生成绩管理系统是面向过程的,而OC实现的学生成绩管理系统则是 ...
- c++链表实现学生成绩管理系统(简易版)
#include<iostream> using namespace std; typedef struct student{ int id;//学号 string sex; string ...
- 学生成绩管理系统C(链表)语言
#include"stdio.h" #include"stdlib.h" #include"string.h" //用于调用一些函数 str ...
- 学生成绩管理系统[C]
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #d ...
- 使用C++名单在文档处理和学生成绩管理系统相结合
对于学生成绩管理系统,我并不陌生,几乎学习C人的语言.做项目会想到学生成绩管理系统,我也不例外.在研究中的一段时间C语言之后,还用C语言到学生管理系统,然后做几个链接.计数,这个系统是以前的系统上的改 ...
- 【学生成绩管理系统】 大二c语言作业
几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值... #include <cstdio> #include <conio.h> #include <i ...
- [项目记录] 用c语言完成的一个学生成绩管理系统
一.要求: 学生成绩管理系统 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).使用链表编程实现如下菜单驱动的学生成绩管理系统. 从文件读入每个学生个人信 ...
- 学生成绩管理系统C++
今天晚上终于做完了学生成绩管理系统!激动!开心!!!哈哈哈~~~~ 总共298行代码,第一次写这么多. 其中遇到了好多困难,也烦恼了好久,不过最终都解决了! 做了之后果然,满满的成就感!抑制不住的兴奋 ...
- C语言项目:学生成绩管理系统
C语言项目:学生成绩管理系统 1.数据结构:学生信息:学号.姓名.年龄.性别.3课成绩 2.功能: (1)增加学生记录 (2) 删除学生记录 (3) 查找学生信息(学号 ...
随机推荐
- Hello TLM
前言 目标 了解TLM程序的基本过程.TLM的英文全称是Transaction Level Modeling,中文翻译为事务级建模.它是在SystemC基础上的一个扩展库. 功能描述 模块A向模块B发 ...
- Docker 安装-在centos7下安装Docker(二)
参考docker安装的方式: http://www.runoob.com/docker/centos-docker-install.html Docker中文官网安装步骤:https://docs.d ...
- 软工团队作业--Scrum冲刺集合贴
软工团队作业--Scrum冲刺集合贴 团队 团队名称:广东靓仔六强选手 团队成员: 黄清山 黄梓浩 钟俊豪 周立 邓富荣 郑焕 博客链接 Scrum 冲刺 第一篇 Scrum 冲刺 第二篇 Scrum ...
- 团队作业6——Alpha阶段项目复审
复审人:利国铭 复审人看什么: 软件的质量:解决原计划解决的问题了么,软件运行质量如何?用户有多少,用户反馈如何? 软件工程的质量:代码在哪里? 代码能在新的机器上构建成功么? 代码可维护性如何?每日 ...
- WordCounter项目(基于javase)
1. Github项目地址: https://github.com/Flyingwater101/WordCount 1. PSP表格 PSP2.1 Personal Software Proce ...
- let和var变量的思考
刚学JavaScript,纠结全局变量用var 还是 let. 这篇文章[来源于知乎]表示 在定义全局变量时,var 和 let 的作用相同. 那么现在基本遵守ES6规范的前提下,函数变量还是for循 ...
- js 导出div 中的类容为 word 文件
//引入包 <script src="/FileSaver.js"></script> <script src="/jquery.word ...
- JavaSE08-ArrayList
1.ArrayList类概述 什么是集合 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 ArrayList集合的特点 底层是数组实现的,长度可以变化 泛型的使用 用于约束集合中存储元素的 ...
- NGINX镜像的制作
NGINX镜像的制作 # mkdir -pv /opt/nginx # cd /opt/nginx/ # cat index.html www.dexter.com 编写Dockerfile # ...
- Known快速开发框架
Known是一个基于.NET开发的快速开发框架,前后端分离,使用极少的第三方组件,开发简单快速,大部分代码可通过代码生成工具自动生成,非常适合单兵作战和小团队开发.前端UI是一个基于JQuery开发的 ...