首页 > 编程语言 >【C++实验1】学生成绩信息管理系统题解

【C++实验1】学生成绩信息管理系统题解

时间:2024-03-31 20:32:16浏览次数:20  
标签:10 int 题解 C++ STU 总分 67 信息管理系统 成绩

【问题描述】编写一个基于结构体得学生成绩信息管理系统。

主要功能如下: 1. 用结构体存放所有数据。

2. 每个功能都用函数实现。

3. 输入10个学生的学号和三门课程的成绩。

4. 计算每个学生的总分。

5. 按总分从高到低排序。

6. 加上名次一列。

7. 输出最后的二维表格样式的成绩,含学号、三门课成绩、总分、名次。

请编写五个函数完成相应功能的实现。其中:

input_data(STU s[]):输入原始数据函数。

calculate(STU s[]):计算总分函数。

sort_total(STU s[]):根据总分降序排序函数。

add_rank(STU s[]):增加名次列函数。

print_data(STU s[]):输出二维表格样式成绩的函数。

【输入形式】用户依次输入10名学生的学号和三门课成绩。

【输出形式】输出最后的二维表格样式的成绩,含学号、三门课成绩、总分、名次(包含表头),要求每个学生信息占用一行,每个数据占用15个字符且左对齐。

【样例输入】

10001 67 71 69 

10002 78 83.5 94.2

10003 61 67 87.5 

10004 88 89 92 

10005 66.7 78.6 93

10006 67 72 77

10007 74 63 89

10008 93 74 66

10009 74 76 81

10010 78 91 83

【样例输出】

Number:        Chinese:       Mathematics:   English:       Total score:   Ranking

10004            88                89                      92               269               1

10002            78                83.5                   94.2            255.7             2

10010            78                91                      83               252               3

10005            66.7             78.6                   93               238.3             4

10008            93                74                      66               233               5

10009            74                76                      81               231               6

10007            74                63                      89               226               7

10006            67                72                      77               216               8

10003            61                67                      87.5            215.5             9

10001            67                71                      69               207               10

【样例说明】用户依次输入10名学生的学号和三门课成绩。输出为二维表格样式的成绩,含学号、三门课成绩、总分、名次(包含表头),每个学生信息占用一行,每个数据占用15个字符且左对齐。

【评分标准】 结果完全正确得20分,每个测试点10分。提交程序名为:scoremanage.c或scoremanage.cpp

#include<iostream>
#include<iomanip>
using namespace std;

const int N=10;
struct STU
{
	public:
		int num;
		double score1;
		double score2;
		double score3;
		double sum;
};

STU s[N];

void input_data(STU s[],int i)
{
	cin>>s[i].num>>s[i].score1>>s[i].score2>>s[i].score3;
	
}

void calculate(STU s[],int i)
{
	s[i].sum=s[i].score1+s[i].score2+s[i].score3;
}

void total(STU s[],int i)
{
	STU temp;
	for(int i=1;i<=10;i++)
	{
	    for(int j=1;j<=10-i;j++)
	    {
	    	if(s[j].sum<s[j+1].sum)
	    	{
	    		temp=s[j+1];
	    		s[j+1]=s[j];
	    		s[j]=temp;
			}
		}
	}
}

void print_s(STU s[],int i)
{
	cout<<std::left<<setw(15)<<s[i].num<<setw(15)<<s[i].score1<<setw(15)<<s[i].score2;
	cout<<std::left<<setw(15)<<s[i].score3<<setw(15)<<s[i].sum<<setw(15)<<i;
	cout<<endl;
	
}

int main()
{
	for(int i=1;i<=10;i++)
	{
		input_data(s,i);
		calculate(s,i);
		total(s,i);
		
	}
	cout<<"Number:        Chinese:       Mathematics:   English:       Total score:   Ranking";
	cout<<endl;
	for(int i=1;i<=10;i++)
	{
		print_s(s,i);
	}
	
	return 0;
}

标签:10,int,题解,C++,STU,总分,67,信息管理系统,成绩
From: https://blog.csdn.net/yf743909/article/details/137123770

相关文章

  • C++--STL函数模板
    一.函数模板我们可以定义一个函数模板(functiontemplate),而不是为每个类型都定义一个函数。一个函数模板就是一个蓝图,可用来生成针对特定类型的函数。例如用于比较两个数字的大小compare()函数的模板如下:template<typenameT>intcompare(constT&v1,constT&v2){......
  • C++初阶篇----内存管理
    目录引言1.内存分布2.C动态内存管理方式:malloc/calloc/realloc/free3.C++动态内存管理:new和delete3.1内置类型3.2自定义类型4.operatornew与operatordelete函数4.1operatornew与operatordelete函数5.new和delete的实现底层5.1内置类型5.2自定义类型引......
  • C++ 引用传递 超级详细 小白也行
    一.引用的概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。(本名和小名共用一块地址)例如:就像是给你取小名,本名小名都是你,所有作用也都一样。 类型&引用变量名(对象名)=引用实体(如图下)......
  • 题解 P9981 [USACO23DEC] Minimum Longest Trip G
    【洛谷专栏】题意\(N\)个点\(M\)条边的有向无环图,对于每一个点\(i\)你需要求出一条从\(i\)出发的最长路径且路径上边权组成的序列字典序最小。求每一条路径的长度和边权和。分析最长的路径很好求,在DAG上拓扑排序后动态规划即可。(具体的实现可以参考OI-Wiki)现在的......
  • 便民查询 - C++也能写H5应用
    这款应用是我和我的一位粉丝共创,他还在读大二,刚学了C++,他一直都想找个靠谱的项目练练手,刚好我准备做一款便民查询的应用,当然这个应用如果用C++来写后端,会有一种大炮打蚊子的感觉,C++也不适合做APP开发,开发效率和debug容易度都比其他的高级语言差一截。但是由于他想找个项目练手,我......
  • C++ vector
    文章目录vector的介绍vector介绍vector的定义vectoriterator的使用vector空间增长问题vector的增删查改vector的模拟实现创建vector类和成员变量iterator迭代器范围for构造函数赋值、析构空间容量resize和reserve的区别下标操作符重载插入删除交换vector深度剖析v......
  • Minlexes题解
    \(\texttt{ProblemLink}\)简要题意在一个字符串\(s\)中,对于每个后缀,任意删掉一些相邻的相同的字符,使得字符串字典序最小。注意:删掉之后拼起来再出现的相邻相同字符不能够删除。思路倍增好题。发现存在局部最优解(最优子结构),并且可以转移到其它结点,可以考虑使用dp。那就......
  • C++中Switch穿透的妙用
    在C++中,Case穿透(fall-through)指的是在switch语句中,一个case标签没有显式地使用break语句来终止,而是直接执行下一个case标签中的代码。虽然Case穿透在编程中有时会被视为不良实践,因为它可能导致代码的可读性变差和潜在的错误,但有时也可以利用它来实现一些特定的目的。以下是一些利......
  • C++单例类和线程的一个结合
    一个C++的单例类,类里面定义了一个线程对象,线程对象会定时去计算一个时间,并返回这个计算出来的时间。 应用场景:比如,有些比较消耗时间的操作,就可以放在线程里面定时计算,我们在外部定时读取。这样就可以避免主线程被阻塞。 #include<iostream>#include<thread>#incl......
  • Tomcat启动失败,窗口一闪而过问题解决
    在启动Tomcat时窗口一闪而过,解决方法:在Tomcat安装目录\bin下启动cmd,或在C盘启动后跳转到Tomcat安装目录\bin,输入startup.bat(一定要先做这步,确保具体问题,再根据具体问题百度,不然又是配置JRE,又是配置Tomcat环境变量,最后做了无用功),如果显示如下:先确保java环境变量没问题,我的java......