博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE1
作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/homework/11110
作业目标 熟练 git 的使用以及熟悉开发流程
作业源代码 https://gitee.com/Icarus727/personal.git
学号 211806309
代码行数:140 行(含注释)
需求分析:0.5 h
编码时间:3 h

思路分解:

  1. 加载配置文件 total.properties

    • 配置文件加载到一个 hashMap 中便于后续计算时使用。

      Properties pp = new Properties();
      pp.load(new FileInputStream(filename));
      ...
      totalScore.put("before", Double.parseDouble(pp.getProperty("before")));
      ...
  2. 读取 small.html 和 all.html

  3. 解析 small.html 和 all.html

    • 使用字符串的方法进行分析,但是效率太差
因效率问题,后期更改思路,以下为思路更改方案:
  1. 寻找新的解析 html 代码的方法

    • 通过查询,找到一个专门用于 html 的类库 —— jsoupAPI

    • 使用 jsoup 自带方法读取 html 文件

      Jsoup.parse(new File(filename), "utf-8")

    • 通过浏览器查看代码块,发现所有活动的代码块如下:

      <div class="interaction-row" ... > ... </div>
    • 使用 jsoup 的函数 getElementsByClass("interaction-row") 将所有活动分离存储

    • 判断是哪种类型的活动和该活动的完成,可以使用 jsoup 中的 get()child() 来定位到里面的孩子节点,例如课堂完成:

      if( activities.get(i).child(1).child(0).toString().indexOf("课堂完成") != -1 ) { ... }
    • 再次查看网页代码,发现经验所在的内容如下

      <span style="color:#EC6941;">0 经验</span>
    • 找到经验值所在位置的相应节点分离出来,用 element.text() 的方法获取标签中的内容,再将内容放入 Scanner 中使用 nextDouble() 读出数字

    • 将读出来的经验统计起来

    • 结合之前配置文件读出的内容和云班课算法计算出最终分数:

自我总结:

这次作业收获颇多,get 到了一个可以用来解析 html 的库 jsoup 以后碰到类似的问题可以直接使用 jsoup。git 也是一个非常棒的工具,可以将自己的代码存到云端并且可以版本回溯,出了问题可以及时查看对比之前版本进行比较排查出问题代码,还能为自己的电脑省下不少空间。

参考资料:

第一次个人编程作业:我的分数我做主 - 软件工程与 UML的更多相关文章

  1. 第一次个人编程作业&#183;寒假

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/SE/ 这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy ...

  2. Bean_sprout的第一次编程作业

    第一次编程作业 一.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 60 120 · Estim ...

  3. Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 2)及总结

    Exercise 1:Linear Regression---实现一个线性回归 关于如何实现一个线性回归,请参考:http://www.cnblogs.com/hapjin/p/6079012.htm ...

  4. 11061160_11061151_Pair Project: Elevator Scheduler软件工程结对编程作业总结

    软件工程结对编程作业总结 11061160  顾泽鹏 11061151  庞梦劼 一.关于结对编程 这次的软工任务既不是单打独斗的个人任务,也不是集思广益的团队项目,而是人数为两人的结对编程.两个人合 ...

  5. 第一次博客作业(初识C++)

    Q1:学习<C++语言程序设计>课程之前,你知道什么是编程吗?谈谈上这门课之前你对编程的理解,以及你对自己编程能力的评估. A1:开始课程之前,我认为编程是这样的:用计算机的语言写一份流程 ...

  6. oo 第一次博客作业

    oo 第一次博客作业 早在大一就听说了oo的各种传奇故事,大二下学期终于也开始了我的oo之旅. 基于度量来分析自己的程序结构 第一次作业 类图分析 耦合度分析 可以看出在第一次作业中,我的耦合度非常高 ...

  7. [BUAA软工]第一次博客作业---阅读《构建之法》

    [BUAA软工]第一次博客作业 项目 内容 这个作业属于哪个课程 北航软工 这个作业的要求在哪里 第1次个人作业 我在这个课程的目标是 学习如何以团队的形式开发软件,提升个人软件开发能力 这个作业在哪 ...

  8. 2018 OO第一次总结(作业1-3)

    第一次作业1.程序分析 (1)OO度量 (2)类图: (3)分析与评价: 这次作业由于作业整体设计难度不大,因此按照去年暑假上的OO先导课老师讲的设计方法很容易实现一个还不错的面向对象式程序,类与类之 ...

  9. jzoj3208. 【JSOI2013】编程作业(kmp)

    题面 Description Will相信,很多同学都有过这样的经历:大牛已经写好了编程作业,而作为菜鸟的自己不会写怎么办呢?拿大牛的代码抄一下嘛!但是提交一模一样的作业是不是不太好?于是就改一改变量 ...

随机推荐

  1. [NOIP 2016D2T2/Luogu P1600] 天天爱跑步 (LCA+差分)

    待填坑 Code //Luogu P1600 天天爱跑步 //Apr,4th,2018 //树上差分+LCA #include<iostream> #include<cstdio&g ...

  2. .NetCore简单封装基于IHttpClientFactory的HttpClient请求

    IHttpClientFactory是什么?为什么出现了IHttpClientFactory 一.IHttpClientFactory是什么? IHttpClientFactory是.netcore2 ...

  3. 3.2 表 ADT -3.3 Java Collection API 中的表

    3.2 表 ADT 处理形如 A0, A1, A2, --, AN-1 的一般的表.我们称这个表大小为N.将大小为0的特殊表称为空表 对于除空表以外的任何表,称 Ai-1 前驱 Ai,Ai 后继 Ai ...

  4. 14 RPC

    14 RPC RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些 ...

  5. 2020年的UWP(3)——UWP和desktop extension的简单交互

    上一篇<2020年的UWP(2)--In Process App Service>中我们了解了UWP和Desktop Extension可以通过AppService进行数据交互.本篇我们就 ...

  6. linux netfilter 五个钩子点

    参考http://www.linuxtcpipstack.com/685.html#NF_INET_PRE_ROUTING https://opengers.github.io/openstack/o ...

  7. C++运行时类型判断dynamic_cast和typeid

    dynamic_cast dynamic_cast < Type-id > ( expression ) dynamic_cast<类型>(变量) 在运行期间检测类型转换是否安 ...

  8. 循序渐进VUE+Element 前端应用开发(27)--- 数据表的动态表单设计和数据存储

    在我们一些系统里面,有时候会需要一些让用户自定义的数据信息,一般这些可以使用扩展JSON进行存储,不过每个业务表的显示项目可能不一样,因此需要根据不同的表单进行设计,然后进行对应的数据存储.本篇随笔结 ...

  9. bootstrap-datetimepicker的两种版本

    1.引入js/css <link rel="stylesheet" th:href="@{/plugin/bootstrap-datetimepicker/boot ...

  10. Kafka入门(安装及使用)

    Kafka是一种分布式的,基于发布/订阅的消息系统. Kafka的组成包括: Kafka将消息以topic为单位进行归纳. 将向Kafka topic发布消息的程序成为producers. 将预订to ...