博客班级 | https://edu.cnblogs.com/campus/fzzcxy/2018SE2 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/fzzcxy/2018SE2/homework/11169 |
作业目标 | 通过编程算出上学期自己java的成绩,学习规划编程时间,记录自己编码学习过程 |
作业源代码 | https://gitee.com/d1216105802/personal |
学号 | 211806413 |
一、代码行数:
二、时间分析:
流程 | 时间 |
---|---|
思考 | 30min |
学习 | 120min |
编码 | 150min |
测试 | 10min |
Git的搭建与使用 | 20min |
撰写博客 | 30min |
共计 | 360min |
三、思路分析:
本次作业需要我们计算上学期的java的期末成绩,这需要我们从两个云班课上所获的经验值进行加权计算。
首先我们需要从HTML中获得我们的数据。经过搜寻发现了java中有个解析HTML文件的包叫做jsoup。
jsoup包下载:https://jsoup.org/download
导入教程:https://blog.csdn.net/qq_43597899/article/details/98744572
使用教程:https://www.open-open.com/jsoup/
通过jsoup解析HTML
Document doc_small = Jsoup.parse(new File("src\small.html"), "UTF-8");
之后分析HTML的组成选取关键标签为我们所需的内容进行定位。
通过分析知道了我们所做的作业都在一个class名为interaction-row的div标签。
Elements small = doc_small.getElementsByAttributeValue("class", "interaction-row");
然后筛选输出需要的任务名称。
small.get(i).child(1).child(0).toString().contains("课堂完成")
之后我们需要判断这次作业是否有完成,我利用的是完成作业后经验值样式变为"#8FC31F"。
未完成:
已完成:
small.get(i).child(1).child(2).toString().contains("#8FC31F")
然后通过定位将经验值所在具体位置并将所获得的内容进行过滤。
String str_base = small.get(i).child(1).child(2).children().get(0).children().get(7).text().replaceAll("经验", "");
最后把所得的经验值进行累加。
附上具体操作代码:
for (i = 0; i < small.size(); i++) {
if (small.get(i).child(1).child(0).toString().contains("课堂完成")) {
if (small.get(i).child(1).child(2).toString().contains("#8FC31F")) {
String str_base = small.get(i).child(1).child(2).children().get(0).children().get(7).text().replaceAll("经验", "");
double fbase = Float.parseFloat(str_base);
base += fbase;
}
}
}
其他任务以此类推。
再然后我们需要一份配置文件用于计算加权后的经验值。
Properties pps = new Properties();
pps.load(new FileInputStream("src\total.properties"));
double tt_before = Double.parseDouble(pps.getProperty("before"));
double tt_test = Double.parseDouble(pps.getProperty("test"));
double tt_base = Double.parseDouble(pps.getProperty("base"));
double tt_program = Double.parseDouble(pps.getProperty("program"));
double tt_add = Double.parseDouble(pps.getProperty("add"));
base = base / tt_base * 100 * 0.3;
before = before / tt_before * 100 * 0.25;
test = test / tt_test * 100 * 0.2;`
program = program / tt_program * 100 * 0.1;
add = add / tt_add * 100 * 0.05;
double sum=base+before+test+program+add;
System.out.println(Double.parseDouble(String.format("%.2f",sum)));
最后我们需要配置Git并建立本地仓库与远程仓库并将它们关联起来然后并上传
过程:
ssh -T git@gitee.com
连上码云
git add <文件名>
上传作业至暂存区
git commit -m"<提交信息>"
将作业提交
git push
提交至远程仓库
完成本次作业可以说是困难重重,通过这次作业我才知道java中有个jsoup包课以解析HTML
并且我也花了大把的实间去了解jsoup的使用方式,虽说他的使用几乎与前端的dom操作一样
但是用在java上还是用了不少时间。只能说我平时很少做有点困难的作业,对于前端的知识
也没有什么跟进还有部分基础知识薄弱。