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

实现功能


  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表示计算的结果。

转载于:https://www.cnblogs.com/fanfan-blogs/p/5601810.html

工大助手--加权平均分计算相关推荐

  1. 工大助手电费查询接口讲解

    工大助手电费查询接口讲解 本人是工大的一名学生,平时没事就喜欢写写代码,今天我来教大家解析学校电费查询接口中的参数,首先打开工大助手的web端https://huthelper.cn/,先登录,进入电 ...

  2. 湖工大助手c语言作业答案,西工大18春《C语言程序设计》平时作业

    西工大18春<C语言程序设计>平时作业 / h+ l$ H8 B' X1 y核对题目下载答案q761296021西工大18春<C语言程序设计>平时作业 5 n  ?: e3 A ...

  3. 西工大2015年至2019年计算机机试题

    基于15–19机试题西工大公众号回忆以及网上查找资料.一道题可能有多种解法,自身水平有限,部分题目自己写的代码,部分转载他人博客.使用的编译器为vs2013 专业版. 西工大2015年计算机机试题 西 ...

  4. 秩和检验.医学统计实例详解-医学统计助手★卡方检验,t检验,F检验,秩和检验,方差分析

    秩和检验是一种常用的非参数假设检验方法,用于比较两个或多个独立或配对样本的中位数是否相等.在医学研究中,秩和检验常用于比较不同治疗方案或条件的效果差异,特别是在数据不满足正态分布假设的情况下. 一.配 ...

  5. t检验.医学统计实例详解-医学统计助手★卡方检验,t检验,F检验,秩和检验,方差分析

    t检验是医学统计学中常用的一种假设检验方法,用于比较两个样本均值是否有显著差异.它可以帮助医学研究者确定一个治疗方法或药物是否显著地改善了患者的症状或生理指标. 在医学研究中,t检验常被用来: 比较两 ...

  6. 相关分析.医学统计实例详解-医学统计助手★卡方检验,t检验,F检验,秩和检验,方差分析

    在医学统计中,相关分析是一种常用的方法,用于研究两个或多个变量之间的关系.使用相关分析可发现变量之间的线性或非线性关系,为后续的实验设计.临床研究和治疗策略提供依据. 常用相关分析方法有: 1.皮尔逊 ...

  7. lda 吗 样本中心化 需要_PCA和LDA

    一.PCA 在讲PCA之前,首先有人要问了,为什么我们要使用PCA,PCA到底是干什么的?这里先做一个小小的解释,举个例子:在人脸识别工作中一张人脸图像是60*60=3600维,要处理这样的数据,计算 ...

  8. 【机器学习】从电影数据集到推荐系统

    作者 | Amine Zaamoun 编译 | VK 来源 | Towards Data Science 最初是一个数据集,现在是一个由Amine Zaamoun开发的电影推荐系统: 为什么是推荐系统 ...

  9. chrome设置微信ua_模拟UA实现访问只能在微信上打开的网页

    今天,笔者打开学校的"小瓜工大助手"查跑操的页面,对它的网页源代码非常感兴趣.无奈网页的设计者只让用户在微信的自带浏览器中打开网页,而手机微信自带浏览器是没有审查元素.查看源代码之 ...

  10. 大语言模型将如何影响软件开发?

    当人人具备编写代码的能力之后,这将会给软件生产和分配带来哪些结构性的变化? 原文链接:https://www.geoffreylitt.com/2023/03/25/llm-end-user-prog ...

最新文章

  1. 如何在NLP中有效利用Deep Transformer?
  2. (转)IE的box模型显示bug
  3. 【Linux】一步一步学Linux——dig命令(160)
  4. 微软发布VS Code Jupyter插件!不止Python!多语言的Jupyter Notebook支持来了!
  5. 简明Python教程学习笔记_3_模块
  6. 面试官问你final、finally、finalize的区别
  7. 没数据也能玩转BERT!无监督语义匹配实战
  8. wsdl2java wsdl文件_使用axis2的wsdl2java把wsdl生成java文件
  9. Linux mysql 主从 配置
  10. ubuntu16.04系统安装nvidia显卡驱动
  11. Kaggle泰坦尼克号幸存者预测
  12. 【服务器】 Windows Server 2008 R2 配置HTTPS TLS1.2
  13. 海思Hi3519A 基础入门教程
  14. OpenCV-Python实战(番外篇)——OpenCV中利用鼠标事件动态绘制图形
  15. Discuz论坛简单搭建
  16. 个人期货交割日(国内期货交割日)
  17. Windows docker 安装 home assistant
  18. linux使用阿里云镜像仓库yum源
  19. 联想 android 5.1 root,联想Z5 Pro root教程,利用recovery来进行卡刷root包操作
  20. Jackson常用配置示例

热门文章

  1. Navicat 常见操作
  2. 如何制作一个优秀的个人网站?
  3. 中国科学院大学计算机复试,被中国科学院北京计算所录取了...(复试经验)
  4. 彻底理解RxJS里面的Observable 、Observer 、Subject
  5. java游戏后端日志【6】 -- 初生牛犊不怕虎?
  6. 工具系列 | FPM进程管理器详解
  7. android 自定义吐司,[Android开发]Android 自定义Toast
  8. UopenCryptionKit4Java:一个好用的轻量开源加解密器工具包
  9. 信号与频谱之正弦信号和复信号
  10. 【cocos源码学习】cocos2d-x-4.0 Android Demo工程结构的简析