博客班级 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. Servlet学习笔记(三)

    目录 Servlet学习笔记(三) 一.HTTP协议 1.请求:客户端发送欸服务器端的数据 2.响应:服务器端发送给客户端的数据 3.响应状态码 二.Response对象 1.Response设置响应 ...

  2. 系统解析Apache Hive

    Apache Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供一种HQL语言进行查询,具有扩展性好.延展性好.高容错等特点,多应用于离线数仓建设. 1. ...

  3. c#方法 最大值我最小值

    static void Main(string[] args) { int[] a = { 6, 8, 9, 5, 2, 165, 58966 }; Console.WriteLine("最 ...

  4. 2、CPU详解

    一.五大组成单元 => 三大核心组件 组成计算机五大单元可以合并成三大核心组件:CPU.IO设备.主存储器 1.控制单元+算数逻辑单元 => CPU 2.主存储器,即主记忆体 3.输入单元 ...

  5. 18、Celery

    Celery 1.什么是Clelery Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统 专注于实时处理的异步任务队列 同时也支持任务调度 Celery架构 Celery的架构由三部分组 ...

  6. leetcode134:3sum

    题目描述 给出一个有n个元素的数组S,S中是否有元素a,b,c满足a+b+c=0?找出数组S中所有满足条件的三元组. 注意: 三元组(a.b.c)中的元素必须按非降序排列.(即a≤b≤c) 解集中不能 ...

  7. 使用Python虚拟环境

    python 的虚拟环境可以为一个 python 项目提供独立的解释环境.依赖包等资源,既能够很好的隔离不同项目使用不同 python 版本带来的冲突,而且还能方便项目的发布. virtualenv ...

  8. 用DOM和DOM4J写xml文件时,怎样设置xml文档的编码

    //在将xml文档传输出去时,利用Transformer中的setOutputProperty方法 TransformerFactory trans = TransformerFactory.newI ...

  9. (5)ASP.NET Core3.1 Ocelot服务质量

    1.服务质量(Quality of Service) 对于微服务来说,熔断就是我们常说的"保险丝",意思是当服务出现某些状况时候,通过切断服务防止应用程序不断地执行可能会失败的操作 ...

  10. JavaScript全局变量与局部变量

    JavaScript中存储数据值的容器称为变量.根据变量作用域可将变量分为全局变量和局部变量. 全局变量(Global Variable) 拥有全局作用域,在JavaScript代码中任何地方都有定义 ...