软件工程与UML第二次作业

博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE2/
作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018SE2/homework/11169
作业目标 <用博客记录作业,根据要求进行编程,在码云上建仓库来放代码>
作业源代码 https://gitee.com/lu-guiying/personal
学号 <211806398>
项目 内容
具体进行需求分析 2-3h
编码加学习 2天
代码行数 127行

虽然具体进行需求分析时间很短,但其实周四周五空闲的时候就有在想该怎么做

看完题目我的想法

其实看完题目我的第一反应是用前端来做,因为js和jquery可以很容易获取到html元素的内容,再通过字符串的截取,将截取到的内容转成数字存到数组,就能拿到经验值进行计算。
但是后来发现以后的作业是在这次作业的基础上完成,所以后来我认为这次作业得用java来写。但是好久没有写java了,估计得做很多的准备工作。

编程前的准备

我认为本次作业的难点为:
1)如何读取解析html文件
2)如何准确获取到html元素里的内容
3)如何计算

明确了难点,但没有思路
查阅资料后发现jsoup可以将HTML解析成一个Document对象,然后可以从Document中获取需要的元素,而jsoup的document对象继承了Element对象,元素继承了Node类,可以类似前端的方法来获取到元素
参考java怎么解析html内容

思路

1)加载配置文件,得到所有部分总的经验值

  • 将每一部分总的经验值设为全局静态变量,方便之后的计算
  • 用一个方法给所有的变量赋上对应配置文件里的值【Java 读写Properties配置文件
    • 从配置文件中加载配置项:使用Properties的load()方法
    • 读取配置项中的结果:使用Properties的getProperty()方法

2)进行计算

  • 解析html,如
//解析html文件
File sFile = new File("small.html");
Document all = Jsoup.parse(sFile,"UTF-8");
  • 观察html文件的规律,看看怎么得到想要的数据
    • 所有的小活动包含的内容都被class="interaction-row"的div包裹着,所以可以很容易获取到每个活动的div
    • 获得各个活动的特定名称(如标识了课堂完成部分)并进行判断是不是相应的活动,之后就可以按照不同的活动进行计算【不同的活动有多个,需要用循环才能找到所有不同的活动】
      //通过链式编程寻找到想要的活动名,也可以用这样的方法找到“已参与”和获得的经验值
      activDivs.get(i).child(1).child(0).child(1).text().indexOf("课堂完成部分")

注意:课堂小测含有互评份额,需要另外考虑经验值,在这里我用的是判断元素里是否有“互评”,有的话就根据字符串的特点来截取,再按规则进行计算

  • 获得到经验值的文本后,我用字符串截取获取到值后再转为double(因为要用多次,所以用了一个方法封装),为以后的计算做准备
        //参数1:带有文本内容为经验值的字符串,参数2:开始截取字符串的位置
	public static Double partScore(String scoreString,int index) {
		double score=0.0;
		//截取到经验值并转为double
		score = Double.parseDouble(scoreString.substring(index, scoreString.length()-3));
		return score;
	}
  • 计算成绩
    • 计算规则如上图
    • 课堂完成部分和课前自测我采用的是根据不同活动,计算我参加后得到的经验,根据计算规则计算
    • 互评成绩需要在参加活动之后判断计算
      很疑惑判断条件写成activDivs.get(i).child(1).child(2).child(0).child(9).text() != null就报数组越界错误
      activDivs.get(i).child(1).child(2).child(0).text().indexOf("互评") != -1就不会报错
    • 附加题和编程题还有课前自测我采用的是先算出我获得的总经验值然后再根据计算规则运算

4)输出

git使用问题

  • git显示user.name时出现乱码,修改了区域的设置后不乱码了,但是发现eclipse用不了了,改回来又能用了,迷惑……
  • 使用git提交代码时遇到了一些问题,感谢舍友晓玲的帮助❥(^_-),让我顺利交上作业

总结

  • 在做这次作业的时候深刻意识到自己会的实在太少
  • 体验了一把做中学,感觉还不错
  • 虽然我不喜欢这种没有画面没有颜色的编程,但是做完作业还是成就感满满
  • 把博客园的样式修改了一点点,但是在晓玲的电脑里显示异常,但是我们的电脑分辨率都是一样的,但显示出来的却不一样,疑惑……
  • 遗漏了题目中要求使用命令行工具,以后要更加仔细阅读题目
  • 发现写博客有很多乐趣哈哈
  • 需要学的还有很多,继续加油ヾ(◍°∇°◍)ノ゙

参考内容

1)jsoup下载
2)Eclipse下导入外部jar包的3种方式(用于导入下载的jsoup包)
3)快速格式化html代码(vs code):拓展商店搜索Beautify,下载完成后点击F1,输入Beautify file,点击Beautify file即可
4)jsoup Cookbook(中文版)
5)在命令行中运行在eclipse中编写的Java程序
6)晓玲的作业博文
7)https://www.cnblogs.com/Icarus52/p/13638303.html

原文地址:https://www.cnblogs.com/211806398luguiying/p/13650851.html