工大助手--数据查询

工大助手--数据查询

实现功能


 

  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表示查询的结果。

 

posted @ 2016-06-20 20:37  13070003_张帆  阅读(321)  评论(0编辑  收藏  举报