软工作业2:个人作业2:第一次个人编程作业
博客班级 | 2018软件工程1班(福州大学至诚学院 - 计算机) |
---|---|
作业要求 | 作业要求 |
作业目标 | 擅用 Chrome 的开发者工具,熟悉 git 从本地同步到远程仓库的流程和命令 |
作业源代码 | 码云仓库地址 |
学号 | 211806345 |
代码行数 | 156行 |
---|---|
需求分析时间 | 2h |
编码时间 | 8h |
需求:
- 获取不同类型活动的经验值
- 经验值的页面元素没有任何的id,class这种供与其他标签区分的选择器或者其他属性
- 在“课堂小测”部分中有几个活动需要考虑到互评经验值
- 需要考虑是否“已参与”某个活动
- 编写分数计算规则
- 使用 git 工具将本地仓库代码同步到远程仓库
- 使用https协议仓库地址进行远程推送
- 使用ssh协议仓库地址进行远程推送
学习成本及思路的过程转变:
-
参考同学们的博客,知道了获取页面元素有 Jsoup API 可以调用,学习使用 Jsoup API
-
写入配置文件和解析 html 文件
- 配置文件和jar包的使用在上学期的 12JDBC文档 中有提到,回顾使用。
-
在获取页面元素这里花费了巨大的时间成本思考,如何获取经验值,没有id,class标签,那我该如何区分他们,他们的差别在哪,如何区分每一个部分(课前自测,课前小测,课堂完成,编程题,附加题)的经验值。
- 每个活动都是由 class = interaction-row 的div元素开头
- 每个活动中都有若干个span标签
- 在若干个span标签中第二个总是活动名称
- 而“经验值”总是最后一个span标签(有互评经验存在除外)
- 到这里这些规律足够了。
-
是否“已参与”某个活动,思路由靠颜色(红绿)来区分是否“已参与”到直接识别定位的span标签中是否有“已参与”字样,并且和每一活动的名字一起作为判断是否要累加经验值和在哪个部分累加经验值的条件
String attend = document.select("div[class = interaction-row]").get(i).select("span[style='color:#8FC31F']").text();
Boolean isAttend = attend.contains("已参与");
if(section_name.contains("课堂小测") && isAttend == true) {·····}
疑惑:
同时在这里注意到,修饰“经验值”的span标签和修饰“已参与”字样的span标签,他们的属性,样式都是一致的,如图,
那么既然我能获取到与修饰经验值完全相同的标签的“已参与”字样,那为什么不可以直接获取到经验值呢,那不就可以将获得的字符串类型的经验值中的数字经转换后提取出来,一切皆大欢喜- - 。。。
只是在获取经验值那里变得更灵活了,不单单只是靠规律(每个活动的最后一个span是经验值,而且带互评经验的无法适用这一规律)得到经验值了。
然而
已解决:“已参与”和“经验值”的span标签的css属性并不相同!!!(差别在“;”)如图
补充:忘了作业要求是做成命令行小工具,感谢舍友桂莺的提醒和帮助 😘
开始做作业遇到的问题有:
1.在这个页面停留了良久,
2.不知道如何写命令行工具
3.参考同学提交的博客,表示看不懂
4.小到如何创建一个properties文件和jar包,如何去使用。
本身的问题:
- 习惯于上学期老师一步一步给出每个步骤,然后进行编程的思路
- 感受到了自己知识的贫瘠。。。。。。。。
参考资料:
https://www.cnblogs.com/211806342wbw/p/13643286.html
https://www.cnblogs.com/Icarus52/p/13638303.html
https://www.cnblogs.com/sam-uncle/p/10922366.html
https://blog.csdn.net/qq_15158911/article/details/54411979