CHENSHAOQIU

导航

 

实验任务2:

 GradeCalc.hpp
 task2.cpp

运行测试截图:

问题1:

成绩存储位置:成绩存储在`GradeCalc`类的一个`vector<int>`成员变量中。由于`GradeCalc`是从`std::vector<int>`派生的,因此它可以使用`std::vector<int>`的所有成员函数来管理成绩数据。

访问成绩的方法:
- `sort`, `min`, `max`, `average`, `output`等方法通过继承自`std::vector<int>`的迭代器或成员函数(如`begin()`, `end()`)来访问成绩。
- `input`方法则是通过`push_back`函数将读取的成绩添加到`vector<int>`中,即向派生类自身添加元素。

问题2:

分母功能:`n`代表了成绩的数量,`1.0 / n`是为了计算平均分时对总分进行正确的除法操作,确保得到的是浮点数结果而非整数结果。

去掉`1.0`的影响:如果去掉了`* 1.0`,那么在C++中整数除以整数的结果仍然是整数,即使结果中有小数部分也会被截断。这意味着如果成绩总和不是`n`的整数倍,计算出的平均分会丢失小数部分,导致结果不准确。乘以`1.0`可以确保至少其中一个操作数是浮点数,从而让整个表达式的结果也是浮点数,保证了计算的准确性。

问题3:

从实际应用的角度来看,`GradeCalc`类可能需要考虑以下几个方面进行迭代和完善:

异常处理:目前的实现没有处理任何异常情况,例如用户输入非法成绩(如负数或超过100的分数)。可以通过增加输入验证逻辑来增强程序的健壮性。

用户友好性:可以增加提示信息,使用户更清楚地了解如何使用程序,例如在输入成绩前提示用户输入合法的成绩范围。

数据持久化:目前的成绩数据只存在于程序运行期间,一旦程序结束,所有数据都会丢失。可以考虑增加文件读写功能,让用户能够保存和加载成绩数据。

多语言支持:如果这个程序计划用于国际化的环境中,可以考虑加入多语言支持,使不同国家的用户都能方便地使用该程序。

安全性:对于敏感数据(如学生姓名、成绩等),应该考虑数据加密和安全传输机制,防止数据泄露。

扩展性:考虑到未来可能会有更多功能需求(如成绩曲线分析、成绩预测等),可以在设计时留出足够的扩展空间,比如使用插件机制或者策略模式。

性能优化:虽然对于小规模数据集来说当前实现已经足够高效,但如果面对大规模数据集,可以考虑优化算法,减少不必要的计算和内存消耗。例如,在调用`info`方法时,`sort`和`compute`方法可以合并执行,避免重复遍历成绩列表。

实验任务3:

 GradeCalc.hpp
 task3.cpp

运行测试截图:

问题1:

成绩储存在GradeCalc类中的一个vector类型的私有成员变量grades中;

通过直接访问grades对象来访问每个成绩;

实验2是通过继承的vector 接口来隐性访问各个成绩,而实验3则通过显性访问GradeCalc类中的一个vector类型的私有成员变量grades来访问各个成绩;

问题2:

在面向对象编程的过程中,类的射击方式多种多样,既可以通过继承来实现代码复用,也可以载类中添加另一个类的对象来实现。

实验任务4:

 task4_1.cpp
运行测试截图:

1.正确录入:

  

  2.去除line35

  

问题1:

作用是忽略输入流中的下一个字符,直到遇到换行符 \n 或者达到最大限制 numeric_limits<streamsize>::max()。它通常用于清除输入缓冲区,以确保后续使用 getline() 函数时不会因为前一次输入操作留下的换行符而出现问题。

 task4_2
运行测试截图:

 task4_3

运行测试截图:

 1.正确录入:

  

  2.去掉line16后:

  

问题2:作用是忽略输入流中的剩余部分直到遇到换行符,并丢弃这些字符。它通常用于清除输入缓冲区,以确保后续使用 getline 函数读取输入时不会受到先前输入的影响。

实验任务5:

 grm.hpp
task5.cpp

运行测试截图:

实验任务6:

 info.hpp
 task6.cpp

运行测试截图:

 实验任务7:

 account.h
 accumulator.h
 date.h
 account.cpp
 date.cpp
 task7.cpp
运行测试截图:

  

posted on 2024-11-25 15:40  陈少秋  阅读(6)  评论(0编辑  收藏  举报