《高级数据库技术(ADO.NET&XML)》课程设计报告
3.设计题目 3.1题目名称
学生在线考试管理系统
3.2题目详细描述
1)登陆界面 2)教师管理界面 3)管理员管理界面 4)学生在线考试
3.3功能要求
1)登陆界面
户对应相应的权限进行登录,分教员、学生、管理员。登录后根据选择的权限进入相
应的界面;入用户名框非空,密码框非空,权限选择判断;学员用户注册。注册后需管理员激活才能登录。
2)教师管理界面
A.试题管理,子菜单如下: 增加试题;
查询试题:按科目查询试题;
试题列表:按难度查询试题列表,并可增加、修改试题。 B.考试管理,子菜单如下: 生成试卷 试卷管理:查看试卷信息、激活/取消试卷 C.成绩管理,按试卷名查寻成绩,要算出平均分。
3)管理员管理界面
A.用户管理,子菜单如下: 新建用户:新建学员用户,新建教员用户
查询及修改学员
用户信息列表,包括查询以及教员学员信息 B.题库管理,管理试题库
4)学生在线考试
学生在线考试,计算成绩等
-3-
《高级数据库技术(ADO.NET&XML)》课程设计报告
4相关技术及知识点 4.1 SqlConnection对象
ADO.NET使用SqlConnection对象与SQL Server进行连接。连接字符串的常用形式有两种: 1.使用
Windows
集成安全身份认证,例如:string
connectionString
=\
或:string connectionString = \Catalog= MyDataBase; Data Source=localhost;Integrated Security=SSPI;\
2.在连接字符串中指定服务器名、用户id、用户口令、数据库名等信息。例如:string connectionString = \
然后通过连接字符串直接创建SqlConnection对象,如SqlConnection conn = new SqlConnection(connectionString);
4.2 SqlCommand对象
在ADO.NET中,有两种操作数据库的方式: 1.无连接的方式; 2.保持连接的方式。
不论采用哪种方式,都可以通过SqlCommand对象提供的方法传递对数据库操作的命令,并返回命令执行的结果。
在保持连接的方式下操作数据库的一般步骤为: 1.创建SqlConnection的实例; 2.创建SqlCommand的实例; 3.打开连接; 4.执行命令; 5.关闭连接。
SqlCommand对象提供了多种完成对数据库操作的方法。常用有:
1.ExecuteNonQuery
该方法执行SQL语句的结果,但不返回命令执行的表数据,仅返回操作所影响的行数。 2.ExecuteReader
ExecuteReader方法提供了只向前的、顺序的快速读取数据库中数据的方法。该方法根据提供的SELECT语句,返回一个可以顺序读取的SqlDataReader对象,编程者可以使用Read方法循环依次读取每个记录中各字段(列)的内容。
3.ExecuteScaler()
该方法用于执行SELECT查询,得到的返回结果为一个值的情况,比如使用count函数求表中记录个数或者使用sum函数求和等
-4-
《高级数据库技术(ADO.NET&XML)》课程设计报告
4.3 SqlDataAdapter对象
SqlDataAdapter对象通过无连接的方式完成数据库和本地DataSet之间的交互。使用这种方式操作数据库的一般步骤为:
1.创建SqlConnection的实例;
2.创建SqlDataAdapter的实例,需要的话,根据select语句生成其他SQL语句; 3.创建DataSet的实例;
4.使用Fill方法将数据库中的表填充到DataSet的表中; 5.利用DataGridView或者其他控件对象编辑或显示数据; 6.需要的话,使用Update方法更新数据库。
SqlDataAdapter对象通过SelectCommand、InsertCommand、UpdateCommand和DeleteCommand属性为后台数据库提供对应的操作命令,并传递需要的参数。一般情况下,只需要提供SELECT语句和连接字符串创建SqlDataAdapter对象,然后利用SqlCommandBuilder对象生成InsertCommand、UpdateCommand和DeleteCommand属性。
4.4 DataGridView的使用
DataGridView 配置数据源
1 右击出现DataGridView任务-->选择数据源-->添加项目数据源-->配置数据源-->测试连接 2 右击出现DataGridView任务-->预览数据-->预览 (可看到配置的数据表内容及行数列数) DataGridView 修改整张表的数据 SqlCommandBuilder对象 代码:
SqlCommandBuilder commBr=SqlCommandBuilder(this.adapter);
int count=this.adapter.Update((DataSet)(this.DataGridView1.DataSource),\表名\MessageBox.show(\变更了\行,已经成功保存到数据库中);
DataGridView异常 判断是否打开连接
判断鼠标单击DataGridView单元格是否超出范围
if (e.ColumnIndex < 0 || e.RowIndex < 0)//判断鼠标点击的位置,超过范围返回 {
return;
}
DataGridViewCheckBoxCell选中处理
DataGridViewCheckBoxColumn的属性设置 FalseValue=false TrueValue=true ReadOnly=true 代码:
DataGridViewCheckBoxCell
chkCell
=
this.DataGridView1.Rows[e.RowIndex].Cells[0]
-5-
as
《高级数据库技术(ADO.NET&XML)》课程设计报告
DataGridViewCheckBoxCell;//DataGridViewCheckBoxColumn在第1 列,索引为0,所以Cells[0]
chkCell.EditingCellFormattedValue = !(bool)chkCell.EditingCellFormattedValue;
chkCell.Value = chkCell.EditingCellFormattedValue;
判断单元格类型(判断点击的DataGridView控件当前的单元格是什么类型的) DataGridView1[e.ColumnIndex, e.RowIndex] is DataGridViewLinkCell DataGridView某行变为只读(点击DataGridView当前行变为只读的)
this.DataGridView1.Rows[e.RowIndex].ReadOnly=true //true只读的,false可写的 单元格类型转换(将鼠标单击当前单元格转换成DataGridViewLinkCell类型的) DataGridViewLinkCell
links
=
dgvProductShow[e.ColumnIndex,
e.RowIndex]
as
DataGridViewLinkCell; if (links.Value.ToString() == \编辑\如果当前单元格转换为DataGridViewLinkCell,并且值是编辑 {
//具体操作 }
4.5 DataSet对象
1. 创建DataSet对象
使用创建的DataSet对象可以完成各种数据操作,利用向导生成的数据库数据源是一个强类型的DataSet以及一对或多对强类型的DataTable和TableAdapter的组合。类型化的DataSet是一个生成的类,是从.NET Framework的一般DataSet类衍生来的,但提供了已定义的架构以及特定于该架构的属性和方法。同时,对于DataSet中的每个表,还生成了特定于该DataSet的附加衍生类,而且每个类都为相关的表提供了特定的架构、属性和方法。 当然,也可以直接创建一般的DataSet对象,例如: DataSet myDataset = new DataSet();
2. 填充DataSet对象
创建DataSet后,就可以使用SqlDataAdapter对象把数据导入到DataSet对象中,比如通过Fill方法将数据填充到DataSet中的某个表中。
4.6 DBHelper类
class DBHelper {
public static string constr = @\我的文档ADO\\Y122092\\Y122092\\考试管理系统\\考试管理系统\\考试管理系统\\客户信息Y122092.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True\ public static SqlConnection connection = new SqlConnection(constr); }
-6-
《高级数据库技术(ADO.NET&XML)》课程设计报告
}
4.7 使用 try-catch-finally 进行异常处理
try { }
catch(Exception ex) {
MessageBox.Show(ex.Message); } finally {
DBHelper.connection .Close() ; }
-7-