第二次个人编程作业:代码互改
博客班级 | https://edu.cnblogs.com/campus/fzzcxy/2018SE1 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/fzzcxy/2018SE1/homework/11195 |
作业目标 | 对别人的代码做出评价,并采纳别人的意见对自己的代码进行适当的更改 |
作业源代码 | https://gitee.com/zhao-xiangmin/personal |
学号 | 211803240 |
自己的代码仓库添加 Issues 模板
Commit 信息
“让我看看你的代码!”
提交的建议:对于数据的计算部分可以单独分装成一个函数进行调用,方便后续的代码改进,也可以提高代码的复用
2. 陈甜
提交的建议:将计算部分单独封装为一个函数进行调用,方便后续调整,也可以提高代码的复用率
3. 林晶涵
提交的建议:将计算部分单独封装为一个函数进行调用,方便后续调整,也可以提高代码的复用率
4. 林梦妍
提交的建议:将计算部分单独封装为一个函数进行调用,方便后续调整,也可以提高代码的复用率
5. 刘子文
提交的建议:将put方法的一系列调用单独封装为一个函数,方便后续调整,也可以提高代码的复用率
“容我再改一改!”
issue
- 陈甜
- 林梦妍
pull requests
3. 陈颖鹏
- 后续已更改完毕
自我修改
- 对于原代码进行的函数分装,并分成git内运行的代码与eclipse内运行代码(此处仅粘贴修改代码)
public static void main(String[] args) {
// 加载配置文件
Map<String, Double> totalScore = getTotalScore("total.properties");
// 初始化自己成绩的哈希表
// 如果输入的两个源文件的参数不足,提示用户并结束程序
/*if(args.length < 2) {
System.out.println("输入参数缺少!\n参数1 - 小班课的网页源文件\n参数2 - 大班课的网页源文件。");
System.exit(0);
}*///这里运用于git bash无传参时的报错
//Map<String, Double> iScore = initIScore(args[0], args[1]);//此传参方式仅限于git bash运行
Map<String, Double> iScore = initIScore("small.html", "all.html");
// 计算并输出结果
System.out.println(String.format("%.2f", calFinalScore(totalScore, iScore)));
}
//计算自己获取的经验
public static double getScore(Element e) {
// 将一个活动中的所有 span 标签提取出来
Elements span = e.select("span[style]");
double score = 0;
// 提取经验
for(int i = 0; i < span.size(); i++) {
// 判断是否含有经验关键字
if(span.get(i).text().contains("经验")) { // 表示分离出来的第 i 个标签的文本内容含有 “经验” 关键字
// 含有 “互评” 和不含有的计算方式不一样,先按空格分割
if(span.get(i).text().contains("互评")) { // 表示分离出来的第 i 个标签的文本内容含有 “互评” 关键字
// 互评 x 经验
// 如果是 “互评” ,[1] 即为经验数字的下标
score += Double.parseDouble(span.get(i).text().split(" ")[1]);
}else {
// x 经验
// 如果不是 “互评”,[0] 即为经验数字的下标
score += Double.parseDouble(span.get(i).text().split(" ")[0]);
}
}
}
return score;
}
- 简化select检索获取html元素方法,重新写了一组代码(此处省略import信息)
public class Score {
//定义自己每一部分的经验变量并设置初始值
public static int before = 0;
public static int base = 0;
public static int test = 0;
public static int program = 0;
public static int add = 0;
public static void main(String[] args) throws Exception {
//调用配置文件获取每一部分的总经验值信息
Properties pps = new Properties();
pps.load(new FileInputStream("total.properties"));
System.out.printf("%.2f",gettotalScore(pps));
}
//计算总分数
public static double gettotalScore(Properties pps) throws IOException {
//Enumeration fileName = pps.propertyNames();
int allBefore = Integer.parseInt(pps.getProperty("before"));
int allBase = Integer.parseInt(pps.getProperty("base"));
int allTest = Integer.parseInt(pps.getProperty("test"));
int allProgram = Integer.parseInt(pps.getProperty("program"));
int allAdd = Integer.parseInt(pps.getProperty("add"));
//调取大小班课计算分数函数,将算后的数字存入公用数据中
getsmallScore();
getallScore();
//经验值换算百分制成绩
double before0 = before*1.0/allBefore*100;
double test0 = test*1.0/allTest*100;
double base0 = base*1.0/allBase*100*0.95;
double program0 = program*1.0/allProgram*100;
if(program0>95) {
program0 = 95.0;
}
double add0 = add/allAdd*100;
if(add0>90) {
add0 = 90.0;
}
double score = base0*0.3+test0*0.2+before0*0.25+program0*0.1+add0*0.05 + 6;
return score;
}
//提取小班课的经验值算的分数
public static void getsmallScore() throws IOException {
//使用jsoup来解析html文件从而获取自己的经验值信息
Document document = Jsoup.parse(new File("small.html"), "utf-8");
int classs_Length = document.select("div[class = interaction-row]").size();
// 注意:活动排序是页面上从上到下的顺序
for(int i=0;i<classs_Length;i++) {
Elements section = document.select("div[class = interaction-row]").get(i).select("span");
int span_Size = section.size();
String section_Name = section.get(1).text();
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) {
//有互评经验
if(i==7 || i==11 || i==15 || i==24) {
String experiences = section.get(span_Size-3).text();
String experiences1 = section.get(span_Size-1).text();
test += (str_Num(experiences)+str_Num(experiences1));
}else {
String experiences = section.get(span_Size-1).text();
test += str_Num(experiences);
}
}
if(section_Name.contains("课堂完成") && isAttend == true) {
String experiences = section.get(span_Size-1).text();
base += str_Num(experiences);
}
if(section_Name.contains("编程题") && isAttend == true) {
String experiences = section.get(span_Size-1).text();
program += str_Num(experiences);
}
if(section_Name.contains("附加题") && isAttend == true) {
String experiences = section.get(span_Size-1).text();
add += str_Num(experiences);
}
}
}
////提取大班课的经验值算的分数
public static void getallScore() throws IOException {
Document document = Jsoup.parse(new File("small.html"), "utf-8");
Document document2 = Jsoup.parse(new File("all.html"),"utf-8");
int classs_Length2 = document2.select("div[class = interaction-row]").size();
for(int i=0;i<classs_Length2;i++) {
Elements section2 = document2.select("div[class = interaction-row]").get(i).select("span");
int span_Size2 = section2.size();
String section_Name2 = section2.get(1).text();
String attend = document.select("div[class = interaction-row]").get(i).select("span[style='color:#8FC31F']").text();
Boolean isAttend = attend.contains("已参与");
if(section_Name2.contains("课前自测") ) {
String ex = section2.get(span_Size2-1).text();
before += str_Num(ex);
}
}
}
//将字符串中的数字提取出来。
public static int str_Num(String str) {
String str2="";
if(str != null && !"".equals(str)){
for(int i=0;i<str.length();i++)
if(str.charAt(i)>=48 && str.charAt(i)<=57)
str2+=str.charAt(i);
}
int str3 = Integer.parseInt(str2);
return str3;
}
}
“让我再看一看!”
- 陈甜
改进:设置了getScore方法将计算分数的代码提取出来封装为一个方法
目前还有部分未被采纳
原因:对方还在修改代码
参考资料
- git的基本操作
- git修改已提交备注信息
- git已提交备注信息再次提交到仓库要进行git pull再用git push
- Jsoup API 建议用Chrome打开使用这个浏览器自带的翻译查看更方便
- 已建好仓库设置issue和pull requests模板
- 合并两个git仓库
- git 拉取别人代码,自己修改再贡献(pull request操作)