人口树显示程序(源程序)
本程序是个完整的数据图形化的实例。用VC++6.0编程,源程序中有详细中文注释,便于学习者理解。
只要参照dat目录中的数据文件格式,你就能轻易地将各地的各种人口统计数据搬上去,形成你所需要的人口树的显示图集了。本程序会自动生成数据目录,通过目录树选择后会自动按最合适的比例显示人口树图形,
例如:
目录文件(RKPC_ML.TXT)格式:
数据文件名 目录项名称
-- "上海市第五次人口普查数据资料"
-- " 人口数"
D000100.TXT " 全市的合计人口"
D000101.TXT " 居住在本乡镇街道户口在本乡镇街道的人口"
........
D000105.TXT " 居住本乡镇街道现在国外工作学习的暂无户口的人口"
数据文件(如:D000100.TXT)格式:
年龄 男 女
0岁 47373 42818
1岁 51161 46051
2岁 51094 46572
........
98岁 125 305
99岁 97 221
100岁以上 36 1233
这样就能通过读入目录文件建立目录项了( 节录, 详见 RkpcDlg.cpp ):
fp=fopen("dat\\RKPC_ML.TXT","r+"); // 打开目录文件
for(i=0;!feof(fp);i++) {
buff=p; fgets(buff,200,fp); // 读入一行参数
while(*buff==' ') buff++; // 删除前空
if(strlen(buff)<=1) break; // 至空行时结束处理
sscanf(buff,"%s",&DIR[i].Fname);
while(*buff!='"') buff++; buff++; ii=0; // 取文字串
while(*buff==' ') { buff++; ii++; }
for(j=0;;j++,buff++) {
if(*buff=='"') { Caption[j]=0; break; }
Caption[j]=*buff;
}
F_id=ii/2;
TreeItem.item.pszText=Caption; // 设置目录项的名称
TreeItem.item.lParam=i; // 设定目录项的代号
if(F_id==0) {
TreeItem.hParent=TVI_ROOT; // 指定为根目录项
hTreeItem[0]=m_TreeCtrl.InsertItem(&TreeItem); // 设定本目录项作为枝节点项插入树内
} else {
TreeItem.hParent=hTreeItem[F_id-1];
hTreeItem[F_id]=m_TreeCtrl.InsertItem(&TreeItem); // 设定本目录项作为枝节点项插入树内
}
}
delete p;
fclose(fp); // 关闭文件
通过移动光标,可以拾取响应年龄的人口数据。支持打印和粘贴。人口树共有四种显示格式,指标也可选择固定比例,以满足特殊观察要求。
源程序(含执行程序)下载地址:
https://down.bccn.net/2947.html