zoukankan      html  css  js  c++  java
  • 软件工程 2016.6.29 日报

    软件工程 2016.6.29 日报


     

      今天我的主要工作就是调查了解我校的加权平均分计算方法,并将程序加权计算部分予以修正。

      通过查阅北工大教务公示,获得信息:

        第十条学校利用“学分通过率”和“加权平均分”作为衡量学生在校期间学习质量的主要指标。辅修课程、创新学分和第二课堂的学分和成绩不计入学分通过率和加权平均分的计算。创新学分和第二课堂是学生获得毕业资格的必要条件。理工类专业学生应修不少于4学分的创新学分,其他专业应修不少于2学分的创新学分。第二课堂应修满12学分。

      同时,通过询问同学获取了在教务管理中对辅修课程的表示:

        在网站数据中有辅修标记一栏,该栏标记为2即表示辅修课程。

      除此之外,根据同学的反映,对于不及格的科目,是不计算在加权平均分中的,所以需要将不及格的科目不做处理。

      根据调查的资料修改了加权平均分部分的计算逻辑,由于在数据抓取部分没有抓取辅修课程标记一栏,所以对于这方面暂时无法进行修改。但对于创新学分课程以及第二课堂课程在代码逻辑中进行了排除。这就是今天所做的工作。

      

      下面是修改后的代码逻辑:

     1 #region ----------计算加权平均分----------
     2         /// <summary>
     3         ///     计算加权平均分
     4         /// </summary>
     5         /// <param name="calculateData">筛选后的成绩列表</param>
     6         /// <param name="weightedMean">加权平均分</param>
     7         /// <returns>计算是否成功</returns>
     8         public static bool CalculateWeightedMean(DataTable calculateData, out double weightedMean)
     9         {
    10             //若输入数据表为空,则不计算。
    11             if (calculateData.Rows.Count == 0)
    12             {
    13                 weightedMean = 0;
    14                 MessageBox.Show("[ERROR]No data to calculate weighted mean.");
    15                 //Console.WriteLine("[ERROR]No data to calculate weighted mean.");
    16                 return false;
    17             }
    18 
    19             try
    20             {
    21                 //计算学分和、成绩*学分和
    22                 double sumOfCredit = 0, sumOfGrade = 0;
    23                 foreach (DataRow dr in calculateData.Rows)
    24                 {
    25                     //如果成绩为数字且不是第二课堂性质的课程,计算加权
    26                     if (Regex.IsMatch(Convert.ToString(dr["成绩"]), pattern) && !Convert.ToString(dr["课程性质"]).Equals("校选修课") && Convert.ToInt32(dr["成绩"]) >= 60)
    27                     {
    28                         sumOfCredit += Convert.ToDouble(dr["学分"]);
    29                         sumOfGrade += Convert.ToDouble(dr["成绩"]) * Convert.ToDouble(dr["学分"]);
    30                     }
    31 
    32                 }
    33                 weightedMean = sumOfGrade / sumOfCredit;
    34                 return true;
    35             }
    36             catch (Exception e)
    37             {
    38                 weightedMean = -1;
    39                 MessageBox.Show("{0}", e.Message);
    40                 //Console.WriteLine("{0}", e.Message);
    41                 return false;
    42             }
    43         }
    44         #endregion
  • 相关阅读:
    某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
    BAT面试上机题从3亿个ip中找出访问次数最多的IP详解
    Android 最流行的吸顶效果的实现及代码
    postgresql某进程占用cpu资源过高,降不下来
    媳妇要转java开发,我该怎么办?
    【原创】微信公众号电影网站域名被屏蔽完美解决方案!
    java如何对List集合中的元素进行排序(请收藏)
    【转】多语言的正则表达式,我们应该掌握
    【转】app之YdbOnline说明文档
    [敏捷开发实践](0) 开始
  • 原文地址:https://www.cnblogs.com/fanfan-blogs/p/5628142.html
Copyright © 2011-2022 走看看