zoukankan      html  css  js  c++  java
  • 工大助手--加权平均分计算

    工大助手--加权平均分计算

    实现功能


     

      1)用户可选择获取入学以来所有已修课程的相关信息:课程代号、课程名、课程属性、学分、成绩等信息。

      2)用户可选择获取特定已修课程的相关信息:课程代号、课程名、课程属性、学分、成绩等信息。

      3)用户可获得特定时间段内的加权平均分(1学期、1学年、全部)。

    团队成员


     

      13070003  张   帆

      13070046  孙宇辰

      13070004  崔   巍

      13070006  王   奈

      13070002  张雨帆

      13070045  汪天米

    加权平均分计算


       在计算加权平均分这一部分,由于每次用户查询的结果不同,所以不能使用在类中存储的数据(因为那些数据没有被筛选过),而需要用户传入一个DataTable,其中存着筛选后的成绩。对于传入的这些数据,需要逐项相加获取加权分数以及总学分,然后才能计算加权平均分。在累加的过程中,需要筛选掉第二课堂课程的分数(这些不算在加权分数内)。然后在整个处理的过程中错误处理也是很重要的一个环节,我想到的需要错误处理的问题主要有以下几种:

      1)传入的数据表为空

      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("校选修课"))
    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

      方法返回值类型为bool,代表计算过程是否成功执行并结束。输入calculateData表示筛选后的数据表,输出weightedMean表示计算的结果。

     

  • 相关阅读:
    AJAX实现文件下载
    正则表达式收集
    C# Winform使用线程改变窗体控件的属性
    C# DataTable转List<Model>通用类
    C# ExcelHelper
    CSS浏览器兼容
    asp.net mvc Razor视图引擎
    『C程序设计』读书笔记系列文章之第八章 预编译处理
    .NET发邮件错误之"Could not access 'CDO.Message' object."
    英语词组日常积累
  • 原文地址:https://www.cnblogs.com/fanfan-blogs/p/5601810.html
Copyright © 2011-2022 走看看