高级数据库技术课程设计报告.docx

上传人:b****4 文档编号:24427645 上传时间:2023-05-27 格式:DOCX 页数:27 大小:223.60KB
下载 相关 举报
高级数据库技术课程设计报告.docx_第1页
第1页 / 共27页
高级数据库技术课程设计报告.docx_第2页
第2页 / 共27页
高级数据库技术课程设计报告.docx_第3页
第3页 / 共27页
高级数据库技术课程设计报告.docx_第4页
第4页 / 共27页
高级数据库技术课程设计报告.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

高级数据库技术课程设计报告.docx

《高级数据库技术课程设计报告.docx》由会员分享,可在线阅读,更多相关《高级数据库技术课程设计报告.docx(27页珍藏版)》请在冰豆网上搜索。

高级数据库技术课程设计报告.docx

高级数据库技术课程设计报告

高级数据库技术课程设计报告

 

1.设计目的和任务

综合运用ADO.NET相关知识,设计一个具有实用价值的学生考试管理系统。

(1)巩固和加深对本课程基本知识的理解和掌握;

(2)掌握C#编程和ADO.NET程序调试的基本技能;

(3)掌握设计ADO.NET应用软件的基本思路和方法;

(4)提高运用ADO.NET解决实际问题的能力;

(5)培养撰写设计报告的能力。

 

2.开发环境

2.1硬件环境

笔记本电脑

硬件概要

CPU英特尔GenuineIntel(R)CPUT2130@1.86GHz

主板Wistron-英特尔945PM(Calistoga-PM)+ICH7-M/U

内存金士顿2GDDR2-SDRAM666MHz

显卡nVIDIAGeForceGo7200(G72)

主硬盘希捷120GB

声卡英特尔82801GBICH7-HighDefinitionAudio[B0]

网卡英特尔PRO/Wireless3945ABGNetworkConnection(HP-RoW)

2.2软件环境

MicrosoftWindowsXP操作系统;

MicrosoftSQLServer2005;

MicrosoftVisualStudio2005;

 

3.设计题目

3.1题目名称

学生考试管理系统

3.2题目详细描述

1、登录界面

2、新用户注册

3、教师管理界面

4、管理员管理界面

5、学生在线考试

3.3功能要求

登录界面

功能:

1)用户对应相应的权限进行登录,分教员、学生、管理员。

登录后根据选择的

权限进入相应的界面;

2)输入用户名框非空,密码框非空,权限选择判断;

3)新学员用户注册。

注册后需管理员激活才能登录。

教师管理界面

功能(按菜单项说明):

1)试题管理,子菜单如下:

增加试题;

查询试题:

按科目查询试题;

试题列表:

按难度查询试题列表,并可增加、修改试题。

2)考试管理,子菜单如下:

生成试卷;

试卷管理:

查看试卷信息、激活/取消试卷。

3)成绩管理,按试卷名查寻成绩。

要算出平均分。

管理员管理界面

功能(按菜单项说明):

1)用户管理,子菜单如下:

新建用户:

新建学员用户,新建教员用户。

查询及修改学员。

用户信息列表,包括查询以及教员学员信息

2)题库管理,管理试题库

学生在线考试

1)维护个人信息对个人信息进行查询,修改

2)在线答题。

功能:

可以选择已激活试卷答题。

在线评分。

保存考试成绩可供教师查询。

 

4.相关技术及知识点

ADO.NET提供了多种对象模型,比较典型的以下有五种,它们全部归类System.Data.SqlClient名称空间下。

4.1SqlConnection对象

ADO.NET使用SqlConnection对象与SQLServer进行连接。

连接字符串的常用形式有两种:

1.使用Windows集成安全身份认证,例如:

stringconnectionString="IntegratedSecurity=SSPI;Database=MySchool.mdf;Server=localhost;";

2.在连接字符串中指定服务器名、用户id、用户口令、数据库名等信息。

例如:

stringconnectionString="server=localhost;uid=sa;pwd=123;database=MySchool.mdf";

然后通过连接字符串直接创建SqlConnection对象,如SqlConnectionconn=newSqlConnection(connectionString);

4.2SqlCommand对象

在ADO.NET中,有两种操作数据库的方式:

1.无连接的方式;

2.保持连接的方式。

不论哪种都可以通过SqlCommand对象提供的方法传递对数据库操作的命令,并返回命令执行结果。

在保持连接的方式下操作数据库的一般步骤为:

1.创建SqlConnection的实例;

2.创建SqlCommand的实例;

3.打开连接;

4.执行命令;

5.关闭连接。

SqlCommand对象提供了多种完成对数据库操作的方法。

常用有:

1.ExecuteNonQuery

该方法执行SQL语句的结果,但不返回命令执行的表数据,仅返回操作所影响的行数。

2.ExecuteReader

ExecuteReader方法提供了只向前的、顺序的快速读取数据库中数据的方法。

3.ExecuteScaler()

该方法用于执行SELECT查询,得到的返回结果为一个值的情况,比如使用count函数求表中记录个数或者使用sum函数求和等。

4.3SqlDataAdapter对象

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.4DataTable对象

ADO.NET可以在与数据库断开连接的方式下通过DataSet或DataTable对象进行数据处理,当需要更新数据时才重新与数据源进行连接,并更新数据源。

DataTable对象表示保存在本机内存中的表,它提供了对表中行列数据对象的各种操作。

可以直接将数据从数据库填充到DataTable对象中,也可以将DataTable对象添加到现有的DataSet对象中。

在断开连接的方式下,DataSet对象提供了和关系数据库一样的关系数据模型,代码中可以直接访问DataSet对象中的DataTable对象,也可以添加、删除DataTable对象。

1.创建DataTable对象

可以通过以下两种方式创建DataTable对象:

1)通过DataTable类的构造函数创建DataTable对象,例如:

DataTabletable=newDataTable();

2)通过DataSet的Tables对象的Add方法创建DataTable对象,例如:

DataSetdataset=newDataSet();

DataTabletable=dataset.Tables.Add("MyTableName");

2.在DataTable对象中添加列

在DataTable对象中添加列的最常用的方法是通过DataTable对象的Column属性中的Add方法。

添加后的每一列都是一个DataColumn对象。

3.设置DataTable对象的主键

关系数据库中的表一般都有一个主键,用来惟一标识表中的每一行记录。

通过DataTable对象的PrimaryKey属性可以设置Datatable的主键。

主键可以是一个或者多个DataColumn对象组成的数组。

例如:

DataColumn[]key=newDataColumn[1];//dt是一个DataTable对象

key[0]=dt.Columns[0];

dt.PrimaryKey=key;

4.在DataTable对象中创建行

DataTable对象的每一行都是一个DataRow对象,所以创建行时可以先利用DataTable对象的NewRow方法创建一个DataRow对象,并设置新行中各列的数据,然后利用Add方法将DataRow对象添加到表中

5.将SQLServer数据库中的表填充到DataTable中

除了可以直接创建DataTable对象的行列信息外,也可以通过DateAdapter对象的Fill方法将SQLServer数据库中的表填充到DataTable对象中。

4.5DataSet对象

1.创建DataSet对象

使用创建的DataSet对象可以完成各种数据操作,利用向导生成的数据库数据源是一个强类型的DataSet以及一对或多对强类型的DataTable和TableAdapter的组合。

类型化的DataSet是一个生成的类,是从.NETFramework的一般DataSet类衍生来的,但提供了已定义的架构以及特定于该架构的属性和方法。

同时,对于DataSet中的每个表,还生成了特定于该DataSet的附加衍生类,而且每个类都为相关的表提供了特定的架构、属性和方法。

当然,也可以直接创建一般的DataSet对象,例如:

DataSetmyDataset=newDataSet();

2.填充DataSet对象

创建DataSet后,就可以使用SqlDataAdapter对象把数据导入到DataSet对象中,比如通过Fill方法将数据填充到DataSet中的某个表中。

 

5.设计与实现

(包括每个设计点的文字描述,图表,关键代码)(该说明在最终报告里面要删除!

5.1登录界面

在登录界面(图5-1)用户对应相应的权限选择用户类型进行登录,分教员、学生、管理员。

登录后根据选择的权限进入相应的界面。

输入用户名框非空,密码框非空,权限选择判断;登录界面还有新用户注册,同样是选择不同用户类型进行注册。

注册后需管理员激活才能登录。

还有一个就是找回密码,用户通过输入用户名和姓名等信息找回密码。

图5-1

登录界面代码:

if(ValidateInput())//验证输入成功

{

stringmessage="";

//验证输入的密码

if(loginBll.ValidateUser(txtLoginId.Text.Trim(),txtLoginPwd.Text,cboLoginType.Text,refmessage))

{

//记录登录用户名和登录类型

UserHelper.loginId=txtLoginId.Text;

UserHelper.loginType=cboLoginType.Text;

if(cboLoginType.Text=="教师")

{

//创建教员主窗体对象

TeacherFormteacherForm=newTeacherForm();

//显示窗体

teacherForm.Show();

}

elseif(cboLoginType.Text=="学生")

{

StudentFormstudentForm=newStudentForm();

studentForm.Show();

}

else

{

AdminFormadminForm=newAdminForm();

adminForm.Show();

}

//登录窗体隐藏

this.Visible=false;

}

5.2教师管理界面

在教师管理界面(图5-2)中有以下菜单和按钮:

*选择题目(图5-3):

右键选择题目加入到新建的试卷中;

*成绩管理(图5-4)选择不同的试卷进行查询,读取数据到DataSet,然后用DataSet中数据计算该试卷的平均分;也可以直接修改DataSet中表的数据,然后保存。

增加试题:

先输入好题目,然后提交,将数据插入数据库中;

还有一些其它的功能,查询试题:

按科目查询试题;试题管理:

按难度查询试题列表,并可增加、修改试题。

试题列表,按难度查询试题列表,并可增加、修改试题然后保存,将数据保存到数据库;

图5-2

图5-3

图5-4

教师管理界面代码:

//点击时,打开新增试题窗体

privatevoidtsmiAddQuestion_Click(objectsender,EventArgse)

{

//创建窗体对象

AddQuestionFormaddQuestionForm=newAddQuestionForm();

//设置MDI主窗体

addQuestionForm.MdiParent=this;

//显示窗体

addQuestionForm.Show();

}

//点击菜单中的“帮助”->”关于”,以模式窗口显示About窗体

privatevoidtsmiAbout_Click(objectsender,EventArgse)

{

AboutFormaboutForm=newAboutForm();

aboutForm.MdiParent=this;

aboutForm.Show();//以模式窗口显示

}

//窗体加载事件处理

privatevoidTeacherForm_Load(objectsender,EventArgse)

{

//设置状态栏标签显示的文字

lblTeacher.Text=string.Format("教员{0}登录了!

",UserHelper.loginId);

}

privatevoidTeacherForm_FormClosed(objectsender,FormClosedEventArgse)

{

Application.Exit();

}

privatevoidbtnSearchQuestion_Click(objectsender,EventArgse)

{

CheckTitlesCT=newCheckTitles();

CT.Show();

}

privatevoidbtnQuestionList_Click(objectsender,EventArgse)

{

//创建窗体对象

TestListtForm=newTestList();

//设置MDI主窗体

tForm.MdiParent=this;

//显示窗体

tForm.Show();

}

选择题目代码:

//选择题目窗口

privatevoidTestList_Load(objectsender,EventArgse)

{

dataSet=getDataSetBll.GetAllQuestion(refdataAdapter);

dataSet2=getDataSetBll.GetSelectedQuestion(refdataAdapter2,ExamId);

dgvTest.DataSource=dataSet.Tables["Question"];

txtExamName.Text=CreateTestForm.ExamName;

ExamId=CreateTestForm.ExamId;

}

//刷新

privatevoidbutton1_Click_1(objectsender,EventArgse)

{

dataSet.Tables["Question"].Clear();

dgvTest.DataSource=getDataSetBll.GetQuestionByDifficulty(cboDifficulty.Text.Trim(),refdataAdapter);

}

//将选中的题目加入试卷中

privatevoidtsmAddQuestion_Click(objectsender,EventArgse)

{

stringmessage="";

intsum=dgvTest.SelectedCells.Count;

for(inti=0;i

{

stringQuestionId=dgvTest.SelectedCells[i].Value.ToString();

message=createTestBll.AddQuestion(ExamId,QuestionId,refExamSum);

}

txtExamSum.Text=ExamSum.ToString();

MessageBox.Show(message);

}

//将选中的题目从试卷中删除

privatevoidtsmDeleteQuestion_Click(objectsender,EventArgse)

{

stringmessage="";

intsum=dgvTest.SelectedCells.Count;

for(inti=0;i

{

stringQuestionId=dgvTest.SelectedCells[i].Value.ToString();

message=createTestBll.DeleteQuestion(ExamId,QuestionId,refExamSum);

}

txtExamSum.Text=ExamSum.ToString();

MessageBox.Show(message);

}

//已选择题目列表

privatevoidbtn_Click(objectsender,EventArgse)

{

dataSet2.Tables["Question"].Clear();

dataSet2=getDataSetBll.GetSelectedQuestion(refdataAdapter2,ExamId);

dgvSelectedQuestion.DataSource=dataSet2.Tables["Question"];

}

privatevoidbutton3_Click(objectsender,EventArgse)

{

this.Close();

}

成绩管理代码:

//成绩管理的窗口

privatevoidTestGradeManageForm_Load(objectsender,EventArgse)

{

ExamId=cboExamId.Text.ToString();

dataSet=getDataSetBll.GetScore(refdataAdapter,ExamId);

//加载examId

foreach(DataRowrowindataSet.Tables["Score"].Rows)

{

foreach(stringitemincboExamId.Items)

{

if(item.ToString().Equals(row["examId"].ToString()))

gotocon;}

cboExamId.Items.Add(row["examId"].ToString());

con:

;

}

dgvScore.DataSource=dataSet.Tables["Score"];

}

privatevoidbtnSearch_Click(objectsender,EventArgse)

{

//查询成绩

ExamId=cboExamId.Text.ToString();

dataSet.Tables["Score"].Clear();

dataSet=getDataSetBll.GetScore(refdataAdapter,ExamId);

dgvScore.DataSource=dataSet.Tables["Score"];

intsum=0,i=0,avgScore=0;

foreach(DataRowrowindataSet.Tables["Score"].Rows)

{

sum+=int.Parse(row["scorevalue"].ToString());

i++;

}

if(i!

=0)

avgScore=sum/i;

txtAvgScore.Text=avgScore.ToString();

}

//刷新

privatevoidbtnRefresh_Click(objectsender,EventArgse)

{

dataSet.Tables["Score"].Clear();

dataSet=getDataSetBll.GetScore(refdataAdapter,ExamId);

}

//保存

privatevoidbtnSave_Click(objectsender,EventArgse)

{

DialogResultresult=MessageBox.Show("确定");

if(result==DialogResult.OK)

{SqlCommandBuilderbuilder=newSqlCommandBuilder(dataAdapter);

dataAdapter.Update(dataSet,"Score");

}

}

 

5.3管理员管理界面

管理员管理界面(图5-5):

通过选择不同的菜单和按钮进入不同的界面,用户管理,其中有新建用户(新学员用户,新建教员用户)。

查询及修改学员(图5-6):

用DataSet读取数据到DataGridView。

用户信息列表,包括查询以及教员学员信息。

题库管理,管理试题库。

图5-5

图5-6

学员信息界面代码:

//学员窗口

privatevoidTestList_Load(objectsender,EventArgse)

{

dataSet=StudentListBll.GetAllQuestion(refdataAdapter);

dgvTest.DataSource=dataSet.Tables["Student"];

}

//刷新

privatevoidbutton1_Click(objectsender,EventA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1