1、中原工学院软件学院三 级 实 践 课 题 设 计 任 务 书姓 名 孙豪杰 软件编码 专业 062 班题 目 在线考试系统设计任务开发在线考试系统,提供网上考试、网上出卷、网上阅卷、成绩查询等功能。我做的模块如下:1. 学生信息管理2. 教师信息管理3. 试卷信息管理4. 科目信息管理5. 班级信息管理开发工具:C#、ASP .Net、SQL Server 2000时间进度第 17 周(07-12-1307-12-29 ):选择课题,写需求分析,选择开发工具,依据需求分析建立 SQL 数据库,给系统建立模块,分配任务。第 18 周(07-12-30-08-01-06):依据模块功能,编写代码,
2、并进行测试。第 19 周(08-01-0708-01-13 ):整合模块,最终测试,验收,写课题设计任务书。原 主始 要资 参料 考与 文献01张琦.Visual C#.NET 应用教程M:清华大学出版社,北京交通大学出版社.2006.1202刘烨 C#编程及应用程序开发教程M:清华大学出版社,北京交通大学出版社.2006.1203刘勇.SQL Server2000 基础教程M: 清华大学出版社. 2005.204黄明.C#+SQL Server 中小型信息系统开发实例M机械工业出版社.2007.4指导教师签字: 年 月 日在线考试系统摘 要随着计算机应用的迅猛发展,网络应用不断扩大,如远程教
3、育和虚拟大学的出现等等,且这些应用正逐步深入到千家万户。人们迫切要求利用这些技术来进行在线考试,以减轻教师的工作负担及提高工作效率,与此同时也提高了考试的质量,从而使考试更趋于公证!客观!更加激发学生的学习兴趣。在线考试系统是为了方面学生考试、老师阅卷、提高考试的公正性、公平。本文主要包括系统的需求分析、概要设计、总体设计(部分) 、详细设计关键词: 需求分析; 概要设计; 总体孙豪杰:在线考试系统3目 录摘 要 2第一章 系统需求分析 .41.1 功能需求 41.2 性能需求 41.3 可靠性和可用性 41.4 系统 ER 图 .51.5 工具选择 51.6 实现环境 .6第二章 总体设计
4、.72.1 系统模块 72.1.1 系统模块图 .72.1.2 用例图 .82.1.3 管理员功能模块 .92.1.4 教师功能模块 102.1.5 学生功能模块 102.2 数据库设计 .10第三章 详细设计 113.1 数据表 .113.2 具体模块设计 .153.2.1 学生信息管理模块 163.2.2 教师信息管理模块 203.2.3 试卷信息管理 223.2.4 科目信息管理 243.2.5 班级信息管理模块 26第四章 系统测试 284.1 所预见的问题 .284.2 系统测试 .28第五章 结束语 29第一章 系统需求分析1.1 功能需求本系统要实现的是在线考试系统,在设计时应该
5、有友好的用户界面,便用户的操作。系统应具基本功能如下: 科目管理 章节管理 题库管理(选择题,填空题,判断题,简答题,问答题) 系部管理 班级管理 学生管理 教师管理 管理员信息管理 手动组卷 随机组卷(可以完全随机组卷,也可以按章节比重进行随机组卷) 考试页面 阅卷管理 成绩查询1.2 性能需求由于此系统为在线考试系统,响应速度一定要快,要在 5 秒以内,安全性要高,服务器的磁盘容量要大,主存容量要大,信息处理速率要高。1.3 可靠性和可用性由此系统的性质决定,它的可靠性一定要高,尽量减少系统运行中错误的出现,要保持在一定量的范围内。系统可用性也一定要高,尽量避免不可用几率的发生。孙豪杰:在
6、线考试系统51.4 系统 ER 图专业 学号登录密码登录密码用户名 密码N1 N11NNN学生老师管理员姓名班级性别所教科目姓名教师编号试卷 出卷考试管理管理图 1.1 系统 ER 图1.5 工具选择数据库是数据管理的最新技术,是计算机科学的重要分支。十年来,数据库管理系统已从专用的应用程序包发展成为通用系统软件。由于数据库具有数据的结构化、可控冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。由于用到的数据表格多,另外考虑到实际情况,如学生基本信息的变动,我们选用SQL Server 作为数据库开发,而不用 Access,主要是因为
7、Access 存放的记录,在实际运用中不适合此系统;而 SQL Server 是一种常用的关系数据库,能存放和读取大量的数据,管理众多并发的用户,故选用 SQL Server 数据库。用 C#语言进行编码。C# 编程语言是微软在.NET 计划中重要的开发语言,它具有语法简单,功能强大,快速应用,语言自由,强大的 Web 服务器控件,支持跨平台,与 XML相融合等。因此选择 C#编程语言。1.6 实现环境本系统是以 Windows XP 系统为操作平台,在.NET 环境下编程实现。孙豪杰:在线考试系统7第二章 总体设计2.1 系统模块本系统分为用户管理模块、科目管理模块、章节管理模块、班级管理模
8、块、系部管理模块、题库管理模块、试卷生成管理模块、考试页面管理模块、阅卷管理模块、考试结果管理模块、考试查询模块十一个模块2.1.1 系统模块图在线考试系统学生管理教师管理管理员管理章节管理科目管理用户管理题库管理试题管理试题查询考试页面试卷生成随机组卷手动组卷阅卷管理成绩查询管理员 教师学生试卷管理信息修改只限密码班级管理系部管理信息修改只限密码图 2.1 系统模块图2.1.2 用例图学生用例图:成绩查询个人信息维护考试只能进行密码修改学生图 2.2 学生用例图教师用例图:试题查询试题修改试题删除添加试题试题库管理试卷删除修改试卷试卷维护试卷生成阅卷试卷管理教师包括教师信息的添加、修改、删除
9、包括手动阅卷和自动阅卷学生管理教师管理管理员包括学生信息的添加、修改、删除图 2.3 教师用例图孙豪杰:在线考试系统9管理员用例图:试卷维护试卷管理学生管理教师管理管理员包括学生信息的添加、修改、删除包括教师信息的添加、修改、删除试卷删除修改试卷图 2.4 管理员用例图2.1.3 管理员功能模块此模块包括用户管理、科目管理、成绩查询、章节管理、试卷管理五个部分。 用户管理:此模块包括学生管理、教师管理、管理员管理1. 学生管理:对学生信息进行添加、修改和删除。2. 教师管理:对教师信息进行添加、修改和删除。3. 管理员管理:只修改管理员密码。 科目管理:对科目信息进行添加、修改和删除。 成绩查
10、询:对学生考试的结果进行查询。 章节管理:对各科的章节进行添加、修改和删除。 试卷管理:对试卷进行删除。 班级管理:对班级进行添加修改和删除。 系部管理:对院系进行添加、修改和删除2.1.4 教师功能模块此模块包括题库管理、试卷生成、阅卷管理、信息修改四个部分 题库管理:此模块包括试题管理和试题查询。1. 试题管理:对试题进行添加、修改、删除。2. 试题查询:对试题进查询。 试卷生成:此模块包括手动组卷和随机组卷。1. 手动组卷:手动选择题型、题数进行组卷。2. 随机组卷:按固定的题型和分值进行组卷。 阅卷管理:对试卷进行批阅,客观题进行自动阅卷,主观题由教师进行阅卷 信息修改:只限教师对自己
11、的密码进行修改。2.1.5 学生功能模块此模块包括考试页面和个人信息修改两个部分。 考试页面:学生进行做题的页面。 个人信息修改:只限修改密码。2.2 数据库设计综合以上分析,要实现上面的所有功能模块,数据库共要设计十七个表,它们分别是:科目表、管理表、章节表、班级表、组卷表、系别表、试卷信息表、学生表、学生考试试卷表、考试结果表、学生答题试卷信息表、教师表、选择题表、填空题、判断题、简答题表、问答题表。孙豪杰:在线考试系统11第三章 详细设计3.1 数据表表 3.1 科目表(academics)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 academicsid
12、nvarchar 15 N Y 科目编号2 admcname nvarchar 30 N N 科目名3 classid nvarchar 20 N Y 班级编号表 3.2 管理员表(admin)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 admin nvarchar 20 N Y 用户名2 pwd nvarchar 20 N N 密码表 3.3 章节表(chapter)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 chapterid nvarchar 12 N Y 章节编号2 cptname nvarchar 20 N N 章节名称3
13、academicsid nvarchar 15 N N 科目编号表 3.4 班级表(class)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 classid nvarchar 20 N Y 班级编号2 clsname nvarchar 20 N N 班级名3 departid nvarchar 10 N Y 院系编号表 3.5 组卷表(construct)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 examid nvarchar 10 N Y 试卷编号2 topicid nvarchar 10 N Y 试题编号3 topictype n
14、varchar 10 N Y 题型表 3.6 系别表(depart)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 departid nvarchar 10 N Y 院系编号2 dpname nvarchar 20 N N 院系名表 3.7 试卷信息表(examinfo)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 examid nvarchar 10 N Y 试卷编号2 academicsid nvarchar 15 Y N 科目编号3 choicenum int 4 Y N 选择题数4 choicescore int 4 Y N 选择题
15、分值5 fillnum int 4 Y N 填空题数6 fillscore int 4 Y N 填空题分值7 jugenum int 4 Y N 判断题数8 jugescore int 4 Y N 判断题分值9 simplenum int 4 Y N 简答题数10 simplescore int 4 Y N 简答题分值11 questionnum int 4 Y N 问答题数12 questionscore int 4 Y N 问答题分值13 examdate int 4 Y N 考试时间表 3.8 学生信息表(student)序号 字段名 数据类型 数据长度 NULL Primarykey
16、描述1 studentid nvarchar 20 N Y 学号2 pwd nvarchar 20 Y N 密码3 name nvarchar 10 Y N 姓名4 sex nvarchar 5 Y N 性别5 classid nvarchar 20 Y N 班级编号表 3.9 学生考试试卷表(student_exam)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 student nvarchar 20 N Y 学号2 examid nvarchar 10 N Y 密码孙豪杰:在线考试系统13表 3.10 考试结果表(student_exam_result)序号 字
17、段名 数据类型 数据长度 NULL Primarykey 描述1 studentid nvarchar 20 N Y 学号2 examid nvarchar 10 Y N 试卷编号3 score nvarchar 5 Y N 分数表 3.11 学生试卷信息表(student_exam_topoic)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 studentid nvarchar 20 N Y 学号2 examid nvarchar 10 N Y 试卷编号3 topicid nvarchar 10 N Y 试题编号4 answer nvarchar 400 Y N
18、答案5 topictype nvarchar 10 N Y 试题类型表 3.12 教师表(teacher)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 teacherid nvarchar 20 N Y 教师编号2 pwd nvarchar 20 Y N 密码3 name nvarchar 10 Y N 姓名4 sex nvarchar 5 Y N 性别5 classid nvarchar 20 N Y 班级编号6 academicsid nvarchar 15 Y N 科目编号表 3.13 填空题表(topic_fill)序号 字段名 数据类型 数据长度 NULL
19、 Primarykey 描述1 topicid nvarchar 10 N Y 试题编号2 topic nvarchar 300 Y N 题干3 answer nvarchar 50 Y N 答案4 ranswer nvarchar 50 Y N 正确答案5 academicsid nvarchar 15 Y N 科目编号6 chapterid nvarchar 12 Y N 章节编号表 3.14 选择题表(topic_choice)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 topicid nvarchar 10 N Y 试题编号2 topic nvarchar
20、 300 Y N 题干3 option_a nvarchar 300 Y N 选项 A4 option_b nvarchar 300 Y N 选项 B5 option_c nvarchar 300 Y N 选项 C6 option_d nvarchar 300 Y N 选项 D7 answer nvarchar 4 Y N 答案8 academicsid nvarchar 15 Y N 科目编号9 chapterid nvarchar 12 Y N 章节编号表 3.15 判断题表(topic_juge)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 topicid n
21、varchar 10 N Y 试题编号2 topic nvarchar 300 Y N 题干3 answer nvarchar 4 Y N 答案4 ranswer nvarchar 4 Y N 正确答案5 academicsid nvarchar 15 Y N 科目编号6 chapterid nvarchar 12 Y N 章节编号表 3.16 问答题表(topic_question)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 topicid nvarchar 10 N Y 试题编号2 topic nvarchar 300 Y N 题干3 answer nvarc
22、har 400 Y N 答案4 academicsid nvarchar 15 Y N 科目编号5 chapterid nvarchar 12 Y N 章节编号孙豪杰:在线考试系统15表 3.17 简答题表(topic_simple)序号 字段名 数据类型 数据长度 NULL Primarykey 描述1 topicid nvarchar 10 N Y 试题编号2 topic nvarchar 300 Y N 题干3 answer nvarchar 300 Y N 答案4 academicsid nvarchar 15 Y N 科目编号5 chapterid nvarchar 12 Y N 章
23、节编号3.2 具体模块设计系统功能模块介绍时,我们把整个系统分为管理员模块、教师模块、学生模块,其中管理员模块包括:用户管理(学生信息管理、教师信息管理、管理员信息管理) 、科目管理、章节管理、班级管理、系别管理、试卷管理、考试信息查询;教师模块包括:个人信息修改、题库管理、试卷生成、阅卷管理;学生模块包括:考试页面、个人信息修改。我所做的模块是:学生信息管理模块、教师信息管理模块、试卷管理模块、科目信息管理、班级管理模块五个模块。3.2.1 学生信息管理模块图 3.1 学生信息管理界面图 3.2 添加学生信息界面设计思路:管理对学生的信息进行管理,在查询条件中输入关键字,在后面的下拉菜单中选
24、择以什么做关键字字段,点击查找按钮在下面的表格中显示出相应的信息;删除记录时要选择相应的记录,点击删除按钮删除记录;点击添加按钮,弹出添加学生记录窗口(如图 3.2)添加学生记录。实现代码(部分):通过设计类的(ProjectClass() )中的方法调用数据库中的存储过程对数据进行操作孙豪杰:在线考试系统17protected void Page_Load(object sender, EventArgs e) /窗体加载时绑定数据if (Session“adminId“ = null)Response.Redirect(“login.aspx“);elseif (!this.IsPostB
25、ack)GvDataBind();private void GvDataBind() / 绑定方法DataSet ds = new DataSet();ds = (new ProjectClass().getStuInfo();DataTable dt = ds.Tables“StuInfo“;DataView dv = new DataView(dt);dv.RowFilter = “ +this.DDlIndex.SelectedItem.Value.ToString() + “ like %“ +this.TxtIndex.Text.Trim() + “%“;this.GVStuInfo
26、.DataSource = dv;this.LbCount.Text= dv.Count.ToString();if (dv.Count = 0)this.LbResult.Visible = true;this.GVStuInfo.Visible = false;elsethis.LbResult.Visible = false;this.GVStuInfo.Visible =true;this.GVStuInfo.DataBind();protected void Btnselect_Click(object sender, EventArgs e) /查看按钮代码ViewState.Cl
27、ear();this.GVStuInfo.PageIndex= 0;this.GvDataBind();protected void GVStuInfo_RowUpdating(object sender, GridViewUpdateEventArgs e)/ 更新数据代码/string ID = this.GVStuInfo.DataKeyse.RowIndex.Values0.ToString();string strID = (HyperLink)this.GVStuInfo.Rowse.RowIndex.FindControl(“HLStuId“).Text;string strNa
28、me = (TextBox)this.GVStuInfo.Rowse.RowIndex.FindControl(“TxtName“).Text;string strSex = (DropDownList)this.GVStuInfo.Rowse.RowIndex.FindControl(“DDLSex“).SelectedItem.Value;string strPwd = (TextBox)this.GVStuInfo.Rowse.RowIndex.FindControl(“TxtPwd“).Text;string DLCla = (DropDownList)this.GVStuInfo.R
29、owse.RowIndex.FindControl(“DDlClassid“).SelectedItem.Value;/判断表单项是否有空并给出提示信息if (strName = “ | strSex = “ | strPwd = “ | DLCla = “)孙豪杰:在线考试系统19Response.Write(“alert(请输入完整信息!)“);return;elseint i = (new ProjectClass().UpdateStudenInfo(strID,strName,strPwd,strSex,DLCla);if (i = 1)Response.Write(“alert(信
30、息修改成功!)“);elseResponse.Write(“alert(信息修改失败!)“);/返回浏览状态this.GVStuInfo.EditIndex = -1;this.GvDataBind();3.2.2 教师信息管理模块图 3.3 教师信息管理界面图 3.4 添加教师信息界面设计思路:管理对教师的信息进行管理,在查询条件中输入关键字,在后面的下拉菜单中选择以什么做关键字字段,点击查找按钮在下面的表格中显示出相应的信息;删除记录时要选择相应的记录,点击删除按钮删除记录;点击添加按钮,弹出添加教师记录窗口(如图 3.4)添加教师记录。实现代码(部分):protected void Bt
31、nAdd_Click(object sender, EventArgs e) / 添加信息代码孙豪杰:在线考试系统21int insert;string strid = this.TxtID.Text.ToString().Trim();string strname = this.TxtName.Text.ToString().Trim();string strpwd = this.TxtPwd.Text.ToString().Trim();string strsex = this.DDLSex.SelectedItem.Text.ToString().Trim();string strcid
32、 = this.DDLCid.SelectedItem.Value.ToString().Trim();string strsubid = this.DDLSubid.SelectedItem.Value.ToString().Trim();if (strid = “ | strname = “ | strsex = “ | strcid = “|strsubid=“)Response.Write(“alert(请填写完整信息!)“);return;elseint exist;exist = (new ProjectClass().ifTeaExist(strid,strcid);if (ex
33、ist = 0)/exist等于0说明不存在,insert = (new ProjectClass().InsertTeacherInfo(strid, strpwd, strname, strsex, strcid,strsubid);if (insert = 0)Response.Write(“alert(“添加失败!“);“);elseResponse.Write(“alert(添加信息成功!)“);this.TxtID.Text = “;this.TxtName.Text = “;this.TxtPwd.Text = “;string script = “window.opener.l
34、ocation.reload(); “;Page.RegisterStartupScript(“refresh“, script);elseResponse.Write(“alert(“此教师已经存在或所教班级或所教科目已经设定!“);“ );3.2.3 试卷信息管理图 3.5 试卷信息管理界面设计思路:管理对试卷信息进行管理,在查询条件中输入关键字,在后面的下拉菜单中选择以什么做关键字字段,点击查找按钮在下面的表格中显示出相应的信息;删除记录时要选择相应的记录,点击删除按钮删除记录。实现代码(部分):protected void BtnDel_Click(object sender, Eve
35、ntArgs e) / 孙豪杰:在线考试系统23int i = 0;Response.Write(“alert(确定要删除吗?)“);for (int rowindex = 0; rowindex alert(删除成功!)“);elseResponse.Write(“alert(删除失败!)“);this.GvDataBind();3.2.4 科目信息管理图 3.6 科目信息管理界面图 3.7 添加科目信息界面设计思路:管理对科目的信息进行管理,在查询条件中输入关键字,在后面的下拉菜单中选择以什么做关键字字段,点击查找按钮在下面的表格中显示出相应的信息;删除记录时要选择相应的记录,点击删除按钮
36、删除记录;点击添加按钮,弹出添加科目记录窗口(如图 3.7)添加科目记录。实现代码(部分):protected void BtnAllSel_Click(object sender, EventArgs e) /全选按钮代码孙豪杰:在线考试系统25/全选foreach (GridViewRow item in this.GVAcademicsInfo.Rows)CheckBox cbx = (CheckBox)item.FindControl(“CheckOk“);cbx.Checked = true;protected void BtnClearSel_Click(object sender
37、, EventArgs e) /全请按钮代码/全不选foreach (GridViewRow item in this.GVAcademicsInfo.Rows)CheckBox cbx = (CheckBox)item.FindControl(“CheckOk“);cbx.Checked = false;protected void GVAcademicsInfo_PageIndexChanging(object sender, GridViewPageEventArgs e) /分页代码this.GVAcademicsInfo.PageIndex = e.NewPageIndex;this
38、.GvDataBind();protected void GVAcademicsInfo_RowEditing(object sender, GridViewEditEventArgs e)/编辑按钮代码this.GVAcademicsInfo.EditIndex = e.NewEditIndex;this.GvDataBind();3.2.5 班级信息管理模块图 3.8 班级信息管理界面图 3.9 添加班级信息界面设计思路:管理对班级的信息进行管理,在查询条件中输入关键字,在后面的下拉菜单中选择以什么做关键字字段,点击查找按钮在下面的表格中显示出相应的信息;删除记录时要选择相应的记录,点击删
39、除按钮删除记录;点击添加按钮,弹出添加班级记录窗口(如图 3.7)添加班级记录。实现代码(部分):protected void GVAcademicsInfo_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) /取消编辑代码孙豪杰:在线考试系统27this.GVAcademicsInfo.EditIndex = -1;this.GvDataBind();protected void GVAcademicsInfo_RowDataBound(object sender, GridViewRowEventArgs e) /
40、datarow行的样式if (e.Row.RowType = DataControlRowType.DataRow) /判定当前的行是否属于datarow类型的行/当鼠标放上去的时候 先保存当前行的背景颜色 并给附一颜色e.Row.Attributes.Add(“onmouseover“, “currentcolor=this.style.backgroundColor;this.style.backgroundColor=yellow,this.style.fontWeight=;“);/当鼠标离开的时候 将背景颜色还原的以前的颜色e.Row.Attributes.Add(“onmouseo
41、ut“, “this.style.backgroundColor=currentcolor,this.style.fontWeight=;“);/(LinkButton)(e.Row.Cells3.Controls0).Attributes.Add(“onclick“,“return confirm(确定修改吗? )“); /单击行改变行背景颜色if (e.Row.RowType = DataControlRowType.DataRow)e.Row.Attributes.Add(“onclick“, “this.style.backgroundColor=green; this.style.c
42、olor=buttontext;this.style.cursor=default;“); 第四章 系统测试4.1 所预见的问题系统功能的实现,需要经过以下几步,首先把大致的框架设计好,然后根据系统要求编写代码,接下来调试程序,最后完善总结。其中最重要的就是编写代码、调试程序两步。在此次设计中,给我印象最深的就是系统的调试。在调试过程中,我遇到了不少的问题,不过经过我不断的查阅资料,老师的指导,同学的商讨,这些问题都逐渐得到了解决。4.2 系统测试三个星期的奋战,我们的三级课题设计“在线考试系统”也终于完成了,不过在系统测试时可让我们花了好多功夫,为了使系统变得更加完善,我们测试了一遍又一遍。
43、在测试之初,由于数据库中的数据都是刚开始编程时随便输入的,一点实用性也没有,所以我们又把数据库中的数据全部清理了一下,输入了一些真实可用的数据,以便完成后面的数据测试。经过一段时间的系统测试之后,我们的在线考试系统在整体上完善了许多,在设计上也更具有人性化了,那么对于用户来说会更加容易适应本系统的各项操作。但是我们的系统还不少的缺陷,以后让它更加完善。孙豪杰:在线考试系统29第五章 结束语我在此次实践课题中负责学生信息管理模块、教师信息管理模块、试卷管理模块、科目信息管理、班级管理模块五个模块的设计。基本上实现了各个功能。此次的课题实践,我收获了很多,学到想做好一件事首先要一个好的计划、统筹的
44、安排,还要具有良好的团队合作精神,通过这次的实践书上以前很多不懂的东西都通过实践找到了答案。总之,通过三个星期的课题设计,让我感受了软件开发的整个过程。课题设计不仅是对我在大学所学知识的一个综合运用,也是一次增长知识和经验的好机会,同时也使我学会了许多处理、解决问题的方法,大大提高了自己的动手能力,为以后走上工作岗位打下了良好的基础。参考文献01张琦.Visual C#.NET 应用教程M:清华大学出版社,北京交通大学出版社.2006.1202刘烨 C#编程及应用程序开发教程M:清华大学出版社,北京交通大学出版社.2006.1203刘勇.SQL Server2000 基础教程M: 清华大学出版社. 2005.204黄明.C#+SQL Server 中小型信息系统开发实例M机械工业出版社.2007.4