第二次结对作业:班级成绩表
作业要求 | 作业要求链接 |
---|---|
作业目标 | 通过网络爬取网页数据并输出成txt格式 |
作业源代码 | 码云仓库地址 |
队员1 | 211806340 |
队员2 | 211808332 |
结对过程
-
结对感受
谢菲菲:对于我们编程不是很好的两个人来说,这次结对作业相比上次来说难了很多,但是还是勉强完成了。希望能继续和石云凤同学合作!
石云凤:谢菲菲同学有非常强的抗压能力,即使是在放假期间也加班把任务完成了,虽然道路非常曲折,但和谢菲菲同学合作的过程还是非常愉快的!
-
结对照片
代码简介
代码行数 | 239行 |
---|---|
需求分析时间 | 1小时 |
编码时间 | 6小时 |
需求分析
这次的作业主要是对上一次的作业进行优化:
- 将从本地导入链接改成从网络。
使用Properties的getProperty()方法从配置文件中导入url和cookie。
用Jsoup把用手动设置的cookie登录的url解析成document,并从中提取分数。
Document document = Jsoup.connect(URL).header("Cookie", COOKIE).get();
- 按分数进行从高到低排序。
这一步新建类Students对分数进行比较排序。
方便建立新的类型Students设置id,姓名,分数并使用pojo类。
添加compare方法对Students中的分数进行排序。
public int compare(Students o1, Students o2) {
int sort1 = Integer.parseInt(o1.getId()) - Integer.parseInt(o2.getId());
int sort2 = (int) (o2.getExp() - o1.getExp());
return sort2==0?sort1:sort2;
}
- 将排序、平均分、最高/低分按指定格式输出成txt文件。
// 确定输出文件的目的地
File file = new File("score.txt");
// 创建指向文件的打印输出流
PrintWriter printWriter = new PrintWriter(new FileOutputStream(file), true);
// 输出数据
double ave = 0.0;
for (int j = 0; j < newStudentList.size(); j++) {
ave += newStudentList.get(j).getExp();
}
ave = ave / newStudentList.size();
printWriter.println("最高经验值" + newStudentList.get(0).getExp() + ",最低经验值"
+ newStudentList.get(newStudentList.size() - 1).getExp() + ",平均经验值" + ave);
for (int i = 0; i < newStudentList.size(); i++) {
printWriter.println(newStudentList.get(i).toString());
}
// 关闭
printWriter.close();
}
学习过程
-
cookie的使用
主要学习了cookie的属性和使用,cookie其实是web里一种客户端存储数据的方式(貌似是客户端缓存的一种),根据云班课资源里的链接找到了云班课的cookie。
再通过手动设置cookie获得url里的信息。
-
文件的打印输出流
是上个学期IO流的内容,但是平时用的很少所以已经快忘了,参考了上个学期的班课中Java高级视频全集的资源里的IO流之字符流的第26个视频
-
commit过程
-
运行效果
-
其他
数据的提取虽然是之前作业的内容,但是我们写的不是很熟练,所以这方面主要参考了陈洁同学的代码。
在程序运行时,一直没有出现txt文档,也没有报错信息,后来又突然出现了,原因不明。