DataTable对象结构对应数据库表的结构,从数据库选择出来的数据集可以放在DataTable对象里面.而DataTable对象又由DataRow集合组成,即每个DataTable里面有多个DataRow.DataRow集合包含表中的数据.DataRow相当于多维数组,不断改变下标就可以访问整个DataTable里面的数据,改变DataTable集合对象的下标就可以不同的DataTable里面的数据,从而实现对整个DataSet的遍历.
3.3TreeView控件动态绑定数据
TreeView控件能够以树状的层次结构显示它的节点.每个节点可能包含子节点.父节点或包含子节点的节点可以展开或折叠的方式显示.如果将TreeView控件的CheckBoxes属性设置为TRUE,则在显示TreeView时,节点旁边还可以带有复选框.通过设置节点的Checked属性的值为TRUE或FALSE,就能以编程方式选定或清除节点.紧挨着节点文本的左侧可以显示图标,这要通过设置TreeView控件的ImageList属性与希望使用的现有ImageList控件相关联才能给每个节点获取图像.
为了实现数据的动态绑定,需要以编程方式添加节点和移除节点.具体方法:
(1),使用树视图Node属性的Add方法,代码如下:
TreeNodenewNode=newTreeNode("Text");
MytreeView.SelectdeNode.Node.Add(newNode);
(2),使用树视图Node属性的Remvoe方法移除某个节点.或者使用Clear方法清除左右节点,代码如下:
Mytreeview1.Nodes.Remove(MytreeView1.SelectedNode);
MyTreeView1.Nodes.Clear();
3.4水晶报表
报表也是一种管理工具,其目的在于帮助用户快速的掌握原始数据中的基本元素和关系。
.NET中的水晶报表是一个实现原理比较复杂但是使用十分简单的报表工具。
1.水晶报表设计器就是在设计器中创建的,在设计器中用户可以进行标题,插入数据,公式,图表。子报表等操作。
2..rpt报表文件.
3.数据源.rpt报表文件取得数据的方法有两种:让水晶报表自己选择数据的不使用任何代码或者编写代码把一个DataSet作为数据源绑定到.rpt报表文件.
4.执行模式Pull模式----被请求时,水晶报表直接根据指定的驱动连接数据库然后组装这些数据.Push模式----此时开发表不得不自己编写代码连接数据并安装DataSet,同时将它传送至报表.在这种情况下,通过使用连接共享以及限制记录集合得大小,可以使用报表性能的最大值.
第四章数据库的设计
后台数据库系统选用SQLServer2000,根据选课系统的功能要求以及功能模块的划分,数据需要存储的信息如下:
*所有课程信息:课程ID,课程名称.所属系,授课老师,课程学时,课程学分,限选人数,已选人数等
*所有学生资料:学生学号,选课密码,学生姓名等
*院系信息:院系ID,院系名称.
*学生选课的情况:学生ID,课程ID等
*管理员的资料:管理员用户名,管理员用户密码,真实姓名.
*选课时间的限制:选课开始时间,选课结束时间.
因此,选课系统的后台数据库需要建立6个表分别是:Courses表,Stidents表,
Departments表,Elective表,Admins表和Period表.
4.1数据库的设计
1.Courses表
Courses表用于存放所有课程的详细信息.该表有8个字段,全部都是重要信息,不能为空,其中SelectedDtudentNumber字段默认值零.各字段说明如图3-4所示:
图3-4Courses表的结构
2.Stidents表
Stidents表用于存放所有学生的资料.由于本系统是一个选课系统,而不是一个学生管理系统,所以Stidents表所需字段并不多,各字段说明如下:
图3-5Stidents表的结构
3.Departments表
Departments表主要用于记录开设课程的院系的名称.各个字段说明如图3-6所示:
图3-6Departments表的结构
4.Elective表
Elective表记录了学生选课的情况,只需出入学生StudentID和该学生所选课的CourseID,ElectiveID字段的值由SQLServer2000在每次插入新记录时自动产生.该表一开始,每次增加一个,由数据库系统保证它的唯一,因此ElectiveID字段作为Elective表的主键.各个字段的说明如图3-7所示.
图3-7Elective表的结构
5.Admins表
Admins表记录所有管理员的信息,包括用户名,密码和真实姓名.AdminID字段的值在每次插入新记录时由SQLServer2000自动填入并保证唯一.因此AdminID字段是Admins表的主键,各个字段的说明如图3-8所示:
图3-8Admins表的结构
6.Period表
Period表用于设置选课的开始时间和选课结束的时间,该表只能由管理子系统来修改,各个字段的说明如图3-9所示:
图3-9Period表的结构
4.2数据库的存储过程的设计
本应用程序是典型的C/S结构,为了提高服务器的数据库的访问效率,加快整个系统的运行速度,存取数据全部使用存储过程.同时对一些业务逻辑也使用了一些存储过程.本系统使用的所有存储过程描述如下:
1.Addstudent存储过程
该存储过程根据输入的用户信息在数据库Students表里添加一个学生记录,返回唯一标识学生的StudentID.创建存储过程的SQL语句如下:
CREATEPROCEDUREAddStudent
(@Namenvarchar(50),
@StudentNumbernvarchar(50),
@Passwordnvarchar(50),
@StudentIDintOUTPUT)
AS
INSERTINTOStudents
(Name,
StudentNumber,
Password)
VALUES
(@Name,
@StudentNumber,
@Password)
SELECT
@StudentID=@@Identity
GO
2.ElectiveList存储过程
该存储过程根据输入的学生唯一标识StudentID返回该学生已经选修的所有课程的信息,包括课程编号CourseID,课程名称,授课教师,课程学分和课程学时等.创建存储过程的SQL语句如下:
CREATEPROCEDUREElectiveList
(@StudentIDint)
AS
SELECT
Courses.CourseID,
Courses.CourseName,
Courses.CourseTeacher,
Courses.CourseScore,
Courses.CourseHours
FROM
Elective
INNERJOINCoursesONCourses.CourseID=Elective.CourseID
WHERE
Elective.StudentID=@StudentID
GO
3.ElectiveTotalList存储过程
该存储过程用于管理员查看所有学生选课的情况.存储过程里面通过INNERJIOIN...ON......语句实现了Elective表,Courses表和Students表的连接查询.创建存储过程的SQL语句如下:
CREATEPROCEDUREElectiveTotalList
AS
SELECT
Elective.StudentID,
Students.StudentNumber,
Students.Name,
Courses.CourseID,
Courses.CourseName,
Courses.CourseTeacher,
Courses.CourseScore,
Courses.CourseHours
FROM
Elective
INNERJOINCoursesONCourses.CourseID=Elective.CourseID
INNERJOINStudentsONStudents.StudentID=Elective.StudentID
ORDERBY
Elective.StudentID
GO
第五章详细设计
本系统是C/S(客户端和服务端)两层结构.服务端部分是SQLServer2000关系数据库.数据库里存放着编译好的存储过程,主要负责数据的存取,也负责一些的业务逻辑处理.例如判断学生的选修课程时是否在允许时间段里面.客户端包含两个子系统,分别是学生选课子系统和管理员子系统.学生子系统安装在学校公共机房,图书馆等场所的电脑上,供学生选课时使用,通过局域网访问教务处的数据库服务器.管理员子系统安装在教务处办公室的桌面型电脑上,供管理教务的教师使用.系统的结构如图3-1所示:
图3-1应用系统结构
客户端分为学生选课子系统和管理员管理子系统.这两个子系统相对独立,不会直接发生操作.它们是通过存于后台数据库的数据产生联系的.例如管理员修改后台数据库上的课程信息,这就会影响学生查看课程信息的结构.又如管理员可以在配置文件上修改允许选课的期限,管理子系统会根据这个配置文件的内容修改数据库,这会导致学生选课子系统是
上一篇:
房地产评估系统VB_net(论文和程序)
下一篇:
病理学实验课多样化教学方法探讨