工大助手--数据查询
工大助手--数据查询
实现功能
1)用户可选择获取入学以来所有已修课程的相关信息:课程代号、课程名、课程属性、学分、成绩等信息。
2)用户可选择获取特定已修课程的相关信息:课程代号、课程名、课程属性、学分、成绩等信息。
3)用户可获得特定时间段内的加权平均分(1学期、1学年、全部)。
团队成员
13070003 张 帆
13070046 孙宇辰
13070004 崔 巍
13070006 王 奈
13070002 张雨帆
13070045 汪天米
数据查询
由于有了DataTable这一结构,所以这一部分处理起来主要的工作重心就放在方法的鲁棒性上。对于此方法,执行的流程就是用户传入一个查询串,方法返回正确的查询结果。在这个过程中,我考虑到的出错点有如下几种:
1、在之前一步读入数据时未成功导入,导致查询时出错。
2、查询过程中出现错误
3、查询结果为空
所以,我在代码的实现的对上述三个方面进行了处理,代码如下:
#region ----------查询数据---------- /// <summary> /// 查询数据 /// </summary> /// <param name="queryString">查询命令</param> /// <param name="queryResult">查询结果</param> /// <returns>查询成功与否</returns> public static bool QueryData(String queryString, out DataTable queryResult) { //初始化DataTable queryResult = new DataTable(); queryResult.Columns.Add("学年", typeof(string)); queryResult.Columns.Add("学期", typeof(string)); queryResult.Columns.Add("课程名称", typeof(string)); queryResult.Columns.Add("课程性质", typeof(string)); queryResult.Columns.Add("学分", typeof(string)); queryResult.Columns.Add("绩点", typeof(string)); queryResult.Columns.Add("成绩", typeof(string)); //如果数据被成功导入,则执行查询操作 if (hasLoadData) { //查询信息为“*”意味着查询全部成绩信息 if (queryString.Equals("*")) { queryResult = gradesTable; return true; } //否则按照条件查询 try { //获取查询结果 DataRow []tmpQureResult = gradesTable.Select(queryString); //未查到匹配信息则弹窗示意 if (tmpQureResult == null || tmpQureResult.Length == 0) MessageBox.Show("无查询匹配项!"); //Console.WriteLine("无查询匹配项!"); //否则将结果存入queryResult中 else foreach (DataRow dr in tmpQureResult) queryResult.Rows.Add(dr.ItemArray); return true; } catch(Exception e) { MessageBox.Show(e.Message); //Console.WriteLine("{0}",e.Message); return false; } } else { MessageBox.Show("[ERROR]Grades data hasn't loaded successfully."); //Console.WriteLine("[ERROR]Grades data hasn't loaded successfully."); return false; } } #endregion
在这段代码中,我先初始化queryResult用来后续存储结果,先判断excel数据是否成功导入,如果导入成功则执行查询,将结果保存,否则报错。查询完毕后,如果查询结果为空,则报相应的错误,否则正常返回。函数返回值类型为bool,代表查询过程是否成功执行并结束。输入queryString表示查询语句,输出queryResult表示查询的结果。