工大助手--C#之DataTable

工大助手--C#之DataTable

实现功能



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

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

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

团队成员



  13070003  张   帆

  13070046  孙宇辰

  13070004  崔   巍

  13070006  王   奈

  13070002  张雨帆

  13070045  汪天米

C#之DataTable



  我在团队项目中负责的部分是数据的处理。具体而言就是介于脚本和图形界面中间层面的处理,即脚本将数据从教务中抓取并保存在本地excel中,我负责将其读入主程序,并解析;然后,根据图形界面端传入的请求筛选数据并返回供图形界面显示,同时还要计算筛选后的数据的加权平均分并返回给图形界面显示。

  在最初的构想中,我认为实现过程中的难点是对数据的存储与管理,所以我在最初的实现版本中定义了一个结构体来存储成绩,结构体如下:

 1 /// <summary>
 2 ///     <成绩>结构体,存有爬下来的成绩数据,分别包括<学年>、<学期>、<课程名称>、<课程种类>、<学分>、<绩点>、<成绩>属性
 3 /// </summary>
 4 public struct Grades
 5 {
 6     public string academicYear;             //学年
 7     public int semester;                    //学期
 8     public string courseName;               //课程名称
 9     public CourseType courseType;           //课程种类
10     public double credit;                   //学分
11     public double GPA;                      //绩点
12     public string grade;                    //成绩,种类有:百分制成绩和“通过”,所以定义为string
13
14     /// <summary>
15     ///     带参构造方法
16     /// </summary>
17     /// <param name="academicYear">学年</param>
18     /// <param name="semester">学期</param>
19     /// <param name="courseName">课程名称</param>
20     /// <param name="courseType">课程性质</param>
21     /// <param name="credit">学分</param>
22     /// <param name="GPA">绩点</param>
23     /// <param name="grade">成绩</param>
24     public Grades(string academicYear, int semester, string courseName, CourseType courseType, double credit, double GPA, string grade)
25     {
26         this.academicYear = academicYear;
27         this.semester = semester;
28         this.courseName = courseName;
29         this.courseType = courseType;
30         this.credit = credit;
31         this.GPA = GPA;
32         this.grade = grade;
33     }
34 }

  但在后续学习从excel中读取数据的过程中发现了一个非常有用的类就是DataTable,他可以很轻松的实现表格类数据的管理与操作,甚至还能实现查询等功能。所以在团队项目的第一篇博客里先总结一下DataTable的用法吧。

  DataTable我觉得可以将其看作是一个excel中的一个sheet,DataTable包含属性Columns和Rows分别表示列与行,可以认为是一个sheet中的列与行。

  DataTable简介

  1)构造函数

DataTable()                         不带参数初始化DataTable 类的新实例。 
          DataTable(string tableName)                用指定的表名初始化DataTable 类的新实例。 
          DataTable(string tableName, string tableNamespace)   用指定的表名和命名空间初始化DataTable类的新实例。

  2)常用属性
          CaseSensitive                         指示表中的字符串比较是否区分大小写。 
          ChildRelations                        获取此DataTable 的子关系的集合。 
          Columns                                  获取属于该表的列的集合。 
          Constraints                              获取由该表维护的约束的集合。 
          DataSet                                   获取此表所属的DataSet。 
          DefaultView                             获取可能包括筛选视图或游标位置的表的自定义视图。 
          HasErrors                                 获取一个值,该值指示该表所属的DataSet 的任何表的任何行中是否有错误。 
          MinimumCapacity                         获取或设置该表最初的起始大小。该表中行的最初起始大小。默认值为 50。 
          Rows                                       获取属于该表的行的集合。 
          TableName                               获取或设置DataTable 的名称。

  3)常用方法

AcceptChanges()                       提交自上次调用AcceptChanges() 以来对该表进行的所有更改。 
          BeginInit()                                开始初始化在窗体上使用或由另一个组件使用的DataTable。初始化发生在运行时。
          Clone()                                     克隆DataTable 的结构,包括所有DataTable 架构和约束。 
          select()                                   传入一个类SQL的语句,对DataTable中的数据进行查询,返回查询结果为一个DataRow的数组
          ImportRow(DataRow row)                    将DataRow 复制到DataTable 中,保留任何属性设置以及初始值和当前值。 
          Merge(DataTable table)                     将指定的DataTable 与当前的DataTable 合并。 
          NewRow()                                 创建与该表具有相同架构的新DataRow。

  然后附上我在C#中对DataTable的使用代码:

 1 //初始化DataTable
 2 queryResult = new DataTable();
 3 queryResult.Columns.Add("学年", typeof(string));
 4 queryResult.Columns.Add("学期", typeof(string));
 5 queryResult.Columns.Add("课程名称", typeof(string));
 6 queryResult.Columns.Add("课程性质", typeof(string));
 7 queryResult.Columns.Add("学分", typeof(string));
 8 queryResult.Columns.Add("绩点", typeof(string));
 9 queryResult.Columns.Add("成绩", typeof(string));
10
11 //获取查询结果
12 DataRow []tmpQureResult = gradesTable.Select(queryString);13 foreach (DataRow dr in tmpQureResult)14     queryResult.Rows.Add(dr.ItemArray);

  在本例中主要对DataTable的使用就是查询操作,在函数中传入queryString,然后根据queryString查询并将结果返回到一个DataRow的数组,然后将其添加到返回结果。

时间: 2024-08-06 07:58:19

工大助手--C#之DataTable的相关文章

工大助手--项目总结

工大助手--项目总结 实现功能 1)用户可选择获取入学以来所有已修课程的相关信息:课程代号.课程名.课程属性.学分.成绩等信息. 2)用户可选择获取特定已修课程的相关信息:课程代号.课程名.课程属性.学分.成绩等信息. 3)用户可获得特定时间段内的加权平均分(1学期.1学年.全部). 团队成员 13070003 张   帆 13070046 孙宇辰 13070004 崔   巍 13070006 王   奈 13070002 张雨帆 13070045 汪天米 总结 整个团队项目从策划到完成过程可

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

工大助手--加权平均分计算 实现功能 1)用户可选择获取入学以来所有已修课程的相关信息:课程代号.课程名.课程属性.学分.成绩等信息. 2)用户可选择获取特定已修课程的相关信息:课程代号.课程名.课程属性.学分.成绩等信息. 3)用户可获得特定时间段内的加权平均分(1学期.1学年.全部). 团队成员 13070003 张   帆 13070046 孙宇辰 13070004 崔   巍 13070006 王   奈 13070002 张雨帆 13070045 汪天米 加权平均分计算 在计算加权平均

工大助手--数据查询

工大助手--数据查询 实现功能 1)用户可选择获取入学以来所有已修课程的相关信息:课程代号.课程名.课程属性.学分.成绩等信息. 2)用户可选择获取特定已修课程的相关信息:课程代号.课程名.课程属性.学分.成绩等信息. 3)用户可获得特定时间段内的加权平均分(1学期.1学年.全部). 团队成员 13070003 张   帆 13070046 孙宇辰 13070004 崔   巍 13070006 王   奈 13070002 张雨帆 13070045 汪天米 数据查询 由于有了DataTable

工大助手--C#之DataGrid

工大助手 基本内容 工大助手(桌面版) 实现登陆.查成绩.计算加权平均分等功能 团队人员 13070002 张雨帆 13070003 张帆 13070004 崔巍 13070006 王奈 13070045 汪天米 13070046 孙宇辰 C#之DataGrid 我在团队项目中负责的部分是客户端的界面制作.其中我需要在用户查询信息时把用户需要的信息展现出来.这里我使用了DataGrid,我认为使用DataGrid显示数据是十分方便的,所以在此我来总结一下DataGrid的使用. DataGrid

工大助手--数据读取

工大助手--数据读取 实现功能 1)用户可选择获取入学以来所有已修课程的相关信息:课程代号.课程名.课程属性.学分.成绩等信息. 2)用户可选择获取特定已修课程的相关信息:课程代号.课程名.课程属性.学分.成绩等信息. 3)用户可获得特定时间段内的加权平均分(1学期.1学年.全部). 团队成员 13070003 张   帆 13070046 孙宇辰 13070004 崔   巍 13070006 王   奈 13070002 张雨帆 13070045 汪天米 数据读入 在上次博客中,我讲到了我所

团队项目——工大助手界面(查询部分)

工大助手 基本内容 工大助手(桌面版) 实现登陆.查成绩.计算加权平均分等功能 团队人员 13070002 张雨帆 13070003 张帆 13070004 崔巍 13070006 王奈 13070045 汪天米 13070046 孙宇辰 界面设计(查询部分) 使用VS2013 C# WPF制作界面. 查询界面包括若干Label显示文字,4个ComboBox分别用于选择学年,学期,课程性质和学分,两个TextBox分别用于输入想要查找的课程的名称(支持模糊查询)和显示所查询的课程的加权平均分,一

团队项目个人总结

团队项目个人总结 基本内容 工大助手(桌面版) 实现登陆.查成绩.计算加权平均分等功能 团队人员 13070002 张雨帆 13070003 张帆 13070004 崔巍 13070006 王奈 13070045 汪天米 13070046 孙宇辰 总结 经过此次的软件工程团队项目,我对团队软件开发有了更深入的认识.一个团队,想要高效的运转需要组长良好的组织和组内每个人的通力合作,统筹规划十分重要.我们组一开始就遇到了这样的问题.没有良好的组织,大家不知道自己应该做哪些方面的内容,也不知道其他成员

[杂谈]这个四月

突然发现就到这个月末了,又到写月报的时候了. 这个月在吃老本,没有去学习新的技术,用的还是之前学的东西,唯一可以谈谈的就是我把工大助手现有版本做了一次完全重构.改以前的Code-Behind为现在的MVVM,这儿有一点不得不说.我用的MVVM框架是MVVMLight,但用的最多的就是他的ViewModelBase和Messager,当然还有那个IOC容器Locator,这几个的确很好用.不过在改写的过程中,还是遇到很多问题,比如最常见的就是如何绑定一个事件,很早之前是自定义一个command去实

团队项目需求分析和架构设计

初稿 之后还会有修改. 工大助手: 前提: 用户根据学号密码登录 功能: 1.  用户可选择获取入学以来所有已修课程的相关信息:课程代号.课程名.课程属性.学分.成绩等信息. 2.  用户可选择获取特定已修课程的相关信息:课程代号.课程名.课程属性.学分.成绩等信息. 3.  用户可以获得特定学期的课程表(教务已经提供的). 4.  用户可以获得考试安排信息. 5.  用户可获得特定时间段内的加权平均分(1学期.1学年.全部). 6.  用户可获得特定课程在所有用户中的成绩排名. 7.  用户可