第一次个人编程作业:我的分数我做主
| 博客班级 | 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上还是用了不少时间。只能说我平时很少做有点困难的作业,对于前端的知识
也没有什么跟进还有部分基础知识薄弱。


浙公网安备 33010602011771号