第一次个人编程作业:我的分数我做主

博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE2?page=3
作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018SE2/homework/11169
作业目标 熟悉git的初步使用,养成做随笔的习惯,以及分享自己写的代码
作业源代码 https://gitee.com/chenbartender/personal/tree/master/
学号 211806306

一.完成记录

  代码行数:84行  需求分析时间:1小时  编码时间:3小时

二.分析

1.需求分析
把云班课上的得分提取出来,按照算法将得分换算成总成绩
2.思路分析
分为三个大块

  • 把云班课网页保存成html文件,再解析文件把经验提取出来。
  • 把提取出来的成绩按照要求进行计算。
  • 把Java文件转化成exe文件,并上传git仓库分享。
    优势:使要求变得清晰,分块完成提高效率

三.编码过程

  1. 首先保存云班课网页,保存后思考怎样将代码解析出来,通过csdn查询,可用Jsoup包把HTML文件解析成doument从而进一步对网页解析
File htmlsmall = new File("small.htm");
File htmlall = new File("all.htm");
Document small = Jsoup.parse(htmlsmall, "UTF-8");
Document all = Jsoup.parse(htmlall, "UTF-8");

2.第二步,对网页源代码的观察,发现有关题目的链接,类名都为interaction-row,因此我用类选择器将所有类名带interaction-row的提取出来,生成一个Element数组Elements

Elements smallelem = small.getElementsByClass("interaction-row");
Elements allelem = all.getElementsByClass("interaction-row");

3.第三步,对页面进一步观察,发现有关分数的代码都为,第二步提取的集合的子类,以此用方法.child()来确定题目名称显示的代码,以及有关分数显示的代码。

String mz = smallzhang.child(1).child(0).text();

4.第四步,通过对题目名称代码的定位成功,我将题目名称转化成String字符串,用indexOf()判断字符串中是否含有指定字符串,如判断是否含有“编程题”字符串,从而将题目分为5种题目

if (mz.indexOf("编程题")>=0) {}

5.第五部,由于得到分数的题目,会显示“已参与”字样,因此我将“已参与”作为筛选条件,成功的将得到分的分数字符串筛选出来,并通过字符串的相关函数,把字符串中的分数数字提取出来,并转换成double类型,进行同类型题目的相加

String canyu = smallzhang.child(1).child(2).child(0).child(7).text().replaceAll("经验", "").replaceAll("互评","").replaceAll(" ", "");
int cy = Integer.parseInt(canyu);
String huping = smallzhang.child(1).child(2).child(0).child(9).text().replaceAll("经验", "").replaceAll("互评","").replaceAll(" ", "");
int hp = Integer.parseInt(huping);
FS+=cy+hp;

6.第六步,由于粗心大意,忘记考虑若分数中有互评价的情况,因此重新编写提取分数的相关代码
7.第七步,其他题目提取分数方式如上,不再赘述
8.第八步,取得5种题型的总分,将总分按照要求进行计算,并且与配置的分数进行相除得出总分。
9.第九步,配置应得总分文件,并且按照要求换算
完善:通过观察,发现各种题型提取分数的核心代码几乎相同,因此我将提取方式写成行数,分别调用行数来获取题型的到的分数。

public Double Smallfenshu(Elements smallelem,String leixing) {
		Double FS=0.0;
		for (int i = 0; i < smallelem.size(); i++) {
			Element smallzhang = smallelem.get(i);
			String mz = smallzhang.child(1).child(0).text();
			String fs = smallzhang.child(1).child(2).child(0).text();
			if (mz.indexOf(leixing)>=0) {
				if (fs.indexOf("已参与")>=0) {
					if (fs.indexOf("互评")>=0) {
						String canyu = smallzhang.child(1).child(2).child(0).child(7).text().replaceAll("经验", "").replaceAll("互评","").replaceAll(" ", "");
						int cy = Integer.parseInt(canyu);
						String huping = smallzhang.child(1).child(2).child(0).child(9).text().replaceAll("经验", "").replaceAll("互评","").replaceAll(" ", "");
						int hp = Integer.parseInt(huping);
						FS+=cy+hp;
					}
					else {
						String canyu = smallzhang.child(1).child(2).child(0).child(7).text().replaceAll("经验", "").replaceAll("互评","").replaceAll(" ", "");
						int cy = Integer.parseInt(canyu);
						FS+=cy;
					}
				}
			}
		}
		return FS;
	}

四.查阅文献

posted @ 2020-09-13 23:58  酒保陈某某  阅读(180)  评论(1编辑  收藏  举报