已阅读5页,还剩116页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
16.05.2020,.,1,模块06基于存储过程的项目设计与应用,-数据库系统设计与项目应用课程,16.05.2020,.,2,工作任务与学习目标,06模块,16.05.2020,.,3,Preface,Transact-SQL是微软对SQL的扩展,具有SQL的主要特点,同时增加了变量、运算符、函数、流程控制和注释等语言元素,使得其功能更加强大。而存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都会用到存储过程。,16.05.2020,.,4,任务6-1,任务6-1任课教师课程班成绩查询,16.05.2020,.,5,任务6-1课程班成绩查询,当学期末课程教学结束后,任课老师在考试后要将学生的成绩录入到“教学管理系统”中,在随后的日期中,任课教师还要经常查询自己任教课程班的学生成绩。请以编码为“T080040401”的课程班为例,用存储过程实现任课教师的课程班成绩查询T-SQL语句。,【任务描述与分析】,16.05.2020,.,6,任务6-1课程班成绩查询,存储过程是利用SQLServer所提供的Transact-SQL语言所编写的程序,是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。,【相关知识与技能】,16.05.2020,.,7,任务6-1课程班成绩查询,【相关知识与技能】,存储过程的能力大大增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。可保证数据的安全性和完整性。在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。可以降低网络的通信量。将体现企业规则的运算程序放入数据库服务器中,以便集中控制,或当企业规则发生变化时在服务器中改变存储过程即可,无须修改任何应用程序。,存储过程的优点,16.05.2020,.,8,任务6-1课程班成绩查询,【相关知识与技能】,存储过程的种类,系统存储过程以SP_开头,用来进行系统的各项设定、取得信息和相关管理工作。扩展存储过程:以XP_开头,用来调用操作系统提供的功能。用户自定义的存储过程就是我们一般所指的存储过程。,16.05.2020,.,9,任务6-1课程班成绩查询,创建存储过程的语法如下所示:,其中存储过程名不能超过128个字符,每个存储过程中最多设定1024个参数。,存储过程的创建、执行与删除,【相关知识与技能】,16.05.2020,.,10,任务6-1课程班成绩查询,上述语法中参数的使用方法如下:,参数名前要有一个“”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQLServer所支持的数据类型都可使用。=初始值相当于我们在创建存储过程时设定的一个默认值。OUTPUT是用来指定该参数为输出参数。,【相关知识与技能】,16.05.2020,.,11,任务6-1课程班成绩查询,创建完存储过程后,可以用下述T-SQL语句来执行它。,如果要删除一个已经创建好的存储过程,可以用下述T-SQL语句来实现。,当然,可以使用系统存储过程“SP_HELP”和“SP_HELPTEXT”分别来查看存储过程的状态和内容。,【相关知识与技能】,16.05.2020,.,12,任务6-1课程班成绩查询,【任务实施与拓展】,(1)在SSMS窗口的【新建查询】窗口中输入如下T-SQL语句。,(2)单击【执行】按钮,即可在“教学管理系统”数据库中创建相应的存储过程“CourseClassGradeQuery”。,16.05.2020,.,13,任务6-1课程班成绩查询,【任务实施与拓展】,(3)继续在【查询】窗口中输入如下执行存储过程的T-SQL语句。,(4)单击【执行】按钮,得到如图所示的查询结果。,16.05.2020,.,14,任务6-1课程班成绩查询,【任务实施与拓展】,【任务拓展】,上面创建的存储过程只能查询一个课程班的学生成绩,不能动态地查询不同课程班的学生成绩。为了根据【课程班编码】灵活地进行学生的成绩查询,需要在上述存储过程中引入一个参数,用来给存储过程传递【课程班编码】,然后存储过程再根据传递来的【课程班编码】进行相关的学生成绩查询。创建带【课程班编码】参数的存储过程的T-SQL语句如下所示。,16.05.2020,.,15,任务6-1课程班成绩查询,【任务实施与拓展】,单击【执行】按钮,即可创建该存储过程。如要查询课程班编码为“T080010401”的存储过程,可以用下述T-SQL语句实现。,如果要给这个带【课程班编码】参数的存储过程在创建时,赋予一个初始值的话,该如何实现?,16.05.2020,.,16,任务6-2,任务6-2学号自动递增的学生记录添加,16.05.2020,.,17,任务6-2学号自动递增,在某个班级新生记录添加的时候,学号不用手工输入,系统将统计出这个班级已有学生的最大学号,然后在其基础上做自动加1处理后插入到学生表中。插入学生记录的流程如图所示。请以班级编码为“050802”的“05软件(2)班”为例,用存储过程实现学号自增的学生记录插入功能。,【任务描述与分析】,16.05.2020,.,18,任务6-2学号自动递增,【任务描述与分析】,16.05.2020,.,19,任务6-2学号自动递增,注释是指代码中不执行的文本字符串,也称为注解。SQLserver中有两种类型的注释字符,一种是ANSI标准的行注释符“-”,另一种是与C语言相同的程序块注释符,即“/*/”。“-”用于每行的开头,可以标识一行文字为注释。“/*”用于注释文字的开头,“*/”用于注释文字的末尾,块注释符可以标识多行文字为注释。,【相关知识与技能】,16.05.2020,.,20,任务6-2学号自动递增,【相关知识与技能】,常量也称文字值或标量值,是指在程序运行过程中其值始终固定不变的量,而变量则是在程序运行过程中其值可以变化的量。在SQLServer中,常量和变量在使用之前都必须定义。变量是一种语言中必不可少的组成部分。T-SQL语言中有两种形式的变量,一种是系统提供的全局变量,另一种是用户自己定义的局部变量。全局变量是SQLServer系统内部的变量其作用范围并不仅仅局限于某一程序。而是任何程序均可以随时调用,全局变量通常存储一些SQLServer的配置设定值和统计数据。全局变量时,必须以标记符“”开头,常量与变量,16.05.2020,.,21,任务6-2学号自动递增,【相关知识与技能】,常用全局变量,16.05.2020,.,22,任务6-2学号自动递增,局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量必须以“”开头,而且必须先用DECLARE命令定义后才可以使用。声明局部变量语句如下:,【相关知识与技能】,其中,变量类型可以是SQLserver支持所有数据类型,也可以是用户自定义的数据类型。在T-SQL中,必须使用SELECT或SET命令来设定变量的值,局部变量赋值语句如下:,或,注意:字符串常量用Unicode字符串常量表示为N。,16.05.2020,.,23,任务6-2学号自动递增,运算符可以分为:算术运算符、赋值运算符、比较运算符、逻辑运算符、字符串运算符、位运算符和一元运算符。表达式是由常量、变量、运算符和函数等组成的,它可以在查询语句中的任何位置使用。,【相关知识与技能】,运算符与表达式,16.05.2020,.,24,任务6-2学号自动递增,流程控制语句就是用来控制程序执行方向的语句,又被称为流控制语句。它主要包括:条件判断控制结构、SELECTCASE控制结构、循环控制结构、跳转控制结构、中断延迟程序控制结构和程序错误控制结构等。,BEGINEND可以定义T-SQL语句块,这些语句块作为一组语句执行,同时BEGINEND语句允许嵌套。,【相关知识与技能】,IFELSE流程控制语句,BEGINEND语句块,16.05.2020,.,25,任务6-2学号自动递增,IFELSE语句根据判断条件来决定程序执行的流向。如果条件为真,则执行IF关键字后面的语句块;如果条件为假,则执行ELSE关键字后面的语句块。,【相关知识与技能】,IFELSE语句,数据类型转换函数,16.05.2020,.,26,任务6-2学号自动递增,存储过程中的参数有两类:输入参数和输出参数。通过定义输入参数,可以在存储过程执行时传递不同的动态值。通过定义输出参数,可以从存储过程中返回一个或多个值。为了使用输出参数,必须在CREATEPROCEDURE语句和EXECUTE语句中使用OUTPUT关键字。同时,为了得到某一存储过程的返回值,需要定义一个变量来存放返回参数的值,在该存储过程的调用语句中,必须为这个变量加上OUTPUT关键字来声明。创建完带参数的存储过程后,如果要执行它,有两种传递参数的方式:按位置顺序传递、通过参数名传递。“参数名=参数值”,【相关知识与技能】,带参数的存储过程,16.05.2020,.,27,任务6-2学号自动递增,【任务实施与拓展】,(1)在SSMS的【新建查询】窗口中输入如下T-SQL语句。,16.05.2020,.,28,任务6-2学号自动递增,【任务实施与拓展】,16.05.2020,.,29,任务6-2学号自动递增,【任务实施与拓展】,(2)单击【执行】按钮,即可在“教学管理系统”数据库中创建相应的存储过程“AutoGetStuID”。,(3)继续在【查询】窗口中输入如下执行存储过程的T-SQL语句。,(4)单击【执行】按钮,得到执行存储过程“AutoGetStuID”的返回结果,如图所示。,16.05.2020,.,30,任务6-3,任务6-3课程班成绩的等第自动划分,16.05.2020,.,31,任务6-3成绩等第自动划分,课程班成绩录入系统后,由于系统记录的是学生的分数,而有的课程班的成绩需要用“优秀、良好、中等、及格和不及格”五个等第进行显示。等第划分的标准是:90分以上为“优秀”,80-89分为“良好”,70-79分为“中等”,60-69分为“及格”,60分以下为“不及格”。请用带参数的存储过程实现不同课程班成绩的等第自动划分功能。,【任务描述与分析】,16.05.2020,.,32,任务6-3成绩等第自动划分,CASE关键字可根据表达式的真假来确定是否返回某个值,可在允许使用表达式的任何地方使用它。,【相关知识与技能】,CASE分支语句,使用CASE语句可以进行多个分支的选择。CASE分支语句具有两种格式:简单格式和搜索格式。,简单格式CASE语句,将某个表达式与一组简单表达式进行比较以确定结果。语法格式如下:,16.05.2020,.,33,任务6-3成绩等第自动划分,【相关知识与技能】,搜索格式CASE语句,计算一组布尔表达式以确定结果。语法格式如下:,上述语句中,当某个“布尔表达式n”为“TRUE”时,返回对应的“结果表达式n”。当所有“布尔表达式n”为“False”时,返回“其它结果表单式”。,16.05.2020,.,34,任务6-3成绩等第自动划分,【任务实施与拓展】,16.05.2020,.,35,任务6-3成绩等第自动划分,【任务实施与拓展】,单击【执行】按钮,即可在“教学管理系统”数据库中创建相应的存储过程“GradeLevelSet”。执行存储过程,以课程班“T080010401”为例。,单击【执行】按钮,得到执行存储过程“GradeLevelSet”的返回结果,如图所示。,16.05.2020,.,36,任务6-3成绩等第自动划分,【任务实施与拓展】,16.05.2020,.,37,任务6-3成绩等第自动划分,【任务实施与拓展】,【任务拓展】,如果从表“TB_CourseClass”中查询课程班信息时,要将选满标志【FullFlag】字段中的值“U”和“F”分别显示为“未满”和“已满”,则可以用下述简单格式CASE语句实现。,16.05.2020,.,38,任务6-3成绩等第自动划分,【任务实施与拓展】,执行上述T-SQL语句,可以得到如图6-5所示的查询结果。,16.05.2020,.,39,任务6-4,任务6-4学生课程选修和课程退选,16.05.2020,.,40,任务6-4学生课程选修退选,在每个学期的期末或期初,教务处要开放一周时间给学生在网上完成课程选修,在这一周内,学生可以根据自己的实际情况进行课程选修和课程退选,在课程选修和退选的过程中,有的学生可能一次选修或退选多个课程班。当学生登录并进入到选课界面,进行课程选修或退选后,网页应用程序将调用数据库中的存储过程来完成相应的课程选修和退选的功能,在调用存储过程的同时传递两个参数:学号和选修或退选的课程班编码字符串,多个课程班编码用分号“,”隔开。请用带参数的存储过程分别实现学生课程选修和退选功能。,【任务描述与分析】,16.05.2020,.,41,任务6-4学生课程选修退选,【相关知识与技能】,WHILE循环控制语句用以设置重复执行T-SQL语句块的条件。当指定的条件为真时,重复执行循环语句块。语法结构如下:,可以在循环体的SQL语句块内设置BREAK和CONTINUE关键字,以便控制循环语句的执行流程。,WHILE循环控制语句,16.05.2020,.,42,任务6-4学生课程选修退选,【相关知识与技能】,BREAK中断语句,BREAK中断语句用来退出WHILE或IFELSE语句的执行,然后接着执行WHILE或IFELSE语句后面的其它T-SQL语句。注意:如果嵌套了两个或多个WHILE循环,内层的BREAK语句将导致退出到下一个外层循环。首先运行内层循环结束之后的所有语句,然后下一个外层循环重新开始执行。,CONTINUE语句用来重新开始一个新的WHILE循环,循环体内在CONTINUE关键字之后的任何语句都将被忽略。CONTINUE语句通常用一个IF条件语句来判断是否执行它。,CONTINUE语句,16.05.2020,.,43,任务6-4学生课程选修退选,【相关知识与技能】,WAITFOR延迟语句可以将它之后的语句在一个指定的时间间隔后执行,或在将来的某一指定的具体时间执行。,WAITFOR延迟语句,或,上述语法结构中的“时间间隔”为可以继续执行批处理、存储过程或事务之前必须等待的指定时间间隔,最长可为24小时。“具体时间点”为指定的运行批处理、存储过程或事务的时间点。,16.05.2020,.,44,任务6-4学生课程选修退选,【相关知识与技能】,TRYCATCH语句对执行的其它T-SQL语句实现与C#和C+语言中的异常处理类似的错误处理。T-SQL语句组可以包含在TRY块中。如果TRY块内部发生错误,则会将控制传递给CATCH块中包含的另一个语句组。TRYCATCH构造只捕获严重级别大于10但不终止数据库连接的错误。,TRYCATCH语句,16.05.2020,.,45,任务6-4学生课程选修退选,【相关知识与技能】,TRY块后必须紧跟相关联的CATCH块,在ENDTRY和BEGINCATCH语句之间放置任何其他语句都将生成语法错误。TRYCATCH构造可以是嵌套式的。在CATCH块的作用域内,可以使用如表所示的系统函数来获取导致CATCH块执行的错误消息。,16.05.2020,.,46,任务6-4学生课程选修退选,【相关知识与技能】,数据库事务(DatabaseTransaction)是指作为单个逻辑工作单元执行的一系列操作。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID属性:原子性、一致性、隔离性和持久性。,数据库事务,16.05.2020,.,47,任务6-4学生课程选修退选,【相关知识与技能】,原子性(atomic)事务必须是原子工作单元,对于其数据修改,要么全都执行,要么全都不执行。一致性(consistent)事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。隔离性(insulation)由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。持久性(Duration)事务完成之后,它对于系统的影响是永久性的。,16.05.2020,.,48,任务6-4学生课程选修退选,【相关知识与技能】,SQLServer用TRANSACTION关键字来实现对一个事务操作的提交或回滚。,BEGINTRANSACTION语句通知SQLSERVER,它应该将下一条COMMITTRANSACTION语句或ROLLBACKTRANSCATION语句以前的所有操作作为单个事务。如果SQLSERVER遇到的是一条COMMITTRANSACTION语句,那么保存(提交)自最近一条BEGINTRANSACTION语句以后对数据库所做的所有工作。如果SQLSERVER遇到的是一条ROLLBACKTRANSACTION语句,则抛弃(回滚)所有这些操作所做的工作,恢复到数据的初始状态。,16.05.2020,.,49,任务6-4学生课程选修退选,【任务实施与拓展】,课程选修,(1)如果每次只选择一个课程班,创建“课程选修”存储过程的T-SQL语句如下:,16.05.2020,.,50,任务6-4学生课程选修退选,【任务实施与拓展】,(2)如果每次选择的课程班不止一个,多个课程班编码间用“,”隔开,创建“课程选修”存储过程的T-SQL语句如下:,16.05.2020,.,51,任务6-4学生课程选修退选,【任务实施与拓展】,16.05.2020,.,52,任务6-4学生课程选修退选,【任务实施与拓展】,(3)单击【执行】按钮,即可在“教学管理系统”数据库中创建相应的存储过程“SelectCourse”。(4)继续在【查询】窗口中输入如下执行存储过程的T-SQL语句。,(5)单击【执行】按钮,将该学生所选择的三个课程班记录插入到选课信息表中。,16.05.2020,.,53,任务6-4学生课程选修退选,【任务实施与拓展】,课程退选,(1)如果每次退选的课程班个数也不确定,则多个课程班编码间用“,”隔开,创建“课程退选”存储过程的T-SQL语句如下:,16.05.2020,.,54,任务6-4学生课程选修退选,【任务实施与拓展】,16.05.2020,.,55,任务6-4学生课程选修退选,【任务实施与拓展】,(3)单击【执行】按钮,即可在“教学管理系统”数据库中创建相应的存储过程“ReturnCourse”。(4)继续在【查询】窗口中输入如下执行存储过程的T-SQL语句。,(5)单击【执行】按钮,可以将选课信息表中该学生选择的三个课程班记录删除,达到课程退选的目的。,16.05.2020,.,56,任务6-4学生课程选修退选,【任务实施与拓展】,【任务拓展】,如果要在中午11:40要提醒:“下课时间到了!”这样的信息。可以执行下述T-SQL语句来实现。,1.WAITFOR语句,同样,如果要在1分钟后要提醒:“1分钟时间到了!”这样的信息。可以执行下述T-SQL语句来实现。,16.05.2020,.,57,任务6-4学生课程选修退选,【任务实施与拓展】,用存储过程向“教学管理系统”数据库中的表“TB_Class”中插入班级记录,记录插入的过程中可能会产生各种错误,如何捕捉到这个错误,可在存储过程中用下述T-SQL语句实现:,2.TRYCATCH语句,16.05.2020,.,58,任务6-4学生课程选修退选,【任务实施与拓展】,16.05.2020,.,59,任务6-4学生课程选修退选,【任务实施与拓展】,用此存储过程插入如下表所示的三条记录,分别观察返回的错误信息。,执行存储过程“InsertClass”,插入表6-6中第一条记录时,T-SQL语句如下:,返回的错误信息为“NULL”,记录成功插入表“TB_Class”中。,16.05.2020,.,60,任务6-4学生课程选修退选,【任务实施与拓展】,同样,用这个存储过程插入表6-6中的第二条记录,产生的错误信息如下图所示。,再用这个存储过程插入表6-6中的第三条记录,产生的错误信息如下图所示。,16.05.2020,.,61,任务6-4学生课程选修退选,【任务实施与拓展】,如果要一次性连续插入前面表中的三条记录可以用下述T-SQL语句实现:,2.数据库事务,执行上述语句,会插入第一条记录,后两条记录分别由于主键约束和外键约束错误而插入失败。如果要将这三条记录作为一个事务单元来执行,要么全部插入成功,要么全部插入失败,即满足事务操作的原子性。可用下述T-SQL语句来实现:,16.05.2020,.,62,任务6-4学生课程选修退选,【任务实施与拓展】,16.05.2020,.,63,任务6-5,任务6-5课程班成绩查询功能实现,16.05.2020,.,64,任务6-5课程班成绩查询,学期结束后,任课老师将课程班成绩录入到“教学管理系统”中后,教务处要经常查询不同教师所任教课程班的学生成绩。第一项目小组要求曾丹丹同学基于ASP.NET技术创建一个基于课程班的学生成绩查询的应用程序,并通过调用“教学管理数据库”中的存储过程来完成教师查询自己教学的课程班的学生成绩的功能。,【任务描述与分析】,16.05.2020,.,65,(1)课程班成绩查询界面,任务6-5课程班成绩查询,【任务实施与拓展】,16.05.2020,.,66,按照原型设计进行相应的网页框架设计,任务6-5课程班成绩查询,【任务实施与拓展】,16.05.2020,.,67,任务6-5课程班成绩查询,【任务实施与拓展】,1.在站点【http:/localhost/ManageModel_Web】中添加一个新的网页应用程序“TeacherGradeQuery.aspx”文件,设计界面如图所示。,16.05.2020,.,68,任务6-5课程班成绩查询,【任务实施与拓展】,2.设置上图中的GridView组件的【自动套用格式】为【雨天】格式。3.在下图所示【字段】对话框的【可用字段】栏内选择【BoundField】项,单击【添加】按钮,添加六个“BoundField”类型字段。它们的【DataField】和【HeaderText】属性分别为“StuID、StuName、CommonScore、MiddleScore、LastScore、TotalScore”和“学号、姓名、平时成绩、期中成绩、期末成绩、总评成绩”。,16.05.2020,.,69,任务6-5课程班成绩查询,【任务实施与拓展】,16.05.2020,.,70,页面中的各个组件的属性设置情况如下表所示,任务6-5课程班成绩查询,【任务实施与拓展】,16.05.2020,.,71,网页功能实现代码(CourseClassGradeQuery.aspx.cs),课程班成绩查询功能实现1.创建课程班查询的存储过程2.教师下拉列表框数据绑定3.课程班下拉框与教师下拉框联动4.课程班成绩查询并绑定,任务6-5课程班成绩查询,【任务实施与拓展】,16.05.2020,.,72,任务6-5课程班成绩查询,1、创建课程班查询的存储过程,【任务实施与拓展】,首先在SQLServer的SSMS中创建一个名为“SP_CourseClassQuery”的存储过程,用于查询某个教师的任教课程班的信息。存储过程创建T-SQL语句如下:,16.05.2020,.,73,任务6-5课程班成绩查询,2、教师下拉列表框数据绑定,【任务实施与拓展】,在文件“CourseClassGradeQuery.aspx.cs”的头部添加代码“usingSystem.Data.SqlClient;”。为实现【教师】下拉框数据绑定功能,在“CourseClassGradeQuery.aspx.cs”文件中添加一个私有的方法“DropDownListBind()”,代码如下:,16.05.2020,.,74,任务6-5课程班成绩查询,【任务实施与拓展】,16.05.2020,.,75,任务6-5课程班成绩查询,【任务实施与拓展】,在“CourseClassGradeQuery.aspx.cs”文件的方法“Page_Load()”中输入下列代码,即可实现【教师】下拉框的数据绑定功能。,16.05.2020,.,76,任务6-5课程班成绩查询,3、课程班下拉框与教师下拉框联动,【任务实施与拓展】,为了实现当选择了【教师】下拉框中的某个教师后,【课程班】下拉框中就显示对应教师的任教课程班信息记录的功能,在【TeacherDDList】组件的【SelectedIndexChanged】事件的右侧空白处双击,在方法“TeacherDDList_SelectedIndexChanged()”中添加下述代码:,16.05.2020,.,77,任务6-5课程班成绩查询,【任务实施与拓展】,16.05.2020,.,78,任务6-5课程班成绩查询,【任务实施与拓展】,16.05.2020,.,79,任务6-5课程班成绩查询,4、课程班成绩查询并绑定,【任务实施与拓展】,在【课程班】下拉框中选择要查询成绩的课程班记录,然后单击【确定】按钮即可进行相应课程班成绩查询。为实现此功能,双击【确定】按钮,在“QueryBtn_Click()”方法中输入下述代码:,16.05.2020,.,80,任务6-5课程班成绩查询,【任务实施与拓展】,16.05.2020,.,81,任务6-5课程班成绩查询,【任务实施与拓展】,16.05.2020,.,82,任务6-6,任务6-6课程选修和退选功能实现,16.05.2020,.,83,任务6-6课程选修和退选,每学期初,教务处会在一周时间内将本学期开设的选修课的课程班在网上展示,并让学生登录后进行课程班选修和退选。第一项目小组要求李勋同学基于ASP.NET技术创建学生网上课程选修和退选的应用程序,并通过调用“教学管理数据库”中相应的存储过程来实现该功能。,【任务描述与分析】,16.05.2020,.,84,(1)学生网上课程选修界面,任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,85,(2)学生网上课程退选界面,任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,86,(3)学生网上课程选修界面(已选过课程),任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,87,(4)课程退选提醒和成功对话框,任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,88,按照原型设计进行相应的网页框架设计,任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,89,任务6-6课程选修和退选,【任务实施与拓展】,1.在站点【http:/localhost/ManageModel_Web】中添加一个新的网页应用程序“SelectCourse.aspx”文件,设计界面如图所示。,16.05.2020,.,90,任务6-6课程选修和退选,【任务实施与拓展】,同样,再添加一个名为“ReturnCourse.aspx”的新网页,设计界面如图所示。,16.05.2020,.,91,任务6-6课程选修和退选,【任务实施与拓展】,2.设置上两个图中的GridView组件的【自动套用格式】为【雨天】格式。3.在下图中的【可用字段】栏内选择【CheckBoxField】项,单击【添加】按钮,添加一个“CheckBoxField”类型字段,并设置【HeaderText】属性为“勾选”,然后单击窗口右下角的【将此字段转换为TemplateField】项,将这个字段转换为【TemplateField】字段。4.在“SelectCourse.aspx”文件的【源】代码窗口将【勾选】列的“CheckBox”的“ID”改为“CBoxCourseClass”,修改后的代码如下:,16.05.2020,.,92,任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,93,任务6-6课程选修和退选,【任务实施与拓展】,5.接着在上图【可用字段】栏内选择【BoundField】项,单击【添加】按钮,添加七个“BoundField”类型字段。它们的【DataField】和【HeaderText】属性分别为“CourseClassID、CourseName、TeacherName、TeachingPlace、TeachingTime、MaxNumber、SelectedNumber”和“课程班编码、课程名称、任课教师、教学地点、教学时间、允许选修数、已选数”。其中【课程班编码】字段的【Visible】属性设置为“False”。6.单击“网上退课”图中的【编辑列】选项,弹出如下图所示的【字段】对话框,在【可用字段】栏内选择【BoundField】项,单击【添加】按钮,添加五个“BoundField”类型字段。它们的【DataField】和【HeaderText】属性分别为“CourseClassID、CourseName、TeacherName、TeachingPlace、TeachingTime”和“课程班编码、课程名称、任课教师、教学地点、教学时间”。,16.05.2020,.,94,任务6-6课程选修和退选,【任务实施与拓展】,7.在【可用字段】栏内选择【CommandField】节点中的【删除】项,单击【添加】按钮,添加一个“CommandField”类型字段,将它的属性【HeaderText】和【DeleteText】改为“退选”。,16.05.2020,.,95,8.课程选修和退选页面中的各个组件的属性设置情况分别如下面两个表所示,任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,96,网页功能实现代码(SelectCourse.aspx.cs),学生课程选修功能实现1.课程班信息查询存储过程创建2.课程班信息查询并绑定3.学生课程选修功能实现,任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,97,任务6-6课程选修和退选,1、课程班信息查询存储过程创建,【任务实施与拓展】,首先创建一个名为“SP_StuCourseClass”的存储过程,基于某个学生查询其可以选修的所有课程班信息(不包括该学生已经选修的课程班和已经选满的课程班)。,16.05.2020,.,98,任务6-6课程选修和退选,2、课程班信息查询并绑定,【任务实施与拓展】,在文件“SelectCourse.aspx.cs”的头部添加代码“usingSystem.Data.SqlClient;”。为在此网页中显示某个登录学生可以选修的课程班信息,在“SelectCourse.aspx.cs”文件的方法“Page_Load()”中添加如下代码:,16.05.2020,.,99,任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,100,任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,101,任务6-6课程选修和退选,3、学生课程选修功能实,【任务实施与拓展】,为了实现当学生在网页上勾选了对应的课程班后,单击【确定】按钮,网页应用程序调用数据库存储过程“SP_StuCourseClass”将学生选择课程班的信息插入到数据库中的功能,在“SelectCourse.aspx”文件设计界面的【确定】按钮上双击,在方法“StuSelectBtn_Click()”中添加下述代码:,16.05.2020,.,102,任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,103,任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,104,任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,105,网页功能实现代码(ReturnCourse.aspx.cs),学生课程退选功能实现1.已选课程班查询的存储过程创建2.已选课程班信息查询并绑定3.学生课程退选功能实现,任务6-6课程选修和退选,【任务实施与拓展】,16.05.2020,.,106,任务6-6课程选修和退选,1、课程班信息查询存储过程创建,【任务实施与拓展】,同样在SQLServer的SSMS中创建一个名为“SP_StuSelectedCourse”的存储过程,基于某个学生查询其已经选修的所有课程班信息。存储过程创建T-SQL语句如下:,16.05.2020,.,107,任务6-6课程选修和退选,2、已选课程班信息查询并绑定,【任务实施与拓展】,为在此网页中显示某个登录学生已经选修的课程班信息,在“Retu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高压触电应急演练效果评估
- 上海立信会计金融学院《安全管理》2025-2026学年第一学期期末试卷(B卷)
- 上海立信会计金融学院《安全与伦理》2025-2026学年第一学期期末试卷(B卷)
- 2026年芒果炭疽病、白粉病及横线尾夜蛾防治
- 上海科技大学《安装工程计量计价》2025-2026学年第一学期期末试卷(B卷)
- 2026年安全文化建设评价指标体系构建手册
- 大连东软信息学院《Android 程序开发》2025-2026学年第一学期期末试卷(B卷)
- 上海科技大学《AutoCAD 机械制图》2025-2026学年第一学期期末试卷(B卷)
- 2026年远程项目风险管理最佳实践
- 上海科学技术职业学院《安全监察和管理》2025-2026学年第一学期期末试卷(A卷)
- 2025年全国花卉产销形势分析报告
- 2025年山西省高考理科试卷及答案
- 泵站改造工程设计方案指南
- 组装电脑合同协议
- 三级动火安全技术措施方案
- 第二类医疗器械经营备案企业质量管理制度、工作程序目录
- 水下工程潜水施工潜水员安全操作规程
- 《脐橙采摘机器人结构设计》13000字(论文)
- 教育培训机构课程顾问电话外呼培训课件
- 药物竹罐疗法护理技术
- RAG技术:人工智能的新篇章
评论
0/150
提交评论