1、 软件设计方法课程设计 设 计 说 明 书学生信息管理系统的开发学 生 姓 名学 号班 级成 绩指 导 教 师软件设计方法课程设计评阅书题 目 学生信息管理系统的实现学生姓名 学号指导教师评语及成绩成绩: 教师签名: 年 月 日答辩教师评语及成绩成绩: 教师签名: 年 月 日教研室意见总成绩: 室主任签名: 年 月 日注:指导教师成绩 60%,答辩成绩 40%,总成绩合成后按五级制记入。课程设计任务书2011 2012 学年第 一 学期专业: 学号: 姓名: 课程设计名称: 软件设计方法课程设计 设计题目: 学生信息管理系统的开发 完成期限:自 2012 年 1 月 2 日 2012 年 1
2、月 13 日共 2 周设计依据、要求及主要内容(可另加附页):学生信息是学校的一项非常重要的数据资源,学生信息管理也是学校一项重要的常规工作,长期以来,学生信息都是依赖人工管理和档案文件记载的。而在实际工作中,学生信息涉及到学校的各个不同院系,是非常复杂的。 面对如此众多的学生信息,其工作量可想而知。而且人工管理存在大量的不可控制因素,对学生信息的管理并不规范。本系统实现学生信息管理的电子化、减轻了管理人员的工作负担,能够规范高效地管理大量的学生信息,使得信息管理更为方便和有效。该系统主要完成以下功能:学生相关信息的增加、删除、修改、查询和统计,分权限登录界面设计,前台管理设计。主要针对学生用
3、户和教务管理用户。对于学生类用户而言,可以查看本人信息,但不能查看其他学生的信息。而对于管理用户而言,不但可以收集和查看所有学生的信息,还可以根据需要修改学生的信息,并且能够按照多种条件进行学生信息的查询,着重做好数据库模型的抽象与设计。要求应用软件工程的开发方法,认真做好需求分析、概要设计、详细设计、测试与维护等各个阶段的工作,并根据自己的设计认真完成设计说明书。指导教师(签字): 教研室主任(签字): 批准日期: 年 月 日摘要随着学校教学条件的改善和学校规模的扩大,对学生信息的管理将不仅仅局限与手工管理和文档记载,本学生信息系统是基于 WEB 的应用软件,采用了 C#和 ASP.NET
4、对后台代码的编写。前台界面运用了 WEB4.0 技术编写。数据库操作用 SQL server 2005 实现。本系统实现了学生基本信息的添加,修改,删除,和查询。关键词: C#;ASP.NET;WEB4.0;SQLserver 2005;数据流图;数据字典目录1 课题描述 .12 可行性研究 .23 需求分析 .33.1 系统功能 .33.2 数据流图 .43.3 数据字典 .54 总体设计 .74.1 系统功能模块 .74.2 概念结构设计 74.2.1 E-R 图 74.3 逻辑结构设计 .94.4 物理结构设计 .95 系统实现 115.1 登陆界面 115.2 主界面及相关操作 .13
5、5.2.1 主界面 .135.2.2 用户列表 135.2.3 添加用户界面 155.2.4 用户修改界面 165.2.5 修改密码界面 186 测试和维护 .206.1 单元测试 .206.2 白盒测试和黑盒测试 .206.3 登录测试 206.4 用户测试 .22总结 .24参考文献 .2511 课题描述学生信息是学校的一项非常重要的数据资源,学生信息管理也是学校一项重要的常规工作,长期以来,学生信息都是依赖人工管理和档案文件记载的。而在实际工作中,学生信息涉及到学校的各个不同院系,是非常复杂的。 面对如此众多的学生信息,其工作量可想而知。而且人工管理存在大量的不可控制因素,对学生信息的管
6、理并不规范。本系统实现学生信息管理的电子化、减轻了管理人员的工作负担,能够规范高效地管理大量的学生信息,使得信息管理更为方便和有效。该系统主要完成以下功能:学生相关信息的增加、删除、修改、查询和统计,分权限登录界面设计,前台管理设计。系统主要针对学生用户和教务管理用户。对于学生类用户而言,可以查看本人信息,但不能查看其他学生的信息。而对于管理用户而言,不但可以收集和查看所有学生的信息,还可以根据需要修改学生的信息,并且能够按照多种条件进行学生信息的查询,着重做好数据库模型的抽象与设计。22 可行性研究在这个系统的开发过程中,我们可以用 c#语言和 SQLserver2005 数据库,visio
7、 画图工具,visual studio2010 开发平台,在 windows7 环境下来进行。在信息泛滥的时代,速度就是一切,手工的管理或档案文档记载都降低了人们的效率,因此快速的网络管理系统会给用户带来不一样的冲击感,它不仅可以提高学校的管理效率,也节省了用户的时间。我采用的是简单的用户登陆界面,只要用户输入用户名就可以登录我们的主界面,然后进行学生信息的管理,添加,修改,删除,查询等操作。而且界面上面都有明确的操作提示,任何人都可以操作。不存在不懂电脑的人不会操作的情况,而且我们还会提供用户使用帮助和说明书。33 需求分析需求性分析的任务是:详细调查系统所需要的对象,充分了解系统的概况和发
8、展前景,明确用户的需求,收集支持系统目标的基础数据及其处理方法;确定系统的功能和边界;它的基本任务是准确的回答:“系统必须做什么” 。本系统的基本功能:1)学籍信息管理2)班级信息管理3)课程信息管理4)成绩信息管理5) 学院信息管理 6)系统管理3.1 系统功能3.1.1 学籍信息管理每年的大量新生入学,老生毕业都需要处理大量的学生信息,通过这一模块,可以实现学生基本情况的添加,删除,更新。还能查询各个学生的情况,姓名,家庭住址,家庭电话,学号等各个信息。3.12 班级信息管理实现班级的添加,删除,更新,查询班级的所在院系,班主任。3.13 课程信息管理每个学期都会增加一些新的科目,通过本模
9、块可以轻松的添加以及更新课程,可以根据学期条件或者班级条件可以看到数据库中显示的符合条件的课程信息,而且可以根据管理员的要求进行数据的添加,删除,修改的操作。对每门课可以根据是考试课还是考查课分类,大大增加了管理效率。3.14 成绩信息管理本模块实现了成绩的输入,删除,更新,还能查询到各个平均成绩以及单科最高或者最低成绩,把成绩统计这个繁琐的工作简单化,为学生信息管理提高工作效率。3.15 学员信息管理本模块实现了学院信息的管理,包括添加学院信息,查询, 修改 ,添加,可以根据学院名称来查询;3.16 系统设置系统设置包括用户管理和修改密码、退出系统,实现了用户和教务管理员,超级管理员。各自有
10、自己管理的权限。43.2 数据流图管理员学籍管理 学籍的添加 、 修改 、删除学籍表课程管理课程的添加 、 修改 、删除课程信息表操作反馈操作反馈班级的添加 、 修改 、删除班级表班级管理操作反馈用户的添加修改删除院系的添加 、 删除 、修改操作反馈操作反馈系统管理院系表用户表院系管理图 3.1 管理员数据流图学生学籍管理查看修改 ,添加学籍信息用户表课程管理查看课程信息操作反馈操作反馈查看班级信息班级管理操作反馈修改密码看查看院系信息操作反馈操作反馈系统管理院系管理学籍表图 3. 2 学生数据流图操作反馈教务管理员成绩管理成绩的添加 、 修改 ,删除操作反馈课程添加 、修改删除课程管理课程表
11、修改密码密码管理系统设置用户表图 3. 3 教务管理员数据流图53.3 数据字典数据字典为分析人员及其他开发人员提供了数据流图中各中元素的详细定义,是需求评审以及后续进行系统设计及维护的重要依据。表 3.1 学籍管理数据字典名字 学生学籍基本信息描述 每个学生都有其基本信息入学时注册来源 管理员输入定义 学籍基本信息=学生编号+ 学号 + 姓名+ 性别+ 年龄 +民族+ 出生年月 + 籍贯+ 联系地址+ 联系电话 +班级 院系 +qq +邮箱 物理位置 数据库表 3.2 班级管理数据字典名字 班级基本信息描述 每个班级都有其基本信息入学时有管理员分配来源 管理员输入定义 班级基本信息=学生编号
12、+ 学号 + 姓名+ 性别+ 年龄 +民族+ 出生年月 + 籍贯+ 联系地址+ 联系电话 +班级 院系 +qq +邮箱 物理位置 数据库表 3.3 课程管理数据字典名字 课程基本信息描述 每门课程都有其基本信息开学学时由教务管理员分配来源 教务管理员输入定义 课程基本信息=课程编号+ 课程号+ 课程名+ 班级+ 院系 +类别 +学时 物理位置 数据库表 3.4 成绩管理数据字典名字 成绩基本信息描述 每个学生的每门课程都有其基本信息学期完时由教务管理员输入来源 教务管理员输入定义 成绩基本信息=成绩编号+ 学号 +姓名 +课程名+ 成绩 +总成绩 +平均成绩物理位置 数据库表 3.5 学院管理
13、数据字典6名字 学院基本信息描述 每个学院都有其基本信息来源 管理员输入定义 学院基本信息=院系编号 + 院系名称+ 院系办公室+ 联系电话物理位置 数据库表 3.6 系统管理数据字典名字 系统基本信息描述 系统基本信息包括用户基本信息和密码修改来源 管理员输入定义 用户基本信息=用户编号+ 用户名称+ 用户密码+ 用户类别物理位置 数据库74 总体设计4.1 系统功能模块学 生 信 息 管 理 系 统 系 统班级管理添加学籍成绩管理学籍列表课程列表班级添加班级列表学院添加学院列表成绩管理学籍管理系统设置成绩列表课程管理学院管理课程添加用户列表修改密码退出系统图 4. 1 系统功能模块图4.2
14、 概念结构设计4.2.1 E-R 图课程实体课 程课 程 编 号班 级类 别课 程 名课 程 号院 系学 时图 4.1 课程实体学生实体学 生性 别年 龄民 族联 系 电话院 系学 号姓 名出 生 日期班 级联 系 地址籍 贯学 生 编号邮 箱q q图 4.2 学生实体8院系实体院 系院 系 编号院 系 电 话院 系 名 称院 系 办 公室图 4.3 院系实体班级实体班 级班 级 编 号班 主 任班 级 名 称院 系班 长辅 导 员图 4.4 班级实体成绩实体成 绩成 绩 编 号平 均 成 绩成 绩课 程 名学 号姓 名总 成 绩图 4.5 成绩实体用户实体用 户 编 号 用 户 用 户 密
15、码用 户 名 称用 户 类 别图 4.6 用户实体94.3 逻辑结构设计对 E-R 图的分析作出如下的属性和关系(1)学生表:学生编号 学号 姓名 性别 年龄 民族 出生年月 籍贯 联系地址 联系电话 班级 院系 qq 邮箱 (2)班级表 :班级编号 院系 班级名称 辅导员 班长 班主任(3)院系表:院系编号 院系名称 院系办公室 联系电话(4)课程表 :课程编号 课程号 课程名 班级 院系 类别 学时 (5)成绩表:成绩编号 学号 姓名 课程名 成绩 总成绩 平均成绩(6)用户表:用户编号 用户名称 用户密码 用户类别4.4 物理结构设计物理结构设计是对数据库中的表建立系统分成两个部分:后台
16、管理和前台应用。后台管理主要维护数据库的基本信息,信息,这些信息为最后的统计报表提供了数据基础,前台主要是学生和教师的操作信息,后台主要是管理员对系统的管理和维护。两个部分各自包含了一个数据模块,用于集中管理数据表。系统共有 6 张表分别是用户表,成绩表,课程表,院系表,班级表,学生表对数据库中表的设计如下:表 4.1 Class 表序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明1 ClassID int 4 0 是 否2 DepartmentName nvarchar 20 0 否3 ClassName nvarchar 50 0 否4 ClassTeacher nva
17、rchar 10 0 否5 ClassMonitor nvarchar 50 0 否6 ClassFTeacher nvarchar 10 0 否表 4.2 Course 表序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明1 CourseID int 4 0 是 否2 CourseNum nvarchar 10 0 否3 CourseName nvarchar 20 0 否4 ClassName nvarchar 50 0 否5 DepartmentName nvarchar 50 0 否6 CourseType nvarchar 50 0 否7 CourseTime in
18、t 4 0 否10表 4.3 Department 表序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明1 DepartmentID int 4 0 是 否2 DepartmentName nvarchar 50 0 否3 DepartmentAddress nvarchar 50 0 否4 DepartmentPhone nvarchar 20 0 否表 4.4 Score 表序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说1 ScoreID int 4 0 是 否2 StudentNum int 4 0 否3 StudentName nvarchar 2
19、0 0 否4 CourseName nchar 20 0 否5 Score decimal 9 0 否6 TotalScore decimal 9 0 否7 AverageScore decimal 9 0 否表 4.5Student 表序号 列名 数据类型 长度 小数位 标识 主键 允空 默认值 说明1 StudentID int 4 0 是 否2 StudentNum int 4 0 否3 StudentName nvarchar 20 0 否4 StudentSex nvarchar 10 0 否5 StudentAge int 4 0 否6 StudentMino nvarchar 2
20、0 0 否7 StudentBirth nvarchar 50 0 否8 StudentAddress nvachar 50 0 否9 StudentPhone nvarchar 20 0 否10 StudentAddr nvarchar 50 0 否1111 StudentClass nvarchar 50 0 否12 StudentDepartment nvarchar 20 0 否表 4.6 User 表序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明1 UserID int 4 0 是 否2 UserName nvrchar 50 0 否3 UserPSW nvar
21、char 20 0 否4 UserType nvarchar 50 0 否5 系统实现编码和实现是本系统界面和后台功能的实现5.1 登陆界面图 5.1 登陆界面登陆界面的后台代码及权限设置,验证码验证代码实现:private readonly string ConnectionString = ConfigurationManager.AppSettings “ConnectionString“.ToString();protected void Page_Load(object sender, EventArgs e)if (!IsPostBack)12Session“admin“ = th
22、is.TextBox1.Text.Trim(); protected void SB_Click(object sender, EventArgs e)if (Request.Cookies“yzmcode“.Value.ToLower() = Code.Text.Trim().ToLower()string str;str = “SELECT UserPSW,UserType FROM User WHERE(UserName = name and UserType=type)“;SqlConnection con = new SqlConnection(ConnectionString);S
23、qlCommand cmd = new SqlCommand(str, con);cmd.Parameters.Add(“name“, SqlDbType.NVarChar, 50);cmd.Parameters.Add(“type“,SqlDbType.NVarChar,50);cmd.Parameters“name“.Value = this.TextBox1.Text.Trim();cmd.Parameters“type“.Value = this.DropDownList1.Text;con.Open();SqlDataReader dr = cmd.ExecuteReader();i
24、f (dr.Read() string pwd = dr0.ToString();dr.Close();if (pwd != TextBox2.Text.Trim()this.lab.Text = “输?入?的?密码?不?正y确!?“;elseSession“admin“ = this.TextBox1.Text.Trim();Response.Redirect(“index.aspx“);else this.lab.Text = “抱歉?,你?没?有D权限T操作!“;con.Close();else this.lab.Text = “验证码?错误“;this.TextBox1.Text =
25、“;this.TextBox2.Text = “;this.Code.Text = “;protected void Button1_Click(object sender, EventArgs e)13 this.TextBox1.Text = “;this.TextBox2.Text = “;this.Code.Text = “;5.2 主界面及相关操作主界面和相关操作只是针对用户系统设置模块为例:5.2.1 主界面图 5.2 主界面145.2.2 用户列表图 5.3 用户界面用户列表中数据绑定代码实现:protected void Page_Load(object sender, Eve
26、ntArgs e) if (!IsPostBack) Bind();private void Bind()string s = “SELECT UserID, UserName, UserPSW, UserType FROM User ORDER BY UserID DESC“;SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings“ConnectionString“);con.Open();SqlDataAdapter da = new SqlDataAdapter(s, con);DataSet ds =
27、 new DataSet();da.Fill(ds);con.Close();GridView1.DataSource = ds.Tables0.DefaultView;GridView1.DataBind();protected void GridView1_PageIndexChanging1(object sender, GridViewPageEventArgs e) GridView1.PageIndex = e.NewPageIndex;Bind();protected void GridView1_RowDeleting(object sender, GridViewDelete
28、EventArgs e)string str = “delete from User where UserID=“ + this.GridView1.DataKeyse.RowIndex.Value.ToString() + “;15SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings“ConnectionString“);con.Open();SqlCommand cmd = new SqlCommand(str, con);cmd.ExecuteNonQuery();con.Close();Bind()
29、;查询代码实现:protected void Button2_Click(object sender, EventArgs e) string s = “select UserID,UserName,UserPSW,UserType from User where UserName =“ + TextBox1.Text + “;SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings“ConnectionString“);con.Open();SqlDataAdapter da = new SqlDataAda
30、pter(s, con);DataSet ds = new DataSet();da.Fill(ds);con.Close();GridView1.DataSource = ds.Tables0.DefaultView;GridView1.DataBind();5.2.3 添加用户界面图 5.4 用户添加界面用户添加功能实现代码:protected void Button1_Click(object sender, EventArgs e) if (IsNull()16string name, number, type;name = this.TextBox1.Text;number = th
31、is.TextBox2.Text;type = this.TextBox3.Text;SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings“ConnectionString“);con.Open();SqlCommand cmd = new SqlCommand(“INSERT INTO User(UserName,UserPSW, UserType)VALUES (“+name+“, “+number+“, “+type+“)“,con);cmd.ExecuteNonQuery();cmd.Dispose
32、();con.Close();Response.Write(“alert(用户信息添加成功!);“);Server.Transfer(“UserList.aspx“);private bool IsNull()if (this.TextBox1.Text = “)Response.Write(“alert(用户名不能为空!);“);return false;elseif (this.TextBox2.Text = “)Response.Write(“alert(编号不能为空!);“);return false;elsereturn true; 5.2.4 用户修改界面图 5.5 用户修改界面1
33、7用户修改功能代码实现:private string bid;protected void Page_Load(object sender, EventArgs e)if (!IsPostBack)bid = Request“ID“.ToString();Bind(bid);private void Bind(string ID)string str;str = “SELECT UserID, UserName, UserPSW, UserType FROM User where UserID=“ + ID + “;SqlConnection con = new SqlConnection(C
34、onfigurationManager.AppSettings“ConnectionString“);SqlCommand cmd = new SqlCommand(str, con); con.Open();SqlDataReader dr = cmd.ExecuteReader();if (dr.Read()this.TextBox1.Text = dr“UserName“.ToString();this.TextBox2.Text = dr“UserPSW“.ToString();this.DropDownList1.Text = dr“UserType“.ToString();dr.C
35、lose();con.Close();protected void Button1_Click(object sender, EventArgs e)if (IsNull()string id = Request.QueryString“ID“;string name, number, tel;name = this.TextBox1.Text;number = this.TextBox2.Text;tel = this.DropDownList1.Text;SqlConnection con = new SqlConnection(ConfigurationManager.AppSettin
36、gs“ConnectionString“);con.Open();SqlCommand cmd = new SqlCommand(“update User set UserName=“ + name + “,UserPSW =“ + number + “,UserType=“ + tel + “ where UserID=“ + id + “, con);cmd.ExecuteNonQuery();cmd.Dispose();con.Close();Response.Write(“alert(用户修改成功!);“);18Server.Transfer(“UserList.aspx“);priv
37、ate bool IsNull() if (this.TextBox1.Text = “) Response.Write(“alert(用户名称不能为空!);“);return false;else if (this.TextBox2.Text = “) Response.Write(“alert(密码不能为空!);“);return false;else if (this.DropDownList1.Text = “) Response.Write(“alert(请选择用户类型!);“);return false;else return true;5.2.5 修改密码界面图 5.6 密码修改
38、界面密码修改代码实现:protected void Button1_Click(object sender, EventArgs e) string name, PSW1, PSW2, PSW3;name = this.DropDownList1.Text;PSW1 = this.TextBox2.Text;19PSW2 = this.TextBox3.Text;PSW3 = this.TextBox4.Text;if (this.TextBox2.Text = this.TextBox3.Text)Response.Write(“alert(旧密码和新密码不能相同!);“);elseif (
39、!(this.TextBox3.Text = this.TextBox4.Text)Response.Write(“alert(两次输入密码不相同!);“); elseConnection con = new SqlConnection(ConfigurationManager.AppSettings“ConnectionString“);con.Open();SqlCommand cmd = new SqlCommand(“Update User set UserPSW=(“+PSW2+ “),UserName=(“+name+“)“, con);cmd.ExecuteNonQuery();
40、cmd.Dispose();con.Close();Response.Write(“alert(用户密码修改成功!);“);Server.Transfer(“Main.aspx“); 206 测试和维护在本次学生信息管理系统开发过程中,主要用到了单元测试、白盒测试和黑盒测试几种测试方法:6.1 单元测试单元测试集中检测软件设计的最小单元模块。通常,单元测试和编码测试是同步进行的,在本次开发中,也是通过 Junit 在开发过程中通过对模块接口,局部数据结构,重要的执行通路,出错处理通路和边界条件等五个方面进行测试的。另外,在测试过程中,也用到了白盒测试和黑盒测试的理论知识。6.2 白盒测试和黑盒
41、测试白盒测试:把测试对象看作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息来设计或选择测试用例,对程序所有逻辑路径进行测试。黑盒测试:黑盒测试着重测试软件功能,并不能取代白盒测试,是一种与白盒测试互补的测试方法,它很可能发现白盒测试不易发现的其他类型错误。黑盒测试力图发现下述类型的错误:(1) 功能不正确或遗漏了功能;(2) 界面错误(3) 数据结构错误或外部数据库访问错误;(4) 性能错误;(5) 初始化和终止错误;如图 5.1 是一个黑盒测试的举例表 6.1 测试举例案例编号 测试模块 测试操作 预期结果 功能测试结果 回归测试结果 001 登录模块1.进入系统首页;2.不
42、输入用户名或密码,点击登录。提示用户名或密码是必须的 符合预期结果 符合预期结果 002 登录模块1.进入系统主页(不登录) ;2.点击系统查询。跳转到另一个页面,提示没有登录符合预期结果 符合预期结果 003 添加 修改 删除1 在用户添加修改,删除时如果操作成功则回到列表页面,失败则弹出相应的消息告诉用户错误之处操作成功跳转页面操作失败弹出对话框符合预期结果 符合预期结果6.3 登录测试登录测试包括了验证码测试,权限测试和输入测试测试结果:21图 6.1 验证码测试图 6.2 输入测试22图 6.3 权限测试6.4 用户测试用户测试包括添加功能测试,修改功能测试,密码修改测试,退出系统测试
43、,删除测试, 查询测试;图 6.4 删除测试图 6.5 退出系统测试23图 6.6 用户添加测试图 6.7 用户修改测试图 6.8 密码修改测试图 6.9 查询测试24总结这两周的课程设计给了我一个很好的缎炼的机会,让我对 sql server C#和软件开发过程有了一个更深的认知和了解,也培养了自己独立完成事情的能力,加深了对数据库知识的认识。以前在学习数据库的时候抱着一种无所畏的心态,总认为学了也没什么用武之地,但通过这次的锻炼却让我深深的明白了学无止境的道理.在设计的过程中由于基础打的不扎实,存在着很多的困特别是数据库的操作问题和数据绑定问题,联接起来比较复杂,但受到了老师和同学的帮助,
44、克服了困难,慢慢的由了解到掌握。我最大的体会就是在遇到困难的时候千万别气馁,要有耐心去检查和发现那些细微的错误,有时会由于一个非常小的疏忽导致错误使得要花一段时间进行查找、修改。虽然说这次的系统只是实现了一些小功能而已,没有界面和后台的链接要求,做起来还是有一定难度的。还有那就是你要去找一些相关的资料来帮助自己找到解决方法,还要虚心的向老师和同学们请教,这样你就能很快的理解和掌握你所需的知识.以后要加强考虑问题的全面性, 在处理问题方面要保持一个冷静的态度,不能心急这样反而发现和解决不了存在的问题,逐渐的将自己的系统功能做大。25参考文献1 周建芳,杜鑫,李禹生,数据库应用技术M. 北京: 中国水利水电出版社.2007.4.2 闪四清, SQL Server 2005 基础教程M.清华大学出版社.2010.8.3 苗雪兰等.数据库系统原理及应用教程.机械工业出版社 . 2007.8.4 朱如龙, SQL Server 数据库应用系统开发技术 M.机诫工业出版社.2004.1.5 张昌龙,ASP.NET 4.0 从入门到精通 .机械工业出版社 . 2011.1.1.