目 录
1 设计任务 1
2 需求分析 1
3 概要设计 2
3.1抽象数据类型定义 2
3.2 主要功能模块 2
3.3 关键算法 3
4 详细设计与实现 4
4.1 数据结构设计与实现 4
4.2 主要功能与算法实现 4
5 调试分析 8
6 测试结果 8
7 课程设计总结 11
参考文献 12
1设计任务
获取自2000年以来中国、印度、美国、法国的GDP、人口数量,完成数据分析、输入、输出、显示和预测。
要求:
1、从文件或直接从网站上读取相关信息;
2、以多种形式保存结果(如以饼图、柱状图、折线图等显示各行业对GDP的贡献、根据相关数据预测的结果等);
3、实现可视化系统(如窗体、web网页、App、微信小程序等多种形式);
4、使用数据计算参数(如GDP增长率、人均GDP等),并根据计算的参数对下一年的发展情况作出预测(如下一年的GDP、政府下一年在某一行业的支出等)。
存储结构使用结构体,分别用几个子函数实现相应的功能。
2需求分析
本演示程序是在vc++6.0环境中编写,完成数据分析的各项功能。
1、 输入数据的形式和范围:以“年份,GDP(以十亿元为单位),人口(以万人为单位)”的形式纵向排列。
2、 输出的形式:分别以饼状图,柱状图,人均GDP,人均GDP饼状图,GDP年增长率的形式输出。
3、 程序所能达到的功能:完成文件的打开,数据的读取,数据的计算和图形化输出。
4、 测试数据:
1) 读取桌面的四个文件并把数据存放在dataPoints中。
2) 用获取的GDP数据形成柱状图。
3) 用获取的GDP数据形成饼状图。
4) 用获取的GDP和人口数据计算人均GDP存放在perCapitaGDP中并输出。
5) 利用perCapitaGDP数据形成饼状图。
6) 用获取的GDP数据计算GDP增长率存放在prevValue中并输出。
7) 重复2-6的操作输出全部结果。
9)退出操作按任意键退出程序。
1、读取算法[以下是功能算法的伪代码]
int readDataFromFile(const char* filename, DataPoint* dataPoints) {
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("无法打开文件 %s\n", filename);
return 0;
}
int count = 0;
char line[100];
float prevValue = 0.0; // 上一年的value值
while (fgets(line, sizeof(line), file) != NULL) {
char* label = strtok(line, ",");
char* valueStr = strtok(NULL, ",");
float value = atof(valueStr);
char* peopleStr = strtok(NULL, ",");
float people = atof(peopleStr);
strcpy(dataPoints[count].label, label);
dataPoints[count].value = value;
dataPoints[count].people = people;
dataPoints[count].prevValue = prevValue;
count++;
}
fclose(file);
return count;
}