博客班级 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. 如何做可靠的分布式锁,Redlock真的可行么

    本文是对 Martin Kleppmann 的文章 How to do distributed locking 部分内容的翻译和总结,上次写 Redlock 的原因就是看到了 Martin 的这篇文章 ...

  2. springboot + post 中文乱码

    去检查你的 filter 配置,是否配置了一个最高优先级的 filter, 这个最高优先级的 filter 会影响 springboot 自动配置的 CharacterEncodingFilter.原 ...

  3. 超值干货 | 建议收藏:精美详尽的 HTTPS 原理图注意查收!

    作为一个有追求的程序员,了解行业发展趋势和扩充自己的计算机知识储备都是很有必要的,特别是一些计算机基础方面的内容,就比如本篇文章要讲的计算机网络方面的知识.本文将为大家详细梳理一下 HTTPS 的实现 ...

  4. 【转载】图解Transformer(完整版)!

    在学习深度学习过程中很多讲的不够细致,这个讲的真的是透彻了,转载过来的,希望更多人看到(转自-张贤同学-公众号). 前言 本文翻译自 http://jalammar.github.io/illustr ...

  5. Java多线程技术:实现多用户服务端Socket通信

    目录 前言回顾 一.多用户服务器 二.使用线程池实现服务端多线程 1.单线程版本 2.多线程版本 三.多用户与服务端通信演示 四.多用户服务器完整代码 最后 前言回顾 在上一篇<Java多线程实 ...

  6. 《Python3反爬虫原理与绕过实战》作者韦世东

    可以用(k1,k2)-k1来设置,如果有重复的key,则保留key1,舍弃key2/打印appleMap{1=Apple{id=1,name=苹果1,money=3.25,num=10},2=Appl ...

  7. animation关键帧动画语法

    基本声明和用法 @-webkit-keyframes NAME-YOUR-ANIMATION { 0% { opacity: 0; } 100% { opacity: 1; } } @-moz-key ...

  8. @requestBody 与@requestparam详解

    @RequestParam注解接收的参数是来自于requestHeader中,即请求头.都是用来获取请求路径url 中的动态参数,格式为xxx?username=123&password=45 ...

  9. InnoDB Insert Buffer(插入缓冲 转)

    一,插入缓冲(Insert Buffer/Change Buffer):提升插入性能 只对于非聚集索引(非唯一)的插入和更新有效,对于每一次的插入不是写到索引页中,而是先判断插入的非聚集索引页是否在缓 ...

  10. 编译一个支持多线程的php安装包

    前言 因为项目上的需要,需要用到php,一般来说,用默认的版本和配置就可以满足大多数的场景,因为需要加入多线程,所以需要自己编译一个包 一般来说,发行的包的版本的配置选项和代码都是最稳定的,所以在大多 ...