zoukankan      html  css  js  c++  java
  • 结对第二次作业——某次疫情统计可视化的实现

    这个作业属于哪个课程 2020春S班|(福州大学)
    这个作业要求在哪里 结对第二次作业——某次疫情统计可视化的实现
    结对学号 221600428 221701321
    这个作业的目标 采用web技术来实现原型中的功能。
    作业正文 结对第二次作业——某次疫情统计可视化的实现
    其他参考文献 ...

    链接相关

    GitHub仓库地址
    代码规范链接

    成品展示

    gif

    功能1:实现通过地图的形式来直观显示疫情的大致分布情况,还可以查看具体省份的疫情统计情况

    功能2:点击某个省份显示该省疫情的具体情况

    结对过程

    g1

    g2

    g3

    g4

    g5

    和队友讨论了一下分工,一人实现一个模块,过程中一起讨论了各自遇到的困难。

    设计实现过程

    gg

    主要分为三大模块:

    • 全国地图
    • 省份信息
    • 数据获取

    代码说明

     //按钮命令
    function getType(obj) {
    	if (obj == 1) {
    		document.getElementById('newS').style.backgroundColor = '#ffff99';
    		document.getElementById('allS').style.backgroundColor = '#00ff80';
    		document.getElementById('allDaC').style.backgroundColor = '#00ff80';
    		type = "新增确诊趋势";
    		data = "新增确诊";
    		show = data1;
    		showline();
    	} else if (obj == 2) {
    		document.getElementById('allS').style.backgroundColor = '#ffff99';
    		document.getElementById('newS').style.backgroundColor = '#00ff80';
    		document.getElementById('allDaC').style.backgroundColor = '#00ff80';
    		type = "累计确诊趋势";
    		data = "累计确诊";
    		show = data2;
    		showline();
    	} else if (obj == 3) {
    		document.getElementById('allDaC').style.backgroundColor = '#ffff99';
    		document.getElementById('newS').style.backgroundColor = '#00ff80';
    		document.getElementById('allS').style.backgroundColor = '#00ff80';
    		type = "累计治愈/死亡";
    		data = "治愈/死亡";
    		show = data3;
    		showline1();
    	} else {
    	}
    }
    

    这段代码用于判断省份具体信息里的趋势图选择

    function showline() {
    	// 指定图标的配置和数据
    	var option = {
    		title : {
    			text : type
    		},
    		tooltip : {
    			// 开启tips框框
    			trigger : 'axis',
    		// 刻度跟随鼠标显示
    		// axisPointer: {type: 'cross'}
    		},
    		legend : {
    			data : [ data ]
    		},
    		xAxis : [ {
    			type : 'category',
    			axisTick : {
    				alignWithLabel : true
    			},
    			splitLine : {
    				show : false
    			},
    			axisLine : {
    				onZero : false,
    				lineStyle : {
    					color : '#ddd',
    					width : '90%'
    				}
    			},
    			data : cdate,
    			axisPointer : {
    				label : {}
    			},
    			axisLabel : {
    				interval : 0
    			},
    		} ],
    		yAxis : {},
    		series : [ {
    			name : data,
    			type : 'line',
    			areaStyle : {
    				normal : {}
    			},
    			data : show,
    		} ]
    	};
    	// 初始化echarts实例
    	var myChart = echarts.init(document.getElementById('line'));
    
    	// 使用制定的配置项和数据显示图表
    	myChart.setOption(option);
    }
    

    这段代码用于折线图显示

    function getDate() {
    	var t = new Date();
    	var dd = t.getDate() - 1;
    	var mm = t.getMonth() + 1;
    	var yy = t.getFullYear();
    	var newDay = new Date(yy, mm, (dd - 10));
    	var m = t.getMonth() + 1; // 获取当前月份(0-11,0代表1月)
    	var d = t.getDate() - 1; // 获取当前日(1-31)
    	for (var i = 10; i >= 0; i--) {
    		dd = d;
    		mm = m;
    		if (d != 0) {
    			cdate[i] = m + '.' + d;
    			if (m < 10) {
    				mm = '0' + mm;
    			}
    			if (d < 10) {
    				dd = '0' + dd;
    			}
    			sdate[i] = yy + "-" + mm + "-" + dd;
    		} else {
    			d = newDay.getDate() + i + 1;
    			m -= 1;
    			cdate[i] = m + '.' + d;
    			if (m < 10) {
    				mm = '0' + mm;
    			}
    			if (d < 10) {
    				dd = '0' + dd;
    			}
    			sdate[i] = yy + "-" + mm + "-" + dd;
    		}
    		d -= 1;
    	}
    }
    

    获取时间

    function getData() {
    	getDate();
    	var pname = document.getElementById('pro').innerText;
    	var apikey = '183104d863feb9f2a5c2baa350b12b4d';
    	var url = 'http://api.tianapi.com/txapi/ncovcity/index?key=' + apikey;
    	console.log(url);
    	$(document)
    			.ready(
    					function() {
    						$
    								.get(
    										url,
    										function(data, status) {
    											var temp = new Array();
    											$('#result').append(
    													JSON.stringify(data));
    											var pname = document
    													.getElementById('pro').innerText;
    											for (var i = 0; i < data.newslist.length; i++) {
    												var str = data.newslist[i].provinceShortName;
    												console.log(str);
    												if (str == pname) {
    													document
    															.getElementById('s21').innerHTML = data.newslist[i].currentConfirmedCount;
    													document
    															.getElementById('s22').innerHTML = data.newslist[i].confirmedCount;
    													document
    															.getElementById('s23').innerHTML = data.newslist[i].curedCount;
    													document
    															.getElementById('s24').innerHTML = data.newslist[i].deadCount;
    												}
    											}
    										});
    					});
    }
    

    获取数据

    心路历程与收获&评价结对队友

    心路历程与收获

    ​221701321:怎么说呢,第二次结对合作,刚拿到任务时以为蛮轻松的(没错我又大意了),但是我眼瞎了连任务都没看清楚,还需要有日期选择(最后一晚再打博客的我刚得知不久),代码实现过程中前端部分 借助echarts实现比较简单,而数据部分却让人抓瞎,一开始想着就去爬网站数据吧,找了百度的实时疫情数据网页,爬下来发现没有关键数据,由于第一次爬网站,经验不足,又因时间缘故放弃爬网站,转而采用api接口方式获取数据,经历了js、Java、php等方式之后终于用js获取到了信息,但是!!!由于需要每日疫情数据进行比较得出趋势图,才明白免费api接口的缺点——10次/分钟的调用频率,而获取数据只能使用参数一次次获取近几日的数据,而且需要将接口获取的数据保存至数组中,但是又陷入了我的盲区,依旧不得解决,最终趋势图数据只能采用写死方法。

    最近一周各科作业集中布置,以及周日的实践——可以说是把我按在地上摩擦了。

    我的心情大概如下图所示

    不管怎么说,这次过程中认识到了自己最大的敌人——拖延症。令人头疼,慢慢想下如何解决吧(希望毕业前可以改善)
    221600428:这次结对作业遇到了挺多困难的,一开始没有重视,再加上一些突发事件,导致实际完成的时间较少,功能不够完善。收获是又学习到了一些新的知识,又丰富了自我。

    评价结对队友

    221701321:在经历过一次合作之后显然更默契一点,各司其职,共同尽力完成任务,还是很棒的。
    221600428:队友耐心细心,动手能力强,是我应该学习的好对象。

  • 相关阅读:
    [HNOI2004]宠物收养所 题解
    文艺平衡树(区间翻转)(Splay模板)
    搜索专题 题解
    Gorgeous Sequence 题解 (小清新线段树)
    花神游历各国 题解(小清新线段树/树状数组+并查集)
    [HNOI2012]永无乡 题解
    poj 3683 2-sat问题,输出任意一组可行解
    hdu 1824 2-sat问题(判断)
    hdu 4115 石头剪子布(2-sat问题)
    hdu 4421 和poj3678类似二级制操作(2-sat问题)
  • 原文地址:https://www.cnblogs.com/ly981/p/12507363.html
Copyright © 2011-2022 走看看