第二次个人编程作业:代码互改

博客班级 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 信息

“让我看看你的代码!”

  1. 范青青

提交的建议:对于数据的计算部分可以单独分装成一个函数进行调用,方便后续的代码改进,也可以提高代码的复用


2. 陈甜

提交的建议:将计算部分单独封装为一个函数进行调用,方便后续调整,也可以提高代码的复用率


3. 林晶涵

提交的建议:将计算部分单独封装为一个函数进行调用,方便后续调整,也可以提高代码的复用率


4. 林梦妍

提交的建议:将计算部分单独封装为一个函数进行调用,方便后续调整,也可以提高代码的复用率


5. 刘子文

提交的建议:将put方法的一系列调用单独封装为一个函数,方便后续调整,也可以提高代码的复用率

“容我再改一改!”

issue

  1. 陈甜
  2. 林梦妍

pull requests


3. 陈颖鹏

  • 后续已更改完毕

自我修改

  1. 对于原代码进行的函数分装,并分成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;
	}
  1. 简化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;
	}
}

“让我再看一看!”

  1. 陈甜

    改进:设置了getScore方法将计算分数的代码提取出来封装为一个方法
    目前还有部分未被采纳
    原因:对方还在修改代码

参考资料

  1. git的基本操作
  2. git修改已提交备注信息
  3. git已提交备注信息再次提交到仓库要进行git pull再用git push
  4. Jsoup API 建议用Chrome打开使用这个浏览器自带的翻译查看更方便
  5. 已建好仓库设置issue和pull requests模板
  6. 合并两个git仓库
  7. git 拉取别人代码,自己修改再贡献(pull request操作)
posted @ 2020-09-17 14:41  陌语mo  阅读(215)  评论(0编辑  收藏  举报