
实现一个学生类(CStudent)
5星
- 浏览量: 0
- 大小:None
- 文件类型:DOC
简介:
我们实现了CStudent类,并包含了五个私有数据成员:学号、姓名、数学成绩、外语成绩和计算机课程成绩。该类提供了四个公有成员函数:sum()用于计算三个主科总分,average()用于计算平均值,display()用于输出学生信息概览,setData(…)则用来设置学生的各项数据。在main函数中,我们实现了从标准输入读取一个学生数组的过程,并在此基础上完成了每位同学的总分和平均分计算。随后,在确定了最高总分后,系统会自动输出该生的详细个人信息。
**数据成员说明:**
- **sno**:用于存储学生注册号信息的动态内存地址。考虑到学生的注册号可能具有不同长度,使用指针可以灵活地为每个学生分配所需内存空间。
- **sname**:用于存储学生姓名信息的动态内存地址。同样,为了适应不同长度的学生姓名,采用指针机制以确保内存占用高效合理。
- **score[3]**:由三个整数元素组成的数组,该数组专门用于记录学生的三门课程成绩。其中,索引0对应数学成绩、索引1对应外语成绩、索引2对应计算机课程成绩。
2. **公共成员函数**:
- ssum():计算学生的三科总分。通过累加scores中的所有值来实现。
- average():计算平均成绩的数值。首先利用ssum()获取总成绩,然后将其平均数作为结果返回。
- display():输出学生信息的具体内容,包括注册号、姓名以及相应的总分和平均分。在输出时设定合适的字段宽度以确保数据展示清晰有序。
- setData(char *no, char *name, int *sscore, int n):设置学生的各项数据。该函数接收包含学号、姓名以及各科分数的信息,并将这些输入参数分配给对应的内存区域。具体来说,它会为注册号和姓名变量分配动态内存空间,并将输入的字符串内容直接复制过去。同时,scores数组中的前n个元素(在本例中n=3)则被赋值到该数组中。
在`main()`函数中,生成了一个名为`nn`的整数变量(在这个示例中,其值为3,代表3名学生)。该程序通过动态内存分配和输入流`cin`收集用户提供的学生信息,包括学号、姓名以及各门课程的成绩。这些数据随后被传递给相应的`CStudent`对象进行存储。每个学生的详细信息将依次展示出来,并计算并显示其总分及平均分。程序遍历所有学生的记录,找出其中总成绩最高(用变量`maxsum`表示)的学生个体,并再次调用`display()`函数完整呈现这名学生成绩单中的各项数据。该程序阐述了面向对象编程的核心概念,并详细说明了类的定义方法,包括数据成员与 member functions的实现方式。进一步演示了 C++语言中使用 dynamic memory allocation, input/output streams (I/O streams)和 basic array operations的技术手段。在实际应用场景中,该类可以通过增加更多属性(例如年龄, 性别)来实现功能拓展,并支持更为复杂的运算功能,如按成绩排序和计算班级平均分。
全部评论 (0)


