第一次个人编程作业:我的分数我做主 - 软件工程与 UML
2024-09-06 10:47:47
博客班级 | 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
思路分解:
加载配置文件 total.properties
配置文件加载到一个 hashMap 中便于后续计算时使用。
Properties pp = new Properties();
pp.load(new FileInputStream(filename));
...
totalScore.put("before", Double.parseDouble(pp.getProperty("before")));
...
读取 small.html 和 all.html
- 使用 File 类和 InputStream 类读取文件
解析 small.html 和 all.html
- 使用字符串的方法进行分析,但是效率太差
因效率问题,后期更改思路,以下为思路更改方案:
寻找新的解析 html 代码的方法
使用 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 也是一个非常棒的工具,可以将自己的代码存到云端并且可以版本回溯,出了问题可以及时查看对比之前版本进行比较排查出问题代码,还能为自己的电脑省下不少空间。
参考资料:
最新文章
- Markdown学习
- 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)
- 如何定位Sharepoint网站集所在的w3wp进程
- tomcat实现ServletContext的addListener方法的源码解说(原创)
- python面试2
- Gradle tip #2: understanding syntax
- linux实践——内核编程 基础模块
- PIT,BL,AP,CP,CSC
- tftp使用方法
- ASP.NET - 分页
- 我们常说的 CAS 自旋锁是什么
- Linux下Zookeeper安装使用
- 安装Adobe时出现Adobe Application Manager丢失或损坏解决方法
- 第62节:探索Java中的网络编程技术
- docker保存、载入、导出、导入
- windos 开启openssl
- Glusterfs3.3.1DHT(hash分布)源代码分析
- LNMP结合discuz的配置
- Cortex-M3 and Cortex-M4 Memory Organization
- Qt5.3中qml ApplicationWindow设置窗口无边框问题