zoukankan      html  css  js  c++  java
  • 结对第二次作业

    写在前面

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/2020SpringW
    这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/2020SpringW/homework/10456
    结对学号 <221701212、221701235>
    这个作业的目标 <结合寒假第二次作业的成果实现原型设计中的部分功能>
    作业正文 ....
    其他参考文献 ...

    Part1.Github仓库地址和代码规范链接

    *Github仓库地址
    *代码规范

    Part2.成品展示(半成品)










    Part3.结对讨论过程描述

    • 一开始拿到题目,因为都没学过什么框架,我们决定使用纯前端来进行开发,先是熟悉github多人协作应该怎么使用,然后查找Echarts相关实例(地图、折线图),然后根据需求修改样式(添加日期控件、标签切换功能等),最后是获取相关数据并写死在代码中
    • 讨论截图





    Part4.描述设计实现过程

    • 查找Echarts地图、折线图实例。
    • 编写html、css、js文件对地图、折线图进行结构分离
    • 修改地图样式,调整布局,增加累计数据栏,日期控件
    • 编写js代码,实现点击标签切换不同地图、折线图
    • 爬取数据。。。

    Part5.代码说明

    • 日期控件html部分
    <label>日期:</label>
    <input type="date" id="choose-date" onchange="echartsMap(1)" />
    
    • js部分,默认设置为当前日期
    var datechoose = document.getElementById('choose-date');
    datechoose.valueAsDate = new Date();
    
    • 点击省份跳转
    myChart.on('click', function(param) {
        window.location.href = "province.html?name=" + param.name;
    })
    
    • 获取url参数
    function getQueryString(name) {
    	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    	var r = window.location.search.substr(1).match(reg);
    	if (r != null) {
    		return decodeURI(r[2]);
    	} else {
    		return null;
    	}
    }
    
    • 标签的切换功能
    <div id="getId">
    	<div class="show" id="tabC1">
    		<!-- 为ECharts-line准备一个具备大小(宽高)的Dom -->
    		<div id="global-line1"></div>
    	</div>
    	<div class="hidden" id="tabC2">
    		<!-- 为ECharts-line准备一个具备大小(宽高)的Dom -->
    		<div id="global-line2"></div>
    	</div>
    	<div class="hidden" id="tabC3">
    		<!-- 为ECharts-line准备一个具备大小(宽高)的Dom -->
    		<div id="global-line3"></div>
    	</div>
    	<div class="hidden" id="tabC4">
    		<!-- 为ECharts-line准备一个具备大小(宽高)的Dom -->
    		<div id="global-line4"></div>
    	</div>
    	<div class="tabT">
    		<ul class="tab">
    			<li id="tabId1" class="current" onclick="tab('tabId1','tabC1');">疫情新增趋势</li>
    			<li id="tabId2" onclick="tab('tabId2','tabC2');">确诊疑似趋势</li>
    			<li id="tabId3" onclick="tab('tabId3','tabC3');">累计治愈死亡</li>
    			<li id="tabId4" onclick="tab('tabId4','tabC4');">治愈率死亡率</li>
    		</ul>
    	</div>
    </div>
    
    function tab(tabId, tabC) {
    	var len = document.getElementById('getId').getElementsByTagName('li').length;
    	for (i = 1; i <= len; i++) {
    		if ("tabId" + i == tabId) {
    			document.getElementById(tabId).className = "current";
    			echartsLine(i);
    		} else {
    			document.getElementById("tabId" + i).className = "";
    		}
    		if ("tabC" + i == tabC) {
    			document.getElementById(tabC).className = "show";
    			echartsLine(i);
    		} else {
    			document.getElementById("tabC" + i).className = "hidden";
    		}
    	}
    }
    
    • 数据爬取
    var request = require('request');
    const fs = require('fs');
    const path = require('path');
    request('https://lab.isaaclin.cn/nCoV/api/overall?latest=0', function(err, response, body) {
        //err 当前接口请求错误信息
        //response 一般使用statusCode来获取接口的http的执行状态
        //body 当前接口response返回的具体数据 返回的是一个jsonString类型的数据 
        //需要通过JSON.parse(body)来转换
        if (!err && response.statusCode == 200) {
            //todoJSON.parse(body)
            var res = JSON.parse(body);
            fs.writeFile(path.join(__dirname, './data_total.json'), JSON.stringify(res), err => {
                if (err) throw err
                console.log("数据写入成功")
            })
        }
    })
    
    • 获取数据(文件里)
    
    function getDate(day) {
        var date = ['2020-01-19', '2020-01-20', '2020-01-21', '2020-01-22', '2020-01-23', '2020-01-24', '2020-01-25', '2020-01-26', '2020-01-27', '2020-01-28', '2020-01-29', '2020-01-30', '2020-01-31', '2020-02-01', '2020-02-02', '2020-02-03', '2020-02-04', '2020-02-05', '2020-02-06', '2020-02-07', '2020-02-08', '2020-02-09', '2020-02-10', '2020-02-11', '2020-02-12', '2020-02-13', '2020-02-14', '2020-02-15', '2020-02-16', '2020-02-17', '2020-02-18', '2020-02-19', '2020-02-20', '2020-02-21', '2020-02-22', '2020-02-23', '2020-02-24', '2020-02-25', '2020-02-26'];
        var tmp = [];
        for (i = 0; i < date.length; i++) {
            tmp.push(date[i]);
            if (date[i] == day) {
                break;
            }
        }
        return tmp;
    }
    
    • 功能结构图

    Part6.心路历程与收获

    • 221701212

    这次作业挺赶的,花了时间学会了怎么爬取数据,后面大部分时间用来给图表赋值。总的来说,很累,最后手忙脚乱的。

    • 221701235

    项目开发过程中,学会了github团队协作的相关操作,意识到了团队要有一个集体目标,为了完成这一个目标(项目的实现),需要团队的共同努力。

    Part7.对队友的评价

    • 221701212

    本次结对然我学到了好多东西,特别是试着去学习如何使用node去爬取数据,以及网页接口的调用,虽然由于个人技术原因,最后没有使用爬虫爬取网站数据,但还是学习到了一些技术,感谢队友强大的dubug,在完成自己承担的部分之外,还帮我修复了许多前端debug,让布局更加合理。

    • 221701235

    我的队友是一个好队友,一开始熟悉github团队协作的时候,他建立了团队仓库,并教会我如何使用。原本打算读取本地文件,然后结合寒假作业2的代码获取数据,后来在js读取本地文件这个点上卡住了,在这个时候队友揽下了数据获取的实现,而我去实现标签切换功能、点击省份跳转功能等。十分感谢队友拉了一把,不然可能因为我导致整个项目无法完成。

  • 相关阅读:
    php 工厂模式实例
    nginx多虚拟主机配置
    PHP提高编程效率的方法
    PHP 多态
    锁机制之PHP文件锁
    深入认识javascript中的eval函数(转载)
    PHP&MYSQL 常用的一些性能检测
    寒假作业1:问答题
    软件测试基础知识总结
    七种测试驱动模式
  • 原文地址:https://www.cnblogs.com/Wangddongyu235/p/12492742.html
Copyright © 2011-2022 走看看