目录
一、 需求分析 1
二、 概要设计 2
1. 抽象数据类型设计 2
2. 大根堆节点 4
3. 大根堆类(败者树) 4
4. 程序主要模块 5
三、 详细设计 6
四、 调试分析 30
五、 附录 33
一、需求分析
给定大规模数据集,包含美国股市和中国股市的每日行情数据,编写 C++程序完成要求的数据处理、分析和可视化等任务。
1.计算涨跌额和涨跌幅:
计算每只股票每日的涨跌额和涨跌幅。计算公式如下:
涨跌额 = 今日收盘价 – 昨日收盘价 涨跌幅 = (涨跌额 / 昨日收盘价)* 100%
将计算出的涨跌额和涨跌幅添加到原来的数据集中,即新增两列,存成文件。
2.
外排序:
将每日股票行情数据按照涨跌幅从大到小排列,日期由近及远。即对数据集按照日期和涨跌幅两列进行降序排列,先排日期,最靠近现在的日期排在最前;再对同一日内的所有股票行情按照涨跌幅的降序排列。
3.
计算夏普比率:
计算每只股票每年内涨跌幅的平均值和标准差,这里视为股票的年平均收益和标准差,用年平均收益除以标准差计算出该股票该年的夏普比率。
4.
输出某月单日涨跌幅最大的 k 条股票交易数据:
对某一个指定的单月份的数据(已划分好的单月份数据的外部存储),进行外部排序。
排序的关键字为涨跌幅 的绝对值,按降序排序。指定单月份后(例如 2020 年 06 月),访问读取并排序单月份数据(如 2020-06.csv),单日涨跌幅最大的 k 条股票交易数据。严格限制内存大小(最多使用 10M 内存空间),通过检查 Windows 任务管理器的监控内存占用并测试。
5.
可视化:任意选择某时间段(365 天)内,夏普比例最高的 10 只股票,使用 QT 和外部库画出他们在指定期间(1 年)的日 K 线图。