软件工程与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
软件工程与UML第二次作业的更多相关文章
- 软件工程基础团队第二次作业(团队项目-需求分析&系统设计)成绩汇总
一.作业题目 团队第二次作业:需求分析&系统设计 二.具体要求 1.作业任务 任务一:组长组织项目组开展需求调研工作(可采取需求调查.问卷.分析已有软件.网上资料等方法).概要设计.详细设计. ...
- 软件工程与UML 第一次个人作业
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 这个作业要求在哪里 https://edu.cnblogs.com/campus/f ...
- UML第二次作业
一.plant UML语法学习小结 1.类之间的关系 使用.. 来代替 -- 可以得到点 线. 在这些规则下,也可以绘制下列图形 @startumlClass01 <|-- Class02 Cl ...
- UML第二次作业:类在类图中的表示
类在类图中的表示 一.概览 1.plant UML语法学习小结 2.班级学生管理系统中的 —— “学生” 类的属性.方法 3.类图脚本程序 4.类图示例 二.类图语法学习小结 1.类之间的关系 通过某 ...
- UML第二次作业(代码互评)
博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE2/ 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018S ...
- 第一次软件工程与UML的编程作业
博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018S ...
- 【软件工程实践】第二次作业:分布式版本控制系统Git的安装与使用
1.下载安装配置用户名和邮箱. 2. 创建工作目录并通过git init命令把这个目录变成Git可以管理的仓库. 3. 在工作目录下准备文本文件,建议下载Notepad++代替记事本. 4. 组合用g ...
- 软件工程(QLGY2015)第二次作业点评(随机挑选20组点评)
相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 说明:随机挑选20组点评,大家可以看看blog名字,github项目名字,看看那种是更好的,可以学习,每个小组都会反应出一些问题,希望能 ...
- 软件工程(GZSD2015)第二次作业小结
第二次作业,从4月7号开始,陆续开始提交作业.根据同学们提交的作业报告,相比第一次作业,已经有了巨大改变,大家开始有了完整的实践,对那些抽象的名词也开始有了直观的感受,这很好.然后有一些普遍存在的问题 ...
随机推荐
- python使用redis缓存数据库
Redis 关注公众号"轻松学编程"了解更多. Windows下直接解压可用,链接:https://pan.baidu.com/s/1rD4ujoN7h96TtHSu3sN_hA ...
- RabbitMQ相关概念的理解
1.什么是消息? 消息就是程序(服务)之间传递的数据(图/文/声/像). 2.MQ是什么? MQ(MessageQueue)是指消息队列亦或消息总线.是消息的容器,这个容器的策略是FIFO(先进先出) ...
- [MIT6.006] 8. Hashing with Chaining 散列表
一.字典 在之前课里,如果我们要实现插入,删除和查找,使用树结构,最好的时间复杂度是AVL下的Ο(log2n),使用线性结构,最好的复杂度为基数排序Ο(n).但如果使用字典数据类型去做,时间复杂度可为 ...
- python之《matplotlib》
# _*_coding:utf-8_*_# /usr/bin/env python3# Author:book Mikiimport matplotlib.pyplot as pltimport nu ...
- oracle 相关 sql
- bluestore的osd自启动
前言 自启动相关的文章很多,有分析的很详细的文章,这里就不做赘述,本篇讲述的是什么情况下用,怎么用的问题 使用场景 一台机器的系统盘坏了,需要重装系统,相关的一些信息没有了,但是上面的数据盘还是在的, ...
- 医学AI论文解读 |Circulation|2018| 超声心动图的全自动检测在临床上的应用
文章来自微信公众号:机器学习炼丹术.号主炼丹兄WX:cyx645016617.文章有问题或者想交流的话欢迎- 参考目录: @ 目录 0 论文 1 概述 2 pipeline 3 技术细节 3.1 预处 ...
- EF Core 二 、 入门 EF Core
入门EF Core 我们将开始真正的EF之旅了,这里使用SqlServer数据,然后DbFirst: 为嘛使用SqlServer,目前公司的整体业务全部在SqlSever,所以很多产品业务都是依托于这 ...
- RSA(攻防世界)Rsa256 -- cr4-poor-rsa
RSA256 [攻防世界] 题目链接 [RSA256] 下载附件得到两个文件. 猜测第一个 txt 文件 可能为RSA加密密文 ,第二个估计就是密钥.依次打开看看: 果然如此. 目标: 寻找 n.e. ...
- MyBatis学习01
1.初识MyBatis 环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 什么是M ...